diff --git a/test/tint/access/let/matrix.spvasm.expected.ir.msl b/test/tint/access/let/matrix.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/access/let/matrix.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/access/let/matrix.wgsl.expected.ir.msl b/test/tint/access/let/matrix.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/access/let/matrix.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/access/let/vector.spvasm.expected.ir.msl b/test/tint/access/let/vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/access/let/vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/access/let/vector.wgsl.expected.ir.msl b/test/tint/access/let/vector.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/access/let/vector.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/access/var/matrix.spvasm.expected.ir.msl b/test/tint/access/var/matrix.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/access/var/matrix.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/access/var/matrix.wgsl.expected.ir.msl b/test/tint/access/var/matrix.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/access/var/matrix.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/access/var/vector.spvasm.expected.ir.msl b/test/tint/access/var/vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/access/var/vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/access/var/vector.wgsl.expected.ir.msl b/test/tint/access/var/vector.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/access/var/vector.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/array/assign_to_function_var.wgsl.expected.ir.msl b/test/tint/array/assign_to_function_var.wgsl.expected.ir.msl
new file mode 100644
index 0000000..446d9ec
--- /dev/null
+++ b/test/tint/array/assign_to_function_var.wgsl.expected.ir.msl
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  arr:array<vec4<i32>, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %src_private:ptr<private, array<vec4<i32>, 4>, read_write> = var
+  %src_workgroup:ptr<workgroup, array<vec4<i32>, 4>, read_write> = var
+  %src_uniform:ptr<uniform, S, read> = var @binding_point(0, 0)
+  %src_storage:ptr<storage, S, read_write> = var @binding_point(0, 1)
+}
+
+%ret_arr = func():array<vec4<i32>, 4> -> %b2 {
+  %b2 = block {
+    ret array<vec4<i32>, 4>(vec4<i32>(0i))
+  }
+}
+%ret_struct_arr = func():S -> %b3 {
+  %b3 = block {
+    ret S(array<vec4<i32>, 4>(vec4<i32>(0i)))
+  }
+}
+%foo = func(%src_param:array<vec4<i32>, 4>):void -> %b4 {
+  %b4 = block {
+    %src_function:ptr<function, array<vec4<i32>, 4>, read_write> = var
+    %dst:ptr<function, array<vec4<i32>, 4>, read_write> = var
+    store %dst, array<vec4<i32>, 4>(vec4<i32>(1i), vec4<i32>(2i), vec4<i32>(3i), vec4<i32>(3i))
+    store %dst, %src_param
+    %11:array<vec4<i32>, 4> = call %ret_arr
+    store %dst, %11
+    %src_let:array<vec4<i32>, 4> = let array<vec4<i32>, 4>(vec4<i32>(0i))
+    store %dst, %src_let
+    %13:array<vec4<i32>, 4> = load %src_function
+    store %dst, %13
+    %14:array<vec4<i32>, 4> = load %src_private
+    store %dst, %14
+    %15:array<vec4<i32>, 4> = load %src_workgroup
+    store %dst, %15
+    %16:S = call %ret_struct_arr
+    %17:array<vec4<i32>, 4> = access %16, 0u
+    store %dst, %17
+    %18:ptr<uniform, array<vec4<i32>, 4>, read> = access %src_uniform, 0u
+    %19:array<vec4<i32>, 4> = load %18
+    store %dst, %19
+    %20:ptr<storage, array<vec4<i32>, 4>, read_write> = access %src_storage, 0u
+    %21:array<vec4<i32>, 4> = load %20
+    store %dst, %21
+    %dst_nested:ptr<function, array<array<array<i32, 2>, 3>, 4>, read_write> = var
+    %src_nested:ptr<function, array<array<array<i32, 2>, 3>, 4>, read_write> = var
+    %24:array<array<array<i32, 2>, 3>, 4> = load %src_nested
+    store %dst_nested, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/array/assign_to_private_var.wgsl.expected.ir.msl b/test/tint/array/assign_to_private_var.wgsl.expected.ir.msl
new file mode 100644
index 0000000..baa11e0
--- /dev/null
+++ b/test/tint/array/assign_to_private_var.wgsl.expected.ir.msl
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  arr:array<vec4<i32>, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %src_private:ptr<private, array<vec4<i32>, 4>, read_write> = var
+  %src_workgroup:ptr<workgroup, array<vec4<i32>, 4>, read_write> = var
+  %src_uniform:ptr<uniform, S, read> = var @binding_point(0, 0)
+  %src_storage:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %dst:ptr<private, array<vec4<i32>, 4>, read_write> = var
+  %dst_nested:ptr<private, array<array<array<i32, 2>, 3>, 4>, read_write> = var
+}
+
+%ret_arr = func():array<vec4<i32>, 4> -> %b2 {
+  %b2 = block {
+    ret array<vec4<i32>, 4>(vec4<i32>(0i))
+  }
+}
+%ret_struct_arr = func():S -> %b3 {
+  %b3 = block {
+    ret S(array<vec4<i32>, 4>(vec4<i32>(0i)))
+  }
+}
+%foo = func(%src_param:array<vec4<i32>, 4>):void -> %b4 {
+  %b4 = block {
+    %src_function:ptr<function, array<vec4<i32>, 4>, read_write> = var
+    store %dst, array<vec4<i32>, 4>(vec4<i32>(1i), vec4<i32>(2i), vec4<i32>(3i), vec4<i32>(3i))
+    store %dst, %src_param
+    %12:array<vec4<i32>, 4> = call %ret_arr
+    store %dst, %12
+    %src_let:array<vec4<i32>, 4> = let array<vec4<i32>, 4>(vec4<i32>(0i))
+    store %dst, %src_let
+    %14:array<vec4<i32>, 4> = load %src_function
+    store %dst, %14
+    %15:array<vec4<i32>, 4> = load %src_private
+    store %dst, %15
+    %16:array<vec4<i32>, 4> = load %src_workgroup
+    store %dst, %16
+    %17:S = call %ret_struct_arr
+    %18:array<vec4<i32>, 4> = access %17, 0u
+    store %dst, %18
+    %19:ptr<uniform, array<vec4<i32>, 4>, read> = access %src_uniform, 0u
+    %20:array<vec4<i32>, 4> = load %19
+    store %dst, %20
+    %21:ptr<storage, array<vec4<i32>, 4>, read_write> = access %src_storage, 0u
+    %22:array<vec4<i32>, 4> = load %21
+    store %dst, %22
+    %src_nested:ptr<function, array<array<array<i32, 2>, 3>, 4>, read_write> = var
+    %24:array<array<array<i32, 2>, 3>, 4> = load %src_nested
+    store %dst_nested, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/array/assign_to_storage_var.wgsl.expected.ir.msl b/test/tint/array/assign_to_storage_var.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c248454
--- /dev/null
+++ b/test/tint/array/assign_to_storage_var.wgsl.expected.ir.msl
@@ -0,0 +1,78 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  arr:array<vec4<i32>, 4> @offset(0)
+}
+
+S_nested = struct @align(4) {
+  arr:array<array<array<i32, 2>, 3>, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %src_private:ptr<private, array<vec4<i32>, 4>, read_write> = var
+  %src_workgroup:ptr<workgroup, array<vec4<i32>, 4>, read_write> = var
+  %src_uniform:ptr<uniform, S, read> = var @binding_point(0, 0)
+  %src_storage:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %dst:ptr<storage, S, read_write> = var @binding_point(0, 2)
+  %dst_nested:ptr<storage, S_nested, read_write> = var @binding_point(0, 3)
+}
+
+%ret_arr = func():array<vec4<i32>, 4> -> %b2 {
+  %b2 = block {
+    ret array<vec4<i32>, 4>(vec4<i32>(0i))
+  }
+}
+%ret_struct_arr = func():S -> %b3 {
+  %b3 = block {
+    ret S(array<vec4<i32>, 4>(vec4<i32>(0i)))
+  }
+}
+%foo = func(%src_param:array<vec4<i32>, 4>):void -> %b4 {
+  %b4 = block {
+    %src_function:ptr<function, array<vec4<i32>, 4>, read_write> = var
+    %12:ptr<storage, array<vec4<i32>, 4>, read_write> = access %dst, 0u
+    store %12, array<vec4<i32>, 4>(vec4<i32>(1i), vec4<i32>(2i), vec4<i32>(3i), vec4<i32>(3i))
+    %13:ptr<storage, array<vec4<i32>, 4>, read_write> = access %dst, 0u
+    store %13, %src_param
+    %14:ptr<storage, array<vec4<i32>, 4>, read_write> = access %dst, 0u
+    %15:array<vec4<i32>, 4> = call %ret_arr
+    store %14, %15
+    %src_let:array<vec4<i32>, 4> = let array<vec4<i32>, 4>(vec4<i32>(0i))
+    %17:ptr<storage, array<vec4<i32>, 4>, read_write> = access %dst, 0u
+    store %17, %src_let
+    %18:ptr<storage, array<vec4<i32>, 4>, read_write> = access %dst, 0u
+    %19:array<vec4<i32>, 4> = load %src_function
+    store %18, %19
+    %20:ptr<storage, array<vec4<i32>, 4>, read_write> = access %dst, 0u
+    %21:array<vec4<i32>, 4> = load %src_private
+    store %20, %21
+    %22:ptr<storage, array<vec4<i32>, 4>, read_write> = access %dst, 0u
+    %23:array<vec4<i32>, 4> = load %src_workgroup
+    store %22, %23
+    %24:ptr<storage, array<vec4<i32>, 4>, read_write> = access %dst, 0u
+    %25:S = call %ret_struct_arr
+    %26:array<vec4<i32>, 4> = access %25, 0u
+    store %24, %26
+    %27:ptr<storage, array<vec4<i32>, 4>, read_write> = access %dst, 0u
+    %28:ptr<uniform, array<vec4<i32>, 4>, read> = access %src_uniform, 0u
+    %29:array<vec4<i32>, 4> = load %28
+    store %27, %29
+    %30:ptr<storage, array<vec4<i32>, 4>, read_write> = access %dst, 0u
+    %31:ptr<storage, array<vec4<i32>, 4>, read_write> = access %src_storage, 0u
+    %32:array<vec4<i32>, 4> = load %31
+    store %30, %32
+    %src_nested:ptr<function, array<array<array<i32, 2>, 3>, 4>, read_write> = var
+    %34:ptr<storage, array<array<array<i32, 2>, 3>, 4>, read_write> = access %dst_nested, 0u
+    %35:array<array<array<i32, 2>, 3>, 4> = load %src_nested
+    store %34, %35
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/array/assign_to_subexpr.wgsl.expected.ir.msl b/test/tint/array/assign_to_subexpr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/array/assign_to_subexpr.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/array/assign_to_workgroup_var.wgsl.expected.ir.msl b/test/tint/array/assign_to_workgroup_var.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1f6127b
--- /dev/null
+++ b/test/tint/array/assign_to_workgroup_var.wgsl.expected.ir.msl
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  arr:array<vec4<i32>, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %src_private:ptr<private, array<vec4<i32>, 4>, read_write> = var
+  %src_workgroup:ptr<workgroup, array<vec4<i32>, 4>, read_write> = var
+  %src_uniform:ptr<uniform, S, read> = var @binding_point(0, 0)
+  %src_storage:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %dst:ptr<workgroup, array<vec4<i32>, 4>, read_write> = var
+  %dst_nested:ptr<workgroup, array<array<array<i32, 2>, 3>, 4>, read_write> = var
+}
+
+%ret_arr = func():array<vec4<i32>, 4> -> %b2 {
+  %b2 = block {
+    ret array<vec4<i32>, 4>(vec4<i32>(0i))
+  }
+}
+%ret_struct_arr = func():S -> %b3 {
+  %b3 = block {
+    ret S(array<vec4<i32>, 4>(vec4<i32>(0i)))
+  }
+}
+%foo = func(%src_param:array<vec4<i32>, 4>):void -> %b4 {
+  %b4 = block {
+    %src_function:ptr<function, array<vec4<i32>, 4>, read_write> = var
+    store %dst, array<vec4<i32>, 4>(vec4<i32>(1i), vec4<i32>(2i), vec4<i32>(3i), vec4<i32>(3i))
+    store %dst, %src_param
+    %12:array<vec4<i32>, 4> = call %ret_arr
+    store %dst, %12
+    %src_let:array<vec4<i32>, 4> = let array<vec4<i32>, 4>(vec4<i32>(0i))
+    store %dst, %src_let
+    %14:array<vec4<i32>, 4> = load %src_function
+    store %dst, %14
+    %15:array<vec4<i32>, 4> = load %src_private
+    store %dst, %15
+    %16:array<vec4<i32>, 4> = load %src_workgroup
+    store %dst, %16
+    %17:S = call %ret_struct_arr
+    %18:array<vec4<i32>, 4> = access %17, 0u
+    store %dst, %18
+    %19:ptr<uniform, array<vec4<i32>, 4>, read> = access %src_uniform, 0u
+    %20:array<vec4<i32>, 4> = load %19
+    store %dst, %20
+    %21:ptr<storage, array<vec4<i32>, 4>, read_write> = access %src_storage, 0u
+    %22:array<vec4<i32>, 4> = load %21
+    store %dst, %22
+    %src_nested:ptr<function, array<array<array<i32, 2>, 3>, 4>, read_write> = var
+    %24:array<array<array<i32, 2>, 3>, 4> = load %src_nested
+    store %dst_nested, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/array/function_parameter.wgsl.expected.ir.msl b/test/tint/array/function_parameter.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/array/function_parameter.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/array/function_return_type.wgsl.expected.ir.msl b/test/tint/array/function_return_type.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/array/function_return_type.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/array/size.wgsl.expected.ir.msl b/test/tint/array/size.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/array/size.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/array/strides.spvasm.expected.ir.msl b/test/tint/array/strides.spvasm.expected.ir.msl
new file mode 100644
index 0000000..5b78369
--- /dev/null
+++ b/test/tint/array/strides.spvasm.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:array<array<strided_arr, 2>, 3> @offset(0)
+}
+
+S = struct @align(4) {
+  a:array<strided_arr_1, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %s:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%f_1 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, array<strided_arr_1, 4>, read_write> = access %s, 0u
+    %x_19:array<strided_arr_1, 4> = load %3
+    %5:ptr<storage, array<array<strided_arr, 2>, 3>, read_write> = access %s, 0u, 3i, 0u
+    %x_24:array<array<strided_arr, 2>, 3> = load %5
+    %7:ptr<storage, array<strided_arr, 2>, read_write> = access %s, 0u, 3i, 0u, 2i
+    %x_28:array<strided_arr, 2> = load %7
+    %9:ptr<storage, f32, read_write> = access %s, 0u, 3i, 0u, 2i, 1i, 0u
+    %x_32:f32 = load %9
+    %11:ptr<storage, array<strided_arr_1, 4>, read_write> = access %s, 0u
+    store %11, array<strided_arr_1, 4>(strided_arr_1(array<array<strided_arr, 2>, 3>(array<strided_arr, 2>(strided_arr(0.0f)))))
+    %12:ptr<storage, f32, read_write> = access %s, 0u, 3i, 0u, 2i, 1i, 0u
+    store %12, 5.0f
+    ret
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %14:void = call %f_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/array/type_initializer.wgsl.expected.ir.msl b/test/tint/array/type_initializer.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/array/type_initializer.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/benchmark/atan2-const-eval.wgsl.expected.ir.msl b/test/tint/benchmark/atan2-const-eval.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b570313
--- /dev/null
+++ b/test/tint/benchmark/atan2-const-eval.wgsl.expected.ir.msl
@@ -0,0 +1,2023 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Output = struct @align(4) {
+  value:f32 @offset(0)
+}
+
+%b1 = block {  # root
+  %outputs:ptr<storage, array<Output, 1000>, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, f32, read_write> = access %outputs, 0i, 0u
+    store %3, -2.35619449615478515625f
+    %4:ptr<storage, f32, read_write> = access %outputs, 1i, 0u
+    store %4, -3.14159274101257324219f
+    %5:ptr<storage, f32, read_write> = access %outputs, 2i, 0u
+    store %5, -3.14159274101257324219f
+    %6:ptr<storage, f32, read_write> = access %outputs, 3i, 0u
+    store %6, -3.14159274101257324219f
+    %7:ptr<storage, f32, read_write> = access %outputs, 4i, 0u
+    store %7, -3.14159274101257324219f
+    %8:ptr<storage, f32, read_write> = access %outputs, 5i, 0u
+    store %8, -3.14159274101257324219f
+    %9:ptr<storage, f32, read_write> = access %outputs, 6i, 0u
+    store %9, -3.14159274101257324219f
+    %10:ptr<storage, f32, read_write> = access %outputs, 7i, 0u
+    store %10, -3.14159274101257324219f
+    %11:ptr<storage, f32, read_write> = access %outputs, 8i, 0u
+    store %11, -3.14159274101257324219f
+    %12:ptr<storage, f32, read_write> = access %outputs, 9i, 0u
+    store %12, -3.14159274101257324219f
+    %13:ptr<storage, f32, read_write> = access %outputs, 10i, 0u
+    store %13, -3.14159274101257324219f
+    %14:ptr<storage, f32, read_write> = access %outputs, 11i, 0u
+    store %14, -3.14159274101257324219f
+    %15:ptr<storage, f32, read_write> = access %outputs, 12i, 0u
+    store %15, -3.14159274101257324219f
+    %16:ptr<storage, f32, read_write> = access %outputs, 13i, 0u
+    store %16, -3.14159274101257324219f
+    %17:ptr<storage, f32, read_write> = access %outputs, 14i, 0u
+    store %17, -3.14159274101257324219f
+    %18:ptr<storage, f32, read_write> = access %outputs, 15i, 0u
+    store %18, -3.14159274101257324219f
+    %19:ptr<storage, f32, read_write> = access %outputs, 16i, 0u
+    store %19, -3.14159274101257324219f
+    %20:ptr<storage, f32, read_write> = access %outputs, 17i, 0u
+    store %20, -3.14159274101257324219f
+    %21:ptr<storage, f32, read_write> = access %outputs, 18i, 0u
+    store %21, -3.14159274101257324219f
+    %22:ptr<storage, f32, read_write> = access %outputs, 19i, 0u
+    store %22, -3.14159274101257324219f
+    %23:ptr<storage, f32, read_write> = access %outputs, 20i, 0u
+    store %23, -3.14159274101257324219f
+    %24:ptr<storage, f32, read_write> = access %outputs, 21i, 0u
+    store %24, -3.14159274101257324219f
+    %25:ptr<storage, f32, read_write> = access %outputs, 22i, 0u
+    store %25, -3.14159274101257324219f
+    %26:ptr<storage, f32, read_write> = access %outputs, 23i, 0u
+    store %26, -3.14159274101257324219f
+    %27:ptr<storage, f32, read_write> = access %outputs, 24i, 0u
+    store %27, -3.14159274101257324219f
+    %28:ptr<storage, f32, read_write> = access %outputs, 25i, 0u
+    store %28, -3.14159274101257324219f
+    %29:ptr<storage, f32, read_write> = access %outputs, 26i, 0u
+    store %29, -3.14159274101257324219f
+    %30:ptr<storage, f32, read_write> = access %outputs, 27i, 0u
+    store %30, -3.14159274101257324219f
+    %31:ptr<storage, f32, read_write> = access %outputs, 28i, 0u
+    store %31, -3.14159274101257324219f
+    %32:ptr<storage, f32, read_write> = access %outputs, 29i, 0u
+    store %32, -3.14159274101257324219f
+    %33:ptr<storage, f32, read_write> = access %outputs, 30i, 0u
+    store %33, -3.14159274101257324219f
+    %34:ptr<storage, f32, read_write> = access %outputs, 31i, 0u
+    store %34, -3.14159274101257324219f
+    %35:ptr<storage, f32, read_write> = access %outputs, 32i, 0u
+    store %35, -3.14159274101257324219f
+    %36:ptr<storage, f32, read_write> = access %outputs, 33i, 0u
+    store %36, -3.14159274101257324219f
+    %37:ptr<storage, f32, read_write> = access %outputs, 34i, 0u
+    store %37, -3.14159274101257324219f
+    %38:ptr<storage, f32, read_write> = access %outputs, 35i, 0u
+    store %38, -3.14159274101257324219f
+    %39:ptr<storage, f32, read_write> = access %outputs, 36i, 0u
+    store %39, -3.14159274101257324219f
+    %40:ptr<storage, f32, read_write> = access %outputs, 37i, 0u
+    store %40, -3.14159274101257324219f
+    %41:ptr<storage, f32, read_write> = access %outputs, 38i, 0u
+    store %41, -3.14159274101257324219f
+    %42:ptr<storage, f32, read_write> = access %outputs, 39i, 0u
+    store %42, -3.14159274101257324219f
+    %43:ptr<storage, f32, read_write> = access %outputs, 40i, 0u
+    store %43, -3.14159274101257324219f
+    %44:ptr<storage, f32, read_write> = access %outputs, 41i, 0u
+    store %44, -3.14159274101257324219f
+    %45:ptr<storage, f32, read_write> = access %outputs, 42i, 0u
+    store %45, -3.14159274101257324219f
+    %46:ptr<storage, f32, read_write> = access %outputs, 43i, 0u
+    store %46, -3.14159274101257324219f
+    %47:ptr<storage, f32, read_write> = access %outputs, 44i, 0u
+    store %47, -3.14159274101257324219f
+    %48:ptr<storage, f32, read_write> = access %outputs, 45i, 0u
+    store %48, -3.14159274101257324219f
+    %49:ptr<storage, f32, read_write> = access %outputs, 46i, 0u
+    store %49, -3.14159274101257324219f
+    %50:ptr<storage, f32, read_write> = access %outputs, 47i, 0u
+    store %50, -3.14159274101257324219f
+    %51:ptr<storage, f32, read_write> = access %outputs, 48i, 0u
+    store %51, -3.14159274101257324219f
+    %52:ptr<storage, f32, read_write> = access %outputs, 49i, 0u
+    store %52, -3.14159274101257324219f
+    %53:ptr<storage, f32, read_write> = access %outputs, 50i, 0u
+    store %53, -2.35619449615478515625f
+    %54:ptr<storage, f32, read_write> = access %outputs, 51i, 0u
+    store %54, -2.29743862152099609375f
+    %55:ptr<storage, f32, read_write> = access %outputs, 52i, 0u
+    store %55, -2.23183941841125488281f
+    %56:ptr<storage, f32, read_write> = access %outputs, 53i, 0u
+    store %56, -2.15879893302917480469f
+    %57:ptr<storage, f32, read_write> = access %outputs, 54i, 0u
+    store %57, -2.07789468765258789062f
+    %58:ptr<storage, f32, read_write> = access %outputs, 55i, 0u
+    store %58, -1.98902058601379394531f
+    %59:ptr<storage, f32, read_write> = access %outputs, 56i, 0u
+    store %59, -1.89254689216613769531f
+    %60:ptr<storage, f32, read_write> = access %outputs, 57i, 0u
+    store %60, -1.78946530818939208984f
+    %61:ptr<storage, f32, read_write> = access %outputs, 58i, 0u
+    store %61, -1.68145358562469482422f
+    %62:ptr<storage, f32, read_write> = access %outputs, 59i, 0u
+    store %62, -1.57079637050628662109f
+    %63:ptr<storage, f32, read_write> = access %outputs, 60i, 0u
+    store %63, -1.57079637050628662109f
+    %64:ptr<storage, f32, read_write> = access %outputs, 61i, 0u
+    store %64, -1.57079625129699707031f
+    %65:ptr<storage, f32, read_write> = access %outputs, 62i, 0u
+    store %65, -1.46013903617858886719f
+    %66:ptr<storage, f32, read_write> = access %outputs, 63i, 0u
+    store %66, -1.35212731361389160156f
+    %67:ptr<storage, f32, read_write> = access %outputs, 64i, 0u
+    store %67, -1.24904572963714599609f
+    %68:ptr<storage, f32, read_write> = access %outputs, 65i, 0u
+    store %68, -1.15257203578948974609f
+    %69:ptr<storage, f32, read_write> = access %outputs, 66i, 0u
+    store %69, -1.06369781494140625f
+    %70:ptr<storage, f32, read_write> = access %outputs, 67i, 0u
+    store %70, -0.98279374837875366211f
+    %71:ptr<storage, f32, read_write> = access %outputs, 68i, 0u
+    store %71, -0.90975326299667358398f
+    %72:ptr<storage, f32, read_write> = access %outputs, 69i, 0u
+    store %72, -0.84415405988693237305f
+    %73:ptr<storage, f32, read_write> = access %outputs, 70i, 0u
+    store %73, -0.78539824485778808594f
+    %74:ptr<storage, f32, read_write> = access %outputs, 71i, 0u
+    store %74, -0.78539818525314331055f
+    %75:ptr<storage, f32, read_write> = access %outputs, 72i, 0u
+    store %75, 0.0f
+    %76:ptr<storage, f32, read_write> = access %outputs, 73i, 0u
+    store %76, 0.0f
+    %77:ptr<storage, f32, read_write> = access %outputs, 74i, 0u
+    store %77, 0.0f
+    %78:ptr<storage, f32, read_write> = access %outputs, 75i, 0u
+    store %78, 0.0f
+    %79:ptr<storage, f32, read_write> = access %outputs, 76i, 0u
+    store %79, 0.0f
+    %80:ptr<storage, f32, read_write> = access %outputs, 77i, 0u
+    store %80, 0.0f
+    %81:ptr<storage, f32, read_write> = access %outputs, 78i, 0u
+    store %81, 0.0f
+    %82:ptr<storage, f32, read_write> = access %outputs, 79i, 0u
+    store %82, 0.0f
+    %83:ptr<storage, f32, read_write> = access %outputs, 80i, 0u
+    store %83, 0.0f
+    %84:ptr<storage, f32, read_write> = access %outputs, 81i, 0u
+    store %84, 0.0f
+    %85:ptr<storage, f32, read_write> = access %outputs, 82i, 0u
+    store %85, 0.0f
+    %86:ptr<storage, f32, read_write> = access %outputs, 83i, 0u
+    store %86, 0.0f
+    %87:ptr<storage, f32, read_write> = access %outputs, 84i, 0u
+    store %87, 0.0f
+    %88:ptr<storage, f32, read_write> = access %outputs, 85i, 0u
+    store %88, 0.0f
+    %89:ptr<storage, f32, read_write> = access %outputs, 86i, 0u
+    store %89, 0.0f
+    %90:ptr<storage, f32, read_write> = access %outputs, 87i, 0u
+    store %90, 0.0f
+    %91:ptr<storage, f32, read_write> = access %outputs, 88i, 0u
+    store %91, 0.0f
+    %92:ptr<storage, f32, read_write> = access %outputs, 89i, 0u
+    store %92, 0.0f
+    %93:ptr<storage, f32, read_write> = access %outputs, 90i, 0u
+    store %93, 0.0f
+    %94:ptr<storage, f32, read_write> = access %outputs, 91i, 0u
+    store %94, 0.0f
+    %95:ptr<storage, f32, read_write> = access %outputs, 92i, 0u
+    store %95, 0.0f
+    %96:ptr<storage, f32, read_write> = access %outputs, 93i, 0u
+    store %96, 0.0f
+    %97:ptr<storage, f32, read_write> = access %outputs, 94i, 0u
+    store %97, 0.0f
+    %98:ptr<storage, f32, read_write> = access %outputs, 95i, 0u
+    store %98, 0.0f
+    %99:ptr<storage, f32, read_write> = access %outputs, 96i, 0u
+    store %99, 0.0f
+    %100:ptr<storage, f32, read_write> = access %outputs, 97i, 0u
+    store %100, 0.0f
+    %101:ptr<storage, f32, read_write> = access %outputs, 98i, 0u
+    store %101, 0.0f
+    %102:ptr<storage, f32, read_write> = access %outputs, 99i, 0u
+    store %102, 0.0f
+    %103:ptr<storage, f32, read_write> = access %outputs, 100i, 0u
+    store %103, 0.0f
+    %104:ptr<storage, f32, read_write> = access %outputs, 101i, 0u
+    store %104, 0.0f
+    %105:ptr<storage, f32, read_write> = access %outputs, 102i, 0u
+    store %105, 0.0f
+    %106:ptr<storage, f32, read_write> = access %outputs, 103i, 0u
+    store %106, 0.0f
+    %107:ptr<storage, f32, read_write> = access %outputs, 104i, 0u
+    store %107, 0.0f
+    %108:ptr<storage, f32, read_write> = access %outputs, 105i, 0u
+    store %108, 0.0f
+    %109:ptr<storage, f32, read_write> = access %outputs, 106i, 0u
+    store %109, 0.0f
+    %110:ptr<storage, f32, read_write> = access %outputs, 107i, 0u
+    store %110, 0.0f
+    %111:ptr<storage, f32, read_write> = access %outputs, 108i, 0u
+    store %111, 0.0f
+    %112:ptr<storage, f32, read_write> = access %outputs, 109i, 0u
+    store %112, 0.0f
+    %113:ptr<storage, f32, read_write> = access %outputs, 110i, 0u
+    store %113, 0.0f
+    %114:ptr<storage, f32, read_write> = access %outputs, 111i, 0u
+    store %114, 0.0f
+    %115:ptr<storage, f32, read_write> = access %outputs, 112i, 0u
+    store %115, 0.0f
+    %116:ptr<storage, f32, read_write> = access %outputs, 113i, 0u
+    store %116, 0.0f
+    %117:ptr<storage, f32, read_write> = access %outputs, 114i, 0u
+    store %117, 0.0f
+    %118:ptr<storage, f32, read_write> = access %outputs, 115i, 0u
+    store %118, 0.0f
+    %119:ptr<storage, f32, read_write> = access %outputs, 116i, 0u
+    store %119, 0.0f
+    %120:ptr<storage, f32, read_write> = access %outputs, 117i, 0u
+    store %120, 0.0f
+    %121:ptr<storage, f32, read_write> = access %outputs, 118i, 0u
+    store %121, 0.0f
+    %122:ptr<storage, f32, read_write> = access %outputs, 119i, 0u
+    store %122, 0.0f
+    %123:ptr<storage, f32, read_write> = access %outputs, 120i, 0u
+    store %123, 0.0f
+    %124:ptr<storage, f32, read_write> = access %outputs, 121i, 0u
+    store %124, -2.35619449615478515625f
+    %125:ptr<storage, f32, read_write> = access %outputs, 122i, 0u
+    store %125, -2.89661407470703125f
+    %126:ptr<storage, f32, read_write> = access %outputs, 123i, 0u
+    store %126, -3.03093552589416503906f
+    %127:ptr<storage, f32, read_write> = access %outputs, 124i, 0u
+    store %127, -3.07917380332946777344f
+    %128:ptr<storage, f32, read_write> = access %outputs, 125i, 0u
+    store %128, -3.1016139984130859375f
+    %129:ptr<storage, f32, read_write> = access %outputs, 126i, 0u
+    store %129, -3.11382198333740234375f
+    %130:ptr<storage, f32, read_write> = access %outputs, 127i, 0u
+    store %130, -3.1211872100830078125f
+    %131:ptr<storage, f32, read_write> = access %outputs, 128i, 0u
+    store %131, -3.12596893310546875f
+    %132:ptr<storage, f32, read_write> = access %outputs, 129i, 0u
+    store %132, -3.1292476654052734375f
+    %133:ptr<storage, f32, read_write> = access %outputs, 130i, 0u
+    store %133, -3.13159298896789550781f
+    %134:ptr<storage, f32, read_write> = access %outputs, 131i, 0u
+    store %134, -3.13332843780517578125f
+    %135:ptr<storage, f32, read_write> = access %outputs, 132i, 0u
+    store %135, -3.13464832305908203125f
+    %136:ptr<storage, f32, read_write> = access %outputs, 133i, 0u
+    store %136, -3.13567566871643066406f
+    %137:ptr<storage, f32, read_write> = access %outputs, 134i, 0u
+    store %137, -3.13649058341979980469f
+    %138:ptr<storage, f32, read_write> = access %outputs, 135i, 0u
+    store %138, -3.13714814186096191406f
+    %139:ptr<storage, f32, read_write> = access %outputs, 136i, 0u
+    store %139, -3.13768649101257324219f
+    %140:ptr<storage, f32, read_write> = access %outputs, 137i, 0u
+    store %140, -3.13813257217407226562f
+    %141:ptr<storage, f32, read_write> = access %outputs, 138i, 0u
+    store %141, -3.13850617408752441406f
+    %142:ptr<storage, f32, read_write> = access %outputs, 139i, 0u
+    store %142, -3.1388225555419921875f
+    %143:ptr<storage, f32, read_write> = access %outputs, 140i, 0u
+    store %143, -3.13909268379211425781f
+    %144:ptr<storage, f32, read_write> = access %outputs, 141i, 0u
+    store %144, -3.13932514190673828125f
+    %145:ptr<storage, f32, read_write> = access %outputs, 142i, 0u
+    store %145, -3.13952660560607910156f
+    %146:ptr<storage, f32, read_write> = access %outputs, 143i, 0u
+    store %146, -3.13970232009887695312f
+    %147:ptr<storage, f32, read_write> = access %outputs, 144i, 0u
+    store %147, -3.13985657691955566406f
+    %148:ptr<storage, f32, read_write> = access %outputs, 145i, 0u
+    store %148, -3.13999271392822265625f
+    %149:ptr<storage, f32, read_write> = access %outputs, 146i, 0u
+    store %149, -3.14011335372924804688f
+    %150:ptr<storage, f32, read_write> = access %outputs, 147i, 0u
+    store %150, -3.14022088050842285156f
+    %151:ptr<storage, f32, read_write> = access %outputs, 148i, 0u
+    store %151, -3.14031720161437988281f
+    %152:ptr<storage, f32, read_write> = access %outputs, 149i, 0u
+    store %152, -3.14040350914001464844f
+    %153:ptr<storage, f32, read_write> = access %outputs, 150i, 0u
+    store %153, -3.14048147201538085938f
+    %154:ptr<storage, f32, read_write> = access %outputs, 151i, 0u
+    store %154, -3.14055204391479492188f
+    %155:ptr<storage, f32, read_write> = access %outputs, 152i, 0u
+    store %155, -3.14061617851257324219f
+    %156:ptr<storage, f32, read_write> = access %outputs, 153i, 0u
+    store %156, -3.14067435264587402344f
+    %157:ptr<storage, f32, read_write> = access %outputs, 154i, 0u
+    store %157, -3.14072751998901367188f
+    %158:ptr<storage, f32, read_write> = access %outputs, 155i, 0u
+    store %158, -3.14077639579772949219f
+    %159:ptr<storage, f32, read_write> = access %outputs, 156i, 0u
+    store %159, -3.14082098007202148438f
+    %160:ptr<storage, f32, read_write> = access %outputs, 157i, 0u
+    store %160, -3.14086222648620605469f
+    %161:ptr<storage, f32, read_write> = access %outputs, 158i, 0u
+    store %161, -3.14090013504028320312f
+    %162:ptr<storage, f32, read_write> = access %outputs, 159i, 0u
+    store %162, -3.14093518257141113281f
+    %163:ptr<storage, f32, read_write> = access %outputs, 160i, 0u
+    store %163, -3.14096760749816894531f
+    %164:ptr<storage, f32, read_write> = access %outputs, 161i, 0u
+    store %164, -3.14099788665771484375f
+    %165:ptr<storage, f32, read_write> = access %outputs, 162i, 0u
+    store %165, -3.14102578163146972656f
+    %166:ptr<storage, f32, read_write> = access %outputs, 163i, 0u
+    store %166, -3.14105176925659179688f
+    %167:ptr<storage, f32, read_write> = access %outputs, 164i, 0u
+    store %167, -3.14107608795166015625f
+    %168:ptr<storage, f32, read_write> = access %outputs, 165i, 0u
+    store %168, -3.14109873771667480469f
+    %169:ptr<storage, f32, read_write> = access %outputs, 166i, 0u
+    store %169, -3.14111995697021484375f
+    %170:ptr<storage, f32, read_write> = access %outputs, 167i, 0u
+    store %170, -3.141139984130859375f
+    %171:ptr<storage, f32, read_write> = access %outputs, 168i, 0u
+    store %171, -3.14115858078002929688f
+    %172:ptr<storage, f32, read_write> = access %outputs, 169i, 0u
+    store %172, -3.1411762237548828125f
+    %173:ptr<storage, f32, read_write> = access %outputs, 170i, 0u
+    store %173, -1.57079625129699707031f
+    %174:ptr<storage, f32, read_write> = access %outputs, 171i, 0u
+    store %174, -1.57079625129699707031f
+    %175:ptr<storage, f32, read_write> = access %outputs, 172i, 0u
+    store %175, -1.57079625129699707031f
+    %176:ptr<storage, f32, read_write> = access %outputs, 173i, 0u
+    store %176, -1.57079625129699707031f
+    %177:ptr<storage, f32, read_write> = access %outputs, 174i, 0u
+    store %177, -1.57079625129699707031f
+    %178:ptr<storage, f32, read_write> = access %outputs, 175i, 0u
+    store %178, -1.57079625129699707031f
+    %179:ptr<storage, f32, read_write> = access %outputs, 176i, 0u
+    store %179, -1.57079625129699707031f
+    %180:ptr<storage, f32, read_write> = access %outputs, 177i, 0u
+    store %180, -1.57079625129699707031f
+    %181:ptr<storage, f32, read_write> = access %outputs, 178i, 0u
+    store %181, -1.57079625129699707031f
+    %182:ptr<storage, f32, read_write> = access %outputs, 179i, 0u
+    store %182, -1.57079625129699707031f
+    %183:ptr<storage, f32, read_write> = access %outputs, 180i, 0u
+    store %183, -1.57079637050628662109f
+    %184:ptr<storage, f32, read_write> = access %outputs, 181i, 0u
+    store %184, -1.57079637050628662109f
+    %185:ptr<storage, f32, read_write> = access %outputs, 182i, 0u
+    store %185, -1.57079637050628662109f
+    %186:ptr<storage, f32, read_write> = access %outputs, 183i, 0u
+    store %186, -1.57079637050628662109f
+    %187:ptr<storage, f32, read_write> = access %outputs, 184i, 0u
+    store %187, -1.57079637050628662109f
+    %188:ptr<storage, f32, read_write> = access %outputs, 185i, 0u
+    store %188, -1.57079637050628662109f
+    %189:ptr<storage, f32, read_write> = access %outputs, 186i, 0u
+    store %189, -1.57079637050628662109f
+    %190:ptr<storage, f32, read_write> = access %outputs, 187i, 0u
+    store %190, -1.57079637050628662109f
+    %191:ptr<storage, f32, read_write> = access %outputs, 188i, 0u
+    store %191, -1.57079637050628662109f
+    %192:ptr<storage, f32, read_write> = access %outputs, 189i, 0u
+    store %192, -1.57079637050628662109f
+    %193:ptr<storage, f32, read_write> = access %outputs, 190i, 0u
+    store %193, -1.57079637050628662109f
+    %194:ptr<storage, f32, read_write> = access %outputs, 191i, 0u
+    store %194, -1.57079637050628662109f
+    %195:ptr<storage, f32, read_write> = access %outputs, 192i, 0u
+    store %195, -0.78539818525314331055f
+    %196:ptr<storage, f32, read_write> = access %outputs, 193i, 0u
+    store %196, -0.24497866630554199219f
+    %197:ptr<storage, f32, read_write> = access %outputs, 194i, 0u
+    store %197, -0.11065722256898880005f
+    %198:ptr<storage, f32, read_write> = access %outputs, 195i, 0u
+    store %198, -0.06241881102323532104f
+    %199:ptr<storage, f32, read_write> = access %outputs, 196i, 0u
+    store %199, -0.03997868672013282776f
+    %200:ptr<storage, f32, read_write> = access %outputs, 197i, 0u
+    store %200, -0.02777063660323619843f
+    %201:ptr<storage, f32, read_write> = access %outputs, 198i, 0u
+    store %201, -0.02040532976388931274f
+    %202:ptr<storage, f32, read_write> = access %outputs, 199i, 0u
+    store %202, -0.01562372874468564987f
+    %203:ptr<storage, f32, read_write> = access %outputs, 200i, 0u
+    store %203, -0.0123450523242354393f
+    %204:ptr<storage, f32, read_write> = access %outputs, 201i, 0u
+    store %204, -0.00999966636300086975f
+    %205:ptr<storage, f32, read_write> = access %outputs, 202i, 0u
+    store %205, -0.00826427526772022247f
+    %206:ptr<storage, f32, read_write> = access %outputs, 203i, 0u
+    store %206, -0.00694433273747563362f
+    %207:ptr<storage, f32, read_write> = access %outputs, 204i, 0u
+    store %207, -0.00591709092259407043f
+    %208:ptr<storage, f32, read_write> = access %outputs, 205i, 0u
+    store %208, -0.00510199647396802902f
+    %209:ptr<storage, f32, read_write> = access %outputs, 206i, 0u
+    store %209, -0.00444441474974155426f
+    %210:ptr<storage, f32, read_write> = access %outputs, 207i, 0u
+    store %210, -0.00390623020939528942f
+    %211:ptr<storage, f32, read_write> = access %outputs, 208i, 0u
+    store %211, -0.00346019398421049118f
+    %212:ptr<storage, f32, read_write> = access %outputs, 209i, 0u
+    store %212, -0.00308640999719500542f
+    %213:ptr<storage, f32, read_write> = access %outputs, 210i, 0u
+    store %213, -0.00277007604017853737f
+    %214:ptr<storage, f32, read_write> = access %outputs, 211i, 0u
+    store %214, -0.00249999482184648514f
+    %215:ptr<storage, f32, read_write> = access %outputs, 212i, 0u
+    store %215, -0.00226756976917386055f
+    %216:ptr<storage, f32, read_write> = access %outputs, 213i, 0u
+    store %216, -0.0020661128219217062f
+    %217:ptr<storage, f32, read_write> = access %outputs, 214i, 0u
+    store %217, -0.00189035700168460608f
+    %218:ptr<storage, f32, read_write> = access %outputs, 215i, 0u
+    store %218, -0.00173610937781631947f
+    %219:ptr<storage, f32, read_write> = access %outputs, 216i, 0u
+    store %219, -0.00159999867901206017f
+    %220:ptr<storage, f32, read_write> = access %outputs, 217i, 0u
+    store %220, -0.00147928891237825155f
+    %221:ptr<storage, f32, read_write> = access %outputs, 218i, 0u
+    store %221, -0.00137174129486083984f
+    %222:ptr<storage, f32, read_write> = access %outputs, 219i, 0u
+    store %222, -0.00127550947945564985f
+    %223:ptr<storage, f32, read_write> = access %outputs, 220i, 0u
+    store %223, -0.00118906004354357719f
+    %224:ptr<storage, f32, read_write> = access %outputs, 221i, 0u
+    store %224, -0.00111111055593937635f
+    %225:ptr<storage, f32, read_write> = access %outputs, 222i, 0u
+    store %225, -0.00104058242868632078f
+    %226:ptr<storage, f32, read_write> = access %outputs, 223i, 0u
+    store %226, -0.00097656220896169543f
+    %227:ptr<storage, f32, read_write> = access %outputs, 224i, 0u
+    store %227, -0.00091827340656891465f
+    %228:ptr<storage, f32, read_write> = access %outputs, 225i, 0u
+    store %228, -0.00086505169747397304f
+    %229:ptr<storage, f32, read_write> = access %outputs, 226i, 0u
+    store %229, -0.00081632629735395312f
+    %230:ptr<storage, f32, read_write> = access %outputs, 227i, 0u
+    store %230, -0.00077160476939752698f
+    %231:ptr<storage, f32, read_write> = access %outputs, 228i, 0u
+    store %231, -0.00073046010220423341f
+    %232:ptr<storage, f32, read_write> = access %outputs, 229i, 0u
+    store %232, -0.00069252063985913992f
+    %233:ptr<storage, f32, read_write> = access %outputs, 230i, 0u
+    store %233, -0.00065746204927563667f
+    %234:ptr<storage, f32, read_write> = access %outputs, 231i, 0u
+    store %234, -0.00062499992782250047f
+    %235:ptr<storage, f32, read_write> = access %outputs, 232i, 0u
+    store %235, -0.00059488392435014248f
+    %236:ptr<storage, f32, read_write> = access %outputs, 233i, 0u
+    store %236, -0.00056689337361603975f
+    %237:ptr<storage, f32, read_write> = access %outputs, 234i, 0u
+    store %237, -0.00054083281429484487f
+    %238:ptr<storage, f32, read_write> = access %outputs, 235i, 0u
+    store %238, -0.00051652890397235751f
+    %239:ptr<storage, f32, read_write> = access %outputs, 236i, 0u
+    store %239, -0.00049382710130885243f
+    %240:ptr<storage, f32, read_write> = access %outputs, 237i, 0u
+    store %240, -0.00047258977429009974f
+    %241:ptr<storage, f32, read_write> = access %outputs, 238i, 0u
+    store %241, -0.00045269349357113242f
+    %242:ptr<storage, f32, read_write> = access %outputs, 239i, 0u
+    store %242, -0.00043402775190770626f
+    %243:ptr<storage, f32, read_write> = access %outputs, 240i, 0u
+    store %243, -0.0004164931015111506f
+    %244:ptr<storage, f32, read_write> = access %outputs, 241i, 0u
+    store %244, -2.35619449615478515625f
+    %245:ptr<storage, f32, read_write> = access %outputs, 242i, 0u
+    store %245, -2.72336840629577636719f
+    %246:ptr<storage, f32, read_write> = access %outputs, 243i, 0u
+    store %246, -2.89661407470703125f
+    %247:ptr<storage, f32, read_write> = access %outputs, 244i, 0u
+    store %247, -2.98293733596801757812f
+    %248:ptr<storage, f32, read_write> = access %outputs, 245i, 0u
+    store %248, -3.03093552589416503906f
+    %249:ptr<storage, f32, read_write> = access %outputs, 246i, 0u
+    store %249, -3.0601406097412109375f
+    %250:ptr<storage, f32, read_write> = access %outputs, 247i, 0u
+    store %250, -3.07917380332946777344f
+    %251:ptr<storage, f32, read_write> = access %outputs, 248i, 0u
+    store %251, -3.09225010871887207031f
+    %252:ptr<storage, f32, read_write> = access %outputs, 249i, 0u
+    store %252, -3.1016139984130859375f
+    %253:ptr<storage, f32, read_write> = access %outputs, 250i, 0u
+    store %253, -3.10854673385620117188f
+    %254:ptr<storage, f32, read_write> = access %outputs, 251i, 0u
+    store %254, -3.11382198333740234375f
+    %255:ptr<storage, f32, read_write> = access %outputs, 252i, 0u
+    store %255, -3.11792850494384765625f
+    %256:ptr<storage, f32, read_write> = access %outputs, 253i, 0u
+    store %256, -3.1211872100830078125f
+    %257:ptr<storage, f32, read_write> = access %outputs, 254i, 0u
+    store %257, -3.12381672859191894531f
+    %258:ptr<storage, f32, read_write> = access %outputs, 255i, 0u
+    store %258, -3.12596893310546875f
+    %259:ptr<storage, f32, read_write> = access %outputs, 256i, 0u
+    store %259, -3.12775278091430664062f
+    %260:ptr<storage, f32, read_write> = access %outputs, 257i, 0u
+    store %260, -3.1292476654052734375f
+    %261:ptr<storage, f32, read_write> = access %outputs, 258i, 0u
+    store %261, -3.13051271438598632812f
+    %262:ptr<storage, f32, read_write> = access %outputs, 259i, 0u
+    store %262, -3.13159298896789550781f
+    %263:ptr<storage, f32, read_write> = access %outputs, 260i, 0u
+    store %263, -3.1325225830078125f
+    %264:ptr<storage, f32, read_write> = access %outputs, 261i, 0u
+    store %264, -3.13332843780517578125f
+    %265:ptr<storage, f32, read_write> = access %outputs, 262i, 0u
+    store %265, -3.1340312957763671875f
+    %266:ptr<storage, f32, read_write> = access %outputs, 263i, 0u
+    store %266, -3.13464832305908203125f
+    %267:ptr<storage, f32, read_write> = access %outputs, 264i, 0u
+    store %267, -3.13519263267517089844f
+    %268:ptr<storage, f32, read_write> = access %outputs, 265i, 0u
+    store %268, -3.13567566871643066406f
+    %269:ptr<storage, f32, read_write> = access %outputs, 266i, 0u
+    store %269, -3.13610577583312988281f
+    %270:ptr<storage, f32, read_write> = access %outputs, 267i, 0u
+    store %270, -3.13649058341979980469f
+    %271:ptr<storage, f32, read_write> = access %outputs, 268i, 0u
+    store %271, -3.13683652877807617188f
+    %272:ptr<storage, f32, read_write> = access %outputs, 269i, 0u
+    store %272, -3.13714814186096191406f
+    %273:ptr<storage, f32, read_write> = access %outputs, 270i, 0u
+    store %273, -3.13743042945861816406f
+    %274:ptr<storage, f32, read_write> = access %outputs, 271i, 0u
+    store %274, -3.13768649101257324219f
+    %275:ptr<storage, f32, read_write> = access %outputs, 272i, 0u
+    store %275, -3.13791966438293457031f
+    %276:ptr<storage, f32, read_write> = access %outputs, 273i, 0u
+    store %276, -3.13813257217407226562f
+    %277:ptr<storage, f32, read_write> = access %outputs, 274i, 0u
+    store %277, -3.13832736015319824219f
+    %278:ptr<storage, f32, read_write> = access %outputs, 275i, 0u
+    store %278, -3.13850617408752441406f
+    %279:ptr<storage, f32, read_write> = access %outputs, 276i, 0u
+    store %279, -3.13867092132568359375f
+    %280:ptr<storage, f32, read_write> = access %outputs, 277i, 0u
+    store %280, -3.1388225555419921875f
+    %281:ptr<storage, f32, read_write> = access %outputs, 278i, 0u
+    store %281, -3.13896274566650390625f
+    %282:ptr<storage, f32, read_write> = access %outputs, 279i, 0u
+    store %282, -3.13909268379211425781f
+    %283:ptr<storage, f32, read_write> = access %outputs, 280i, 0u
+    store %283, -3.13921308517456054688f
+    %284:ptr<storage, f32, read_write> = access %outputs, 281i, 0u
+    store %284, -3.13932514190673828125f
+    %285:ptr<storage, f32, read_write> = access %outputs, 282i, 0u
+    store %285, -3.13942933082580566406f
+    %286:ptr<storage, f32, read_write> = access %outputs, 283i, 0u
+    store %286, -3.13952660560607910156f
+    %287:ptr<storage, f32, read_write> = access %outputs, 284i, 0u
+    store %287, -3.13961744308471679688f
+    %288:ptr<storage, f32, read_write> = access %outputs, 285i, 0u
+    store %288, -3.13970232009887695312f
+    %289:ptr<storage, f32, read_write> = access %outputs, 286i, 0u
+    store %289, -3.139781951904296875f
+    %290:ptr<storage, f32, read_write> = access %outputs, 287i, 0u
+    store %290, -3.13985657691955566406f
+    %291:ptr<storage, f32, read_write> = access %outputs, 288i, 0u
+    store %291, -3.13992667198181152344f
+    %292:ptr<storage, f32, read_write> = access %outputs, 289i, 0u
+    store %292, -1.57079625129699707031f
+    %293:ptr<storage, f32, read_write> = access %outputs, 290i, 0u
+    store %293, -1.57079625129699707031f
+    %294:ptr<storage, f32, read_write> = access %outputs, 291i, 0u
+    store %294, -1.57079625129699707031f
+    %295:ptr<storage, f32, read_write> = access %outputs, 292i, 0u
+    store %295, -1.57079625129699707031f
+    %296:ptr<storage, f32, read_write> = access %outputs, 293i, 0u
+    store %296, -1.57079625129699707031f
+    %297:ptr<storage, f32, read_write> = access %outputs, 294i, 0u
+    store %297, -1.57079625129699707031f
+    %298:ptr<storage, f32, read_write> = access %outputs, 295i, 0u
+    store %298, -1.57079625129699707031f
+    %299:ptr<storage, f32, read_write> = access %outputs, 296i, 0u
+    store %299, -1.57079625129699707031f
+    %300:ptr<storage, f32, read_write> = access %outputs, 297i, 0u
+    store %300, -1.57079625129699707031f
+    %301:ptr<storage, f32, read_write> = access %outputs, 298i, 0u
+    store %301, -1.57079625129699707031f
+    %302:ptr<storage, f32, read_write> = access %outputs, 299i, 0u
+    store %302, -1.57079637050628662109f
+    %303:ptr<storage, f32, read_write> = access %outputs, 300i, 0u
+    store %303, -1.57079637050628662109f
+    %304:ptr<storage, f32, read_write> = access %outputs, 301i, 0u
+    store %304, -1.57079637050628662109f
+    %305:ptr<storage, f32, read_write> = access %outputs, 302i, 0u
+    store %305, -1.57079637050628662109f
+    %306:ptr<storage, f32, read_write> = access %outputs, 303i, 0u
+    store %306, -1.57079637050628662109f
+    %307:ptr<storage, f32, read_write> = access %outputs, 304i, 0u
+    store %307, -1.57079637050628662109f
+    %308:ptr<storage, f32, read_write> = access %outputs, 305i, 0u
+    store %308, -1.57079637050628662109f
+    %309:ptr<storage, f32, read_write> = access %outputs, 306i, 0u
+    store %309, -1.57079637050628662109f
+    %310:ptr<storage, f32, read_write> = access %outputs, 307i, 0u
+    store %310, -1.57079637050628662109f
+    %311:ptr<storage, f32, read_write> = access %outputs, 308i, 0u
+    store %311, -1.57079637050628662109f
+    %312:ptr<storage, f32, read_write> = access %outputs, 309i, 0u
+    store %312, -1.57079637050628662109f
+    %313:ptr<storage, f32, read_write> = access %outputs, 310i, 0u
+    store %313, -1.57079637050628662109f
+    %314:ptr<storage, f32, read_write> = access %outputs, 311i, 0u
+    store %314, -1.32581770420074462891f
+    %315:ptr<storage, f32, read_write> = access %outputs, 312i, 0u
+    store %315, -0.78539818525314331055f
+    %316:ptr<storage, f32, read_write> = access %outputs, 313i, 0u
+    store %316, -0.418224334716796875f
+    %317:ptr<storage, f32, read_write> = access %outputs, 314i, 0u
+    store %317, -0.24497866630554199219f
+    %318:ptr<storage, f32, read_write> = access %outputs, 315i, 0u
+    store %318, -0.15865525603294372559f
+    %319:ptr<storage, f32, read_write> = access %outputs, 316i, 0u
+    store %319, -0.11065722256898880005f
+    %320:ptr<storage, f32, read_write> = access %outputs, 317i, 0u
+    store %320, -0.0814520418643951416f
+    %321:ptr<storage, f32, read_write> = access %outputs, 318i, 0u
+    store %321, -0.06241881102323532104f
+    %322:ptr<storage, f32, read_write> = access %outputs, 319i, 0u
+    store %322, -0.04934263229370117188f
+    %323:ptr<storage, f32, read_write> = access %outputs, 320i, 0u
+    store %323, -0.03997868672013282776f
+    %324:ptr<storage, f32, read_write> = access %outputs, 321i, 0u
+    store %324, -0.03304582089185714722f
+    %325:ptr<storage, f32, read_write> = access %outputs, 322i, 0u
+    store %325, -0.02777063660323619843f
+    %326:ptr<storage, f32, read_write> = access %outputs, 323i, 0u
+    store %326, -0.02366422116756439209f
+    %327:ptr<storage, f32, read_write> = access %outputs, 324i, 0u
+    store %327, -0.02040532976388931274f
+    %328:ptr<storage, f32, read_write> = access %outputs, 325i, 0u
+    store %328, -0.01777590438723564148f
+    %329:ptr<storage, f32, read_write> = access %outputs, 326i, 0u
+    store %329, -0.01562372874468564987f
+    %330:ptr<storage, f32, read_write> = access %outputs, 327i, 0u
+    store %330, -0.01383994705975055695f
+    %331:ptr<storage, f32, read_write> = access %outputs, 328i, 0u
+    store %331, -0.0123450523242354393f
+    %332:ptr<storage, f32, read_write> = access %outputs, 329i, 0u
+    store %332, -0.0110798785462975502f
+    %333:ptr<storage, f32, read_write> = access %outputs, 330i, 0u
+    store %333, -0.00999966636300086975f
+    %334:ptr<storage, f32, read_write> = access %outputs, 331i, 0u
+    store %334, -0.00907004624605178833f
+    %335:ptr<storage, f32, read_write> = access %outputs, 332i, 0u
+    store %335, -0.00826427526772022247f
+    %336:ptr<storage, f32, read_write> = access %outputs, 333i, 0u
+    store %336, -0.00756129296496510506f
+    %337:ptr<storage, f32, read_write> = access %outputs, 334i, 0u
+    store %337, -0.00694433273747563362f
+    %338:ptr<storage, f32, read_write> = access %outputs, 335i, 0u
+    store %338, -0.0063999127596616745f
+    %339:ptr<storage, f32, read_write> = access %outputs, 336i, 0u
+    store %339, -0.00591709092259407043f
+    %340:ptr<storage, f32, read_write> = access %outputs, 337i, 0u
+    store %340, -0.00548691349104046822f
+    %341:ptr<storage, f32, read_write> = access %outputs, 338i, 0u
+    store %341, -0.00510199647396802902f
+    %342:ptr<storage, f32, read_write> = access %outputs, 339i, 0u
+    store %342, -0.00475620664656162262f
+    %343:ptr<storage, f32, read_write> = access %outputs, 340i, 0u
+    store %343, -0.00444441474974155426f
+    %344:ptr<storage, f32, read_write> = access %outputs, 341i, 0u
+    store %344, -0.00416230689734220505f
+    %345:ptr<storage, f32, read_write> = access %outputs, 342i, 0u
+    store %345, -0.00390623020939528942f
+    %346:ptr<storage, f32, read_write> = access %outputs, 343i, 0u
+    store %346, -0.0036730780266225338f
+    %347:ptr<storage, f32, read_write> = access %outputs, 344i, 0u
+    store %347, -0.00346019398421049118f
+    %348:ptr<storage, f32, read_write> = access %outputs, 345i, 0u
+    store %348, -0.00326529424637556076f
+    %349:ptr<storage, f32, read_write> = access %outputs, 346i, 0u
+    store %349, -0.00308640999719500542f
+    %350:ptr<storage, f32, read_write> = access %outputs, 347i, 0u
+    store %350, -0.0029218324925750494f
+    %351:ptr<storage, f32, read_write> = access %outputs, 348i, 0u
+    store %351, -0.00277007604017853737f
+    %352:ptr<storage, f32, read_write> = access %outputs, 349i, 0u
+    store %352, -0.002629842609167099f
+    %353:ptr<storage, f32, read_write> = access %outputs, 350i, 0u
+    store %353, -0.00249999482184648514f
+    %354:ptr<storage, f32, read_write> = access %outputs, 351i, 0u
+    store %354, -0.00237953150644898415f
+    %355:ptr<storage, f32, read_write> = access %outputs, 352i, 0u
+    store %355, -0.00226756976917386055f
+    %356:ptr<storage, f32, read_write> = access %outputs, 353i, 0u
+    store %356, -0.00216332823038101196f
+    %357:ptr<storage, f32, read_write> = access %outputs, 354i, 0u
+    store %357, -0.0020661128219217062f
+    %358:ptr<storage, f32, read_write> = access %outputs, 355i, 0u
+    store %358, -0.0019753060769289732f
+    %359:ptr<storage, f32, read_write> = access %outputs, 356i, 0u
+    store %359, -0.00189035700168460608f
+    %360:ptr<storage, f32, read_write> = access %outputs, 357i, 0u
+    store %360, -0.00181077211163938046f
+    %361:ptr<storage, f32, read_write> = access %outputs, 358i, 0u
+    store %361, -0.00173610937781631947f
+    %362:ptr<storage, f32, read_write> = access %outputs, 359i, 0u
+    store %362, -0.00166597100906074047f
+    %363:ptr<storage, f32, read_write> = access %outputs, 360i, 0u
+    store %363, -2.35619449615478515625f
+    %364:ptr<storage, f32, read_write> = access %outputs, 361i, 0u
+    store %364, -2.62920331954956054688f
+    %365:ptr<storage, f32, read_write> = access %outputs, 362i, 0u
+    store %365, -2.79603719711303710938f
+    %366:ptr<storage, f32, read_write> = access %outputs, 363i, 0u
+    store %366, -2.89661407470703125f
+    %367:ptr<storage, f32, read_write> = access %outputs, 364i, 0u
+    store %367, -2.9599437713623046875f
+    %368:ptr<storage, f32, read_write> = access %outputs, 365i, 0u
+    store %368, -3.00188374519348144531f
+    %369:ptr<storage, f32, read_write> = access %outputs, 366i, 0u
+    store %369, -3.03093552589416503906f
+    %370:ptr<storage, f32, read_write> = access %outputs, 367i, 0u
+    store %370, -3.05183458328247070312f
+    %371:ptr<storage, f32, read_write> = access %outputs, 368i, 0u
+    store %371, -3.06734919548034667969f
+    %372:ptr<storage, f32, read_write> = access %outputs, 369i, 0u
+    store %372, -3.07917380332946777344f
+    %373:ptr<storage, f32, read_write> = access %outputs, 370i, 0u
+    store %373, -3.0883884429931640625f
+    %374:ptr<storage, f32, read_write> = access %outputs, 371i, 0u
+    store %374, -3.09570646286010742188f
+    %375:ptr<storage, f32, read_write> = access %outputs, 372i, 0u
+    store %375, -3.1016139984130859375f
+    %376:ptr<storage, f32, read_write> = access %outputs, 373i, 0u
+    store %376, -3.10645079612731933594f
+    %377:ptr<storage, f32, read_write> = access %outputs, 374i, 0u
+    store %377, -3.11046075820922851562f
+    %378:ptr<storage, f32, read_write> = access %outputs, 375i, 0u
+    store %378, -3.11382198333740234375f
+    %379:ptr<storage, f32, read_write> = access %outputs, 376i, 0u
+    store %379, -3.11666703224182128906f
+    %380:ptr<storage, f32, read_write> = access %outputs, 377i, 0u
+    store %380, -3.11909651756286621094f
+    %381:ptr<storage, f32, read_write> = access %outputs, 378i, 0u
+    store %381, -3.1211872100830078125f
+    %382:ptr<storage, f32, read_write> = access %outputs, 379i, 0u
+    store %382, -3.12299966812133789062f
+    %383:ptr<storage, f32, read_write> = access %outputs, 380i, 0u
+    store %383, -3.12458109855651855469f
+    %384:ptr<storage, f32, read_write> = access %outputs, 381i, 0u
+    store %384, -3.12596893310546875f
+    %385:ptr<storage, f32, read_write> = access %outputs, 382i, 0u
+    store %385, -3.12719368934631347656f
+    %386:ptr<storage, f32, read_write> = access %outputs, 383i, 0u
+    store %386, -3.12827992439270019531f
+    %387:ptr<storage, f32, read_write> = access %outputs, 384i, 0u
+    store %387, -3.1292476654052734375f
+    %388:ptr<storage, f32, read_write> = access %outputs, 385i, 0u
+    store %388, -3.1301136016845703125f
+    %389:ptr<storage, f32, read_write> = access %outputs, 386i, 0u
+    store %389, -3.13089156150817871094f
+    %390:ptr<storage, f32, read_write> = access %outputs, 387i, 0u
+    store %390, -3.13159298896789550781f
+    %391:ptr<storage, f32, read_write> = access %outputs, 388i, 0u
+    store %391, -3.13222765922546386719f
+    %392:ptr<storage, f32, read_write> = access %outputs, 389i, 0u
+    store %392, -3.13280391693115234375f
+    %393:ptr<storage, f32, read_write> = access %outputs, 390i, 0u
+    store %393, -3.13332843780517578125f
+    %394:ptr<storage, f32, read_write> = access %outputs, 391i, 0u
+    store %394, -3.13380742073059082031f
+    %395:ptr<storage, f32, read_write> = access %outputs, 392i, 0u
+    store %395, -3.13424587249755859375f
+    %396:ptr<storage, f32, read_write> = access %outputs, 393i, 0u
+    store %396, -3.13464832305908203125f
+    %397:ptr<storage, f32, read_write> = access %outputs, 394i, 0u
+    store %397, -3.13501858711242675781f
+    %398:ptr<storage, f32, read_write> = access %outputs, 395i, 0u
+    store %398, -3.13536000251770019531f
+    %399:ptr<storage, f32, read_write> = access %outputs, 396i, 0u
+    store %399, -3.13567566871643066406f
+    %400:ptr<storage, f32, read_write> = access %outputs, 397i, 0u
+    store %400, -3.13596773147583007812f
+    %401:ptr<storage, f32, read_write> = access %outputs, 398i, 0u
+    store %401, -3.13623881340026855469f
+    %402:ptr<storage, f32, read_write> = access %outputs, 399i, 0u
+    store %402, -3.13649058341979980469f
+    %403:ptr<storage, f32, read_write> = access %outputs, 400i, 0u
+    store %403, -3.13672518730163574219f
+    %404:ptr<storage, f32, read_write> = access %outputs, 401i, 0u
+    store %404, -3.136943817138671875f
+    %405:ptr<storage, f32, read_write> = access %outputs, 402i, 0u
+    store %405, -3.13714814186096191406f
+    %406:ptr<storage, f32, read_write> = access %outputs, 403i, 0u
+    store %406, -3.13733935356140136719f
+    %407:ptr<storage, f32, read_write> = access %outputs, 404i, 0u
+    store %407, -3.13751840591430664062f
+    %408:ptr<storage, f32, read_write> = access %outputs, 405i, 0u
+    store %408, -3.13768649101257324219f
+    %409:ptr<storage, f32, read_write> = access %outputs, 406i, 0u
+    store %409, -3.13784432411193847656f
+    %410:ptr<storage, f32, read_write> = access %outputs, 407i, 0u
+    store %410, -1.57079625129699707031f
+    %411:ptr<storage, f32, read_write> = access %outputs, 408i, 0u
+    store %411, -1.57079625129699707031f
+    %412:ptr<storage, f32, read_write> = access %outputs, 409i, 0u
+    store %412, -1.57079625129699707031f
+    %413:ptr<storage, f32, read_write> = access %outputs, 410i, 0u
+    store %413, -1.57079625129699707031f
+    %414:ptr<storage, f32, read_write> = access %outputs, 411i, 0u
+    store %414, -1.57079625129699707031f
+    %415:ptr<storage, f32, read_write> = access %outputs, 412i, 0u
+    store %415, -1.57079625129699707031f
+    %416:ptr<storage, f32, read_write> = access %outputs, 413i, 0u
+    store %416, -1.57079625129699707031f
+    %417:ptr<storage, f32, read_write> = access %outputs, 414i, 0u
+    store %417, -1.57079625129699707031f
+    %418:ptr<storage, f32, read_write> = access %outputs, 415i, 0u
+    store %418, -1.57079625129699707031f
+    %419:ptr<storage, f32, read_write> = access %outputs, 416i, 0u
+    store %419, -1.57079625129699707031f
+    %420:ptr<storage, f32, read_write> = access %outputs, 417i, 0u
+    store %420, -1.57079637050628662109f
+    %421:ptr<storage, f32, read_write> = access %outputs, 418i, 0u
+    store %421, -1.57079637050628662109f
+    %422:ptr<storage, f32, read_write> = access %outputs, 419i, 0u
+    store %422, -1.57079637050628662109f
+    %423:ptr<storage, f32, read_write> = access %outputs, 420i, 0u
+    store %423, -1.57079637050628662109f
+    %424:ptr<storage, f32, read_write> = access %outputs, 421i, 0u
+    store %424, -1.57079637050628662109f
+    %425:ptr<storage, f32, read_write> = access %outputs, 422i, 0u
+    store %425, -1.57079637050628662109f
+    %426:ptr<storage, f32, read_write> = access %outputs, 423i, 0u
+    store %426, -1.57079637050628662109f
+    %427:ptr<storage, f32, read_write> = access %outputs, 424i, 0u
+    store %427, -1.57079637050628662109f
+    %428:ptr<storage, f32, read_write> = access %outputs, 425i, 0u
+    store %428, -1.57079637050628662109f
+    %429:ptr<storage, f32, read_write> = access %outputs, 426i, 0u
+    store %429, -1.57079637050628662109f
+    %430:ptr<storage, f32, read_write> = access %outputs, 427i, 0u
+    store %430, -1.57079637050628662109f
+    %431:ptr<storage, f32, read_write> = access %outputs, 428i, 0u
+    store %431, -1.57079637050628662109f
+    %432:ptr<storage, f32, read_write> = access %outputs, 429i, 0u
+    store %432, -1.46013915538787841797f
+    %433:ptr<storage, f32, read_write> = access %outputs, 430i, 0u
+    store %433, -1.15257203578948974609f
+    %434:ptr<storage, f32, read_write> = access %outputs, 431i, 0u
+    store %434, -0.78539818525314331055f
+    %435:ptr<storage, f32, read_write> = access %outputs, 432i, 0u
+    store %435, -0.5123894810676574707f
+    %436:ptr<storage, f32, read_write> = access %outputs, 433i, 0u
+    store %436, -0.34555557370185852051f
+    %437:ptr<storage, f32, read_write> = access %outputs, 434i, 0u
+    store %437, -0.24497866630554199219f
+    %438:ptr<storage, f32, read_write> = access %outputs, 435i, 0u
+    store %438, -0.18164882063865661621f
+    %439:ptr<storage, f32, read_write> = access %outputs, 436i, 0u
+    store %439, -0.13970887660980224609f
+    %440:ptr<storage, f32, read_write> = access %outputs, 437i, 0u
+    store %440, -0.11065721511840820312f
+    %441:ptr<storage, f32, read_write> = access %outputs, 438i, 0u
+    store %441, -0.08975817263126373291f
+    %442:ptr<storage, f32, read_write> = access %outputs, 439i, 0u
+    store %442, -0.07424345612525939941f
+    %443:ptr<storage, f32, read_write> = access %outputs, 440i, 0u
+    store %443, -0.06241881102323532104f
+    %444:ptr<storage, f32, read_write> = access %outputs, 441i, 0u
+    store %444, -0.05320417881011962891f
+    %445:ptr<storage, f32, read_write> = access %outputs, 442i, 0u
+    store %445, -0.0458861328661441803f
+    %446:ptr<storage, f32, read_write> = access %outputs, 443i, 0u
+    store %446, -0.03997868672013282776f
+    %447:ptr<storage, f32, read_write> = access %outputs, 444i, 0u
+    store %447, -0.03514177724719047546f
+    %448:ptr<storage, f32, read_write> = access %outputs, 445i, 0u
+    store %448, -0.03113180585205554962f
+    %449:ptr<storage, f32, read_write> = access %outputs, 446i, 0u
+    store %449, -0.02777063474059104919f
+    %450:ptr<storage, f32, read_write> = access %outputs, 447i, 0u
+    store %450, -0.02492558397352695465f
+    %451:ptr<storage, f32, read_write> = access %outputs, 448i, 0u
+    store %451, -0.02249620296061038971f
+    %452:ptr<storage, f32, read_write> = access %outputs, 449i, 0u
+    store %452, -0.02040532976388931274f
+    %453:ptr<storage, f32, read_write> = access %outputs, 450i, 0u
+    store %453, -0.01859289966523647308f
+    %454:ptr<storage, f32, read_write> = access %outputs, 451i, 0u
+    store %454, -0.01701159216463565826f
+    %455:ptr<storage, f32, read_write> = access %outputs, 452i, 0u
+    store %455, -0.01562372874468564987f
+    %456:ptr<storage, f32, read_write> = access %outputs, 453i, 0u
+    store %456, -0.01439900510013103485f
+    %457:ptr<storage, f32, read_write> = access %outputs, 454i, 0u
+    store %457, -0.01331282220780849457f
+    %458:ptr<storage, f32, read_write> = access %outputs, 455i, 0u
+    store %458, -0.0123450523242354393f
+    %459:ptr<storage, f32, read_write> = access %outputs, 456i, 0u
+    store %459, -0.01147908717393875122f
+    %460:ptr<storage, f32, read_write> = access %outputs, 457i, 0u
+    store %460, -0.01070113666355609894f
+    %461:ptr<storage, f32, read_write> = access %outputs, 458i, 0u
+    store %461, -0.00999966636300086975f
+    %462:ptr<storage, f32, read_write> = access %outputs, 459i, 0u
+    store %462, -0.00936497095972299576f
+    %463:ptr<storage, f32, read_write> = access %outputs, 460i, 0u
+    store %463, -0.00878883618861436844f
+    %464:ptr<storage, f32, read_write> = access %outputs, 461i, 0u
+    store %464, -0.00826427433639764786f
+    %465:ptr<storage, f32, read_write> = access %outputs, 462i, 0u
+    store %465, -0.0077853095717728138f
+    %466:ptr<storage, f32, read_write> = access %outputs, 463i, 0u
+    store %466, -0.0073468061164021492f
+    %467:ptr<storage, f32, read_write> = access %outputs, 464i, 0u
+    store %467, -0.00694433227181434631f
+    %468:ptr<storage, f32, read_write> = access %outputs, 465i, 0u
+    store %468, -0.0065740472637116909f
+    %469:ptr<storage, f32, read_write> = access %outputs, 466i, 0u
+    store %469, -0.00623260624706745148f
+    %470:ptr<storage, f32, read_write> = access %outputs, 467i, 0u
+    store %470, -0.00591709045693278313f
+    %471:ptr<storage, f32, read_write> = access %outputs, 468i, 0u
+    store %471, -0.00562494061887264252f
+    %472:ptr<storage, f32, read_write> = access %outputs, 469i, 0u
+    store %472, -0.00535390432924032211f
+    %473:ptr<storage, f32, read_write> = access %outputs, 470i, 0u
+    store %473, -0.00510199647396802902f
+    %474:ptr<storage, f32, read_write> = access %outputs, 471i, 0u
+    store %474, -0.00486745685338973999f
+    %475:ptr<storage, f32, read_write> = access %outputs, 472i, 0u
+    store %475, -0.00464872689917683601f
+    %476:ptr<storage, f32, read_write> = access %outputs, 473i, 0u
+    store %476, -0.00444441521540284157f
+    %477:ptr<storage, f32, read_write> = access %outputs, 474i, 0u
+    store %477, -0.00425328267738223076f
+    %478:ptr<storage, f32, read_write> = access %outputs, 475i, 0u
+    store %478, -0.00407421914860606194f
+    %479:ptr<storage, f32, read_write> = access %outputs, 476i, 0u
+    store %479, -0.00390623020939528942f
+    %480:ptr<storage, f32, read_write> = access %outputs, 477i, 0u
+    store %480, -0.00374842062592506409f
+    %481:ptr<storage, f32, read_write> = access %outputs, 478i, 0u
+    store %481, -2.35619449615478515625f
+    %482:ptr<storage, f32, read_write> = access %outputs, 479i, 0u
+    store %482, -2.57227945327758789062f
+    %483:ptr<storage, f32, read_write> = access %outputs, 480i, 0u
+    store %483, -2.72336840629577636719f
+    %484:ptr<storage, f32, read_write> = access %outputs, 481i, 0u
+    store %484, -2.82597708702087402344f
+    %485:ptr<storage, f32, read_write> = access %outputs, 482i, 0u
+    store %485, -2.89661407470703125f
+    %486:ptr<storage, f32, read_write> = access %outputs, 483i, 0u
+    store %486, -2.94657230377197265625f
+    %487:ptr<storage, f32, read_write> = access %outputs, 484i, 0u
+    store %487, -2.98293733596801757812f
+    %488:ptr<storage, f32, read_write> = access %outputs, 485i, 0u
+    store %488, -3.01012396812438964844f
+    %489:ptr<storage, f32, read_write> = access %outputs, 486i, 0u
+    store %489, -3.03093552589416503906f
+    %490:ptr<storage, f32, read_write> = access %outputs, 487i, 0u
+    store %490, -3.04719948768615722656f
+    %491:ptr<storage, f32, read_write> = access %outputs, 488i, 0u
+    store %491, -3.0601406097412109375f
+    %492:ptr<storage, f32, read_write> = access %outputs, 489i, 0u
+    store %492, -3.07060098648071289062f
+    %493:ptr<storage, f32, read_write> = access %outputs, 490i, 0u
+    store %493, -3.07917380332946777344f
+    %494:ptr<storage, f32, read_write> = access %outputs, 491i, 0u
+    store %494, -3.08628582954406738281f
+    %495:ptr<storage, f32, read_write> = access %outputs, 492i, 0u
+    store %495, -3.09225010871887207031f
+    %496:ptr<storage, f32, read_write> = access %outputs, 493i, 0u
+    store %496, -3.09730029106140136719f
+    %497:ptr<storage, f32, read_write> = access %outputs, 494i, 0u
+    store %497, -3.1016139984130859375f
+    %498:ptr<storage, f32, read_write> = access %outputs, 495i, 0u
+    store %498, -3.10532736778259277344f
+    %499:ptr<storage, f32, read_write> = access %outputs, 496i, 0u
+    store %499, -3.10854673385620117188f
+    %500:ptr<storage, f32, read_write> = access %outputs, 497i, 0u
+    store %500, -3.11135601997375488281f
+    %501:ptr<storage, f32, read_write> = access %outputs, 498i, 0u
+    store %501, -3.11382198333740234375f
+    %502:ptr<storage, f32, read_write> = access %outputs, 499i, 0u
+    store %502, -3.11599826812744140625f
+    %503:ptr<storage, f32, read_write> = access %outputs, 500i, 0u
+    store %503, -3.11792850494384765625f
+    %504:ptr<storage, f32, read_write> = access %outputs, 501i, 0u
+    store %504, -3.11964821815490722656f
+    %505:ptr<storage, f32, read_write> = access %outputs, 502i, 0u
+    store %505, -3.1211872100830078125f
+    %506:ptr<storage, f32, read_write> = access %outputs, 503i, 0u
+    store %506, -3.122570037841796875f
+    %507:ptr<storage, f32, read_write> = access %outputs, 504i, 0u
+    store %507, -3.12381672859191894531f
+    %508:ptr<storage, f32, read_write> = access %outputs, 505i, 0u
+    store %508, -3.12494492530822753906f
+    %509:ptr<storage, f32, read_write> = access %outputs, 506i, 0u
+    store %509, -3.12596893310546875f
+    %510:ptr<storage, f32, read_write> = access %outputs, 507i, 0u
+    store %510, -3.12690138816833496094f
+    %511:ptr<storage, f32, read_write> = access %outputs, 508i, 0u
+    store %511, -3.12775278091430664062f
+    %512:ptr<storage, f32, read_write> = access %outputs, 509i, 0u
+    store %512, -3.12853217124938964844f
+    %513:ptr<storage, f32, read_write> = access %outputs, 510i, 0u
+    store %513, -3.1292476654052734375f
+    %514:ptr<storage, f32, read_write> = access %outputs, 511i, 0u
+    store %514, -3.12990593910217285156f
+    %515:ptr<storage, f32, read_write> = access %outputs, 512i, 0u
+    store %515, -3.13051271438598632812f
+    %516:ptr<storage, f32, read_write> = access %outputs, 513i, 0u
+    store %516, -3.13107371330261230469f
+    %517:ptr<storage, f32, read_write> = access %outputs, 514i, 0u
+    store %517, -3.13159298896789550781f
+    %518:ptr<storage, f32, read_write> = access %outputs, 515i, 0u
+    store %518, -3.13207483291625976562f
+    %519:ptr<storage, f32, read_write> = access %outputs, 516i, 0u
+    store %519, -3.1325225830078125f
+    %520:ptr<storage, f32, read_write> = access %outputs, 517i, 0u
+    store %520, -3.13293957710266113281f
+    %521:ptr<storage, f32, read_write> = access %outputs, 518i, 0u
+    store %521, -3.13332843780517578125f
+    %522:ptr<storage, f32, read_write> = access %outputs, 519i, 0u
+    store %522, -3.13369154930114746094f
+    %523:ptr<storage, f32, read_write> = access %outputs, 520i, 0u
+    store %523, -3.1340312957763671875f
+    %524:ptr<storage, f32, read_write> = access %outputs, 521i, 0u
+    store %524, -3.13434958457946777344f
+    %525:ptr<storage, f32, read_write> = access %outputs, 522i, 0u
+    store %525, -3.13464832305908203125f
+    %526:ptr<storage, f32, read_write> = access %outputs, 523i, 0u
+    store %526, -3.13492894172668457031f
+    %527:ptr<storage, f32, read_write> = access %outputs, 524i, 0u
+    store %527, -1.57079625129699707031f
+    %528:ptr<storage, f32, read_write> = access %outputs, 525i, 0u
+    store %528, -1.57079625129699707031f
+    %529:ptr<storage, f32, read_write> = access %outputs, 526i, 0u
+    store %529, -1.57079625129699707031f
+    %530:ptr<storage, f32, read_write> = access %outputs, 527i, 0u
+    store %530, -1.57079625129699707031f
+    %531:ptr<storage, f32, read_write> = access %outputs, 528i, 0u
+    store %531, -1.57079625129699707031f
+    %532:ptr<storage, f32, read_write> = access %outputs, 529i, 0u
+    store %532, -1.57079625129699707031f
+    %533:ptr<storage, f32, read_write> = access %outputs, 530i, 0u
+    store %533, -1.57079625129699707031f
+    %534:ptr<storage, f32, read_write> = access %outputs, 531i, 0u
+    store %534, -1.57079625129699707031f
+    %535:ptr<storage, f32, read_write> = access %outputs, 532i, 0u
+    store %535, -1.57079625129699707031f
+    %536:ptr<storage, f32, read_write> = access %outputs, 533i, 0u
+    store %536, -1.57079625129699707031f
+    %537:ptr<storage, f32, read_write> = access %outputs, 534i, 0u
+    store %537, -1.57079637050628662109f
+    %538:ptr<storage, f32, read_write> = access %outputs, 535i, 0u
+    store %538, -1.57079637050628662109f
+    %539:ptr<storage, f32, read_write> = access %outputs, 536i, 0u
+    store %539, -1.57079637050628662109f
+    %540:ptr<storage, f32, read_write> = access %outputs, 537i, 0u
+    store %540, -1.57079637050628662109f
+    %541:ptr<storage, f32, read_write> = access %outputs, 538i, 0u
+    store %541, -1.57079637050628662109f
+    %542:ptr<storage, f32, read_write> = access %outputs, 539i, 0u
+    store %542, -1.57079637050628662109f
+    %543:ptr<storage, f32, read_write> = access %outputs, 540i, 0u
+    store %543, -1.57079637050628662109f
+    %544:ptr<storage, f32, read_write> = access %outputs, 541i, 0u
+    store %544, -1.57079637050628662109f
+    %545:ptr<storage, f32, read_write> = access %outputs, 542i, 0u
+    store %545, -1.57079637050628662109f
+    %546:ptr<storage, f32, read_write> = access %outputs, 543i, 0u
+    store %546, -1.57079637050628662109f
+    %547:ptr<storage, f32, read_write> = access %outputs, 544i, 0u
+    store %547, -1.57079637050628662109f
+    %548:ptr<storage, f32, read_write> = access %outputs, 545i, 0u
+    store %548, -1.57079637050628662109f
+    %549:ptr<storage, f32, read_write> = access %outputs, 546i, 0u
+    store %549, -1.50837755203247070312f
+    %550:ptr<storage, f32, read_write> = access %outputs, 547i, 0u
+    store %550, -1.32581770420074462891f
+    %551:ptr<storage, f32, read_write> = access %outputs, 548i, 0u
+    store %551, -1.058406829833984375f
+    %552:ptr<storage, f32, read_write> = access %outputs, 549i, 0u
+    store %552, -0.78539818525314331055f
+    %553:ptr<storage, f32, read_write> = access %outputs, 550i, 0u
+    store %553, -0.56931316852569580078f
+    %554:ptr<storage, f32, read_write> = access %outputs, 551i, 0u
+    store %554, -0.418224334716796875f
+    %555:ptr<storage, f32, read_write> = access %outputs, 552i, 0u
+    store %555, -0.31561565399169921875f
+    %556:ptr<storage, f32, read_write> = access %outputs, 553i, 0u
+    store %556, -0.24497866630554199219f
+    %557:ptr<storage, f32, read_write> = access %outputs, 554i, 0u
+    store %557, -0.19502027332782745361f
+    %558:ptr<storage, f32, read_write> = access %outputs, 555i, 0u
+    store %558, -0.15865525603294372559f
+    %559:ptr<storage, f32, read_write> = access %outputs, 556i, 0u
+    store %559, -0.13146869838237762451f
+    %560:ptr<storage, f32, read_write> = access %outputs, 557i, 0u
+    store %560, -0.11065722256898880005f
+    %561:ptr<storage, f32, read_write> = access %outputs, 558i, 0u
+    store %561, -0.09439320117235183716f
+    %562:ptr<storage, f32, read_write> = access %outputs, 559i, 0u
+    store %562, -0.0814520418643951416f
+    %563:ptr<storage, f32, read_write> = access %outputs, 560i, 0u
+    store %563, -0.07099160552024841309f
+    %564:ptr<storage, f32, read_write> = access %outputs, 561i, 0u
+    store %564, -0.06241881102323532104f
+    %565:ptr<storage, f32, read_write> = access %outputs, 562i, 0u
+    store %565, -0.05530686303973197937f
+    %566:ptr<storage, f32, read_write> = access %outputs, 563i, 0u
+    store %566, -0.04934263229370117188f
+    %567:ptr<storage, f32, read_write> = access %outputs, 564i, 0u
+    store %567, -0.0442923419177532196f
+    %568:ptr<storage, f32, read_write> = access %outputs, 565i, 0u
+    store %568, -0.03997868672013282776f
+    %569:ptr<storage, f32, read_write> = access %outputs, 566i, 0u
+    store %569, -0.03626527264714241028f
+    %570:ptr<storage, f32, read_write> = access %outputs, 567i, 0u
+    store %570, -0.03304582089185714722f
+    %571:ptr<storage, f32, read_write> = access %outputs, 568i, 0u
+    store %571, -0.03023652918636798859f
+    %572:ptr<storage, f32, read_write> = access %outputs, 569i, 0u
+    store %572, -0.02777063660323619843f
+    %573:ptr<storage, f32, read_write> = access %outputs, 570i, 0u
+    store %573, -0.02559441141784191132f
+    %574:ptr<storage, f32, read_write> = access %outputs, 571i, 0u
+    store %574, -0.02366422116756439209f
+    %575:ptr<storage, f32, read_write> = access %outputs, 572i, 0u
+    store %575, -0.02194435149431228638f
+    %576:ptr<storage, f32, read_write> = access %outputs, 573i, 0u
+    store %576, -0.02040532976388931274f
+    %577:ptr<storage, f32, read_write> = access %outputs, 574i, 0u
+    store %577, -0.01902267523109912872f
+    %578:ptr<storage, f32, read_write> = access %outputs, 575i, 0u
+    store %578, -0.01777590438723564148f
+    %579:ptr<storage, f32, read_write> = access %outputs, 576i, 0u
+    store %579, -0.01664778590202331543f
+    %580:ptr<storage, f32, read_write> = access %outputs, 577i, 0u
+    store %580, -0.01562372874468564987f
+    %581:ptr<storage, f32, read_write> = access %outputs, 578i, 0u
+    store %581, -0.01469132117927074432f
+    %582:ptr<storage, f32, read_write> = access %outputs, 579i, 0u
+    store %582, -0.01383994705975055695f
+    %583:ptr<storage, f32, read_write> = access %outputs, 580i, 0u
+    store %583, -0.01306048128753900528f
+    %584:ptr<storage, f32, read_write> = access %outputs, 581i, 0u
+    store %584, -0.0123450523242354393f
+    %585:ptr<storage, f32, read_write> = access %outputs, 582i, 0u
+    store %585, -0.01168683171272277832f
+    %586:ptr<storage, f32, read_write> = access %outputs, 583i, 0u
+    store %586, -0.0110798785462975502f
+    %587:ptr<storage, f32, read_write> = access %outputs, 584i, 0u
+    store %587, -0.01051900628954172134f
+    %588:ptr<storage, f32, read_write> = access %outputs, 585i, 0u
+    store %588, -0.00999966636300086975f
+    %589:ptr<storage, f32, read_write> = access %outputs, 586i, 0u
+    store %589, -0.0095178559422492981f
+    %590:ptr<storage, f32, read_write> = access %outputs, 587i, 0u
+    store %590, -0.00907004624605178833f
+    %591:ptr<storage, f32, read_write> = access %outputs, 588i, 0u
+    store %591, -0.00865310989320278168f
+    %592:ptr<storage, f32, read_write> = access %outputs, 589i, 0u
+    store %592, -0.00826427526772022247f
+    %593:ptr<storage, f32, read_write> = access %outputs, 590i, 0u
+    store %593, -0.00790106970816850662f
+    %594:ptr<storage, f32, read_write> = access %outputs, 591i, 0u
+    store %594, -0.00756129296496510506f
+    %595:ptr<storage, f32, read_write> = access %outputs, 592i, 0u
+    store %595, -0.00724296970292925835f
+    %596:ptr<storage, f32, read_write> = access %outputs, 593i, 0u
+    store %596, -0.00694433273747563362f
+    %597:ptr<storage, f32, read_write> = access %outputs, 594i, 0u
+    store %597, -0.00666379136964678764f
+    %598:ptr<storage, f32, read_write> = access %outputs, 595i, 0u
+    store %598, -2.35619449615478515625f
+    %599:ptr<storage, f32, read_write> = access %outputs, 596i, 0u
+    store %599, -2.5346050262451171875f
+    %600:ptr<storage, f32, read_write> = access %outputs, 597i, 0u
+    store %600, -2.6698150634765625f
+    %601:ptr<storage, f32, read_write> = access %outputs, 598i, 0u
+    store %601, -2.76919412612915039062f
+    %602:ptr<storage, f32, read_write> = access %outputs, 599i, 0u
+    store %602, -2.84222650527954101562f
+    %603:ptr<storage, f32, read_write> = access %outputs, 600i, 0u
+    store %603, -2.89661407470703125f
+    %604:ptr<storage, f32, read_write> = access %outputs, 601i, 0u
+    store %604, -2.93784785270690917969f
+    %605:ptr<storage, f32, read_write> = access %outputs, 602i, 0u
+    store %605, -2.96969485282897949219f
+    %606:ptr<storage, f32, read_write> = access %outputs, 603i, 0u
+    store %606, -2.99472880363464355469f
+    %607:ptr<storage, f32, read_write> = access %outputs, 604i, 0u
+    store %607, -3.0147266387939453125f
+    %608:ptr<storage, f32, read_write> = access %outputs, 605i, 0u
+    store %608, -3.03093552589416503906f
+    %609:ptr<storage, f32, read_write> = access %outputs, 606i, 0u
+    store %609, -3.04424500465393066406f
+    %610:ptr<storage, f32, read_write> = access %outputs, 607i, 0u
+    store %610, -3.05530238151550292969f
+    %611:ptr<storage, f32, read_write> = access %outputs, 608i, 0u
+    store %611, -3.0645847320556640625f
+    %612:ptr<storage, f32, read_write> = access %outputs, 609i, 0u
+    store %612, -3.07245087623596191406f
+    %613:ptr<storage, f32, read_write> = access %outputs, 610i, 0u
+    store %613, -3.07917380332946777344f
+    %614:ptr<storage, f32, read_write> = access %outputs, 611i, 0u
+    store %614, -3.08496403694152832031f
+    %615:ptr<storage, f32, read_write> = access %outputs, 612i, 0u
+    store %615, -3.08998560905456542969f
+    %616:ptr<storage, f32, read_write> = access %outputs, 613i, 0u
+    store %616, -3.09436869621276855469f
+    %617:ptr<storage, f32, read_write> = access %outputs, 614i, 0u
+    store %617, -3.098217010498046875f
+    %618:ptr<storage, f32, read_write> = access %outputs, 615i, 0u
+    store %618, -3.1016139984130859375f
+    %619:ptr<storage, f32, read_write> = access %outputs, 616i, 0u
+    store %619, -3.10462713241577148438f
+    %620:ptr<storage, f32, read_write> = access %outputs, 617i, 0u
+    store %620, -3.10731244087219238281f
+    %621:ptr<storage, f32, read_write> = access %outputs, 618i, 0u
+    store %621, -3.10971570014953613281f
+    %622:ptr<storage, f32, read_write> = access %outputs, 619i, 0u
+    store %622, -3.11187481880187988281f
+    %623:ptr<storage, f32, read_write> = access %outputs, 620i, 0u
+    store %623, -3.11382198333740234375f
+    %624:ptr<storage, f32, read_write> = access %outputs, 621i, 0u
+    store %624, -3.11558389663696289062f
+    %625:ptr<storage, f32, read_write> = access %outputs, 622i, 0u
+    store %625, -3.11718344688415527344f
+    %626:ptr<storage, f32, read_write> = access %outputs, 623i, 0u
+    store %626, -3.11863994598388671875f
+    %627:ptr<storage, f32, read_write> = access %outputs, 624i, 0u
+    store %627, -3.11996984481811523438f
+    %628:ptr<storage, f32, read_write> = access %outputs, 625i, 0u
+    store %628, -3.1211872100830078125f
+    %629:ptr<storage, f32, read_write> = access %outputs, 626i, 0u
+    store %629, -3.1223049163818359375f
+    %630:ptr<storage, f32, read_write> = access %outputs, 627i, 0u
+    store %630, -3.12333321571350097656f
+    %631:ptr<storage, f32, read_write> = access %outputs, 628i, 0u
+    store %631, -3.12428140640258789062f
+    %632:ptr<storage, f32, read_write> = access %outputs, 629i, 0u
+    store %632, -3.12515759468078613281f
+    %633:ptr<storage, f32, read_write> = access %outputs, 630i, 0u
+    store %633, -3.12596893310546875f
+    %634:ptr<storage, f32, read_write> = access %outputs, 631i, 0u
+    store %634, -3.12672162055969238281f
+    %635:ptr<storage, f32, read_write> = access %outputs, 632i, 0u
+    store %635, -3.12742137908935546875f
+    %636:ptr<storage, f32, read_write> = access %outputs, 633i, 0u
+    store %636, -3.1280727386474609375f
+    %637:ptr<storage, f32, read_write> = access %outputs, 634i, 0u
+    store %637, -3.12868022918701171875f
+    %638:ptr<storage, f32, read_write> = access %outputs, 635i, 0u
+    store %638, -3.1292476654052734375f
+    %639:ptr<storage, f32, read_write> = access %outputs, 636i, 0u
+    store %639, -3.12977838516235351562f
+    %640:ptr<storage, f32, read_write> = access %outputs, 637i, 0u
+    store %640, -3.130275726318359375f
+    %641:ptr<storage, f32, read_write> = access %outputs, 638i, 0u
+    store %641, -3.13074231147766113281f
+    %642:ptr<storage, f32, read_write> = access %outputs, 639i, 0u
+    store %642, -3.13118076324462890625f
+    %643:ptr<storage, f32, read_write> = access %outputs, 640i, 0u
+    store %643, -1.57079625129699707031f
+    %644:ptr<storage, f32, read_write> = access %outputs, 641i, 0u
+    store %644, -1.57079625129699707031f
+    %645:ptr<storage, f32, read_write> = access %outputs, 642i, 0u
+    store %645, -1.57079625129699707031f
+    %646:ptr<storage, f32, read_write> = access %outputs, 643i, 0u
+    store %646, -1.57079625129699707031f
+    %647:ptr<storage, f32, read_write> = access %outputs, 644i, 0u
+    store %647, -1.57079625129699707031f
+    %648:ptr<storage, f32, read_write> = access %outputs, 645i, 0u
+    store %648, -1.57079625129699707031f
+    %649:ptr<storage, f32, read_write> = access %outputs, 646i, 0u
+    store %649, -1.57079625129699707031f
+    %650:ptr<storage, f32, read_write> = access %outputs, 647i, 0u
+    store %650, -1.57079625129699707031f
+    %651:ptr<storage, f32, read_write> = access %outputs, 648i, 0u
+    store %651, -1.57079625129699707031f
+    %652:ptr<storage, f32, read_write> = access %outputs, 649i, 0u
+    store %652, -1.57079625129699707031f
+    %653:ptr<storage, f32, read_write> = access %outputs, 650i, 0u
+    store %653, -1.57079637050628662109f
+    %654:ptr<storage, f32, read_write> = access %outputs, 651i, 0u
+    store %654, -1.57079637050628662109f
+    %655:ptr<storage, f32, read_write> = access %outputs, 652i, 0u
+    store %655, -1.57079637050628662109f
+    %656:ptr<storage, f32, read_write> = access %outputs, 653i, 0u
+    store %656, -1.57079637050628662109f
+    %657:ptr<storage, f32, read_write> = access %outputs, 654i, 0u
+    store %657, -1.57079637050628662109f
+    %658:ptr<storage, f32, read_write> = access %outputs, 655i, 0u
+    store %658, -1.57079637050628662109f
+    %659:ptr<storage, f32, read_write> = access %outputs, 656i, 0u
+    store %659, -1.57079637050628662109f
+    %660:ptr<storage, f32, read_write> = access %outputs, 657i, 0u
+    store %660, -1.57079637050628662109f
+    %661:ptr<storage, f32, read_write> = access %outputs, 658i, 0u
+    store %661, -1.57079637050628662109f
+    %662:ptr<storage, f32, read_write> = access %outputs, 659i, 0u
+    store %662, -1.57079637050628662109f
+    %663:ptr<storage, f32, read_write> = access %outputs, 660i, 0u
+    store %663, -1.57079637050628662109f
+    %664:ptr<storage, f32, read_write> = access %outputs, 661i, 0u
+    store %664, -1.57079637050628662109f
+    %665:ptr<storage, f32, read_write> = access %outputs, 662i, 0u
+    store %665, -1.53081762790679931641f
+    %666:ptr<storage, f32, read_write> = access %outputs, 663i, 0u
+    store %666, -1.41214108467102050781f
+    %667:ptr<storage, f32, read_write> = access %outputs, 664i, 0u
+    store %667, -1.2252407073974609375f
+    %668:ptr<storage, f32, read_write> = access %outputs, 665i, 0u
+    store %668, -1.00148320198059082031f
+    %669:ptr<storage, f32, read_write> = access %outputs, 666i, 0u
+    store %669, -0.78539818525314331055f
+    %670:ptr<storage, f32, read_write> = access %outputs, 667i, 0u
+    store %670, -0.60698771476745605469f
+    %671:ptr<storage, f32, read_write> = access %outputs, 668i, 0u
+    store %671, -0.47177749872207641602f
+    %672:ptr<storage, f32, read_write> = access %outputs, 669i, 0u
+    store %672, -0.37239846587181091309f
+    %673:ptr<storage, f32, read_write> = access %outputs, 670i, 0u
+    store %673, -0.29936623573303222656f
+    %674:ptr<storage, f32, read_write> = access %outputs, 671i, 0u
+    store %674, -0.24497866630554199219f
+    %675:ptr<storage, f32, read_write> = access %outputs, 672i, 0u
+    store %675, -0.20374469459056854248f
+    %676:ptr<storage, f32, read_write> = access %outputs, 673i, 0u
+    store %676, -0.17189773917198181152f
+    %677:ptr<storage, f32, read_write> = access %outputs, 674i, 0u
+    store %677, -0.1468639075756072998f
+    %678:ptr<storage, f32, read_write> = access %outputs, 675i, 0u
+    store %678, -0.12686596810817718506f
+    %679:ptr<storage, f32, read_write> = access %outputs, 676i, 0u
+    store %679, -0.11065722256898880005f
+    %680:ptr<storage, f32, read_write> = access %outputs, 677i, 0u
+    store %680, -0.09734757989645004272f
+    %681:ptr<storage, f32, read_write> = access %outputs, 678i, 0u
+    store %681, -0.08629038184881210327f
+    %682:ptr<storage, f32, read_write> = access %outputs, 679i, 0u
+    store %682, -0.07700790464878082275f
+    %683:ptr<storage, f32, read_write> = access %outputs, 680i, 0u
+    store %683, -0.06914169341325759888f
+    %684:ptr<storage, f32, read_write> = access %outputs, 681i, 0u
+    store %684, -0.06241881102323532104f
+    %685:ptr<storage, f32, read_write> = access %outputs, 682i, 0u
+    store %685, -0.05662873387336730957f
+    %686:ptr<storage, f32, read_write> = access %outputs, 683i, 0u
+    store %686, -0.05160703510046005249f
+    %687:ptr<storage, f32, read_write> = access %outputs, 684i, 0u
+    store %687, -0.04722384735941886902f
+    %688:ptr<storage, f32, read_write> = access %outputs, 685i, 0u
+    store %688, -0.04337555542588233948f
+    %689:ptr<storage, f32, read_write> = access %outputs, 686i, 0u
+    store %689, -0.03997869044542312622f
+    %690:ptr<storage, f32, read_write> = access %outputs, 687i, 0u
+    store %690, -0.03696540370583534241f
+    %691:ptr<storage, f32, read_write> = access %outputs, 688i, 0u
+    store %691, -0.0342801213264465332f
+    %692:ptr<storage, f32, read_write> = access %outputs, 689i, 0u
+    store %692, -0.03187695145606994629f
+    %693:ptr<storage, f32, read_write> = access %outputs, 690i, 0u
+    store %693, -0.02971776761114597321f
+    %694:ptr<storage, f32, read_write> = access %outputs, 691i, 0u
+    store %694, -0.02777063660323619843f
+    %695:ptr<storage, f32, read_write> = access %outputs, 692i, 0u
+    store %695, -0.02600870467722415924f
+    %696:ptr<storage, f32, read_write> = access %outputs, 693i, 0u
+    store %696, -0.02440921589732170105f
+    %697:ptr<storage, f32, read_write> = access %outputs, 694i, 0u
+    store %697, -0.02295281179249286652f
+    %698:ptr<storage, f32, read_write> = access %outputs, 695i, 0u
+    store %698, -0.02162292785942554474f
+    %699:ptr<storage, f32, read_write> = access %outputs, 696i, 0u
+    store %699, -0.02040532976388931274f
+    %700:ptr<storage, f32, read_write> = access %outputs, 697i, 0u
+    store %700, -0.01928773149847984314f
+    %701:ptr<storage, f32, read_write> = access %outputs, 698i, 0u
+    store %701, -0.01825947500765323639f
+    %702:ptr<storage, f32, read_write> = access %outputs, 699i, 0u
+    store %702, -0.01731128990650177002f
+    %703:ptr<storage, f32, read_write> = access %outputs, 700i, 0u
+    store %703, -0.01643507368862628937f
+    %704:ptr<storage, f32, read_write> = access %outputs, 701i, 0u
+    store %704, -0.01562372874468564987f
+    %705:ptr<storage, f32, read_write> = access %outputs, 702i, 0u
+    store %705, -0.01487100403755903244f
+    %706:ptr<storage, f32, read_write> = access %outputs, 703i, 0u
+    store %706, -0.01417138706892728806f
+    %707:ptr<storage, f32, read_write> = access %outputs, 704i, 0u
+    store %707, -0.01351999770849943161f
+    %708:ptr<storage, f32, read_write> = access %outputs, 705i, 0u
+    store %708, -0.01291250623762607574f
+    %709:ptr<storage, f32, read_write> = access %outputs, 706i, 0u
+    store %709, -0.01234505325555801392f
+    %710:ptr<storage, f32, read_write> = access %outputs, 707i, 0u
+    store %710, -0.01181419659405946732f
+    %711:ptr<storage, f32, read_write> = access %outputs, 708i, 0u
+    store %711, -0.01131685543805360794f
+    %712:ptr<storage, f32, read_write> = access %outputs, 709i, 0u
+    store %712, -0.01085026934742927551f
+    %713:ptr<storage, f32, read_write> = access %outputs, 710i, 0u
+    store %713, -0.01041195262223482132f
+    %714:ptr<storage, f32, read_write> = access %outputs, 711i, 0u
+    store %714, -2.35619449615478515625f
+    %715:ptr<storage, f32, read_write> = access %outputs, 712i, 0u
+    store %715, -2.50795984268188476562f
+    %716:ptr<storage, f32, read_write> = access %outputs, 713i, 0u
+    store %716, -2.62920331954956054688f
+    %717:ptr<storage, f32, read_write> = access %outputs, 714i, 0u
+    store %717, -2.72336840629577636719f
+    %718:ptr<storage, f32, read_write> = access %outputs, 715i, 0u
+    store %718, -2.79603719711303710938f
+    %719:ptr<storage, f32, read_write> = access %outputs, 716i, 0u
+    store %719, -2.85241198539733886719f
+    %720:ptr<storage, f32, read_write> = access %outputs, 717i, 0u
+    store %720, -2.89661407470703125f
+    %721:ptr<storage, f32, read_write> = access %outputs, 718i, 0u
+    store %721, -2.93171191215515136719f
+    %722:ptr<storage, f32, read_write> = access %outputs, 719i, 0u
+    store %722, -2.9599437713623046875f
+    %723:ptr<storage, f32, read_write> = access %outputs, 720i, 0u
+    store %723, -2.98293733596801757812f
+    %724:ptr<storage, f32, read_write> = access %outputs, 721i, 0u
+    store %724, -3.00188374519348144531f
+    %725:ptr<storage, f32, read_write> = access %outputs, 722i, 0u
+    store %725, -3.01766347885131835938f
+    %726:ptr<storage, f32, read_write> = access %outputs, 723i, 0u
+    store %726, -3.03093552589416503906f
+    %727:ptr<storage, f32, read_write> = access %outputs, 724i, 0u
+    store %727, -3.04219818115234375f
+    %728:ptr<storage, f32, read_write> = access %outputs, 725i, 0u
+    store %728, -3.05183458328247070312f
+    %729:ptr<storage, f32, read_write> = access %outputs, 726i, 0u
+    store %729, -3.0601406097412109375f
+    %730:ptr<storage, f32, read_write> = access %outputs, 727i, 0u
+    store %730, -3.06734919548034667969f
+    %731:ptr<storage, f32, read_write> = access %outputs, 728i, 0u
+    store %731, -3.07364439964294433594f
+    %732:ptr<storage, f32, read_write> = access %outputs, 729i, 0u
+    store %732, -3.07917380332946777344f
+    %733:ptr<storage, f32, read_write> = access %outputs, 730i, 0u
+    store %733, -3.08405613899230957031f
+    %734:ptr<storage, f32, read_write> = access %outputs, 731i, 0u
+    store %734, -3.0883884429931640625f
+    %735:ptr<storage, f32, read_write> = access %outputs, 732i, 0u
+    store %735, -3.09225010871887207031f
+    %736:ptr<storage, f32, read_write> = access %outputs, 733i, 0u
+    store %736, -3.09570646286010742188f
+    %737:ptr<storage, f32, read_write> = access %outputs, 734i, 0u
+    store %737, -3.09881258010864257812f
+    %738:ptr<storage, f32, read_write> = access %outputs, 735i, 0u
+    store %738, -3.1016139984130859375f
+    %739:ptr<storage, f32, read_write> = access %outputs, 736i, 0u
+    store %739, -3.10414910316467285156f
+    %740:ptr<storage, f32, read_write> = access %outputs, 737i, 0u
+    store %740, -3.10645079612731933594f
+    %741:ptr<storage, f32, read_write> = access %outputs, 738i, 0u
+    store %741, -3.10854673385620117188f
+    %742:ptr<storage, f32, read_write> = access %outputs, 739i, 0u
+    store %742, -3.11046075820922851562f
+    %743:ptr<storage, f32, read_write> = access %outputs, 740i, 0u
+    store %743, -3.11221337318420410156f
+    %744:ptr<storage, f32, read_write> = access %outputs, 741i, 0u
+    store %744, -3.11382198333740234375f
+    %745:ptr<storage, f32, read_write> = access %outputs, 742i, 0u
+    store %745, -3.11530208587646484375f
+    %746:ptr<storage, f32, read_write> = access %outputs, 743i, 0u
+    store %746, -3.11666703224182128906f
+    %747:ptr<storage, f32, read_write> = access %outputs, 744i, 0u
+    store %747, -3.11792850494384765625f
+    %748:ptr<storage, f32, read_write> = access %outputs, 745i, 0u
+    store %748, -3.11909651756286621094f
+    %749:ptr<storage, f32, read_write> = access %outputs, 746i, 0u
+    store %749, -3.1201801300048828125f
+    %750:ptr<storage, f32, read_write> = access %outputs, 747i, 0u
+    store %750, -3.1211872100830078125f
+    %751:ptr<storage, f32, read_write> = access %outputs, 748i, 0u
+    store %751, -3.12212514877319335938f
+    %752:ptr<storage, f32, read_write> = access %outputs, 749i, 0u
+    store %752, -3.12299966812133789062f
+    %753:ptr<storage, f32, read_write> = access %outputs, 750i, 0u
+    store %753, -3.12381672859191894531f
+    %754:ptr<storage, f32, read_write> = access %outputs, 751i, 0u
+    store %754, -3.12458109855651855469f
+    %755:ptr<storage, f32, read_write> = access %outputs, 752i, 0u
+    store %755, -3.12529706954956054688f
+    %756:ptr<storage, f32, read_write> = access %outputs, 753i, 0u
+    store %756, -3.12596893310546875f
+    %757:ptr<storage, f32, read_write> = access %outputs, 754i, 0u
+    store %757, -3.12660002708435058594f
+    %758:ptr<storage, f32, read_write> = access %outputs, 755i, 0u
+    store %758, -1.57079625129699707031f
+    %759:ptr<storage, f32, read_write> = access %outputs, 756i, 0u
+    store %759, -1.57079625129699707031f
+    %760:ptr<storage, f32, read_write> = access %outputs, 757i, 0u
+    store %760, -1.57079625129699707031f
+    %761:ptr<storage, f32, read_write> = access %outputs, 758i, 0u
+    store %761, -1.57079625129699707031f
+    %762:ptr<storage, f32, read_write> = access %outputs, 759i, 0u
+    store %762, -1.57079625129699707031f
+    %763:ptr<storage, f32, read_write> = access %outputs, 760i, 0u
+    store %763, -1.57079625129699707031f
+    %764:ptr<storage, f32, read_write> = access %outputs, 761i, 0u
+    store %764, -1.57079625129699707031f
+    %765:ptr<storage, f32, read_write> = access %outputs, 762i, 0u
+    store %765, -1.57079625129699707031f
+    %766:ptr<storage, f32, read_write> = access %outputs, 763i, 0u
+    store %766, -1.57079625129699707031f
+    %767:ptr<storage, f32, read_write> = access %outputs, 764i, 0u
+    store %767, -1.57079625129699707031f
+    %768:ptr<storage, f32, read_write> = access %outputs, 765i, 0u
+    store %768, -1.57079637050628662109f
+    %769:ptr<storage, f32, read_write> = access %outputs, 766i, 0u
+    store %769, -1.57079637050628662109f
+    %770:ptr<storage, f32, read_write> = access %outputs, 767i, 0u
+    store %770, -1.57079637050628662109f
+    %771:ptr<storage, f32, read_write> = access %outputs, 768i, 0u
+    store %771, -1.57079637050628662109f
+    %772:ptr<storage, f32, read_write> = access %outputs, 769i, 0u
+    store %772, -1.57079637050628662109f
+    %773:ptr<storage, f32, read_write> = access %outputs, 770i, 0u
+    store %773, -1.57079637050628662109f
+    %774:ptr<storage, f32, read_write> = access %outputs, 771i, 0u
+    store %774, -1.57079637050628662109f
+    %775:ptr<storage, f32, read_write> = access %outputs, 772i, 0u
+    store %775, -1.57079637050628662109f
+    %776:ptr<storage, f32, read_write> = access %outputs, 773i, 0u
+    store %776, -1.57079637050628662109f
+    %777:ptr<storage, f32, read_write> = access %outputs, 774i, 0u
+    store %777, -1.57079637050628662109f
+    %778:ptr<storage, f32, read_write> = access %outputs, 775i, 0u
+    store %778, -1.57079637050628662109f
+    %779:ptr<storage, f32, read_write> = access %outputs, 776i, 0u
+    store %779, -1.57079637050628662109f
+    %780:ptr<storage, f32, read_write> = access %outputs, 777i, 0u
+    store %780, -1.54302573204040527344f
+    %781:ptr<storage, f32, read_write> = access %outputs, 778i, 0u
+    store %781, -1.46013915538787841797f
+    %782:ptr<storage, f32, read_write> = access %outputs, 779i, 0u
+    store %782, -1.32581770420074462891f
+    %783:ptr<storage, f32, read_write> = access %outputs, 780i, 0u
+    store %783, -1.15257203578948974609f
+    %784:ptr<storage, f32, read_write> = access %outputs, 781i, 0u
+    store %784, -0.96380865573883056641f
+    %785:ptr<storage, f32, read_write> = access %outputs, 782i, 0u
+    store %785, -0.78539818525314331055f
+    %786:ptr<storage, f32, read_write> = access %outputs, 783i, 0u
+    store %786, -0.63363295793533325195f
+    %787:ptr<storage, f32, read_write> = access %outputs, 784i, 0u
+    store %787, -0.5123894810676574707f
+    %788:ptr<storage, f32, read_write> = access %outputs, 785i, 0u
+    store %788, -0.4182243049144744873f
+    %789:ptr<storage, f32, read_write> = access %outputs, 786i, 0u
+    store %789, -0.34555557370185852051f
+    %790:ptr<storage, f32, read_write> = access %outputs, 787i, 0u
+    store %790, -0.28918063640594482422f
+    %791:ptr<storage, f32, read_write> = access %outputs, 788i, 0u
+    store %791, -0.24497866630554199219f
+    %792:ptr<storage, f32, read_write> = access %outputs, 789i, 0u
+    store %792, -0.20988072454929351807f
+    %793:ptr<storage, f32, read_write> = access %outputs, 790i, 0u
+    store %793, -0.18164882063865661621f
+    %794:ptr<storage, f32, read_write> = access %outputs, 791i, 0u
+    store %794, -0.15865525603294372559f
+    %795:ptr<storage, f32, read_write> = access %outputs, 792i, 0u
+    store %795, -0.13970887660980224609f
+    %796:ptr<storage, f32, read_write> = access %outputs, 793i, 0u
+    store %796, -0.12392909824848175049f
+    %797:ptr<storage, f32, read_write> = access %outputs, 794i, 0u
+    store %797, -0.11065721511840820312f
+    %798:ptr<storage, f32, read_write> = access %outputs, 795i, 0u
+    store %798, -0.09939437359571456909f
+    %799:ptr<storage, f32, read_write> = access %outputs, 796i, 0u
+    store %799, -0.08975817263126373291f
+    %800:ptr<storage, f32, read_write> = access %outputs, 797i, 0u
+    store %800, -0.0814520418643951416f
+    %801:ptr<storage, f32, read_write> = access %outputs, 798i, 0u
+    store %801, -0.07424345612525939941f
+    %802:ptr<storage, f32, read_write> = access %outputs, 799i, 0u
+    store %802, -0.067948170006275177f
+    %803:ptr<storage, f32, read_write> = access %outputs, 800i, 0u
+    store %803, -0.06241881102323532104f
+    %804:ptr<storage, f32, read_write> = access %outputs, 801i, 0u
+    store %804, -0.05753642693161964417f
+    %805:ptr<storage, f32, read_write> = access %outputs, 802i, 0u
+    store %805, -0.05320417881011962891f
+    %806:ptr<storage, f32, read_write> = access %outputs, 803i, 0u
+    store %806, -0.04934263229370117188f
+    %807:ptr<storage, f32, read_write> = access %outputs, 804i, 0u
+    store %807, -0.0458861328661441803f
+    %808:ptr<storage, f32, read_write> = access %outputs, 805i, 0u
+    store %808, -0.04278006404638290405f
+    %809:ptr<storage, f32, read_write> = access %outputs, 806i, 0u
+    store %809, -0.03997868672013282776f
+    %810:ptr<storage, f32, read_write> = access %outputs, 807i, 0u
+    store %810, -0.03744347020983695984f
+    %811:ptr<storage, f32, read_write> = access %outputs, 808i, 0u
+    store %811, -0.03514177724719047546f
+    %812:ptr<storage, f32, read_write> = access %outputs, 809i, 0u
+    store %812, -0.03304581716656684875f
+    %813:ptr<storage, f32, read_write> = access %outputs, 810i, 0u
+    store %813, -0.03113180585205554962f
+    %814:ptr<storage, f32, read_write> = access %outputs, 811i, 0u
+    store %814, -0.02937929704785346985f
+    %815:ptr<storage, f32, read_write> = access %outputs, 812i, 0u
+    store %815, -0.02777063474059104919f
+    %816:ptr<storage, f32, read_write> = access %outputs, 813i, 0u
+    store %816, -0.02629050798714160919f
+    %817:ptr<storage, f32, read_write> = access %outputs, 814i, 0u
+    store %817, -0.02492558397352695465f
+    %818:ptr<storage, f32, read_write> = access %outputs, 815i, 0u
+    store %818, -0.02366421930491924286f
+    %819:ptr<storage, f32, read_write> = access %outputs, 816i, 0u
+    store %819, -0.02249620296061038971f
+    %820:ptr<storage, f32, read_write> = access %outputs, 817i, 0u
+    store %820, -0.02141254954040050507f
+    %821:ptr<storage, f32, read_write> = access %outputs, 818i, 0u
+    store %821, -0.02040532976388931274f
+    %822:ptr<storage, f32, read_write> = access %outputs, 819i, 0u
+    store %822, -0.01946752145886421204f
+    %823:ptr<storage, f32, read_write> = access %outputs, 820i, 0u
+    store %823, -0.01859289966523647308f
+    %824:ptr<storage, f32, read_write> = access %outputs, 821i, 0u
+    store %824, -0.01777590624988079071f
+    %825:ptr<storage, f32, read_write> = access %outputs, 822i, 0u
+    store %825, -0.01701159216463565826f
+    %826:ptr<storage, f32, read_write> = access %outputs, 823i, 0u
+    store %826, -0.01629552431404590607f
+    %827:ptr<storage, f32, read_write> = access %outputs, 824i, 0u
+    store %827, -0.01562372874468564987f
+    %828:ptr<storage, f32, read_write> = access %outputs, 825i, 0u
+    store %828, -0.01499262917786836624f
+    %829:ptr<storage, f32, read_write> = access %outputs, 826i, 0u
+    store %829, -2.35619449615478515625f
+    %830:ptr<storage, f32, read_write> = access %outputs, 827i, 0u
+    store %830, -2.48816633224487304688f
+    %831:ptr<storage, f32, read_write> = access %outputs, 828i, 0u
+    store %831, -2.59754991531372070312f
+    %832:ptr<storage, f32, read_write> = access %outputs, 829i, 0u
+    store %832, -2.68597698211669921875f
+    %833:ptr<storage, f32, read_write> = access %outputs, 830i, 0u
+    store %833, -2.7568187713623046875f
+    %834:ptr<storage, f32, read_write> = access %outputs, 831i, 0u
+    store %834, -2.81360507011413574219f
+    %835:ptr<storage, f32, read_write> = access %outputs, 832i, 0u
+    store %835, -2.85938978195190429688f
+    %836:ptr<storage, f32, read_write> = access %outputs, 833i, 0u
+    store %836, -2.89661407470703125f
+    %837:ptr<storage, f32, read_write> = access %outputs, 834i, 0u
+    store %837, -2.92716288566589355469f
+    %838:ptr<storage, f32, read_write> = access %outputs, 835i, 0u
+    store %838, -2.95247387886047363281f
+    %839:ptr<storage, f32, read_write> = access %outputs, 836i, 0u
+    store %839, -2.97363972663879394531f
+    %840:ptr<storage, f32, read_write> = access %outputs, 837i, 0u
+    store %840, -2.99149560928344726562f
+    %841:ptr<storage, f32, read_write> = access %outputs, 838i, 0u
+    store %841, -3.00668311119079589844f
+    %842:ptr<storage, f32, read_write> = access %outputs, 839i, 0u
+    store %842, -3.01970005035400390625f
+    %843:ptr<storage, f32, read_write> = access %outputs, 840i, 0u
+    store %843, -3.03093552589416503906f
+    %844:ptr<storage, f32, read_write> = access %outputs, 841i, 0u
+    store %844, -3.04069685935974121094f
+    %845:ptr<storage, f32, read_write> = access %outputs, 842i, 0u
+    store %845, -3.049228668212890625f
+    %846:ptr<storage, f32, read_write> = access %outputs, 843i, 0u
+    store %846, -3.05672740936279296875f
+    %847:ptr<storage, f32, read_write> = access %outputs, 844i, 0u
+    store %847, -3.0633525848388671875f
+    %848:ptr<storage, f32, read_write> = access %outputs, 845i, 0u
+    store %848, -3.06923389434814453125f
+    %849:ptr<storage, f32, read_write> = access %outputs, 846i, 0u
+    store %849, -3.0744781494140625f
+    %850:ptr<storage, f32, read_write> = access %outputs, 847i, 0u
+    store %850, -3.07917380332946777344f
+    %851:ptr<storage, f32, read_write> = access %outputs, 848i, 0u
+    store %851, -3.08339452743530273438f
+    %852:ptr<storage, f32, read_write> = access %outputs, 849i, 0u
+    store %852, -3.08720183372497558594f
+    %853:ptr<storage, f32, read_write> = access %outputs, 850i, 0u
+    store %853, -3.09064817428588867188f
+    %854:ptr<storage, f32, read_write> = access %outputs, 851i, 0u
+    store %854, -3.09377765655517578125f
+    %855:ptr<storage, f32, read_write> = access %outputs, 852i, 0u
+    store %855, -3.09662747383117675781f
+    %856:ptr<storage, f32, read_write> = access %outputs, 853i, 0u
+    store %856, -3.09923052787780761719f
+    %857:ptr<storage, f32, read_write> = access %outputs, 854i, 0u
+    store %857, -3.1016139984130859375f
+    %858:ptr<storage, f32, read_write> = access %outputs, 855i, 0u
+    store %858, -3.10380196571350097656f
+    %859:ptr<storage, f32, read_write> = access %outputs, 856i, 0u
+    store %859, -3.10581541061401367188f
+    %860:ptr<storage, f32, read_write> = access %outputs, 857i, 0u
+    store %860, -3.10767221450805664062f
+    %861:ptr<storage, f32, read_write> = access %outputs, 858i, 0u
+    store %861, -3.10938811302185058594f
+    %862:ptr<storage, f32, read_write> = access %outputs, 859i, 0u
+    store %862, -3.1109771728515625f
+    %863:ptr<storage, f32, read_write> = access %outputs, 860i, 0u
+    store %863, -3.1124515533447265625f
+    %864:ptr<storage, f32, read_write> = access %outputs, 861i, 0u
+    store %864, -3.11382198333740234375f
+    %865:ptr<storage, f32, read_write> = access %outputs, 862i, 0u
+    store %865, -3.11509799957275390625f
+    %866:ptr<storage, f32, read_write> = access %outputs, 863i, 0u
+    store %866, -3.11628818511962890625f
+    %867:ptr<storage, f32, read_write> = access %outputs, 864i, 0u
+    store %867, -3.11739993095397949219f
+    %868:ptr<storage, f32, read_write> = access %outputs, 865i, 0u
+    store %868, -3.11843991279602050781f
+    %869:ptr<storage, f32, read_write> = access %outputs, 866i, 0u
+    store %869, -3.11941432952880859375f
+    %870:ptr<storage, f32, read_write> = access %outputs, 867i, 0u
+    store %870, -3.12032842636108398438f
+    %871:ptr<storage, f32, read_write> = access %outputs, 868i, 0u
+    store %871, -3.1211872100830078125f
+    %872:ptr<storage, f32, read_write> = access %outputs, 869i, 0u
+    store %872, -1.57079625129699707031f
+    %873:ptr<storage, f32, read_write> = access %outputs, 870i, 0u
+    store %873, -1.57079625129699707031f
+    %874:ptr<storage, f32, read_write> = access %outputs, 871i, 0u
+    store %874, -1.57079625129699707031f
+    %875:ptr<storage, f32, read_write> = access %outputs, 872i, 0u
+    store %875, -1.57079625129699707031f
+    %876:ptr<storage, f32, read_write> = access %outputs, 873i, 0u
+    store %876, -1.57079625129699707031f
+    %877:ptr<storage, f32, read_write> = access %outputs, 874i, 0u
+    store %877, -1.57079625129699707031f
+    %878:ptr<storage, f32, read_write> = access %outputs, 875i, 0u
+    store %878, -1.57079625129699707031f
+    %879:ptr<storage, f32, read_write> = access %outputs, 876i, 0u
+    store %879, -1.57079625129699707031f
+    %880:ptr<storage, f32, read_write> = access %outputs, 877i, 0u
+    store %880, -1.57079625129699707031f
+    %881:ptr<storage, f32, read_write> = access %outputs, 878i, 0u
+    store %881, -1.57079625129699707031f
+    %882:ptr<storage, f32, read_write> = access %outputs, 879i, 0u
+    store %882, -1.57079637050628662109f
+    %883:ptr<storage, f32, read_write> = access %outputs, 880i, 0u
+    store %883, -1.57079637050628662109f
+    %884:ptr<storage, f32, read_write> = access %outputs, 881i, 0u
+    store %884, -1.57079637050628662109f
+    %885:ptr<storage, f32, read_write> = access %outputs, 882i, 0u
+    store %885, -1.57079637050628662109f
+    %886:ptr<storage, f32, read_write> = access %outputs, 883i, 0u
+    store %886, -1.57079637050628662109f
+    %887:ptr<storage, f32, read_write> = access %outputs, 884i, 0u
+    store %887, -1.57079637050628662109f
+    %888:ptr<storage, f32, read_write> = access %outputs, 885i, 0u
+    store %888, -1.57079637050628662109f
+    %889:ptr<storage, f32, read_write> = access %outputs, 886i, 0u
+    store %889, -1.57079637050628662109f
+    %890:ptr<storage, f32, read_write> = access %outputs, 887i, 0u
+    store %890, -1.57079637050628662109f
+    %891:ptr<storage, f32, read_write> = access %outputs, 888i, 0u
+    store %891, -1.57079637050628662109f
+    %892:ptr<storage, f32, read_write> = access %outputs, 889i, 0u
+    store %892, -1.57079637050628662109f
+    %893:ptr<storage, f32, read_write> = access %outputs, 890i, 0u
+    store %893, -1.57079637050628662109f
+    %894:ptr<storage, f32, read_write> = access %outputs, 891i, 0u
+    store %894, -1.55039095878601074219f
+    %895:ptr<storage, f32, read_write> = access %outputs, 892i, 0u
+    store %895, -1.48934423923492431641f
+    %896:ptr<storage, f32, read_write> = access %outputs, 893i, 0u
+    store %896, -1.38914752006530761719f
+    %897:ptr<storage, f32, read_write> = access %outputs, 894i, 0u
+    store %897, -1.25518071651458740234f
+    %898:ptr<storage, f32, read_write> = access %outputs, 895i, 0u
+    store %898, -1.09901881217956542969f
+    %899:ptr<storage, f32, read_write> = access %outputs, 896i, 0u
+    store %899, -0.93716335296630859375f
+    %900:ptr<storage, f32, read_write> = access %outputs, 897i, 0u
+    store %900, -0.78539818525314331055f
+    %901:ptr<storage, f32, read_write> = access %outputs, 898i, 0u
+    store %901, -0.65342640876770019531f
+    %902:ptr<storage, f32, read_write> = access %outputs, 899i, 0u
+    store %902, -0.54404264688491821289f
+    %903:ptr<storage, f32, read_write> = access %outputs, 900i, 0u
+    store %903, -0.45561566948890686035f
+    %904:ptr<storage, f32, read_write> = access %outputs, 901i, 0u
+    store %904, -0.38477379083633422852f
+    %905:ptr<storage, f32, read_write> = access %outputs, 902i, 0u
+    store %905, -0.32798749208450317383f
+    %906:ptr<storage, f32, read_write> = access %outputs, 903i, 0u
+    store %906, -0.28220283985137939453f
+    %907:ptr<storage, f32, read_write> = access %outputs, 904i, 0u
+    store %907, -0.24497866630554199219f
+    %908:ptr<storage, f32, read_write> = access %outputs, 905i, 0u
+    store %908, -0.21442967653274536133f
+    %909:ptr<storage, f32, read_write> = access %outputs, 906i, 0u
+    store %909, -0.18911886215209960938f
+    %910:ptr<storage, f32, read_write> = access %outputs, 907i, 0u
+    store %910, -0.16795293986797332764f
+    %911:ptr<storage, f32, read_write> = access %outputs, 908i, 0u
+    store %911, -0.15009713172912597656f
+    %912:ptr<storage, f32, read_write> = access %outputs, 909i, 0u
+    store %912, -0.13490960001945495605f
+    %913:ptr<storage, f32, read_write> = access %outputs, 910i, 0u
+    store %913, -0.12189270555973052979f
+    %914:ptr<storage, f32, read_write> = access %outputs, 911i, 0u
+    store %914, -0.11065723001956939697f
+    %915:ptr<storage, f32, read_write> = access %outputs, 912i, 0u
+    store %915, -0.10089590400457382202f
+    %916:ptr<storage, f32, read_write> = access %outputs, 913i, 0u
+    store %916, -0.09236405044794082642f
+    %917:ptr<storage, f32, read_write> = access %outputs, 914i, 0u
+    store %917, -0.08486512303352355957f
+    %918:ptr<storage, f32, read_write> = access %outputs, 915i, 0u
+    store %918, -0.07823996990919113159f
+    %919:ptr<storage, f32, read_write> = access %outputs, 916i, 0u
+    store %919, -0.07235866039991378784f
+    %920:ptr<storage, f32, read_write> = access %outputs, 917i, 0u
+    store %920, -0.06711442023515701294f
+    %921:ptr<storage, f32, read_write> = access %outputs, 918i, 0u
+    store %921, -0.06241881102323532104f
+    %922:ptr<storage, f32, read_write> = access %outputs, 919i, 0u
+    store %922, -0.05819818004965782166f
+    %923:ptr<storage, f32, read_write> = access %outputs, 920i, 0u
+    store %923, -0.05439074337482452393f
+    %924:ptr<storage, f32, read_write> = access %outputs, 921i, 0u
+    store %924, -0.05094443634152412415f
+    %925:ptr<storage, f32, read_write> = access %outputs, 922i, 0u
+    store %925, -0.04781509190797805786f
+    %926:ptr<storage, f32, read_write> = access %outputs, 923i, 0u
+    store %926, -0.04496508464217185974f
+    %927:ptr<storage, f32, read_write> = access %outputs, 924i, 0u
+    store %927, -0.04236218705773353577f
+    %928:ptr<storage, f32, read_write> = access %outputs, 925i, 0u
+    store %928, -0.03997868672013282776f
+    %929:ptr<storage, f32, read_write> = access %outputs, 926i, 0u
+    store %929, -0.037790641188621521f
+    %930:ptr<storage, f32, read_write> = access %outputs, 927i, 0u
+    store %930, -0.03577727824449539185f
+    %931:ptr<storage, f32, read_write> = access %outputs, 928i, 0u
+    store %931, -0.03392050415277481079f
+    %932:ptr<storage, f32, read_write> = access %outputs, 929i, 0u
+    store %932, -0.03220450878143310547f
+    %933:ptr<storage, f32, read_write> = access %outputs, 930i, 0u
+    store %933, -0.03061543218791484833f
+    %934:ptr<storage, f32, read_write> = access %outputs, 931i, 0u
+    store %934, -0.02914106473326683044f
+    %935:ptr<storage, f32, read_write> = access %outputs, 932i, 0u
+    store %935, -0.02777063846588134766f
+    %936:ptr<storage, f32, read_write> = access %outputs, 933i, 0u
+    store %936, -0.02649461105465888977f
+    %937:ptr<storage, f32, read_write> = access %outputs, 934i, 0u
+    store %937, -0.02530451677739620209f
+    %938:ptr<storage, f32, read_write> = access %outputs, 935i, 0u
+    store %938, -0.02419281005859375f
+    %939:ptr<storage, f32, read_write> = access %outputs, 936i, 0u
+    store %939, -0.02315276302397251129f
+    %940:ptr<storage, f32, read_write> = access %outputs, 937i, 0u
+    store %940, -0.02217834629118442535f
+    %941:ptr<storage, f32, read_write> = access %outputs, 938i, 0u
+    store %941, -0.02126415632665157318f
+    %942:ptr<storage, f32, read_write> = access %outputs, 939i, 0u
+    store %942, -0.02040533162653446198f
+    %943:ptr<storage, f32, read_write> = access %outputs, 940i, 0u
+    store %943, -2.35619449615478515625f
+    %944:ptr<storage, f32, read_write> = access %outputs, 941i, 0u
+    store %944, -2.47290301322937011719f
+    %945:ptr<storage, f32, read_write> = access %outputs, 942i, 0u
+    store %945, -2.57227945327758789062f
+    %946:ptr<storage, f32, read_write> = access %outputs, 943i, 0u
+    store %946, -2.6550731658935546875f
+    %947:ptr<storage, f32, read_write> = access %outputs, 944i, 0u
+    store %947, -2.72336840629577636719f
+    %948:ptr<storage, f32, read_write> = access %outputs, 945i, 0u
+    store %948, -2.77958369255065917969f
+    %949:ptr<storage, f32, read_write> = access %outputs, 946i, 0u
+    store %949, -2.82597708702087402344f
+    %950:ptr<storage, f32, read_write> = access %outputs, 947i, 0u
+    store %950, -2.86446738243103027344f
+    %951:ptr<storage, f32, read_write> = access %outputs, 948i, 0u
+    store %951, -2.89661407470703125f
+    %952:ptr<storage, f32, read_write> = access %outputs, 949i, 0u
+    store %952, -2.923656463623046875f
+    %953:ptr<storage, f32, read_write> = access %outputs, 950i, 0u
+    store %953, -2.94657230377197265625f
+    %954:ptr<storage, f32, read_write> = access %outputs, 951i, 0u
+    store %954, -2.96613049507141113281f
+    %955:ptr<storage, f32, read_write> = access %outputs, 952i, 0u
+    store %955, -2.98293733596801757812f
+    %956:ptr<storage, f32, read_write> = access %outputs, 953i, 0u
+    store %956, -2.99747419357299804688f
+    %957:ptr<storage, f32, read_write> = access %outputs, 954i, 0u
+    store %957, -3.01012396812438964844f
+    %958:ptr<storage, f32, read_write> = access %outputs, 955i, 0u
+    store %958, -3.02119469642639160156f
+    %959:ptr<storage, f32, read_write> = access %outputs, 956i, 0u
+    store %959, -3.03093552589416503906f
+    %960:ptr<storage, f32, read_write> = access %outputs, 957i, 0u
+    store %960, -3.03954839706420898438f
+    %961:ptr<storage, f32, read_write> = access %outputs, 958i, 0u
+    store %961, -3.04719948768615722656f
+    %962:ptr<storage, f32, read_write> = access %outputs, 959i, 0u
+    store %962, -3.0540256500244140625f
+    %963:ptr<storage, f32, read_write> = access %outputs, 960i, 0u
+    store %963, -3.0601406097412109375f
+    %964:ptr<storage, f32, read_write> = access %outputs, 961i, 0u
+    store %964, -3.06563925743103027344f
+    %965:ptr<storage, f32, read_write> = access %outputs, 962i, 0u
+    store %965, -3.07060098648071289062f
+    %966:ptr<storage, f32, read_write> = access %outputs, 963i, 0u
+    store %966, -3.07509350776672363281f
+    %967:ptr<storage, f32, read_write> = access %outputs, 964i, 0u
+    store %967, -3.07917380332946777344f
+    %968:ptr<storage, f32, read_write> = access %outputs, 965i, 0u
+    store %968, -3.08289074897766113281f
+    %969:ptr<storage, f32, read_write> = access %outputs, 966i, 0u
+    store %969, -3.08628582954406738281f
+    %970:ptr<storage, f32, read_write> = access %outputs, 967i, 0u
+    store %970, -3.08939528465270996094f
+    %971:ptr<storage, f32, read_write> = access %outputs, 968i, 0u
+    store %971, -3.09225010871887207031f
+    %972:ptr<storage, f32, read_write> = access %outputs, 969i, 0u
+    store %972, -3.0948772430419921875f
+    %973:ptr<storage, f32, read_write> = access %outputs, 970i, 0u
+    store %973, -3.09730029106140136719f
+    %974:ptr<storage, f32, read_write> = access %outputs, 971i, 0u
+    store %974, -3.09953999519348144531f
+    %975:ptr<storage, f32, read_write> = access %outputs, 972i, 0u
+    store %975, -3.1016139984130859375f
+    %976:ptr<storage, f32, read_write> = access %outputs, 973i, 0u
+    store %976, -3.10353851318359375f
+    %977:ptr<storage, f32, read_write> = access %outputs, 974i, 0u
+    store %977, -3.10532736778259277344f
+    %978:ptr<storage, f32, read_write> = access %outputs, 975i, 0u
+    store %978, -3.10699319839477539062f
+    %979:ptr<storage, f32, read_write> = access %outputs, 976i, 0u
+    store %979, -3.10854673385620117188f
+    %980:ptr<storage, f32, read_write> = access %outputs, 977i, 0u
+    store %980, -3.10999822616577148438f
+    %981:ptr<storage, f32, read_write> = access %outputs, 978i, 0u
+    store %981, -3.11135601997375488281f
+    %982:ptr<storage, f32, read_write> = access %outputs, 979i, 0u
+    store %982, -3.11262845993041992188f
+    %983:ptr<storage, f32, read_write> = access %outputs, 980i, 0u
+    store %983, -3.11382198333740234375f
+    %984:ptr<storage, f32, read_write> = access %outputs, 981i, 0u
+    store %984, -3.11494350433349609375f
+    %985:ptr<storage, f32, read_write> = access %outputs, 982i, 0u
+    store %985, -1.57079625129699707031f
+    %986:ptr<storage, f32, read_write> = access %outputs, 983i, 0u
+    store %986, -1.57079625129699707031f
+    %987:ptr<storage, f32, read_write> = access %outputs, 984i, 0u
+    store %987, -1.57079625129699707031f
+    %988:ptr<storage, f32, read_write> = access %outputs, 985i, 0u
+    store %988, -1.57079625129699707031f
+    %989:ptr<storage, f32, read_write> = access %outputs, 986i, 0u
+    store %989, -1.57079625129699707031f
+    %990:ptr<storage, f32, read_write> = access %outputs, 987i, 0u
+    store %990, -1.57079625129699707031f
+    %991:ptr<storage, f32, read_write> = access %outputs, 988i, 0u
+    store %991, -1.57079625129699707031f
+    %992:ptr<storage, f32, read_write> = access %outputs, 989i, 0u
+    store %992, -1.57079625129699707031f
+    %993:ptr<storage, f32, read_write> = access %outputs, 990i, 0u
+    store %993, -1.57079625129699707031f
+    %994:ptr<storage, f32, read_write> = access %outputs, 991i, 0u
+    store %994, -1.57079625129699707031f
+    %995:ptr<storage, f32, read_write> = access %outputs, 992i, 0u
+    store %995, -1.57079637050628662109f
+    %996:ptr<storage, f32, read_write> = access %outputs, 993i, 0u
+    store %996, -1.57079637050628662109f
+    %997:ptr<storage, f32, read_write> = access %outputs, 994i, 0u
+    store %997, -1.57079637050628662109f
+    %998:ptr<storage, f32, read_write> = access %outputs, 995i, 0u
+    store %998, -1.57079637050628662109f
+    %999:ptr<storage, f32, read_write> = access %outputs, 996i, 0u
+    store %999, -1.57079637050628662109f
+    %1000:ptr<storage, f32, read_write> = access %outputs, 997i, 0u
+    store %1000, -1.57079637050628662109f
+    %1001:ptr<storage, f32, read_write> = access %outputs, 998i, 0u
+    store %1001, -1.57079637050628662109f
+    %1002:ptr<storage, f32, read_write> = access %outputs, 999i, 0u
+    store %1002, -1.57079637050628662109f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/benchmark/cluster-lights.wgsl.expected.ir.msl b/test/tint/benchmark/cluster-lights.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1e01b1b
--- /dev/null
+++ b/test/tint/benchmark/cluster-lights.wgsl.expected.ir.msl
@@ -0,0 +1,352 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Camera = struct @align(16) {
+  projection:mat4x4<f32> @offset(0)
+  inverseProjection:mat4x4<f32> @offset(64)
+  view:mat4x4<f32> @offset(128)
+  position:vec3<f32> @offset(192)
+  time:f32 @offset(204)
+  outputSize:vec2<f32> @offset(208)
+  zNear:f32 @offset(216)
+  zFar:f32 @offset(220)
+}
+
+ClusterBounds = struct @align(16) {
+  minAABB:vec3<f32> @offset(0)
+  maxAABB:vec3<f32> @offset(16)
+}
+
+Clusters = struct @align(16) {
+  bounds:array<ClusterBounds, 27648> @offset(0)
+}
+
+ClusterLights = struct @align(4) {
+  offset:u32 @offset(0)
+  count:u32 @offset(4)
+}
+
+ClusterLightGroup = struct @align(4) {
+  offset:atomic<u32> @offset(0)
+  lights:array<ClusterLights, 27648> @offset(4)
+  indices:array<u32, 1769472> @offset(221188)
+}
+
+Light = struct @align(16) {
+  position:vec3<f32> @offset(0)
+  range:f32 @offset(12)
+  color:vec3<f32> @offset(16)
+  intensity:f32 @offset(28)
+}
+
+GlobalLights = struct @align(16) {
+  ambient:vec3<f32> @offset(0)
+  dirColor:vec3<f32> @offset(16)
+  dirIntensity:f32 @offset(28)
+  dirDirection:vec3<f32> @offset(32)
+  lightCount:u32 @offset(44)
+  lights:array<Light> @offset(48)
+}
+
+%b1 = block {  # root
+  %camera:ptr<uniform, Camera, read> = var @binding_point(0, 0)
+  %clusters:ptr<storage, Clusters, read> = var @binding_point(0, 1)
+  %clusterLights:ptr<storage, ClusterLightGroup, read_write> = var @binding_point(0, 2)
+  %globalLights:ptr<storage, GlobalLights, read> = var @binding_point(0, 3)
+}
+
+%linearDepth = func(%depthSample:f32):f32 -> %b2 {
+  %b2 = block {
+    %7:ptr<uniform, f32, read> = access %camera, 7u
+    %8:f32 = load %7
+    %9:ptr<uniform, f32, read> = access %camera, 6u
+    %10:f32 = load %9
+    %11:f32 = mul %8, %10
+    %12:ptr<uniform, f32, read> = access %camera, 6u
+    %13:f32 = load %12
+    %14:ptr<uniform, f32, read> = access %camera, 7u
+    %15:f32 = load %14
+    %16:f32 = sub %13, %15
+    %17:ptr<uniform, f32, read> = access %camera, 7u
+    %18:f32 = load %17
+    %19:f32 = fma %depthSample, %16, %18
+    %20:f32 = div %11, %19
+    ret %20
+  }
+}
+%getTile = func(%fragCoord:vec4<f32>):vec3<u32> -> %b3 {
+  %b3 = block {
+    %23:ptr<uniform, f32, read> = access %camera, 7u
+    %24:f32 = load %23
+    %25:ptr<uniform, f32, read> = access %camera, 6u
+    %26:f32 = load %25
+    %27:f32 = div %24, %26
+    %28:f32 = log2 %27
+    %sliceScale:f32 = div 48.0f, %28
+    %30:ptr<uniform, f32, read> = access %camera, 6u
+    %31:f32 = load %30
+    %32:f32 = log2 %31
+    %33:f32 = mul 48.0f, %32
+    %34:ptr<uniform, f32, read> = access %camera, 7u
+    %35:f32 = load %34
+    %36:ptr<uniform, f32, read> = access %camera, 6u
+    %37:f32 = load %36
+    %38:f32 = div %35, %37
+    %39:f32 = log2 %38
+    %40:f32 = div %33, %39
+    %sliceBias:f32 = negation %40
+    %42:f32 = access %fragCoord, 2u
+    %43:f32 = call %linearDepth, %42
+    %44:f32 = log2 %43
+    %45:f32 = mul %44, %sliceScale
+    %46:f32 = add %45, %sliceBias
+    %47:f32 = max %46, 0.0f
+    %zTile:u32 = convert %47
+    %49:f32 = access %fragCoord, 0u
+    %50:ptr<uniform, vec2<f32>, read> = access %camera, 5u
+    %51:f32 = load_vector_element %50, 0u
+    %52:f32 = div %51, 32.0f
+    %53:f32 = div %49, %52
+    %54:u32 = convert %53
+    %55:f32 = access %fragCoord, 1u
+    %56:ptr<uniform, vec2<f32>, read> = access %camera, 5u
+    %57:f32 = load_vector_element %56, 1u
+    %58:f32 = div %57, 18.0f
+    %59:f32 = div %55, %58
+    %60:u32 = convert %59
+    %61:vec3<u32> = construct %54, %60, %zTile
+    ret %61
+  }
+}
+%getClusterIndex = func(%fragCoord_1:vec4<f32>):u32 -> %b4 {  # %fragCoord_1: 'fragCoord'
+  %b4 = block {
+    %tile:vec3<u32> = call %getTile, %fragCoord_1
+    %65:u32 = access %tile, 0u
+    %66:u32 = access %tile, 1u
+    %67:u32 = mul %66, 32u
+    %68:u32 = add %65, %67
+    %69:u32 = access %tile, 2u
+    %70:u32 = mul %69, 32u
+    %71:u32 = mul %70, 18u
+    %72:u32 = add %68, %71
+    ret %72
+  }
+}
+%sqDistPointAABB = func(%p:vec3<f32>, %minAABB:vec3<f32>, %maxAABB:vec3<f32>):f32 -> %b5 {
+  %b5 = block {
+    %sqDist:ptr<function, f32, read_write> = var, 0.0f
+    loop [i: %b6, b: %b7, c: %b8] {  # loop_1
+      %b6 = block {  # initializer
+        %i:ptr<function, i32, read_write> = var, 0i
+        next_iteration %b7
+      }
+      %b7 = block {  # body
+        %79:i32 = load %i
+        %80:bool = lt %79, 3i
+        if %80 [t: %b9, f: %b10] {  # if_1
+          %b9 = block {  # true
+            exit_if  # if_1
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %81:i32 = load %i
+        %v:f32 = access %p, %81
+        %83:i32 = load %i
+        %84:f32 = access %minAABB, %83
+        %85:bool = lt %v, %84
+        if %85 [t: %b11] {  # if_2
+          %b11 = block {  # true
+            %86:f32 = load %sqDist
+            %87:i32 = load %i
+            %88:f32 = access %minAABB, %87
+            %89:f32 = sub %88, %v
+            %90:i32 = load %i
+            %91:f32 = access %minAABB, %90
+            %92:f32 = sub %91, %v
+            %93:f32 = mul %89, %92
+            %94:f32 = add %86, %93
+            store %sqDist, %94
+            exit_if  # if_2
+          }
+        }
+        %95:i32 = load %i
+        %96:f32 = access %maxAABB, %95
+        %97:bool = gt %v, %96
+        if %97 [t: %b12] {  # if_3
+          %b12 = block {  # true
+            %98:f32 = load %sqDist
+            %99:i32 = load %i
+            %100:f32 = access %maxAABB, %99
+            %101:f32 = sub %v, %100
+            %102:i32 = load %i
+            %103:f32 = access %maxAABB, %102
+            %104:f32 = sub %v, %103
+            %105:f32 = mul %101, %104
+            %106:f32 = add %98, %105
+            store %sqDist, %106
+            exit_if  # if_3
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %107:i32 = load %i
+        %108:i32 = add %107, 1i
+        store %i, %108
+        next_iteration %b7
+      }
+    }
+    %109:f32 = load %sqDist
+    ret %109
+  }
+}
+%computeMain = @compute @workgroup_size(4, 2, 4) func(%global_id:vec3<u32> [@global_invocation_id]):void -> %b13 {
+  %b13 = block {
+    %112:u32 = access %global_id, 0u
+    %113:u32 = access %global_id, 1u
+    %114:u32 = mul %113, 32u
+    %115:u32 = add %112, %114
+    %116:u32 = access %global_id, 2u
+    %117:u32 = mul %116, 32u
+    %118:u32 = mul %117, 18u
+    %tileIndex:u32 = add %115, %118
+    %clusterLightCount:ptr<function, u32, read_write> = var, 0u
+    %cluserLightIndices:ptr<function, array<u32, 256>, read_write> = var
+    loop [i: %b14, b: %b15, c: %b16] {  # loop_2
+      %b14 = block {  # initializer
+        %i_1:ptr<function, u32, read_write> = var, 0u  # %i_1: 'i'
+        next_iteration %b15
+      }
+      %b15 = block {  # body
+        %123:u32 = load %i_1
+        %124:ptr<storage, u32, read> = access %globalLights, 4u
+        %125:u32 = load %124
+        %126:bool = lt %123, %125
+        if %126 [t: %b17, f: %b18] {  # if_4
+          %b17 = block {  # true
+            exit_if  # if_4
+          }
+          %b18 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %127:u32 = load %i_1
+        %128:ptr<storage, f32, read> = access %globalLights, 5u, %127, 1u
+        %range:f32 = load %128
+        %130:bool = lte %range, 0.0f
+        %lightInCluster:ptr<function, bool, read_write> = var, %130
+        %132:bool = load %lightInCluster
+        %133:bool = eq %132, false
+        if %133 [t: %b19] {  # if_5
+          %b19 = block {  # true
+            %134:ptr<uniform, mat4x4<f32>, read> = access %camera, 2u
+            %135:mat4x4<f32> = load %134
+            %136:u32 = load %i_1
+            %137:ptr<storage, vec3<f32>, read> = access %globalLights, 5u, %136, 0u
+            %138:vec3<f32> = load %137
+            %139:vec4<f32> = construct %138, 1.0f
+            %lightViewPos:vec4<f32> = mul %135, %139
+            %141:vec3<f32> = swizzle %lightViewPos, xyz
+            %142:ptr<storage, vec3<f32>, read> = access %clusters, 0u, %tileIndex, 0u
+            %143:vec3<f32> = load %142
+            %144:ptr<storage, vec3<f32>, read> = access %clusters, 0u, %tileIndex, 1u
+            %145:vec3<f32> = load %144
+            %sqDist_1:f32 = call %sqDistPointAABB, %141, %143, %145  # %sqDist_1: 'sqDist'
+            %147:f32 = mul %range, %range
+            %148:bool = lte %sqDist_1, %147
+            store %lightInCluster, %148
+            exit_if  # if_5
+          }
+        }
+        %149:bool = load %lightInCluster
+        if %149 [t: %b20] {  # if_6
+          %b20 = block {  # true
+            %150:u32 = load %clusterLightCount
+            %151:ptr<function, u32, read_write> = access %cluserLightIndices, %150
+            %152:u32 = load %i_1
+            store %151, %152
+            %153:u32 = load %clusterLightCount
+            %154:u32 = add %153, 1u
+            store %clusterLightCount, %154
+            exit_if  # if_6
+          }
+        }
+        %155:u32 = load %clusterLightCount
+        %156:bool = eq %155, 256u
+        if %156 [t: %b21] {  # if_7
+          %b21 = block {  # true
+            exit_loop  # loop_2
+          }
+        }
+        continue %b16
+      }
+      %b16 = block {  # continuing
+        %157:u32 = load %i_1
+        %158:u32 = add %157, 1u
+        store %i_1, %158
+        next_iteration %b15
+      }
+    }
+    %lightCount:u32 = load %clusterLightCount
+    %160:ptr<storage, atomic<u32>, read_write> = access %clusterLights, 0u
+    %161:u32 = atomicAdd %160, %lightCount
+    %offset:ptr<function, u32, read_write> = var, %161
+    %163:u32 = load %offset
+    %164:bool = gte %163, 1769472u
+    if %164 [t: %b22] {  # if_8
+      %b22 = block {  # true
+        ret
+      }
+    }
+    loop [i: %b23, b: %b24, c: %b25] {  # loop_3
+      %b23 = block {  # initializer
+        %i_2:ptr<function, u32, read_write> = var, 0u  # %i_2: 'i'
+        next_iteration %b24
+      }
+      %b24 = block {  # body
+        %166:u32 = load %i_2
+        %167:u32 = load %clusterLightCount
+        %168:bool = lt %166, %167
+        if %168 [t: %b26, f: %b27] {  # if_9
+          %b26 = block {  # true
+            exit_if  # if_9
+          }
+          %b27 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %169:u32 = load %offset
+        %170:u32 = load %i_2
+        %171:u32 = add %169, %170
+        %172:ptr<storage, u32, read_write> = access %clusterLights, 2u, %171
+        %173:u32 = load %i_2
+        %174:ptr<function, u32, read_write> = access %cluserLightIndices, %173
+        %175:u32 = load %174
+        store %172, %175
+        continue %b25
+      }
+      %b25 = block {  # continuing
+        %176:u32 = load %i_2
+        %177:u32 = add %176, 1u
+        store %i_2, %177
+        next_iteration %b24
+      }
+    }
+    %178:ptr<storage, u32, read_write> = access %clusterLights, 1u, %tileIndex, 0u
+    %179:u32 = load %offset
+    store %178, %179
+    %180:ptr<storage, u32, read_write> = access %clusterLights, 1u, %tileIndex, 1u
+    %181:u32 = load %clusterLightCount
+    store %180, %181
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/benchmark/metaball-isosurface.wgsl.expected.ir.msl b/test/tint/benchmark/metaball-isosurface.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3354431
--- /dev/null
+++ b/test/tint/benchmark/metaball-isosurface.wgsl.expected.ir.msl
@@ -0,0 +1,616 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Tables = struct @align(4) {
+  edges:array<u32, 256> @offset(0)
+  tris:array<i32, 4096> @offset(1024)
+}
+
+IsosurfaceVolume = struct @align(16) {
+  min:vec3<f32> @offset(0)
+  max:vec3<f32> @offset(16)
+  step:vec3<f32> @offset(32)
+  size:vec3<u32> @offset(48)
+  threshold:f32 @offset(60)
+  values:array<f32> @offset(64)
+}
+
+PositionBuffer = struct @align(4) {
+  values:array<f32> @offset(0)
+}
+
+NormalBuffer = struct @align(4) {
+  values:array<f32> @offset(0)
+}
+
+IndexBuffer = struct @align(4) {
+  tris:array<u32> @offset(0)
+}
+
+DrawIndirectArgs = struct @align(4) {
+  vc:u32 @offset(0)
+  vertexCount:atomic<u32> @offset(4)
+  firstVertex:u32 @offset(8)
+  firstInstance:u32 @offset(12)
+  indexCount:atomic<u32> @offset(16)
+  indexedInstanceCount:u32 @offset(20)
+  indexedFirstIndex:u32 @offset(24)
+  indexedBaseVertex:u32 @offset(28)
+  indexedFirstInstance:u32 @offset(32)
+}
+
+%b1 = block {  # root
+  %tables:ptr<storage, Tables, read> = var @binding_point(0, 0)
+  %volume:ptr<storage, IsosurfaceVolume, read_write> = var @binding_point(0, 1)
+  %positionsOut:ptr<storage, PositionBuffer, read_write> = var @binding_point(0, 2)
+  %normalsOut:ptr<storage, NormalBuffer, read_write> = var @binding_point(0, 3)
+  %indicesOut:ptr<storage, IndexBuffer, read_write> = var @binding_point(0, 4)
+  %drawOut:ptr<storage, DrawIndirectArgs, read_write> = var @binding_point(0, 5)
+  %positions:ptr<private, array<vec3<f32>, 12>, read_write> = var
+  %normals:ptr<private, array<vec3<f32>, 12>, read_write> = var
+  %indices:ptr<private, array<u32, 12>, read_write> = var
+  %cubeVerts:ptr<private, u32, read_write> = var, 0u
+}
+
+%valueAt = func(%index:vec3<u32>):f32 -> %b2 {
+  %b2 = block {
+    %13:ptr<storage, vec3<u32>, read_write> = access %volume, 3u
+    %14:vec3<u32> = load %13
+    %15:vec3<bool> = gte %index, %14
+    %16:bool = any %15
+    if %16 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret 0.0f
+      }
+    }
+    %17:u32 = access %index, 0u
+    %18:u32 = access %index, 1u
+    %19:ptr<storage, vec3<u32>, read_write> = access %volume, 3u
+    %20:u32 = load_vector_element %19, 0u
+    %21:u32 = mul %18, %20
+    %22:u32 = add %17, %21
+    %23:u32 = access %index, 2u
+    %24:ptr<storage, vec3<u32>, read_write> = access %volume, 3u
+    %25:u32 = load_vector_element %24, 0u
+    %26:u32 = mul %23, %25
+    %27:ptr<storage, vec3<u32>, read_write> = access %volume, 3u
+    %28:u32 = load_vector_element %27, 1u
+    %29:u32 = mul %26, %28
+    %valueIndex:u32 = add %22, %29
+    %31:ptr<storage, f32, read_write> = access %volume, 5u, %valueIndex
+    %32:f32 = load %31
+    ret %32
+  }
+}
+%positionAt = func(%index_1:vec3<u32>):vec3<f32> -> %b4 {  # %index_1: 'index'
+  %b4 = block {
+    %35:ptr<storage, vec3<f32>, read_write> = access %volume, 0u
+    %36:vec3<f32> = load %35
+    %37:ptr<storage, vec3<f32>, read_write> = access %volume, 2u
+    %38:vec3<f32> = load %37
+    %39:vec3<u32> = swizzle %index_1, xyz
+    %40:vec3<f32> = convert %39
+    %41:vec3<f32> = mul %38, %40
+    %42:vec3<f32> = add %36, %41
+    ret %42
+  }
+}
+%normalAt = func(%index_2:vec3<u32>):vec3<f32> -> %b5 {  # %index_2: 'index'
+  %b5 = block {
+    %45:vec3<u32> = sub %index_2, vec3<u32>(1u, 0u, 0u)
+    %46:f32 = call %valueAt, %45
+    %47:vec3<u32> = add %index_2, vec3<u32>(1u, 0u, 0u)
+    %48:f32 = call %valueAt, %47
+    %49:f32 = sub %46, %48
+    %50:vec3<u32> = sub %index_2, vec3<u32>(0u, 1u, 0u)
+    %51:f32 = call %valueAt, %50
+    %52:vec3<u32> = add %index_2, vec3<u32>(0u, 1u, 0u)
+    %53:f32 = call %valueAt, %52
+    %54:f32 = sub %51, %53
+    %55:vec3<u32> = sub %index_2, vec3<u32>(0u, 0u, 1u)
+    %56:f32 = call %valueAt, %55
+    %57:vec3<u32> = add %index_2, vec3<u32>(0u, 0u, 1u)
+    %58:f32 = call %valueAt, %57
+    %59:f32 = sub %56, %58
+    %60:vec3<f32> = construct %49, %54, %59
+    ret %60
+  }
+}
+%interpX = func(%index_3:u32, %i:vec3<u32>, %va:f32, %vb:f32):void -> %b6 {  # %index_3: 'index'
+  %b6 = block {
+    %66:ptr<storage, f32, read_write> = access %volume, 4u
+    %67:f32 = load %66
+    %68:f32 = sub %67, %va
+    %69:f32 = sub %vb, %va
+    %mu:f32 = div %68, %69
+    %71:u32 = load %cubeVerts
+    %72:ptr<private, vec3<f32>, read_write> = access %positions, %71
+    %73:vec3<f32> = call %positionAt, %i
+    %74:ptr<storage, vec3<f32>, read_write> = access %volume, 2u
+    %75:f32 = load_vector_element %74, 0u
+    %76:f32 = mul %75, %mu
+    %77:vec3<f32> = construct %76, 0.0f, 0.0f
+    %78:vec3<f32> = add %73, %77
+    store %72, %78
+    %na:vec3<f32> = call %normalAt, %i
+    %80:vec3<u32> = add %i, vec3<u32>(1u, 0u, 0u)
+    %nb:vec3<f32> = call %normalAt, %80
+    %82:u32 = load %cubeVerts
+    %83:ptr<private, vec3<f32>, read_write> = access %normals, %82
+    %84:vec3<f32> = construct %mu, %mu, %mu
+    %85:vec3<f32> = mix %na, %nb, %84
+    store %83, %85
+    %86:ptr<private, u32, read_write> = access %indices, %index_3
+    %87:u32 = load %cubeVerts
+    store %86, %87
+    %88:u32 = load %cubeVerts
+    %89:u32 = add %88, 1u
+    store %cubeVerts, %89
+    ret
+  }
+}
+%interpY = func(%index_4:u32, %i_1:vec3<u32>, %va_1:f32, %vb_1:f32):void -> %b7 {  # %index_4: 'index', %i_1: 'i', %va_1: 'va', %vb_1: 'vb'
+  %b7 = block {
+    %95:ptr<storage, f32, read_write> = access %volume, 4u
+    %96:f32 = load %95
+    %97:f32 = sub %96, %va_1
+    %98:f32 = sub %vb_1, %va_1
+    %mu_1:f32 = div %97, %98  # %mu_1: 'mu'
+    %100:u32 = load %cubeVerts
+    %101:ptr<private, vec3<f32>, read_write> = access %positions, %100
+    %102:vec3<f32> = call %positionAt, %i_1
+    %103:ptr<storage, vec3<f32>, read_write> = access %volume, 2u
+    %104:f32 = load_vector_element %103, 1u
+    %105:f32 = mul %104, %mu_1
+    %106:vec3<f32> = construct 0.0f, %105, 0.0f
+    %107:vec3<f32> = add %102, %106
+    store %101, %107
+    %na_1:vec3<f32> = call %normalAt, %i_1  # %na_1: 'na'
+    %109:vec3<u32> = add %i_1, vec3<u32>(0u, 1u, 0u)
+    %nb_1:vec3<f32> = call %normalAt, %109  # %nb_1: 'nb'
+    %111:u32 = load %cubeVerts
+    %112:ptr<private, vec3<f32>, read_write> = access %normals, %111
+    %113:vec3<f32> = construct %mu_1, %mu_1, %mu_1
+    %114:vec3<f32> = mix %na_1, %nb_1, %113
+    store %112, %114
+    %115:ptr<private, u32, read_write> = access %indices, %index_4
+    %116:u32 = load %cubeVerts
+    store %115, %116
+    %117:u32 = load %cubeVerts
+    %118:u32 = add %117, 1u
+    store %cubeVerts, %118
+    ret
+  }
+}
+%interpZ = func(%index_5:u32, %i_2:vec3<u32>, %va_2:f32, %vb_2:f32):void -> %b8 {  # %index_5: 'index', %i_2: 'i', %va_2: 'va', %vb_2: 'vb'
+  %b8 = block {
+    %124:ptr<storage, f32, read_write> = access %volume, 4u
+    %125:f32 = load %124
+    %126:f32 = sub %125, %va_2
+    %127:f32 = sub %vb_2, %va_2
+    %mu_2:f32 = div %126, %127  # %mu_2: 'mu'
+    %129:u32 = load %cubeVerts
+    %130:ptr<private, vec3<f32>, read_write> = access %positions, %129
+    %131:vec3<f32> = call %positionAt, %i_2
+    %132:ptr<storage, vec3<f32>, read_write> = access %volume, 2u
+    %133:f32 = load_vector_element %132, 2u
+    %134:f32 = mul %133, %mu_2
+    %135:vec3<f32> = construct 0.0f, 0.0f, %134
+    %136:vec3<f32> = add %131, %135
+    store %130, %136
+    %na_2:vec3<f32> = call %normalAt, %i_2  # %na_2: 'na'
+    %138:vec3<u32> = add %i_2, vec3<u32>(0u, 0u, 1u)
+    %nb_2:vec3<f32> = call %normalAt, %138  # %nb_2: 'nb'
+    %140:u32 = load %cubeVerts
+    %141:ptr<private, vec3<f32>, read_write> = access %normals, %140
+    %142:vec3<f32> = construct %mu_2, %mu_2, %mu_2
+    %143:vec3<f32> = mix %na_2, %nb_2, %142
+    store %141, %143
+    %144:ptr<private, u32, read_write> = access %indices, %index_5
+    %145:u32 = load %cubeVerts
+    store %144, %145
+    %146:u32 = load %cubeVerts
+    %147:u32 = add %146, 1u
+    store %cubeVerts, %147
+    ret
+  }
+}
+%computeMain = @compute @workgroup_size(4, 4, 4) func(%global_id:vec3<u32> [@global_invocation_id]):void -> %b9 {
+  %b9 = block {
+    %i0:vec3<u32> = let %global_id
+    %i1:vec3<u32> = add %global_id, vec3<u32>(1u, 0u, 0u)
+    %i2:vec3<u32> = add %global_id, vec3<u32>(1u, 1u, 0u)
+    %i3:vec3<u32> = add %global_id, vec3<u32>(0u, 1u, 0u)
+    %i4:vec3<u32> = add %global_id, vec3<u32>(0u, 0u, 1u)
+    %i5:vec3<u32> = add %global_id, vec3<u32>(1u, 0u, 1u)
+    %i6:vec3<u32> = add %global_id, vec3<u32>(1u)
+    %i7:vec3<u32> = add %global_id, vec3<u32>(0u, 1u, 1u)
+    %v0:f32 = call %valueAt, %i0
+    %v1:f32 = call %valueAt, %i1
+    %v2:f32 = call %valueAt, %i2
+    %v3:f32 = call %valueAt, %i3
+    %v4:f32 = call %valueAt, %i4
+    %v5:f32 = call %valueAt, %i5
+    %v6:f32 = call %valueAt, %i6
+    %v7:f32 = call %valueAt, %i7
+    %cubeIndex:ptr<function, u32, read_write> = var, 0u
+    %167:ptr<storage, f32, read_write> = access %volume, 4u
+    %168:f32 = load %167
+    %169:bool = lt %v0, %168
+    if %169 [t: %b10] {  # if_2
+      %b10 = block {  # true
+        %170:u32 = load %cubeIndex
+        %171:u32 = or %170, 1u
+        store %cubeIndex, %171
+        exit_if  # if_2
+      }
+    }
+    %172:ptr<storage, f32, read_write> = access %volume, 4u
+    %173:f32 = load %172
+    %174:bool = lt %v1, %173
+    if %174 [t: %b11] {  # if_3
+      %b11 = block {  # true
+        %175:u32 = load %cubeIndex
+        %176:u32 = or %175, 2u
+        store %cubeIndex, %176
+        exit_if  # if_3
+      }
+    }
+    %177:ptr<storage, f32, read_write> = access %volume, 4u
+    %178:f32 = load %177
+    %179:bool = lt %v2, %178
+    if %179 [t: %b12] {  # if_4
+      %b12 = block {  # true
+        %180:u32 = load %cubeIndex
+        %181:u32 = or %180, 4u
+        store %cubeIndex, %181
+        exit_if  # if_4
+      }
+    }
+    %182:ptr<storage, f32, read_write> = access %volume, 4u
+    %183:f32 = load %182
+    %184:bool = lt %v3, %183
+    if %184 [t: %b13] {  # if_5
+      %b13 = block {  # true
+        %185:u32 = load %cubeIndex
+        %186:u32 = or %185, 8u
+        store %cubeIndex, %186
+        exit_if  # if_5
+      }
+    }
+    %187:ptr<storage, f32, read_write> = access %volume, 4u
+    %188:f32 = load %187
+    %189:bool = lt %v4, %188
+    if %189 [t: %b14] {  # if_6
+      %b14 = block {  # true
+        %190:u32 = load %cubeIndex
+        %191:u32 = or %190, 16u
+        store %cubeIndex, %191
+        exit_if  # if_6
+      }
+    }
+    %192:ptr<storage, f32, read_write> = access %volume, 4u
+    %193:f32 = load %192
+    %194:bool = lt %v5, %193
+    if %194 [t: %b15] {  # if_7
+      %b15 = block {  # true
+        %195:u32 = load %cubeIndex
+        %196:u32 = or %195, 32u
+        store %cubeIndex, %196
+        exit_if  # if_7
+      }
+    }
+    %197:ptr<storage, f32, read_write> = access %volume, 4u
+    %198:f32 = load %197
+    %199:bool = lt %v6, %198
+    if %199 [t: %b16] {  # if_8
+      %b16 = block {  # true
+        %200:u32 = load %cubeIndex
+        %201:u32 = or %200, 64u
+        store %cubeIndex, %201
+        exit_if  # if_8
+      }
+    }
+    %202:ptr<storage, f32, read_write> = access %volume, 4u
+    %203:f32 = load %202
+    %204:bool = lt %v7, %203
+    if %204 [t: %b17] {  # if_9
+      %b17 = block {  # true
+        %205:u32 = load %cubeIndex
+        %206:u32 = or %205, 128u
+        store %cubeIndex, %206
+        exit_if  # if_9
+      }
+    }
+    %207:u32 = load %cubeIndex
+    %208:ptr<storage, u32, read> = access %tables, 0u, %207
+    %edges:u32 = load %208
+    %210:u32 = and %edges, 1u
+    %211:bool = neq %210, 0u
+    if %211 [t: %b18] {  # if_10
+      %b18 = block {  # true
+        %212:void = call %interpX, 0u, %i0, %v0, %v1
+        exit_if  # if_10
+      }
+    }
+    %213:u32 = and %edges, 2u
+    %214:bool = neq %213, 0u
+    if %214 [t: %b19] {  # if_11
+      %b19 = block {  # true
+        %215:void = call %interpY, 1u, %i1, %v1, %v2
+        exit_if  # if_11
+      }
+    }
+    %216:u32 = and %edges, 4u
+    %217:bool = neq %216, 0u
+    if %217 [t: %b20] {  # if_12
+      %b20 = block {  # true
+        %218:void = call %interpX, 2u, %i3, %v3, %v2
+        exit_if  # if_12
+      }
+    }
+    %219:u32 = and %edges, 8u
+    %220:bool = neq %219, 0u
+    if %220 [t: %b21] {  # if_13
+      %b21 = block {  # true
+        %221:void = call %interpY, 3u, %i0, %v0, %v3
+        exit_if  # if_13
+      }
+    }
+    %222:u32 = and %edges, 16u
+    %223:bool = neq %222, 0u
+    if %223 [t: %b22] {  # if_14
+      %b22 = block {  # true
+        %224:void = call %interpX, 4u, %i4, %v4, %v5
+        exit_if  # if_14
+      }
+    }
+    %225:u32 = and %edges, 32u
+    %226:bool = neq %225, 0u
+    if %226 [t: %b23] {  # if_15
+      %b23 = block {  # true
+        %227:void = call %interpY, 5u, %i5, %v5, %v6
+        exit_if  # if_15
+      }
+    }
+    %228:u32 = and %edges, 64u
+    %229:bool = neq %228, 0u
+    if %229 [t: %b24] {  # if_16
+      %b24 = block {  # true
+        %230:void = call %interpX, 6u, %i7, %v7, %v6
+        exit_if  # if_16
+      }
+    }
+    %231:u32 = and %edges, 128u
+    %232:bool = neq %231, 0u
+    if %232 [t: %b25] {  # if_17
+      %b25 = block {  # true
+        %233:void = call %interpY, 7u, %i4, %v4, %v7
+        exit_if  # if_17
+      }
+    }
+    %234:u32 = and %edges, 256u
+    %235:bool = neq %234, 0u
+    if %235 [t: %b26] {  # if_18
+      %b26 = block {  # true
+        %236:void = call %interpZ, 8u, %i0, %v0, %v4
+        exit_if  # if_18
+      }
+    }
+    %237:u32 = and %edges, 512u
+    %238:bool = neq %237, 0u
+    if %238 [t: %b27] {  # if_19
+      %b27 = block {  # true
+        %239:void = call %interpZ, 9u, %i1, %v1, %v5
+        exit_if  # if_19
+      }
+    }
+    %240:u32 = and %edges, 1024u
+    %241:bool = neq %240, 0u
+    if %241 [t: %b28] {  # if_20
+      %b28 = block {  # true
+        %242:void = call %interpZ, 10u, %i2, %v2, %v6
+        exit_if  # if_20
+      }
+    }
+    %243:u32 = and %edges, 2048u
+    %244:bool = neq %243, 0u
+    if %244 [t: %b29] {  # if_21
+      %b29 = block {  # true
+        %245:void = call %interpZ, 11u, %i3, %v3, %v7
+        exit_if  # if_21
+      }
+    }
+    %246:u32 = load %cubeIndex
+    %247:u32 = shiftl %246, 4u
+    %triTableOffset:u32 = add %247, 1u
+    %249:u32 = sub %triTableOffset, 1u
+    %250:ptr<storage, i32, read> = access %tables, 1u, %249
+    %251:i32 = load %250
+    %indexCount:u32 = convert %251
+    %253:ptr<storage, atomic<u32>, read_write> = access %drawOut, 1u
+    %254:u32 = load %cubeVerts
+    %255:u32 = atomicAdd %253, %254
+    %firstVertex:ptr<function, u32, read_write> = var, %255
+    %257:u32 = access %global_id, 0u
+    %258:u32 = access %global_id, 1u
+    %259:ptr<storage, vec3<u32>, read_write> = access %volume, 3u
+    %260:u32 = load_vector_element %259, 0u
+    %261:u32 = mul %258, %260
+    %262:u32 = add %257, %261
+    %263:u32 = access %global_id, 2u
+    %264:ptr<storage, vec3<u32>, read_write> = access %volume, 3u
+    %265:u32 = load_vector_element %264, 0u
+    %266:u32 = mul %263, %265
+    %267:ptr<storage, vec3<u32>, read_write> = access %volume, 3u
+    %268:u32 = load_vector_element %267, 1u
+    %269:u32 = mul %266, %268
+    %bufferOffset:u32 = add %262, %269
+    %firstIndex:u32 = mul %bufferOffset, 15u
+    loop [i: %b30, b: %b31, c: %b32] {  # loop_1
+      %b30 = block {  # initializer
+        %i_3:ptr<function, u32, read_write> = var, 0u  # %i_3: 'i'
+        next_iteration %b31
+      }
+      %b31 = block {  # body
+        %273:u32 = load %i_3
+        %274:u32 = load %cubeVerts
+        %275:bool = lt %273, %274
+        if %275 [t: %b33, f: %b34] {  # if_22
+          %b33 = block {  # true
+            exit_if  # if_22
+          }
+          %b34 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %276:u32 = load %firstVertex
+        %277:u32 = mul %276, 3u
+        %278:u32 = load %i_3
+        %279:u32 = mul %278, 3u
+        %280:u32 = add %277, %279
+        %281:ptr<storage, f32, read_write> = access %positionsOut, 0u, %280
+        %282:u32 = load %i_3
+        %283:ptr<private, vec3<f32>, read_write> = access %positions, %282
+        %284:f32 = load_vector_element %283, 0u
+        store %281, %284
+        %285:u32 = load %firstVertex
+        %286:u32 = mul %285, 3u
+        %287:u32 = load %i_3
+        %288:u32 = mul %287, 3u
+        %289:u32 = add %286, %288
+        %290:u32 = add %289, 1u
+        %291:ptr<storage, f32, read_write> = access %positionsOut, 0u, %290
+        %292:u32 = load %i_3
+        %293:ptr<private, vec3<f32>, read_write> = access %positions, %292
+        %294:f32 = load_vector_element %293, 1u
+        store %291, %294
+        %295:u32 = load %firstVertex
+        %296:u32 = mul %295, 3u
+        %297:u32 = load %i_3
+        %298:u32 = mul %297, 3u
+        %299:u32 = add %296, %298
+        %300:u32 = add %299, 2u
+        %301:ptr<storage, f32, read_write> = access %positionsOut, 0u, %300
+        %302:u32 = load %i_3
+        %303:ptr<private, vec3<f32>, read_write> = access %positions, %302
+        %304:f32 = load_vector_element %303, 2u
+        store %301, %304
+        %305:u32 = load %firstVertex
+        %306:u32 = mul %305, 3u
+        %307:u32 = load %i_3
+        %308:u32 = mul %307, 3u
+        %309:u32 = add %306, %308
+        %310:ptr<storage, f32, read_write> = access %normalsOut, 0u, %309
+        %311:u32 = load %i_3
+        %312:ptr<private, vec3<f32>, read_write> = access %normals, %311
+        %313:f32 = load_vector_element %312, 0u
+        store %310, %313
+        %314:u32 = load %firstVertex
+        %315:u32 = mul %314, 3u
+        %316:u32 = load %i_3
+        %317:u32 = mul %316, 3u
+        %318:u32 = add %315, %317
+        %319:u32 = add %318, 1u
+        %320:ptr<storage, f32, read_write> = access %normalsOut, 0u, %319
+        %321:u32 = load %i_3
+        %322:ptr<private, vec3<f32>, read_write> = access %normals, %321
+        %323:f32 = load_vector_element %322, 1u
+        store %320, %323
+        %324:u32 = load %firstVertex
+        %325:u32 = mul %324, 3u
+        %326:u32 = load %i_3
+        %327:u32 = mul %326, 3u
+        %328:u32 = add %325, %327
+        %329:u32 = add %328, 2u
+        %330:ptr<storage, f32, read_write> = access %normalsOut, 0u, %329
+        %331:u32 = load %i_3
+        %332:ptr<private, vec3<f32>, read_write> = access %normals, %331
+        %333:f32 = load_vector_element %332, 2u
+        store %330, %333
+        continue %b32
+      }
+      %b32 = block {  # continuing
+        %334:u32 = load %i_3
+        %335:u32 = add %334, 1u
+        store %i_3, %335
+        next_iteration %b31
+      }
+    }
+    loop [i: %b35, b: %b36, c: %b37] {  # loop_2
+      %b35 = block {  # initializer
+        %i_4:ptr<function, u32, read_write> = var, 0u  # %i_4: 'i'
+        next_iteration %b36
+      }
+      %b36 = block {  # body
+        %337:u32 = load %i_4
+        %338:bool = lt %337, %indexCount
+        if %338 [t: %b38, f: %b39] {  # if_23
+          %b38 = block {  # true
+            exit_if  # if_23
+          }
+          %b39 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %339:u32 = load %i_4
+        %340:u32 = add %triTableOffset, %339
+        %341:ptr<storage, i32, read> = access %tables, 1u, %340
+        %index_6:i32 = load %341  # %index_6: 'index'
+        %343:u32 = load %i_4
+        %344:u32 = add %firstIndex, %343
+        %345:ptr<storage, u32, read_write> = access %indicesOut, 0u, %344
+        %346:u32 = load %firstVertex
+        %347:ptr<private, u32, read_write> = access %indices, %index_6
+        %348:u32 = load %347
+        %349:u32 = add %346, %348
+        store %345, %349
+        continue %b37
+      }
+      %b37 = block {  # continuing
+        %350:u32 = load %i_4
+        %351:u32 = add %350, 1u
+        store %i_4, %351
+        next_iteration %b36
+      }
+    }
+    loop [i: %b40, b: %b41, c: %b42] {  # loop_3
+      %b40 = block {  # initializer
+        %i_5:ptr<function, u32, read_write> = var, %indexCount  # %i_5: 'i'
+        next_iteration %b41
+      }
+      %b41 = block {  # body
+        %353:u32 = load %i_5
+        %354:bool = lt %353, 15u
+        if %354 [t: %b43, f: %b44] {  # if_24
+          %b43 = block {  # true
+            exit_if  # if_24
+          }
+          %b44 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %355:u32 = load %i_5
+        %356:u32 = add %firstIndex, %355
+        %357:ptr<storage, u32, read_write> = access %indicesOut, 0u, %356
+        %358:u32 = load %firstVertex
+        store %357, %358
+        continue %b42
+      }
+      %b42 = block {  # continuing
+        %359:u32 = load %i_5
+        %360:u32 = add %359, 1u
+        store %i_5, %360
+        next_iteration %b41
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/benchmark/particles.wgsl.expected.ir.msl b/test/tint/benchmark/particles.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7341342
--- /dev/null
+++ b/test/tint/benchmark/particles.wgsl.expected.ir.msl
@@ -0,0 +1,364 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: RenderParams = struct @align(16) {
+  modelViewProjectionMatrix:mat4x4<f32> @offset(0)
+  right:vec3<f32> @offset(64)
+  up:vec3<f32> @offset(80)
+}
+
+VertexOutput = struct @align(16) {
+  position:vec4<f32> @offset(0), @builtin(position)
+  color:vec4<f32> @offset(16), @location(0)
+  quad_pos:vec2<f32> @offset(32), @location(1)
+}
+
+VertexInput = struct @align(16) {
+  position:vec3<f32> @offset(0), @location(0)
+  color:vec4<f32> @offset(16), @location(1)
+  quad_pos:vec2<f32> @offset(32), @location(2)
+}
+
+SimulationParams = struct @align(16) {
+  deltaTime:f32 @offset(0)
+  seed:vec4<f32> @offset(16)
+}
+
+Particle = struct @align(16) {
+  position:vec3<f32> @offset(0)
+  lifetime:f32 @offset(12)
+  color:vec4<f32> @offset(16)
+  velocity:vec3<f32> @offset(32)
+}
+
+Particles = struct @align(16) {
+  particles:array<Particle> @offset(0)
+}
+
+UBO = struct @align(4) {
+  width:u32 @offset(0)
+}
+
+Buffer = struct @align(4) {
+  weights:array<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %rand_seed:ptr<private, vec2<f32>, read_write> = var
+  %render_params:ptr<uniform, RenderParams, read> = var @binding_point(0, 0)
+  %sim_params:ptr<uniform, SimulationParams, read> = var @binding_point(0, 0)
+  %data:ptr<storage, Particles, read_write> = var @binding_point(0, 1)
+  %tint_symbol:ptr<handle, texture_2d<f32>, read> = var @binding_point(0, 2)
+  %ubo:ptr<uniform, UBO, read> = var @binding_point(0, 3)
+  %buf_in:ptr<storage, Buffer, read> = var @binding_point(0, 4)
+  %buf_out:ptr<storage, Buffer, read_write> = var @binding_point(0, 5)
+  %tex_in:ptr<handle, texture_2d<f32>, read> = var @binding_point(0, 6)
+  %tex_out:ptr<handle, texture_storage_2d<rgba8unorm, write>, read> = var @binding_point(0, 7)
+}
+
+%rand = func():f32 -> %b2 {
+  %b2 = block {
+    %12:vec2<f32> = load %rand_seed
+    %13:f32 = dot %12, vec2<f32>(23.1407794952392578125f, 232.6168975830078125f)
+    %14:f32 = cos %13
+    %15:f32 = mul %14, 136.816802978515625f
+    %16:f32 = fract %15
+    store_vector_element %rand_seed, 0u, %16
+    %17:vec2<f32> = load %rand_seed
+    %18:f32 = dot %17, vec2<f32>(54.478565216064453125f, 345.841522216796875f)
+    %19:f32 = cos %18
+    %20:f32 = mul %19, 534.7645263671875f
+    %21:f32 = fract %20
+    store_vector_element %rand_seed, 1u, %21
+    %22:f32 = load_vector_element %rand_seed, 1u
+    ret %22
+  }
+}
+%vs_main = @vertex func(%in:VertexInput):VertexOutput -> %b3 {
+  %b3 = block {
+    %25:ptr<uniform, vec3<f32>, read> = access %render_params, 1u
+    %26:vec3<f32> = load %25
+    %27:ptr<uniform, vec3<f32>, read> = access %render_params, 2u
+    %28:vec3<f32> = load %27
+    %29:mat2x3<f32> = construct %26, %28
+    %30:vec2<f32> = access %in, 2u
+    %31:vec3<f32> = mul %29, %30
+    %quad_pos:ptr<function, vec3<f32>, read_write> = var, %31
+    %33:vec3<f32> = access %in, 0u
+    %34:vec3<f32> = load %quad_pos
+    %35:vec3<f32> = mul %34, 0.00999999977648258209f
+    %36:vec3<f32> = add %33, %35
+    %position:ptr<function, vec3<f32>, read_write> = var, %36
+    %out:ptr<function, VertexOutput, read_write> = var
+    %39:ptr<function, vec4<f32>, read_write> = access %out, 0u
+    %40:ptr<uniform, mat4x4<f32>, read> = access %render_params, 0u
+    %41:mat4x4<f32> = load %40
+    %42:vec3<f32> = load %position
+    %43:vec4<f32> = construct %42, 1.0f
+    %44:vec4<f32> = mul %41, %43
+    store %39, %44
+    %45:ptr<function, vec4<f32>, read_write> = access %out, 1u
+    %46:vec4<f32> = access %in, 1u
+    store %45, %46
+    %47:ptr<function, vec2<f32>, read_write> = access %out, 2u
+    %48:vec2<f32> = access %in, 2u
+    store %47, %48
+    %49:VertexOutput = load %out
+    ret %49
+  }
+}
+%fs_main = @fragment func(%in_1:VertexOutput):vec4<f32> [@location(0)] -> %b4 {  # %in_1: 'in'
+  %b4 = block {
+    %52:vec4<f32> = access %in_1, 1u
+    %color:ptr<function, vec4<f32>, read_write> = var, %52
+    %54:f32 = load_vector_element %color, 3u
+    %55:vec2<f32> = access %in_1, 2u
+    %56:f32 = length %55
+    %57:f32 = sub 1.0f, %56
+    %58:f32 = max %57, 0.0f
+    %59:f32 = mul %54, %58
+    store_vector_element %color, 3u, %59
+    %60:vec4<f32> = load %color
+    ret %60
+  }
+}
+%simulate = @compute @workgroup_size(64, 1, 1) func(%GlobalInvocationID:vec3<u32> [@global_invocation_id]):void -> %b5 {
+  %b5 = block {
+    %63:ptr<uniform, vec4<f32>, read> = access %sim_params, 1u
+    %64:vec4<f32> = load %63
+    %65:vec2<f32> = swizzle %64, xy
+    %66:vec2<u32> = swizzle %GlobalInvocationID, xy
+    %67:vec2<f32> = convert %66
+    %68:vec2<f32> = add %65, %67
+    %69:ptr<uniform, vec4<f32>, read> = access %sim_params, 1u
+    %70:vec4<f32> = load %69
+    %71:vec2<f32> = swizzle %70, zw
+    %72:vec2<f32> = mul %68, %71
+    store %rand_seed, %72
+    %idx:u32 = access %GlobalInvocationID, 0u
+    %74:ptr<storage, Particle, read_write> = access %data, 0u, %idx
+    %75:Particle = load %74
+    %particle:ptr<function, Particle, read_write> = var, %75
+    %77:ptr<function, vec3<f32>, read_write> = access %particle, 3u
+    %78:ptr<function, vec3<f32>, read_write> = access %particle, 3u
+    %79:f32 = load_vector_element %78, 2u
+    %80:ptr<uniform, f32, read> = access %sim_params, 0u
+    %81:f32 = load %80
+    %82:f32 = mul %81, 0.5f
+    %83:f32 = sub %79, %82
+    store_vector_element %77, 2u, %83
+    %84:ptr<function, vec3<f32>, read_write> = access %particle, 0u
+    %85:ptr<function, vec3<f32>, read_write> = access %particle, 0u
+    %86:vec3<f32> = load %85
+    %87:ptr<uniform, f32, read> = access %sim_params, 0u
+    %88:f32 = load %87
+    %89:ptr<function, vec3<f32>, read_write> = access %particle, 3u
+    %90:vec3<f32> = load %89
+    %91:vec3<f32> = mul %88, %90
+    %92:vec3<f32> = add %86, %91
+    store %84, %92
+    %93:ptr<function, f32, read_write> = access %particle, 1u
+    %94:ptr<function, f32, read_write> = access %particle, 1u
+    %95:f32 = load %94
+    %96:ptr<uniform, f32, read> = access %sim_params, 0u
+    %97:f32 = load %96
+    %98:f32 = sub %95, %97
+    store %93, %98
+    %99:ptr<function, vec4<f32>, read_write> = access %particle, 2u
+    %100:ptr<function, f32, read_write> = access %particle, 1u
+    %101:f32 = load %100
+    %102:f32 = smoothstep 0.0f, 0.5f, %101
+    store_vector_element %99, 3u, %102
+    %103:ptr<function, f32, read_write> = access %particle, 1u
+    %104:f32 = load %103
+    %105:bool = lt %104, 0.0f
+    if %105 [t: %b6] {  # if_1
+      %b6 = block {  # true
+        %coord:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(0u)
+        loop [i: %b7, b: %b8, c: %b9] {  # loop_1
+          %b7 = block {  # initializer
+            %107:texture_2d<f32> = load %tint_symbol
+            %108:u32 = textureNumLevels %107
+            %109:u32 = sub %108, 1u
+            %level:ptr<function, u32, read_write> = var, %109
+            next_iteration %b8
+          }
+          %b8 = block {  # body
+            %111:u32 = load %level
+            %112:bool = gt %111, 0u
+            if %112 [t: %b10, f: %b11] {  # if_2
+              %b10 = block {  # true
+                exit_if  # if_2
+              }
+              %b11 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            %113:texture_2d<f32> = load %tint_symbol
+            %114:vec2<u32> = load %coord
+            %115:u32 = load %level
+            %probabilites:vec4<f32> = textureLoad %113, %114, %115
+            %117:f32 = call %rand
+            %value:vec4<f32> = construct %117
+            %119:vec3<f32> = swizzle %probabilites, xyz
+            %120:vec4<f32> = construct 0.0f, %119
+            %121:vec4<bool> = gte %value, %120
+            %122:vec4<bool> = lt %value, %probabilites
+            %mask:vec4<bool> = and %121, %122
+            %124:vec2<u32> = load %coord
+            %125:vec2<u32> = mul %124, 2u
+            store %coord, %125
+            %126:vec2<bool> = swizzle %mask, yw
+            %127:bool = any %126
+            %128:u32 = select 0u, 1u, %127
+            %129:u32 = load_vector_element %coord, 0u
+            %130:u32 = add %129, %128
+            store_vector_element %coord, 0u, %130
+            %131:vec2<bool> = swizzle %mask, zw
+            %132:bool = any %131
+            %133:u32 = select 0u, 1u, %132
+            %134:u32 = load_vector_element %coord, 1u
+            %135:u32 = add %134, %133
+            store_vector_element %coord, 1u, %135
+            continue %b9
+          }
+          %b9 = block {  # continuing
+            %136:u32 = load %level
+            %137:u32 = sub %136, 1u
+            store %level, %137
+            next_iteration %b8
+          }
+        }
+        %138:vec2<u32> = load %coord
+        %139:vec2<f32> = convert %138
+        %140:texture_2d<f32> = load %tint_symbol
+        %141:vec2<u32> = textureDimensions %140
+        %142:vec2<f32> = convert %141
+        %uv:vec2<f32> = div %139, %142
+        %144:ptr<function, vec3<f32>, read_write> = access %particle, 0u
+        %145:vec2<f32> = sub %uv, 0.5f
+        %146:vec2<f32> = mul %145, 3.0f
+        %147:vec2<f32> = mul %146, vec2<f32>(1.0f, -1.0f)
+        %148:vec3<f32> = construct %147, 0.0f
+        store %144, %148
+        %149:ptr<function, vec4<f32>, read_write> = access %particle, 2u
+        %150:texture_2d<f32> = load %tint_symbol
+        %151:vec2<u32> = load %coord
+        %152:vec4<f32> = textureLoad %150, %151, 0i
+        store %149, %152
+        %153:ptr<function, vec3<f32>, read_write> = access %particle, 3u
+        %154:f32 = call %rand
+        %155:f32 = sub %154, 0.5f
+        %156:f32 = mul %155, 0.10000000149011611938f
+        store_vector_element %153, 0u, %156
+        %157:ptr<function, vec3<f32>, read_write> = access %particle, 3u
+        %158:f32 = call %rand
+        %159:f32 = sub %158, 0.5f
+        %160:f32 = mul %159, 0.10000000149011611938f
+        store_vector_element %157, 1u, %160
+        %161:ptr<function, vec3<f32>, read_write> = access %particle, 3u
+        %162:f32 = call %rand
+        %163:f32 = mul %162, 0.30000001192092895508f
+        store_vector_element %161, 2u, %163
+        %164:ptr<function, f32, read_write> = access %particle, 1u
+        %165:f32 = call %rand
+        %166:f32 = mul %165, 2.0f
+        %167:f32 = add 0.5f, %166
+        store %164, %167
+        exit_if  # if_1
+      }
+    }
+    %168:ptr<storage, Particle, read_write> = access %data, 0u, %idx
+    %169:Particle = load %particle
+    store %168, %169
+    ret
+  }
+}
+%import_level = @compute @workgroup_size(64, 1, 1) func(%coord_1:vec3<u32> [@global_invocation_id]):void -> %b12 {  # %coord_1: 'coord'
+  %b12 = block {
+    %172:u32 = access %coord_1, 0u
+    %173:u32 = access %coord_1, 1u
+    %174:ptr<uniform, u32, read> = access %ubo, 0u
+    %175:u32 = load %174
+    %176:u32 = mul %173, %175
+    %offset:u32 = add %172, %176
+    %178:ptr<storage, f32, read_write> = access %buf_out, 0u, %offset
+    %179:texture_2d<f32> = load %tex_in
+    %180:vec2<u32> = swizzle %coord_1, xy
+    %181:vec2<i32> = convert %180
+    %182:vec4<f32> = textureLoad %179, %181, 0i
+    %183:f32 = access %182, 3u
+    store %178, %183
+    ret
+  }
+}
+%export_level = @compute @workgroup_size(64, 1, 1) func(%coord_2:vec3<u32> [@global_invocation_id]):void -> %b13 {  # %coord_2: 'coord'
+  %b13 = block {
+    %186:vec2<u32> = swizzle %coord_2, xy
+    %187:texture_storage_2d<rgba8unorm, write> = load %tex_out
+    %188:vec2<u32> = textureDimensions %187
+    %189:vec2<u32> = construct %188
+    %190:vec2<bool> = lt %186, %189
+    %191:bool = all %190
+    if %191 [t: %b14] {  # if_3
+      %b14 = block {  # true
+        %192:u32 = access %coord_2, 0u
+        %193:u32 = access %coord_2, 1u
+        %194:ptr<uniform, u32, read> = access %ubo, 0u
+        %195:u32 = load %194
+        %196:u32 = mul %193, %195
+        %dst_offset:u32 = add %192, %196
+        %198:u32 = access %coord_2, 0u
+        %199:u32 = mul %198, 2u
+        %200:u32 = access %coord_2, 1u
+        %201:u32 = mul %200, 2u
+        %202:ptr<uniform, u32, read> = access %ubo, 0u
+        %203:u32 = load %202
+        %204:u32 = mul %201, %203
+        %src_offset:u32 = add %199, %204
+        %206:u32 = add %src_offset, 0u
+        %207:ptr<storage, f32, read> = access %buf_in, 0u, %206
+        %a:f32 = load %207
+        %209:u32 = add %src_offset, 1u
+        %210:ptr<storage, f32, read> = access %buf_in, 0u, %209
+        %b:f32 = load %210
+        %212:u32 = add %src_offset, 0u
+        %213:ptr<uniform, u32, read> = access %ubo, 0u
+        %214:u32 = load %213
+        %215:u32 = add %212, %214
+        %216:ptr<storage, f32, read> = access %buf_in, 0u, %215
+        %c:f32 = load %216
+        %218:u32 = add %src_offset, 1u
+        %219:ptr<uniform, u32, read> = access %ubo, 0u
+        %220:u32 = load %219
+        %221:u32 = add %218, %220
+        %222:ptr<storage, f32, read> = access %buf_in, 0u, %221
+        %d:f32 = load %222
+        %224:vec4<f32> = construct %a, %b, %c, %d
+        %sum:f32 = dot %224, vec4<f32>(1.0f)
+        %226:ptr<storage, f32, read_write> = access %buf_out, 0u, %dst_offset
+        %227:f32 = div %sum, 4.0f
+        store %226, %227
+        %228:f32 = add %a, %b
+        %229:f32 = add %a, %b
+        %230:f32 = add %229, %c
+        %231:vec4<f32> = construct %a, %228, %230, %sum
+        %232:f32 = max %sum, 0.00009999999747378752f
+        %probabilities:vec4<f32> = div %231, %232
+        %234:texture_storage_2d<rgba8unorm, write> = load %tex_out
+        %235:vec2<u32> = swizzle %coord_2, xy
+        %236:vec2<i32> = convert %235
+        %237:void = textureStore %234, %236, %probabilities
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/benchmark/shadow-fragment.wgsl.expected.ir.msl b/test/tint/benchmark/shadow-fragment.wgsl.expected.ir.msl
new file mode 100644
index 0000000..afabeb9
--- /dev/null
+++ b/test/tint/benchmark/shadow-fragment.wgsl.expected.ir.msl
@@ -0,0 +1,120 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Scene = struct @align(16) {
+  lightViewProjMatrix:mat4x4<f32> @offset(0)
+  cameraViewProjMatrix:mat4x4<f32> @offset(64)
+  lightPos:vec3<f32> @offset(128)
+}
+
+FragmentInput = struct @align(16) {
+  shadowPos:vec3<f32> @offset(0), @location(0)
+  fragPos:vec3<f32> @offset(16), @location(1)
+  fragNorm:vec3<f32> @offset(32), @location(2)
+}
+
+%b1 = block {  # root
+  %scene:ptr<uniform, Scene, read> = var @binding_point(0, 0)
+  %shadowMap:ptr<handle, texture_depth_2d, read> = var @binding_point(0, 1)
+  %shadowSampler:ptr<handle, sampler_comparison, read> = var @binding_point(0, 2)
+}
+
+%tint_symbol = @fragment func(%input:FragmentInput):vec4<f32> [@location(0)] -> %b2 {
+  %b2 = block {
+    %visibility:ptr<function, f32, read_write> = var, 0.0f
+    %oneOverShadowDepthTextureSize:f32 = let 0.0009765625f
+    loop [i: %b3, b: %b4, c: %b5] {  # loop_1
+      %b3 = block {  # initializer
+        %y:ptr<function, i32, read_write> = var, -1i
+        next_iteration %b4
+      }
+      %b4 = block {  # body
+        %9:i32 = load %y
+        %10:bool = lte %9, 1i
+        if %10 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        loop [i: %b8, b: %b9, c: %b10] {  # loop_2
+          %b8 = block {  # initializer
+            %x:ptr<function, i32, read_write> = var, -1i
+            next_iteration %b9
+          }
+          %b9 = block {  # body
+            %12:i32 = load %x
+            %13:bool = lte %12, 1i
+            if %13 [t: %b11, f: %b12] {  # if_2
+              %b11 = block {  # true
+                exit_if  # if_2
+              }
+              %b12 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %14:i32 = load %x
+            %15:f32 = convert %14
+            %16:f32 = mul %15, %oneOverShadowDepthTextureSize
+            %17:i32 = load %y
+            %18:f32 = convert %17
+            %19:f32 = mul %18, %oneOverShadowDepthTextureSize
+            %offset:vec2<f32> = construct %16, %19
+            %21:f32 = load %visibility
+            %22:texture_depth_2d = load %shadowMap
+            %23:sampler_comparison = load %shadowSampler
+            %24:vec3<f32> = access %input, 0u
+            %25:vec2<f32> = swizzle %24, xy
+            %26:vec2<f32> = add %25, %offset
+            %27:f32 = access %input, 0u, 2u
+            %28:f32 = sub %27, 0.00700000021606683731f
+            %29:f32 = textureSampleCompare %22, %23, %26, %28
+            %30:f32 = add %21, %29
+            store %visibility, %30
+            continue %b10
+          }
+          %b10 = block {  # continuing
+            %31:i32 = load %x
+            %32:i32 = add %31, 1i
+            store %x, %32
+            next_iteration %b9
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %33:i32 = load %y
+        %34:i32 = add %33, 1i
+        store %y, %34
+        next_iteration %b4
+      }
+    }
+    %35:f32 = load %visibility
+    %36:f32 = div %35, 9.0f
+    store %visibility, %36
+    %37:ptr<uniform, vec3<f32>, read> = access %scene, 2u
+    %38:vec3<f32> = load %37
+    %39:vec3<f32> = access %input, 1u
+    %40:vec3<f32> = sub %38, %39
+    %41:vec3<f32> = normalize %40
+    %42:vec3<f32> = access %input, 2u
+    %43:f32 = dot %41, %42
+    %lambertFactor:f32 = max %43, 0.0f
+    %45:f32 = load %visibility
+    %46:f32 = mul %45, %lambertFactor
+    %47:f32 = add 0.20000000298023223877f, %46
+    %lightingFactor:f32 = min %47, 1.0f
+    %49:vec3<f32> = mul %lightingFactor, vec3<f32>(0.89999997615814208984f)
+    %50:vec4<f32> = construct %49, 1.0f
+    ret %50
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/benchmark/skinned-shadowed-pbr-fragment.wgsl.expected.ir.msl b/test/tint/benchmark/skinned-shadowed-pbr-fragment.wgsl.expected.ir.msl
new file mode 100644
index 0000000..804ef8d
--- /dev/null
+++ b/test/tint/benchmark/skinned-shadowed-pbr-fragment.wgsl.expected.ir.msl
@@ -0,0 +1,855 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Camera = struct @align(16) {
+  projection:mat4x4<f32> @offset(0)
+  inverseProjection:mat4x4<f32> @offset(64)
+  view:mat4x4<f32> @offset(128)
+  position:vec3<f32> @offset(192)
+  time:f32 @offset(204)
+  outputSize:vec2<f32> @offset(208)
+  zNear:f32 @offset(216)
+  zFar:f32 @offset(220)
+}
+
+ClusterLights = struct @align(4) {
+  offset:u32 @offset(0)
+  count:u32 @offset(4)
+}
+
+ClusterLightGroup = struct @align(4) {
+  offset:u32 @offset(0)
+  lights:array<ClusterLights, 27648> @offset(4)
+  indices:array<u32, 1769472> @offset(221188)
+}
+
+Light = struct @align(16) {
+  position:vec3<f32> @offset(0)
+  range:f32 @offset(12)
+  color:vec3<f32> @offset(16)
+  intensity:f32 @offset(28)
+}
+
+GlobalLights = struct @align(16) {
+  ambient:vec3<f32> @offset(0)
+  dirColor:vec3<f32> @offset(16)
+  dirIntensity:f32 @offset(28)
+  dirDirection:vec3<f32> @offset(32)
+  lightCount:u32 @offset(44)
+  lights:array<Light> @offset(48)
+}
+
+LightShadowTable = struct @align(4) {
+  light:array<i32> @offset(0)
+}
+
+ShadowProperties = struct @align(16) {
+  viewport:vec4<f32> @offset(0)
+  viewProj:mat4x4<f32> @offset(16)
+}
+
+LightShadows = struct @align(16) {
+  properties:array<ShadowProperties> @offset(0)
+}
+
+Material = struct @align(16) {
+  baseColorFactor:vec4<f32> @offset(0)
+  emissiveFactor:vec3<f32> @offset(16)
+  occlusionStrength:f32 @offset(28)
+  metallicRoughnessFactor:vec2<f32> @offset(32)
+  alphaCutoff:f32 @offset(40)
+}
+
+SurfaceInfo = struct @align(16) {
+  baseColor:vec4<f32> @offset(0)
+  albedo:vec3<f32> @offset(16)
+  metallic:f32 @offset(28)
+  roughness:f32 @offset(32)
+  normal:vec3<f32> @offset(48)
+  f0:vec3<f32> @offset(64)
+  ao:f32 @offset(76)
+  emissive:vec3<f32> @offset(80)
+  v:vec3<f32> @offset(96)
+}
+
+VertexOutput = struct @align(16) {
+  position:vec4<f32> @offset(0), @builtin(position)
+  worldPos:vec3<f32> @offset(16), @location(0)
+  view:vec3<f32> @offset(32), @location(1)
+  texcoord:vec2<f32> @offset(48), @location(2)
+  texcoord2:vec2<f32> @offset(56), @location(3)
+  color:vec4<f32> @offset(64), @location(4)
+  instanceColor:vec4<f32> @offset(80), @location(5)
+  normal:vec3<f32> @offset(96), @location(6)
+  tangent:vec3<f32> @offset(112), @location(7)
+  bitangent:vec3<f32> @offset(128), @location(8)
+}
+
+PuctualLight = struct @align(16) {
+  lightType:u32 @offset(0)
+  pointToLight:vec3<f32> @offset(16)
+  range:f32 @offset(28)
+  color:vec3<f32> @offset(32)
+  intensity:f32 @offset(44)
+}
+
+FragmentOutput = struct @align(16) {
+  color:vec4<f32> @offset(0), @location(0)
+  emissive:vec4<f32> @offset(16), @location(1)
+}
+
+%b1 = block {  # root
+  %camera:ptr<uniform, Camera, read> = var @binding_point(0, 0)
+  %clusterLights:ptr<storage, ClusterLightGroup, read> = var @binding_point(0, 1)
+  %globalLights:ptr<storage, GlobalLights, read> = var @binding_point(0, 2)
+  %defaultSampler:ptr<handle, sampler, read> = var @binding_point(0, 3)
+  %shadowTexture:ptr<handle, texture_depth_2d, read> = var @binding_point(0, 4)
+  %shadowSampler:ptr<handle, sampler_comparison, read> = var @binding_point(0, 5)
+  %lightShadowTable:ptr<storage, LightShadowTable, read> = var @binding_point(0, 6)
+  %shadowSampleOffsets:ptr<private, array<vec2<f32>, 16>, read_write> = var, array<vec2<f32>, 16>(vec2<f32>(-1.5f), vec2<f32>(-1.5f, -0.5f), vec2<f32>(-1.5f, 0.5f), vec2<f32>(-1.5f, 1.5f), vec2<f32>(-0.5f, -1.5f), vec2<f32>(-0.5f), vec2<f32>(-0.5f, 0.5f), vec2<f32>(-0.5f, 1.5f), vec2<f32>(0.5f, -1.5f), vec2<f32>(0.5f, -0.5f), vec2<f32>(0.5f), vec2<f32>(0.5f, 1.5f), vec2<f32>(1.5f, -1.5f), vec2<f32>(1.5f, -0.5f), vec2<f32>(1.5f, 0.5f), vec2<f32>(1.5f))
+  %shadow:ptr<storage, LightShadows, read> = var @binding_point(0, 7)
+  %material:ptr<uniform, Material, read> = var @binding_point(0, 8)
+  %baseColorTexture:ptr<handle, texture_2d<f32>, read> = var @binding_point(0, 9)
+  %baseColorSampler:ptr<handle, sampler, read> = var @binding_point(0, 10)
+  %normalTexture:ptr<handle, texture_2d<f32>, read> = var @binding_point(0, 11)
+  %normalSampler:ptr<handle, sampler, read> = var @binding_point(0, 12)
+  %metallicRoughnessTexture:ptr<handle, texture_2d<f32>, read> = var @binding_point(0, 13)
+  %metallicRoughnessSampler:ptr<handle, sampler, read> = var @binding_point(0, 14)
+  %occlusionTexture:ptr<handle, texture_2d<f32>, read> = var @binding_point(0, 15)
+  %occlusionSampler:ptr<handle, sampler, read> = var @binding_point(0, 16)
+  %emissiveTexture:ptr<handle, texture_2d<f32>, read> = var @binding_point(0, 17)
+  %emissiveSampler:ptr<handle, sampler, read> = var @binding_point(0, 18)
+  %ssaoTexture:ptr<handle, texture_2d<f32>, read> = var @binding_point(0, 19)
+}
+
+%linearTosRGB = func(%linear:vec3<f32>):vec3<f32> -> %b2 {
+  %b2 = block {
+    %INV_GAMMA:f32 = let 0.45454543828964233398f
+    %25:vec3<f32> = construct %INV_GAMMA
+    %26:vec3<f32> = pow %linear, %25
+    ret %26
+  }
+}
+%sRGBToLinear = func(%srgb:vec3<f32>):vec3<f32> -> %b3 {
+  %b3 = block {
+    %29:vec3<f32> = pow %srgb, vec3<f32>(2.20000004768371582031f)
+    ret %29
+  }
+}
+%linearDepth = func(%depthSample:f32):f32 -> %b4 {
+  %b4 = block {
+    %32:ptr<uniform, f32, read> = access %camera, 7u
+    %33:f32 = load %32
+    %34:ptr<uniform, f32, read> = access %camera, 6u
+    %35:f32 = load %34
+    %36:f32 = mul %33, %35
+    %37:ptr<uniform, f32, read> = access %camera, 6u
+    %38:f32 = load %37
+    %39:ptr<uniform, f32, read> = access %camera, 7u
+    %40:f32 = load %39
+    %41:f32 = sub %38, %40
+    %42:ptr<uniform, f32, read> = access %camera, 7u
+    %43:f32 = load %42
+    %44:f32 = fma %depthSample, %41, %43
+    %45:f32 = div %36, %44
+    ret %45
+  }
+}
+%getTile = func(%fragCoord:vec4<f32>):vec3<u32> -> %b5 {
+  %b5 = block {
+    %48:ptr<uniform, f32, read> = access %camera, 7u
+    %49:f32 = load %48
+    %50:ptr<uniform, f32, read> = access %camera, 6u
+    %51:f32 = load %50
+    %52:f32 = div %49, %51
+    %53:f32 = log2 %52
+    %sliceScale:f32 = div 48.0f, %53
+    %55:ptr<uniform, f32, read> = access %camera, 6u
+    %56:f32 = load %55
+    %57:f32 = log2 %56
+    %58:f32 = mul 48.0f, %57
+    %59:ptr<uniform, f32, read> = access %camera, 7u
+    %60:f32 = load %59
+    %61:ptr<uniform, f32, read> = access %camera, 6u
+    %62:f32 = load %61
+    %63:f32 = div %60, %62
+    %64:f32 = log2 %63
+    %65:f32 = div %58, %64
+    %sliceBias:f32 = negation %65
+    %67:f32 = access %fragCoord, 2u
+    %68:f32 = call %linearDepth, %67
+    %69:f32 = log2 %68
+    %70:f32 = mul %69, %sliceScale
+    %71:f32 = add %70, %sliceBias
+    %72:f32 = max %71, 0.0f
+    %zTile:u32 = convert %72
+    %74:f32 = access %fragCoord, 0u
+    %75:ptr<uniform, vec2<f32>, read> = access %camera, 5u
+    %76:f32 = load_vector_element %75, 0u
+    %77:f32 = div %76, 32.0f
+    %78:f32 = div %74, %77
+    %79:u32 = convert %78
+    %80:f32 = access %fragCoord, 1u
+    %81:ptr<uniform, vec2<f32>, read> = access %camera, 5u
+    %82:f32 = load_vector_element %81, 1u
+    %83:f32 = div %82, 18.0f
+    %84:f32 = div %80, %83
+    %85:u32 = convert %84
+    %86:vec3<u32> = construct %79, %85, %zTile
+    ret %86
+  }
+}
+%getClusterIndex = func(%fragCoord_1:vec4<f32>):u32 -> %b6 {  # %fragCoord_1: 'fragCoord'
+  %b6 = block {
+    %tile:vec3<u32> = call %getTile, %fragCoord_1
+    %90:u32 = access %tile, 0u
+    %91:u32 = access %tile, 1u
+    %92:u32 = mul %91, 32u
+    %93:u32 = add %90, %92
+    %94:u32 = access %tile, 2u
+    %95:u32 = mul %94, 32u
+    %96:u32 = mul %95, 18u
+    %97:u32 = add %93, %96
+    ret %97
+  }
+}
+%dirLightVisibility = func(%worldPos:vec3<f32>):f32 -> %b7 {
+  %b7 = block {
+    %100:ptr<storage, i32, read> = access %lightShadowTable, 0u, 0u
+    %shadowIndex:i32 = load %100
+    %102:bool = eq %shadowIndex, -1i
+    if %102 [t: %b8] {  # if_1
+      %b8 = block {  # true
+        ret 1.0f
+      }
+    }
+    %103:ptr<storage, vec4<f32>, read> = access %shadow, 0u, %shadowIndex, 0u
+    %viewport:vec4<f32> = load %103
+    %105:ptr<storage, mat4x4<f32>, read> = access %shadow, 0u, %shadowIndex, 1u
+    %106:mat4x4<f32> = load %105
+    %107:vec4<f32> = construct %worldPos, 1.0f
+    %lightPos:vec4<f32> = mul %106, %107
+    %109:vec2<f32> = swizzle %lightPos, xy
+    %110:f32 = access %lightPos, 3u
+    %111:vec2<f32> = div %109, %110
+    %112:vec2<f32> = mul %111, vec2<f32>(0.5f, -0.5f)
+    %113:vec2<f32> = add %112, vec2<f32>(0.5f)
+    %114:f32 = access %lightPos, 2u
+    %115:f32 = access %lightPos, 3u
+    %116:f32 = div %114, %115
+    %shadowPos:vec3<f32> = construct %113, %116
+    %118:vec2<f32> = swizzle %viewport, xy
+    %119:vec2<f32> = swizzle %shadowPos, xy
+    %120:vec2<f32> = swizzle %viewport, zw
+    %121:vec2<f32> = mul %119, %120
+    %122:vec2<f32> = add %118, %121
+    %viewportPos:vec2<f32> = construct %122
+    %124:texture_depth_2d = load %shadowTexture
+    %125:vec2<u32> = textureDimensions %124, 0i
+    %126:vec2<f32> = convert %125
+    %texelSize:vec2<f32> = div 1.0f, %126
+    %128:vec2<f32> = swizzle %viewport, xy
+    %129:vec2<f32> = sub %128, %texelSize
+    %130:vec2<f32> = swizzle %viewport, xy
+    %131:vec2<f32> = swizzle %viewport, zw
+    %132:vec2<f32> = add %130, %131
+    %133:vec2<f32> = add %132, %texelSize
+    %clampRect:vec4<f32> = construct %129, %133
+    %visibility:ptr<function, f32, read_write> = var, 0.0f
+    loop [i: %b9, b: %b10, c: %b11] {  # loop_1
+      %b9 = block {  # initializer
+        %i:ptr<function, u32, read_write> = var, 0u
+        next_iteration %b10
+      }
+      %b10 = block {  # body
+        %137:u32 = load %i
+        %138:bool = lt %137, 16u
+        if %138 [t: %b12, f: %b13] {  # if_2
+          %b12 = block {  # true
+            exit_if  # if_2
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %139:f32 = load %visibility
+        %140:texture_depth_2d = load %shadowTexture
+        %141:sampler_comparison = load %shadowSampler
+        %142:u32 = load %i
+        %143:ptr<private, vec2<f32>, read_write> = access %shadowSampleOffsets, %142
+        %144:vec2<f32> = load %143
+        %145:vec2<f32> = mul %144, %texelSize
+        %146:vec2<f32> = add %viewportPos, %145
+        %147:vec2<f32> = swizzle %clampRect, xy
+        %148:vec2<f32> = swizzle %clampRect, zw
+        %149:vec2<f32> = clamp %146, %147, %148
+        %150:f32 = access %shadowPos, 2u
+        %151:f32 = sub %150, 0.00300000002607703209f
+        %152:f32 = textureSampleCompareLevel %140, %141, %149, %151
+        %153:f32 = add %139, %152
+        store %visibility, %153
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        %154:u32 = load %i
+        %155:u32 = add %154, 1u
+        store %i, %155
+        next_iteration %b10
+      }
+    }
+    %156:f32 = load %visibility
+    %157:f32 = div %156, 16.0f
+    ret %157
+  }
+}
+%getCubeFace = func(%v:vec3<f32>):i32 -> %b14 {
+  %b14 = block {
+    %vAbs:vec3<f32> = abs %v
+    %161:f32 = access %vAbs, 2u
+    %162:f32 = access %vAbs, 0u
+    %163:bool = gte %161, %162
+    %164:bool = if %163 [t: %b15, f: %b16] {  # if_3
+      %b15 = block {  # true
+        %165:f32 = access %vAbs, 2u
+        %166:f32 = access %vAbs, 1u
+        %167:bool = gte %165, %166
+        exit_if %167  # if_3
+      }
+      %b16 = block {  # false
+        exit_if false  # if_3
+      }
+    }
+    if %164 [t: %b17] {  # if_4
+      %b17 = block {  # true
+        %168:f32 = access %v, 2u
+        %169:bool = lt %168, 0.0f
+        if %169 [t: %b18] {  # if_5
+          %b18 = block {  # true
+            ret 5i
+          }
+        }
+        ret 4i
+      }
+    }
+    %170:f32 = access %vAbs, 1u
+    %171:f32 = access %vAbs, 0u
+    %172:bool = gte %170, %171
+    if %172 [t: %b19] {  # if_6
+      %b19 = block {  # true
+        %173:f32 = access %v, 1u
+        %174:bool = lt %173, 0.0f
+        if %174 [t: %b20] {  # if_7
+          %b20 = block {  # true
+            ret 3i
+          }
+        }
+        ret 2i
+      }
+    }
+    %175:f32 = access %v, 0u
+    %176:bool = lt %175, 0.0f
+    if %176 [t: %b21] {  # if_8
+      %b21 = block {  # true
+        ret 1i
+      }
+    }
+    ret 0i
+  }
+}
+%pointLightVisibility = func(%lightIndex:u32, %worldPos_1:vec3<f32>, %pointToLight:vec3<f32>):f32 -> %b22 {  # %worldPos_1: 'worldPos'
+  %b22 = block {
+    %181:u32 = add %lightIndex, 1u
+    %182:ptr<storage, i32, read> = access %lightShadowTable, 0u, %181
+    %183:i32 = load %182
+    %shadowIndex_1:ptr<function, i32, read_write> = var, %183  # %shadowIndex_1: 'shadowIndex'
+    %185:i32 = load %shadowIndex_1
+    %186:bool = eq %185, -1i
+    if %186 [t: %b23] {  # if_9
+      %b23 = block {  # true
+        ret 1.0f
+      }
+    }
+    %187:i32 = load %shadowIndex_1
+    %188:vec3<f32> = mul %pointToLight, -1.0f
+    %189:i32 = call %getCubeFace, %188
+    %190:i32 = add %187, %189
+    store %shadowIndex_1, %190
+    %191:i32 = load %shadowIndex_1
+    %192:ptr<storage, vec4<f32>, read> = access %shadow, 0u, %191, 0u
+    %viewport_1:vec4<f32> = load %192  # %viewport_1: 'viewport'
+    %194:i32 = load %shadowIndex_1
+    %195:ptr<storage, mat4x4<f32>, read> = access %shadow, 0u, %194, 1u
+    %196:mat4x4<f32> = load %195
+    %197:vec4<f32> = construct %worldPos_1, 1.0f
+    %lightPos_1:vec4<f32> = mul %196, %197  # %lightPos_1: 'lightPos'
+    %199:vec2<f32> = swizzle %lightPos_1, xy
+    %200:f32 = access %lightPos_1, 3u
+    %201:vec2<f32> = div %199, %200
+    %202:vec2<f32> = mul %201, vec2<f32>(0.5f, -0.5f)
+    %203:vec2<f32> = add %202, vec2<f32>(0.5f)
+    %204:f32 = access %lightPos_1, 2u
+    %205:f32 = access %lightPos_1, 3u
+    %206:f32 = div %204, %205
+    %shadowPos_1:vec3<f32> = construct %203, %206  # %shadowPos_1: 'shadowPos'
+    %208:vec2<f32> = swizzle %viewport_1, xy
+    %209:vec2<f32> = swizzle %shadowPos_1, xy
+    %210:vec2<f32> = swizzle %viewport_1, zw
+    %211:vec2<f32> = mul %209, %210
+    %212:vec2<f32> = add %208, %211
+    %viewportPos_1:vec2<f32> = construct %212  # %viewportPos_1: 'viewportPos'
+    %214:texture_depth_2d = load %shadowTexture
+    %215:vec2<u32> = textureDimensions %214, 0i
+    %216:vec2<f32> = convert %215
+    %texelSize_1:vec2<f32> = div 1.0f, %216  # %texelSize_1: 'texelSize'
+    %218:vec2<f32> = swizzle %viewport_1, xy
+    %219:vec2<f32> = swizzle %viewport_1, xy
+    %220:vec2<f32> = swizzle %viewport_1, zw
+    %221:vec2<f32> = add %219, %220
+    %clampRect_1:vec4<f32> = construct %218, %221  # %clampRect_1: 'clampRect'
+    %visibility_1:ptr<function, f32, read_write> = var, 0.0f  # %visibility_1: 'visibility'
+    loop [i: %b24, b: %b25, c: %b26] {  # loop_2
+      %b24 = block {  # initializer
+        %i_1:ptr<function, u32, read_write> = var, 0u  # %i_1: 'i'
+        next_iteration %b25
+      }
+      %b25 = block {  # body
+        %225:u32 = load %i_1
+        %226:bool = lt %225, 16u
+        if %226 [t: %b27, f: %b28] {  # if_10
+          %b27 = block {  # true
+            exit_if  # if_10
+          }
+          %b28 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %227:f32 = load %visibility_1
+        %228:texture_depth_2d = load %shadowTexture
+        %229:sampler_comparison = load %shadowSampler
+        %230:u32 = load %i_1
+        %231:ptr<private, vec2<f32>, read_write> = access %shadowSampleOffsets, %230
+        %232:vec2<f32> = load %231
+        %233:vec2<f32> = mul %232, %texelSize_1
+        %234:vec2<f32> = add %viewportPos_1, %233
+        %235:vec2<f32> = swizzle %clampRect_1, xy
+        %236:vec2<f32> = swizzle %clampRect_1, zw
+        %237:vec2<f32> = clamp %234, %235, %236
+        %238:f32 = access %shadowPos_1, 2u
+        %239:f32 = sub %238, 0.00999999977648258209f
+        %240:f32 = textureSampleCompareLevel %228, %229, %237, %239
+        %241:f32 = add %227, %240
+        store %visibility_1, %241
+        continue %b26
+      }
+      %b26 = block {  # continuing
+        %242:u32 = load %i_1
+        %243:u32 = add %242, 1u
+        store %i_1, %243
+        next_iteration %b25
+      }
+    }
+    %244:f32 = load %visibility_1
+    %245:f32 = div %244, 16.0f
+    ret %245
+  }
+}
+%GetSurfaceInfo = func(%input:VertexOutput):SurfaceInfo -> %b29 {
+  %b29 = block {
+    %surface:ptr<function, SurfaceInfo, read_write> = var
+    %249:ptr<function, vec3<f32>, read_write> = access %surface, 8u
+    %250:vec3<f32> = access %input, 2u
+    %251:vec3<f32> = normalize %250
+    store %249, %251
+    %252:vec3<f32> = access %input, 8u
+    %253:vec3<f32> = access %input, 9u
+    %254:vec3<f32> = access %input, 7u
+    %tbn:mat3x3<f32> = construct %252, %253, %254
+    %256:texture_2d<f32> = load %normalTexture
+    %257:sampler = load %normalSampler
+    %258:vec2<f32> = access %input, 3u
+    %259:vec4<f32> = textureSample %256, %257, %258
+    %normalMap:vec3<f32> = swizzle %259, xyz
+    %261:ptr<function, vec3<f32>, read_write> = access %surface, 4u
+    %262:vec3<f32> = mul 2.0f, %normalMap
+    %263:vec3<f32> = sub %262, vec3<f32>(1.0f)
+    %264:vec3<f32> = mul %tbn, %263
+    %265:vec3<f32> = normalize %264
+    store %261, %265
+    %266:texture_2d<f32> = load %baseColorTexture
+    %267:sampler = load %baseColorSampler
+    %268:vec2<f32> = access %input, 3u
+    %baseColorMap:vec4<f32> = textureSample %266, %267, %268
+    %270:ptr<function, vec4<f32>, read_write> = access %surface, 0u
+    %271:vec4<f32> = access %input, 5u
+    %272:ptr<uniform, vec4<f32>, read> = access %material, 0u
+    %273:vec4<f32> = load %272
+    %274:vec4<f32> = mul %271, %273
+    %275:vec4<f32> = mul %274, %baseColorMap
+    store %270, %275
+    %276:ptr<function, vec4<f32>, read_write> = access %surface, 0u
+    %277:f32 = load_vector_element %276, 3u
+    %278:ptr<uniform, f32, read> = access %material, 4u
+    %279:f32 = load %278
+    %280:bool = lt %277, %279
+    if %280 [t: %b30] {  # if_11
+      %b30 = block {  # true
+        exit_if  # if_11
+      }
+    }
+    %281:ptr<function, vec3<f32>, read_write> = access %surface, 1u
+    %282:ptr<function, vec4<f32>, read_write> = access %surface, 0u
+    %283:vec4<f32> = load %282
+    %284:vec3<f32> = swizzle %283, xyz
+    store %281, %284
+    %285:texture_2d<f32> = load %metallicRoughnessTexture
+    %286:sampler = load %metallicRoughnessSampler
+    %287:vec2<f32> = access %input, 3u
+    %metallicRoughnessMap:vec4<f32> = textureSample %285, %286, %287
+    %289:ptr<function, f32, read_write> = access %surface, 2u
+    %290:ptr<uniform, vec2<f32>, read> = access %material, 3u
+    %291:f32 = load_vector_element %290, 0u
+    %292:f32 = access %metallicRoughnessMap, 2u
+    %293:f32 = mul %291, %292
+    store %289, %293
+    %294:ptr<function, f32, read_write> = access %surface, 3u
+    %295:ptr<uniform, vec2<f32>, read> = access %material, 3u
+    %296:f32 = load_vector_element %295, 1u
+    %297:f32 = access %metallicRoughnessMap, 1u
+    %298:f32 = mul %296, %297
+    store %294, %298
+    %dielectricSpec:vec3<f32> = let vec3<f32>(0.03999999910593032837f)
+    %300:ptr<function, vec3<f32>, read_write> = access %surface, 5u
+    %301:ptr<function, vec3<f32>, read_write> = access %surface, 1u
+    %302:vec3<f32> = load %301
+    %303:ptr<function, f32, read_write> = access %surface, 2u
+    %304:f32 = load %303
+    %305:vec3<f32> = construct %304
+    %306:vec3<f32> = mix %dielectricSpec, %302, %305
+    store %300, %306
+    %307:texture_2d<f32> = load %occlusionTexture
+    %308:sampler = load %occlusionSampler
+    %309:vec2<f32> = access %input, 3u
+    %occlusionMap:vec4<f32> = textureSample %307, %308, %309
+    %311:ptr<function, f32, read_write> = access %surface, 6u
+    %312:ptr<uniform, f32, read> = access %material, 2u
+    %313:f32 = load %312
+    %314:f32 = access %occlusionMap, 0u
+    %315:f32 = mul %313, %314
+    store %311, %315
+    %316:texture_2d<f32> = load %emissiveTexture
+    %317:sampler = load %emissiveSampler
+    %318:vec2<f32> = access %input, 3u
+    %emissiveMap:vec4<f32> = textureSample %316, %317, %318
+    %320:ptr<function, vec3<f32>, read_write> = access %surface, 7u
+    %321:ptr<uniform, vec3<f32>, read> = access %material, 1u
+    %322:vec3<f32> = load %321
+    %323:vec3<f32> = swizzle %emissiveMap, xyz
+    %324:vec3<f32> = mul %322, %323
+    store %320, %324
+    %325:f32 = access %input, 6u, 3u
+    %326:bool = eq %325, 0.0f
+    if %326 [t: %b31, f: %b32] {  # if_12
+      %b31 = block {  # true
+        %327:ptr<function, vec3<f32>, read_write> = access %surface, 1u
+        %328:ptr<function, vec3<f32>, read_write> = access %surface, 1u
+        %329:vec3<f32> = load %328
+        %330:vec4<f32> = access %input, 6u
+        %331:vec3<f32> = swizzle %330, xyz
+        %332:vec3<f32> = add %329, %331
+        store %327, %332
+        exit_if  # if_12
+      }
+      %b32 = block {  # false
+        %333:ptr<function, vec3<f32>, read_write> = access %surface, 1u
+        %334:ptr<function, vec3<f32>, read_write> = access %surface, 1u
+        %335:vec3<f32> = load %334
+        %336:vec4<f32> = access %input, 6u
+        %337:vec3<f32> = swizzle %336, xyz
+        %338:vec3<f32> = mul %335, %337
+        store %333, %338
+        exit_if  # if_12
+      }
+    }
+    %339:SurfaceInfo = load %surface
+    ret %339
+  }
+}
+%FresnelSchlick = func(%cosTheta:f32, %F0:vec3<f32>):vec3<f32> -> %b33 {
+  %b33 = block {
+    %343:vec3<f32> = sub vec3<f32>(1.0f), %F0
+    %344:f32 = sub 1.0f, %cosTheta
+    %345:f32 = pow %344, 5.0f
+    %346:vec3<f32> = mul %343, %345
+    %347:vec3<f32> = add %F0, %346
+    ret %347
+  }
+}
+%DistributionGGX = func(%N:vec3<f32>, %H:vec3<f32>, %roughness:f32):f32 -> %b34 {
+  %b34 = block {
+    %a:f32 = mul %roughness, %roughness
+    %a2:f32 = mul %a, %a
+    %354:f32 = dot %N, %H
+    %NdotH:f32 = max %354, 0.0f
+    %NdotH2:f32 = mul %NdotH, %NdotH
+    %num:f32 = let %a2
+    %358:f32 = sub %a2, 1.0f
+    %359:f32 = mul %NdotH2, %358
+    %denom:f32 = add %359, 1.0f
+    %361:f32 = mul 3.14159274101257324219f, %denom
+    %362:f32 = mul %361, %denom
+    %363:f32 = div %num, %362
+    ret %363
+  }
+}
+%GeometrySchlickGGX = func(%NdotV:f32, %roughness_1:f32):f32 -> %b35 {  # %roughness_1: 'roughness'
+  %b35 = block {
+    %r:f32 = add %roughness_1, 1.0f
+    %368:f32 = mul %r, %r
+    %k:f32 = div %368, 8.0f
+    %num_1:f32 = let %NdotV  # %num_1: 'num'
+    %371:f32 = sub 1.0f, %k
+    %372:f32 = mul %NdotV, %371
+    %denom_1:f32 = add %372, %k  # %denom_1: 'denom'
+    %374:f32 = div %num_1, %denom_1
+    ret %374
+  }
+}
+%GeometrySmith = func(%N_1:vec3<f32>, %V:vec3<f32>, %L:vec3<f32>, %roughness_2:f32):f32 -> %b36 {  # %N_1: 'N', %roughness_2: 'roughness'
+  %b36 = block {
+    %380:f32 = dot %N_1, %V
+    %NdotV_1:f32 = max %380, 0.0f  # %NdotV_1: 'NdotV'
+    %382:f32 = dot %N_1, %L
+    %NdotL:f32 = max %382, 0.0f
+    %ggx2:f32 = call %GeometrySchlickGGX, %NdotV_1, %roughness_2
+    %ggx1:f32 = call %GeometrySchlickGGX, %NdotL, %roughness_2
+    %386:f32 = mul %ggx1, %ggx2
+    ret %386
+  }
+}
+%lightAttenuation = func(%light:PuctualLight):f32 -> %b37 {
+  %b37 = block {
+    %389:u32 = access %light, 0u
+    %390:bool = eq %389, 2u
+    if %390 [t: %b38] {  # if_13
+      %b38 = block {  # true
+        ret 1.0f
+      }
+    }
+    %391:vec3<f32> = access %light, 1u
+    %distance:f32 = length %391
+    %393:f32 = access %light, 2u
+    %394:bool = lte %393, 0.0f
+    if %394 [t: %b39] {  # if_14
+      %b39 = block {  # true
+        %395:f32 = pow %distance, 2.0f
+        %396:f32 = div 1.0f, %395
+        ret %396
+      }
+    }
+    %397:f32 = access %light, 2u
+    %398:f32 = div %distance, %397
+    %399:f32 = pow %398, 4.0f
+    %400:f32 = sub 1.0f, %399
+    %401:f32 = clamp %400, 0.0f, 1.0f
+    %402:f32 = pow %distance, 2.0f
+    %403:f32 = div %401, %402
+    ret %403
+  }
+}
+%lightRadiance = func(%light_1:PuctualLight, %surface_1:SurfaceInfo):vec3<f32> -> %b40 {  # %light_1: 'light', %surface_1: 'surface'
+  %b40 = block {
+    %407:vec3<f32> = access %light_1, 1u
+    %L_1:vec3<f32> = normalize %407  # %L_1: 'L'
+    %409:vec3<f32> = access %surface_1, 8u
+    %410:vec3<f32> = add %409, %L_1
+    %H_1:vec3<f32> = normalize %410  # %H_1: 'H'
+    %412:vec3<f32> = access %surface_1, 4u
+    %413:f32 = access %surface_1, 3u
+    %NDF:f32 = call %DistributionGGX, %412, %H_1, %413
+    %415:vec3<f32> = access %surface_1, 4u
+    %416:vec3<f32> = access %surface_1, 8u
+    %417:f32 = access %surface_1, 3u
+    %G:f32 = call %GeometrySmith, %415, %416, %L_1, %417
+    %419:vec3<f32> = access %surface_1, 8u
+    %420:f32 = dot %H_1, %419
+    %421:f32 = max %420, 0.0f
+    %422:vec3<f32> = access %surface_1, 5u
+    %F:vec3<f32> = call %FresnelSchlick, %421, %422
+    %424:vec3<f32> = sub vec3<f32>(1.0f), %F
+    %425:f32 = access %surface_1, 2u
+    %426:f32 = sub 1.0f, %425
+    %kD:vec3<f32> = mul %424, %426
+    %428:vec3<f32> = access %surface_1, 4u
+    %429:f32 = dot %428, %L_1
+    %NdotL_1:f32 = max %429, 0.0f  # %NdotL_1: 'NdotL'
+    %431:f32 = mul %NDF, %G
+    %numerator:vec3<f32> = mul %431, %F
+    %433:vec3<f32> = access %surface_1, 4u
+    %434:vec3<f32> = access %surface_1, 8u
+    %435:f32 = dot %433, %434
+    %436:f32 = max %435, 0.0f
+    %437:f32 = mul 4.0f, %436
+    %438:f32 = mul %437, %NdotL_1
+    %denominator:f32 = max %438, 0.00100000004749745131f
+    %440:vec3<f32> = construct %denominator
+    %specular:vec3<f32> = div %numerator, %440
+    %442:vec3<f32> = access %light_1, 3u
+    %443:f32 = access %light_1, 4u
+    %444:vec3<f32> = mul %442, %443
+    %445:f32 = call %lightAttenuation, %light_1
+    %radiance:vec3<f32> = mul %444, %445
+    %447:vec3<f32> = access %surface_1, 1u
+    %448:vec3<f32> = mul %kD, %447
+    %449:vec3<f32> = div %448, vec3<f32>(3.14159274101257324219f)
+    %450:vec3<f32> = add %449, %specular
+    %451:vec3<f32> = mul %450, %radiance
+    %452:vec3<f32> = mul %451, %NdotL_1
+    ret %452
+  }
+}
+%fragmentMain = @fragment func(%input_1:VertexOutput):FragmentOutput -> %b41 {  # %input_1: 'input'
+  %b41 = block {
+    %surface_2:SurfaceInfo = call %GetSurfaceInfo, %input_1  # %surface_2: 'surface'
+    %Lo:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.0f)
+    %457:ptr<storage, f32, read> = access %globalLights, 2u
+    %458:f32 = load %457
+    %459:bool = gt %458, 0.0f
+    if %459 [t: %b42] {  # if_15
+      %b42 = block {  # true
+        %light_2:ptr<function, PuctualLight, read_write> = var  # %light_2: 'light'
+        %461:ptr<function, u32, read_write> = access %light_2, 0u
+        store %461, 2u
+        %462:ptr<function, vec3<f32>, read_write> = access %light_2, 1u
+        %463:ptr<storage, vec3<f32>, read> = access %globalLights, 3u
+        %464:vec3<f32> = load %463
+        store %462, %464
+        %465:ptr<function, vec3<f32>, read_write> = access %light_2, 3u
+        %466:ptr<storage, vec3<f32>, read> = access %globalLights, 1u
+        %467:vec3<f32> = load %466
+        store %465, %467
+        %468:ptr<function, f32, read_write> = access %light_2, 4u
+        %469:ptr<storage, f32, read> = access %globalLights, 2u
+        %470:f32 = load %469
+        store %468, %470
+        %471:vec3<f32> = access %input_1, 1u
+        %lightVis:f32 = call %dirLightVisibility, %471
+        %473:vec3<f32> = load %Lo
+        %474:PuctualLight = load %light_2
+        %475:vec3<f32> = call %lightRadiance, %474, %surface_2
+        %476:vec3<f32> = mul %475, %lightVis
+        %477:vec3<f32> = add %473, %476
+        store %Lo, %477
+        exit_if  # if_15
+      }
+    }
+    %478:vec4<f32> = access %input_1, 0u
+    %clusterIndex:u32 = call %getClusterIndex, %478
+    %480:ptr<storage, u32, read> = access %clusterLights, 1u, %clusterIndex, 0u
+    %lightOffset:u32 = load %480
+    %482:ptr<storage, u32, read> = access %clusterLights, 1u, %clusterIndex, 1u
+    %lightCount:u32 = load %482
+    loop [i: %b43, b: %b44, c: %b45] {  # loop_3
+      %b43 = block {  # initializer
+        %lightIndex_1:ptr<function, u32, read_write> = var, 0u  # %lightIndex_1: 'lightIndex'
+        next_iteration %b44
+      }
+      %b44 = block {  # body
+        %485:u32 = load %lightIndex_1
+        %486:bool = lt %485, %lightCount
+        if %486 [t: %b46, f: %b47] {  # if_16
+          %b46 = block {  # true
+            exit_if  # if_16
+          }
+          %b47 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %487:u32 = load %lightIndex_1
+        %488:u32 = add %lightOffset, %487
+        %489:ptr<storage, u32, read> = access %clusterLights, 2u, %488
+        %i_2:u32 = load %489  # %i_2: 'i'
+        %light_3:ptr<function, PuctualLight, read_write> = var  # %light_3: 'light'
+        %492:ptr<function, u32, read_write> = access %light_3, 0u
+        store %492, 0u
+        %493:ptr<function, vec3<f32>, read_write> = access %light_3, 1u
+        %494:ptr<storage, vec3<f32>, read> = access %globalLights, 5u, %i_2, 0u
+        %495:vec3<f32> = load %494
+        %496:vec3<f32> = swizzle %495, xyz
+        %497:vec3<f32> = access %input_1, 1u
+        %498:vec3<f32> = sub %496, %497
+        store %493, %498
+        %499:ptr<function, f32, read_write> = access %light_3, 2u
+        %500:ptr<storage, f32, read> = access %globalLights, 5u, %i_2, 1u
+        %501:f32 = load %500
+        store %499, %501
+        %502:ptr<function, vec3<f32>, read_write> = access %light_3, 3u
+        %503:ptr<storage, vec3<f32>, read> = access %globalLights, 5u, %i_2, 2u
+        %504:vec3<f32> = load %503
+        store %502, %504
+        %505:ptr<function, f32, read_write> = access %light_3, 4u
+        %506:ptr<storage, f32, read> = access %globalLights, 5u, %i_2, 3u
+        %507:f32 = load %506
+        store %505, %507
+        %508:vec3<f32> = access %input_1, 1u
+        %509:ptr<function, vec3<f32>, read_write> = access %light_3, 1u
+        %510:vec3<f32> = load %509
+        %lightVis_1:f32 = call %pointLightVisibility, %i_2, %508, %510  # %lightVis_1: 'lightVis'
+        %512:vec3<f32> = load %Lo
+        %513:PuctualLight = load %light_3
+        %514:vec3<f32> = call %lightRadiance, %513, %surface_2
+        %515:vec3<f32> = mul %514, %lightVis_1
+        %516:vec3<f32> = add %512, %515
+        store %Lo, %516
+        continue %b45
+      }
+      %b45 = block {  # continuing
+        %517:u32 = load %lightIndex_1
+        %518:u32 = add %517, 1u
+        store %lightIndex_1, %518
+        next_iteration %b44
+      }
+    }
+    %519:vec4<f32> = access %input_1, 0u
+    %520:vec2<f32> = swizzle %519, xy
+    %521:texture_2d<f32> = load %ssaoTexture
+    %522:vec2<u32> = textureDimensions %521
+    %523:vec2<u32> = swizzle %522, xy
+    %524:vec2<f32> = convert %523
+    %ssaoCoord:vec2<f32> = div %520, %524
+    %526:texture_2d<f32> = load %ssaoTexture
+    %527:sampler = load %defaultSampler
+    %528:vec4<f32> = textureSample %526, %527, %ssaoCoord
+    %ssaoFactor:f32 = access %528, 0u
+    %530:ptr<storage, vec3<f32>, read> = access %globalLights, 0u
+    %531:vec3<f32> = load %530
+    %532:vec3<f32> = access %surface_2, 1u
+    %533:vec3<f32> = mul %531, %532
+    %534:f32 = access %surface_2, 6u
+    %535:vec3<f32> = mul %533, %534
+    %ambient:vec3<f32> = mul %535, %ssaoFactor
+    %537:vec3<f32> = load %Lo
+    %538:vec3<f32> = add %537, %ambient
+    %539:vec3<f32> = access %surface_2, 7u
+    %540:vec3<f32> = add %538, %539
+    %color:vec3<f32> = call %linearTosRGB, %540
+    %out:ptr<function, FragmentOutput, read_write> = var
+    %543:ptr<function, vec4<f32>, read_write> = access %out, 0u
+    %544:f32 = access %surface_2, 0u, 3u
+    %545:vec4<f32> = construct %color, %544
+    store %543, %545
+    %546:ptr<function, vec4<f32>, read_write> = access %out, 1u
+    %547:vec3<f32> = access %surface_2, 7u
+    %548:f32 = access %surface_2, 0u, 3u
+    %549:vec4<f32> = construct %547, %548
+    store %546, %549
+    %550:FragmentOutput = load %out
+    ret %550
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/benchmark/skinned-shadowed-pbr-vertex.wgsl.expected.ir.msl b/test/tint/benchmark/skinned-shadowed-pbr-vertex.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0f66a0f
--- /dev/null
+++ b/test/tint/benchmark/skinned-shadowed-pbr-vertex.wgsl.expected.ir.msl
@@ -0,0 +1,171 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Camera = struct @align(16) {
+  projection:mat4x4<f32> @offset(0)
+  inverseProjection:mat4x4<f32> @offset(64)
+  view:mat4x4<f32> @offset(128)
+  position:vec3<f32> @offset(192)
+  time:f32 @offset(204)
+  outputSize:vec2<f32> @offset(208)
+  zNear:f32 @offset(216)
+  zFar:f32 @offset(220)
+}
+
+VertexInput = struct @align(16) {
+  position:vec4<f32> @offset(0), @location(0)
+  normal:vec3<f32> @offset(16), @location(1)
+  tangent:vec4<f32> @offset(32), @location(2)
+  texcoord:vec2<f32> @offset(48), @location(3)
+  joints:vec4<u32> @offset(64), @location(6)
+  weights:vec4<f32> @offset(80), @location(7)
+  instance0:vec4<f32> @offset(96), @location(8)
+  instance1:vec4<f32> @offset(112), @location(9)
+  instance2:vec4<f32> @offset(128), @location(10)
+  instance3:vec4<f32> @offset(144), @location(11)
+  instanceColor:vec4<f32> @offset(160), @location(12)
+}
+
+Joints = struct @align(16) {
+  matrices:array<mat4x4<f32>> @offset(0)
+}
+
+VertexOutput = struct @align(16) {
+  position:vec4<f32> @offset(0), @builtin(position)
+  worldPos:vec3<f32> @offset(16), @location(0)
+  view:vec3<f32> @offset(32), @location(1)
+  texcoord:vec2<f32> @offset(48), @location(2)
+  texcoord2:vec2<f32> @offset(56), @location(3)
+  color:vec4<f32> @offset(64), @location(4)
+  instanceColor:vec4<f32> @offset(80), @location(5)
+  normal:vec3<f32> @offset(96), @location(6)
+  tangent:vec3<f32> @offset(112), @location(7)
+  bitangent:vec3<f32> @offset(128), @location(8)
+}
+
+%b1 = block {  # root
+  %camera:ptr<uniform, Camera, read> = var @binding_point(0, 0)
+  %joint:ptr<storage, Joints, read> = var @binding_point(0, 1)
+  %inverseBind:ptr<storage, Joints, read> = var @binding_point(0, 2)
+}
+
+%getInstanceMatrix = func(%input:VertexInput):mat4x4<f32> -> %b2 {
+  %b2 = block {
+    %6:vec4<f32> = access %input, 6u
+    %7:vec4<f32> = access %input, 7u
+    %8:vec4<f32> = access %input, 8u
+    %9:vec4<f32> = access %input, 9u
+    %10:mat4x4<f32> = construct %6, %7, %8, %9
+    ret %10
+  }
+}
+%getSkinMatrix = func(%input_1:VertexInput):mat4x4<f32> -> %b3 {  # %input_1: 'input'
+  %b3 = block {
+    %13:u32 = access %input_1, 4u, 0u
+    %14:ptr<storage, mat4x4<f32>, read> = access %joint, 0u, %13
+    %15:mat4x4<f32> = load %14
+    %16:u32 = access %input_1, 4u, 0u
+    %17:ptr<storage, mat4x4<f32>, read> = access %inverseBind, 0u, %16
+    %18:mat4x4<f32> = load %17
+    %joint0:mat4x4<f32> = mul %15, %18
+    %20:u32 = access %input_1, 4u, 1u
+    %21:ptr<storage, mat4x4<f32>, read> = access %joint, 0u, %20
+    %22:mat4x4<f32> = load %21
+    %23:u32 = access %input_1, 4u, 1u
+    %24:ptr<storage, mat4x4<f32>, read> = access %inverseBind, 0u, %23
+    %25:mat4x4<f32> = load %24
+    %joint1:mat4x4<f32> = mul %22, %25
+    %27:u32 = access %input_1, 4u, 2u
+    %28:ptr<storage, mat4x4<f32>, read> = access %joint, 0u, %27
+    %29:mat4x4<f32> = load %28
+    %30:u32 = access %input_1, 4u, 2u
+    %31:ptr<storage, mat4x4<f32>, read> = access %inverseBind, 0u, %30
+    %32:mat4x4<f32> = load %31
+    %joint2:mat4x4<f32> = mul %29, %32
+    %34:u32 = access %input_1, 4u, 3u
+    %35:ptr<storage, mat4x4<f32>, read> = access %joint, 0u, %34
+    %36:mat4x4<f32> = load %35
+    %37:u32 = access %input_1, 4u, 3u
+    %38:ptr<storage, mat4x4<f32>, read> = access %inverseBind, 0u, %37
+    %39:mat4x4<f32> = load %38
+    %joint3:mat4x4<f32> = mul %36, %39
+    %41:f32 = access %input_1, 5u, 0u
+    %42:mat4x4<f32> = mul %joint0, %41
+    %43:f32 = access %input_1, 5u, 1u
+    %44:mat4x4<f32> = mul %joint1, %43
+    %45:mat4x4<f32> = add %42, %44
+    %46:f32 = access %input_1, 5u, 2u
+    %47:mat4x4<f32> = mul %joint2, %46
+    %48:mat4x4<f32> = add %45, %47
+    %49:f32 = access %input_1, 5u, 3u
+    %50:mat4x4<f32> = mul %joint3, %49
+    %skinMatrix:mat4x4<f32> = add %48, %50
+    ret %skinMatrix
+  }
+}
+%vertexMain = @vertex func(%input_2:VertexInput):VertexOutput -> %b4 {  # %input_2: 'input'
+  %b4 = block {
+    %output:ptr<function, VertexOutput, read_write> = var
+    %modelMatrix:mat4x4<f32> = call %getSkinMatrix, %input_2
+    %56:ptr<function, vec3<f32>, read_write> = access %output, 7u
+    %57:vec3<f32> = access %input_2, 1u
+    %58:vec4<f32> = construct %57, 0.0f
+    %59:vec4<f32> = mul %modelMatrix, %58
+    %60:vec3<f32> = swizzle %59, xyz
+    %61:vec3<f32> = normalize %60
+    store %56, %61
+    %62:ptr<function, vec3<f32>, read_write> = access %output, 8u
+    %63:vec4<f32> = access %input_2, 2u
+    %64:vec3<f32> = swizzle %63, xyz
+    %65:vec4<f32> = construct %64, 0.0f
+    %66:vec4<f32> = mul %modelMatrix, %65
+    %67:vec3<f32> = swizzle %66, xyz
+    %68:vec3<f32> = normalize %67
+    store %62, %68
+    %69:ptr<function, vec3<f32>, read_write> = access %output, 9u
+    %70:ptr<function, vec3<f32>, read_write> = access %output, 7u
+    %71:vec3<f32> = load %70
+    %72:ptr<function, vec3<f32>, read_write> = access %output, 8u
+    %73:vec3<f32> = load %72
+    %74:vec3<f32> = cross %71, %73
+    %75:f32 = access %input_2, 2u, 3u
+    %76:vec3<f32> = mul %74, %75
+    store %69, %76
+    %77:ptr<function, vec4<f32>, read_write> = access %output, 5u
+    store %77, vec4<f32>(1.0f)
+    %78:ptr<function, vec2<f32>, read_write> = access %output, 3u
+    %79:vec2<f32> = access %input_2, 3u
+    store %78, %79
+    %80:ptr<function, vec4<f32>, read_write> = access %output, 6u
+    %81:vec4<f32> = access %input_2, 10u
+    store %80, %81
+    %82:vec4<f32> = access %input_2, 0u
+    %modelPos:vec4<f32> = mul %modelMatrix, %82
+    %84:ptr<function, vec3<f32>, read_write> = access %output, 1u
+    %85:vec3<f32> = swizzle %modelPos, xyz
+    store %84, %85
+    %86:ptr<function, vec3<f32>, read_write> = access %output, 2u
+    %87:ptr<uniform, vec3<f32>, read> = access %camera, 3u
+    %88:vec3<f32> = load %87
+    %89:vec3<f32> = swizzle %modelPos, xyz
+    %90:vec3<f32> = sub %88, %89
+    store %86, %90
+    %91:ptr<function, vec4<f32>, read_write> = access %output, 0u
+    %92:ptr<uniform, mat4x4<f32>, read> = access %camera, 0u
+    %93:mat4x4<f32> = load %92
+    %94:ptr<uniform, mat4x4<f32>, read> = access %camera, 2u
+    %95:mat4x4<f32> = load %94
+    %96:mat4x4<f32> = mul %93, %95
+    %97:vec4<f32> = mul %96, %modelPos
+    store %91, %97
+    %98:VertexOutput = load %output
+    ret %98
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/benchmark/uniformity-analysis-pointer-parameters.wgsl.expected.ir.msl b/test/tint/benchmark/uniformity-analysis-pointer-parameters.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/benchmark/uniformity-analysis-pointer-parameters.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/buffer/storage/dynamic_index/read.wgsl.expected.ir.msl b/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a73b168
--- /dev/null
+++ b/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.ir.msl
@@ -0,0 +1,92 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  scalar_f32:f32 @offset(0)
+  scalar_i32:i32 @offset(4)
+  scalar_u32:u32 @offset(8)
+  vec2_f32:vec2<f32> @offset(16)
+  vec2_i32:vec2<i32> @offset(24)
+  vec2_u32:vec2<u32> @offset(32)
+  vec3_f32:vec3<f32> @offset(48)
+  vec3_i32:vec3<i32> @offset(64)
+  vec3_u32:vec3<u32> @offset(80)
+  vec4_f32:vec4<f32> @offset(96)
+  vec4_i32:vec4<i32> @offset(112)
+  vec4_u32:vec4<u32> @offset(128)
+  mat2x2_f32:mat2x2<f32> @offset(144)
+  mat2x3_f32:mat2x3<f32> @offset(160)
+  mat2x4_f32:mat2x4<f32> @offset(192)
+  mat3x2_f32:mat3x2<f32> @offset(224)
+  mat3x3_f32:mat3x3<f32> @offset(256)
+  mat3x4_f32:mat3x4<f32> @offset(304)
+  mat4x2_f32:mat4x2<f32> @offset(352)
+  mat4x3_f32:mat4x3<f32> @offset(384)
+  mat4x4_f32:mat4x4<f32> @offset(448)
+  arr2_vec3_f32:array<vec3<f32>, 2> @offset(512)
+}
+
+S = struct @align(16) {
+  arr:array<Inner> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb:ptr<storage, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%idx:u32 [@local_invocation_index]):void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, f32, read> = access %sb, 0u, %idx, 0u
+    %scalar_f32:f32 = load %4
+    %6:ptr<storage, i32, read> = access %sb, 0u, %idx, 1u
+    %scalar_i32:i32 = load %6
+    %8:ptr<storage, u32, read> = access %sb, 0u, %idx, 2u
+    %scalar_u32:u32 = load %8
+    %10:ptr<storage, vec2<f32>, read> = access %sb, 0u, %idx, 3u
+    %vec2_f32:vec2<f32> = load %10
+    %12:ptr<storage, vec2<i32>, read> = access %sb, 0u, %idx, 4u
+    %vec2_i32:vec2<i32> = load %12
+    %14:ptr<storage, vec2<u32>, read> = access %sb, 0u, %idx, 5u
+    %vec2_u32:vec2<u32> = load %14
+    %16:ptr<storage, vec3<f32>, read> = access %sb, 0u, %idx, 6u
+    %vec3_f32:vec3<f32> = load %16
+    %18:ptr<storage, vec3<i32>, read> = access %sb, 0u, %idx, 7u
+    %vec3_i32:vec3<i32> = load %18
+    %20:ptr<storage, vec3<u32>, read> = access %sb, 0u, %idx, 8u
+    %vec3_u32:vec3<u32> = load %20
+    %22:ptr<storage, vec4<f32>, read> = access %sb, 0u, %idx, 9u
+    %vec4_f32:vec4<f32> = load %22
+    %24:ptr<storage, vec4<i32>, read> = access %sb, 0u, %idx, 10u
+    %vec4_i32:vec4<i32> = load %24
+    %26:ptr<storage, vec4<u32>, read> = access %sb, 0u, %idx, 11u
+    %vec4_u32:vec4<u32> = load %26
+    %28:ptr<storage, mat2x2<f32>, read> = access %sb, 0u, %idx, 12u
+    %mat2x2_f32:mat2x2<f32> = load %28
+    %30:ptr<storage, mat2x3<f32>, read> = access %sb, 0u, %idx, 13u
+    %mat2x3_f32:mat2x3<f32> = load %30
+    %32:ptr<storage, mat2x4<f32>, read> = access %sb, 0u, %idx, 14u
+    %mat2x4_f32:mat2x4<f32> = load %32
+    %34:ptr<storage, mat3x2<f32>, read> = access %sb, 0u, %idx, 15u
+    %mat3x2_f32:mat3x2<f32> = load %34
+    %36:ptr<storage, mat3x3<f32>, read> = access %sb, 0u, %idx, 16u
+    %mat3x3_f32:mat3x3<f32> = load %36
+    %38:ptr<storage, mat3x4<f32>, read> = access %sb, 0u, %idx, 17u
+    %mat3x4_f32:mat3x4<f32> = load %38
+    %40:ptr<storage, mat4x2<f32>, read> = access %sb, 0u, %idx, 18u
+    %mat4x2_f32:mat4x2<f32> = load %40
+    %42:ptr<storage, mat4x3<f32>, read> = access %sb, 0u, %idx, 19u
+    %mat4x3_f32:mat4x3<f32> = load %42
+    %44:ptr<storage, mat4x4<f32>, read> = access %sb, 0u, %idx, 20u
+    %mat4x4_f32:mat4x4<f32> = load %44
+    %46:ptr<storage, array<vec3<f32>, 2>, read> = access %sb, 0u, %idx, 21u
+    %arr2_vec3_f32:array<vec3<f32>, 2> = load %46
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/dynamic_index/read_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/dynamic_index/read_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a998792
--- /dev/null
+++ b/test/tint/buffer/storage/dynamic_index/read_f16.wgsl.expected.ir.msl
@@ -0,0 +1,134 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  scalar_f32:f32 @offset(0)
+  scalar_i32:i32 @offset(4)
+  scalar_u32:u32 @offset(8)
+  scalar_f16:f16 @offset(12)
+  vec2_f32:vec2<f32> @offset(16)
+  vec2_i32:vec2<i32> @offset(24)
+  vec2_u32:vec2<u32> @offset(32)
+  vec2_f16:vec2<f16> @offset(40)
+  vec3_f32:vec3<f32> @offset(48)
+  vec3_i32:vec3<i32> @offset(64)
+  vec3_u32:vec3<u32> @offset(80)
+  vec3_f16:vec3<f16> @offset(96)
+  vec4_f32:vec4<f32> @offset(112)
+  vec4_i32:vec4<i32> @offset(128)
+  vec4_u32:vec4<u32> @offset(144)
+  vec4_f16:vec4<f16> @offset(160)
+  mat2x2_f32:mat2x2<f32> @offset(168)
+  mat2x3_f32:mat2x3<f32> @offset(192)
+  mat2x4_f32:mat2x4<f32> @offset(224)
+  mat3x2_f32:mat3x2<f32> @offset(256)
+  mat3x3_f32:mat3x3<f32> @offset(288)
+  mat3x4_f32:mat3x4<f32> @offset(336)
+  mat4x2_f32:mat4x2<f32> @offset(384)
+  mat4x3_f32:mat4x3<f32> @offset(416)
+  mat4x4_f32:mat4x4<f32> @offset(480)
+  mat2x2_f16:mat2x2<f16> @offset(544)
+  mat2x3_f16:mat2x3<f16> @offset(552)
+  mat2x4_f16:mat2x4<f16> @offset(568)
+  mat3x2_f16:mat3x2<f16> @offset(584)
+  mat3x3_f16:mat3x3<f16> @offset(600)
+  mat3x4_f16:mat3x4<f16> @offset(624)
+  mat4x2_f16:mat4x2<f16> @offset(648)
+  mat4x3_f16:mat4x3<f16> @offset(664)
+  mat4x4_f16:mat4x4<f16> @offset(696)
+  arr2_vec3_f32:array<vec3<f32>, 2> @offset(736)
+  arr2_mat4x2_f16:array<mat4x2<f16>, 2> @offset(768)
+}
+
+S = struct @align(16) {
+  arr:array<Inner> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb:ptr<storage, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%idx:u32 [@local_invocation_index]):void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, f32, read> = access %sb, 0u, %idx, 0u
+    %scalar_f32:f32 = load %4
+    %6:ptr<storage, i32, read> = access %sb, 0u, %idx, 1u
+    %scalar_i32:i32 = load %6
+    %8:ptr<storage, u32, read> = access %sb, 0u, %idx, 2u
+    %scalar_u32:u32 = load %8
+    %10:ptr<storage, f16, read> = access %sb, 0u, %idx, 3u
+    %scalar_f16:f16 = load %10
+    %12:ptr<storage, vec2<f32>, read> = access %sb, 0u, %idx, 4u
+    %vec2_f32:vec2<f32> = load %12
+    %14:ptr<storage, vec2<i32>, read> = access %sb, 0u, %idx, 5u
+    %vec2_i32:vec2<i32> = load %14
+    %16:ptr<storage, vec2<u32>, read> = access %sb, 0u, %idx, 6u
+    %vec2_u32:vec2<u32> = load %16
+    %18:ptr<storage, vec2<f16>, read> = access %sb, 0u, %idx, 7u
+    %vec2_f16:vec2<f16> = load %18
+    %20:ptr<storage, vec3<f32>, read> = access %sb, 0u, %idx, 8u
+    %vec3_f32:vec3<f32> = load %20
+    %22:ptr<storage, vec3<i32>, read> = access %sb, 0u, %idx, 9u
+    %vec3_i32:vec3<i32> = load %22
+    %24:ptr<storage, vec3<u32>, read> = access %sb, 0u, %idx, 10u
+    %vec3_u32:vec3<u32> = load %24
+    %26:ptr<storage, vec3<f16>, read> = access %sb, 0u, %idx, 11u
+    %vec3_f16:vec3<f16> = load %26
+    %28:ptr<storage, vec4<f32>, read> = access %sb, 0u, %idx, 12u
+    %vec4_f32:vec4<f32> = load %28
+    %30:ptr<storage, vec4<i32>, read> = access %sb, 0u, %idx, 13u
+    %vec4_i32:vec4<i32> = load %30
+    %32:ptr<storage, vec4<u32>, read> = access %sb, 0u, %idx, 14u
+    %vec4_u32:vec4<u32> = load %32
+    %34:ptr<storage, vec4<f16>, read> = access %sb, 0u, %idx, 15u
+    %vec4_f16:vec4<f16> = load %34
+    %36:ptr<storage, mat2x2<f32>, read> = access %sb, 0u, %idx, 16u
+    %mat2x2_f32:mat2x2<f32> = load %36
+    %38:ptr<storage, mat2x3<f32>, read> = access %sb, 0u, %idx, 17u
+    %mat2x3_f32:mat2x3<f32> = load %38
+    %40:ptr<storage, mat2x4<f32>, read> = access %sb, 0u, %idx, 18u
+    %mat2x4_f32:mat2x4<f32> = load %40
+    %42:ptr<storage, mat3x2<f32>, read> = access %sb, 0u, %idx, 19u
+    %mat3x2_f32:mat3x2<f32> = load %42
+    %44:ptr<storage, mat3x3<f32>, read> = access %sb, 0u, %idx, 20u
+    %mat3x3_f32:mat3x3<f32> = load %44
+    %46:ptr<storage, mat3x4<f32>, read> = access %sb, 0u, %idx, 21u
+    %mat3x4_f32:mat3x4<f32> = load %46
+    %48:ptr<storage, mat4x2<f32>, read> = access %sb, 0u, %idx, 22u
+    %mat4x2_f32:mat4x2<f32> = load %48
+    %50:ptr<storage, mat4x3<f32>, read> = access %sb, 0u, %idx, 23u
+    %mat4x3_f32:mat4x3<f32> = load %50
+    %52:ptr<storage, mat4x4<f32>, read> = access %sb, 0u, %idx, 24u
+    %mat4x4_f32:mat4x4<f32> = load %52
+    %54:ptr<storage, mat2x2<f16>, read> = access %sb, 0u, %idx, 25u
+    %mat2x2_f16:mat2x2<f16> = load %54
+    %56:ptr<storage, mat2x3<f16>, read> = access %sb, 0u, %idx, 26u
+    %mat2x3_f16:mat2x3<f16> = load %56
+    %58:ptr<storage, mat2x4<f16>, read> = access %sb, 0u, %idx, 27u
+    %mat2x4_f16:mat2x4<f16> = load %58
+    %60:ptr<storage, mat3x2<f16>, read> = access %sb, 0u, %idx, 28u
+    %mat3x2_f16:mat3x2<f16> = load %60
+    %62:ptr<storage, mat3x3<f16>, read> = access %sb, 0u, %idx, 29u
+    %mat3x3_f16:mat3x3<f16> = load %62
+    %64:ptr<storage, mat3x4<f16>, read> = access %sb, 0u, %idx, 30u
+    %mat3x4_f16:mat3x4<f16> = load %64
+    %66:ptr<storage, mat4x2<f16>, read> = access %sb, 0u, %idx, 31u
+    %mat4x2_f16:mat4x2<f16> = load %66
+    %68:ptr<storage, mat4x3<f16>, read> = access %sb, 0u, %idx, 32u
+    %mat4x3_f16:mat4x3<f16> = load %68
+    %70:ptr<storage, mat4x4<f16>, read> = access %sb, 0u, %idx, 33u
+    %mat4x4_f16:mat4x4<f16> = load %70
+    %72:ptr<storage, array<vec3<f32>, 2>, read> = access %sb, 0u, %idx, 34u
+    %arr2_vec3_f32:array<vec3<f32>, 2> = load %72
+    %74:ptr<storage, array<mat4x2<f16>, 2>, read> = access %sb, 0u, %idx, 35u
+    %arr2_mat4x2_f16:array<mat4x2<f16>, 2> = load %74
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/dynamic_index/write.wgsl.expected.ir.msl b/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3555b75
--- /dev/null
+++ b/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.ir.msl
@@ -0,0 +1,92 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  scalar_f32:f32 @offset(0)
+  scalar_i32:i32 @offset(4)
+  scalar_u32:u32 @offset(8)
+  vec2_f32:vec2<f32> @offset(16)
+  vec2_i32:vec2<i32> @offset(24)
+  vec2_u32:vec2<u32> @offset(32)
+  vec3_f32:vec3<f32> @offset(48)
+  vec3_i32:vec3<i32> @offset(64)
+  vec3_u32:vec3<u32> @offset(80)
+  vec4_f32:vec4<f32> @offset(96)
+  vec4_i32:vec4<i32> @offset(112)
+  vec4_u32:vec4<u32> @offset(128)
+  mat2x2_f32:mat2x2<f32> @offset(144)
+  mat2x3_f32:mat2x3<f32> @offset(160)
+  mat2x4_f32:mat2x4<f32> @offset(192)
+  mat3x2_f32:mat3x2<f32> @offset(224)
+  mat3x3_f32:mat3x3<f32> @offset(256)
+  mat3x4_f32:mat3x4<f32> @offset(304)
+  mat4x2_f32:mat4x2<f32> @offset(352)
+  mat4x3_f32:mat4x3<f32> @offset(384)
+  mat4x4_f32:mat4x4<f32> @offset(448)
+  arr2_vec3_f32:array<vec3<f32>, 2> @offset(512)
+}
+
+S = struct @align(16) {
+  arr:array<Inner> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%idx:u32 [@local_invocation_index]):void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, f32, read_write> = access %sb, 0u, %idx, 0u
+    store %4, 0.0f
+    %5:ptr<storage, i32, read_write> = access %sb, 0u, %idx, 1u
+    store %5, 0i
+    %6:ptr<storage, u32, read_write> = access %sb, 0u, %idx, 2u
+    store %6, 0u
+    %7:ptr<storage, vec2<f32>, read_write> = access %sb, 0u, %idx, 3u
+    store %7, vec2<f32>(0.0f)
+    %8:ptr<storage, vec2<i32>, read_write> = access %sb, 0u, %idx, 4u
+    store %8, vec2<i32>(0i)
+    %9:ptr<storage, vec2<u32>, read_write> = access %sb, 0u, %idx, 5u
+    store %9, vec2<u32>(0u)
+    %10:ptr<storage, vec3<f32>, read_write> = access %sb, 0u, %idx, 6u
+    store %10, vec3<f32>(0.0f)
+    %11:ptr<storage, vec3<i32>, read_write> = access %sb, 0u, %idx, 7u
+    store %11, vec3<i32>(0i)
+    %12:ptr<storage, vec3<u32>, read_write> = access %sb, 0u, %idx, 8u
+    store %12, vec3<u32>(0u)
+    %13:ptr<storage, vec4<f32>, read_write> = access %sb, 0u, %idx, 9u
+    store %13, vec4<f32>(0.0f)
+    %14:ptr<storage, vec4<i32>, read_write> = access %sb, 0u, %idx, 10u
+    store %14, vec4<i32>(0i)
+    %15:ptr<storage, vec4<u32>, read_write> = access %sb, 0u, %idx, 11u
+    store %15, vec4<u32>(0u)
+    %16:ptr<storage, mat2x2<f32>, read_write> = access %sb, 0u, %idx, 12u
+    store %16, mat2x2<f32>(vec2<f32>(0.0f))
+    %17:ptr<storage, mat2x3<f32>, read_write> = access %sb, 0u, %idx, 13u
+    store %17, mat2x3<f32>(vec3<f32>(0.0f))
+    %18:ptr<storage, mat2x4<f32>, read_write> = access %sb, 0u, %idx, 14u
+    store %18, mat2x4<f32>(vec4<f32>(0.0f))
+    %19:ptr<storage, mat3x2<f32>, read_write> = access %sb, 0u, %idx, 15u
+    store %19, mat3x2<f32>(vec2<f32>(0.0f))
+    %20:ptr<storage, mat3x3<f32>, read_write> = access %sb, 0u, %idx, 16u
+    store %20, mat3x3<f32>(vec3<f32>(0.0f))
+    %21:ptr<storage, mat3x4<f32>, read_write> = access %sb, 0u, %idx, 17u
+    store %21, mat3x4<f32>(vec4<f32>(0.0f))
+    %22:ptr<storage, mat4x2<f32>, read_write> = access %sb, 0u, %idx, 18u
+    store %22, mat4x2<f32>(vec2<f32>(0.0f))
+    %23:ptr<storage, mat4x3<f32>, read_write> = access %sb, 0u, %idx, 19u
+    store %23, mat4x3<f32>(vec3<f32>(0.0f))
+    %24:ptr<storage, mat4x4<f32>, read_write> = access %sb, 0u, %idx, 20u
+    store %24, mat4x4<f32>(vec4<f32>(0.0f))
+    %25:ptr<storage, array<vec3<f32>, 2>, read_write> = access %sb, 0u, %idx, 21u
+    store %25, array<vec3<f32>, 2>(vec3<f32>(0.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/dynamic_index/write_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/dynamic_index/write_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8bdfba5
--- /dev/null
+++ b/test/tint/buffer/storage/dynamic_index/write_f16.wgsl.expected.ir.msl
@@ -0,0 +1,134 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  scalar_f32:f32 @offset(0)
+  scalar_i32:i32 @offset(4)
+  scalar_u32:u32 @offset(8)
+  scalar_f16:f16 @offset(12)
+  vec2_f32:vec2<f32> @offset(16)
+  vec2_i32:vec2<i32> @offset(24)
+  vec2_u32:vec2<u32> @offset(32)
+  vec2_f16:vec2<f16> @offset(40)
+  vec3_f32:vec3<f32> @offset(48)
+  vec3_i32:vec3<i32> @offset(64)
+  vec3_u32:vec3<u32> @offset(80)
+  vec3_f16:vec3<f16> @offset(96)
+  vec4_f32:vec4<f32> @offset(112)
+  vec4_i32:vec4<i32> @offset(128)
+  vec4_u32:vec4<u32> @offset(144)
+  vec4_f16:vec4<f16> @offset(160)
+  mat2x2_f32:mat2x2<f32> @offset(168)
+  mat2x3_f32:mat2x3<f32> @offset(192)
+  mat2x4_f32:mat2x4<f32> @offset(224)
+  mat3x2_f32:mat3x2<f32> @offset(256)
+  mat3x3_f32:mat3x3<f32> @offset(288)
+  mat3x4_f32:mat3x4<f32> @offset(336)
+  mat4x2_f32:mat4x2<f32> @offset(384)
+  mat4x3_f32:mat4x3<f32> @offset(416)
+  mat4x4_f32:mat4x4<f32> @offset(480)
+  mat2x2_f16:mat2x2<f16> @offset(544)
+  mat2x3_f16:mat2x3<f16> @offset(552)
+  mat2x4_f16:mat2x4<f16> @offset(568)
+  mat3x2_f16:mat3x2<f16> @offset(584)
+  mat3x3_f16:mat3x3<f16> @offset(600)
+  mat3x4_f16:mat3x4<f16> @offset(624)
+  mat4x2_f16:mat4x2<f16> @offset(648)
+  mat4x3_f16:mat4x3<f16> @offset(664)
+  mat4x4_f16:mat4x4<f16> @offset(696)
+  arr2_vec3_f32:array<vec3<f32>, 2> @offset(736)
+  arr2_mat4x2_f16:array<mat4x2<f16>, 2> @offset(768)
+}
+
+S = struct @align(16) {
+  arr:array<Inner> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%idx:u32 [@local_invocation_index]):void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, f32, read_write> = access %sb, 0u, %idx, 0u
+    store %4, 0.0f
+    %5:ptr<storage, i32, read_write> = access %sb, 0u, %idx, 1u
+    store %5, 0i
+    %6:ptr<storage, u32, read_write> = access %sb, 0u, %idx, 2u
+    store %6, 0u
+    %7:ptr<storage, f16, read_write> = access %sb, 0u, %idx, 3u
+    store %7, 0.0h
+    %8:ptr<storage, vec2<f32>, read_write> = access %sb, 0u, %idx, 4u
+    store %8, vec2<f32>(0.0f)
+    %9:ptr<storage, vec2<i32>, read_write> = access %sb, 0u, %idx, 5u
+    store %9, vec2<i32>(0i)
+    %10:ptr<storage, vec2<u32>, read_write> = access %sb, 0u, %idx, 6u
+    store %10, vec2<u32>(0u)
+    %11:ptr<storage, vec2<f16>, read_write> = access %sb, 0u, %idx, 7u
+    store %11, vec2<f16>(0.0h)
+    %12:ptr<storage, vec3<f32>, read_write> = access %sb, 0u, %idx, 8u
+    store %12, vec3<f32>(0.0f)
+    %13:ptr<storage, vec3<i32>, read_write> = access %sb, 0u, %idx, 9u
+    store %13, vec3<i32>(0i)
+    %14:ptr<storage, vec3<u32>, read_write> = access %sb, 0u, %idx, 10u
+    store %14, vec3<u32>(0u)
+    %15:ptr<storage, vec3<f16>, read_write> = access %sb, 0u, %idx, 11u
+    store %15, vec3<f16>(0.0h)
+    %16:ptr<storage, vec4<f32>, read_write> = access %sb, 0u, %idx, 12u
+    store %16, vec4<f32>(0.0f)
+    %17:ptr<storage, vec4<i32>, read_write> = access %sb, 0u, %idx, 13u
+    store %17, vec4<i32>(0i)
+    %18:ptr<storage, vec4<u32>, read_write> = access %sb, 0u, %idx, 14u
+    store %18, vec4<u32>(0u)
+    %19:ptr<storage, vec4<f16>, read_write> = access %sb, 0u, %idx, 15u
+    store %19, vec4<f16>(0.0h)
+    %20:ptr<storage, mat2x2<f32>, read_write> = access %sb, 0u, %idx, 16u
+    store %20, mat2x2<f32>(vec2<f32>(0.0f))
+    %21:ptr<storage, mat2x3<f32>, read_write> = access %sb, 0u, %idx, 17u
+    store %21, mat2x3<f32>(vec3<f32>(0.0f))
+    %22:ptr<storage, mat2x4<f32>, read_write> = access %sb, 0u, %idx, 18u
+    store %22, mat2x4<f32>(vec4<f32>(0.0f))
+    %23:ptr<storage, mat3x2<f32>, read_write> = access %sb, 0u, %idx, 19u
+    store %23, mat3x2<f32>(vec2<f32>(0.0f))
+    %24:ptr<storage, mat3x3<f32>, read_write> = access %sb, 0u, %idx, 20u
+    store %24, mat3x3<f32>(vec3<f32>(0.0f))
+    %25:ptr<storage, mat3x4<f32>, read_write> = access %sb, 0u, %idx, 21u
+    store %25, mat3x4<f32>(vec4<f32>(0.0f))
+    %26:ptr<storage, mat4x2<f32>, read_write> = access %sb, 0u, %idx, 22u
+    store %26, mat4x2<f32>(vec2<f32>(0.0f))
+    %27:ptr<storage, mat4x3<f32>, read_write> = access %sb, 0u, %idx, 23u
+    store %27, mat4x3<f32>(vec3<f32>(0.0f))
+    %28:ptr<storage, mat4x4<f32>, read_write> = access %sb, 0u, %idx, 24u
+    store %28, mat4x4<f32>(vec4<f32>(0.0f))
+    %29:ptr<storage, mat2x2<f16>, read_write> = access %sb, 0u, %idx, 25u
+    store %29, mat2x2<f16>(vec2<f16>(0.0h))
+    %30:ptr<storage, mat2x3<f16>, read_write> = access %sb, 0u, %idx, 26u
+    store %30, mat2x3<f16>(vec3<f16>(0.0h))
+    %31:ptr<storage, mat2x4<f16>, read_write> = access %sb, 0u, %idx, 27u
+    store %31, mat2x4<f16>(vec4<f16>(0.0h))
+    %32:ptr<storage, mat3x2<f16>, read_write> = access %sb, 0u, %idx, 28u
+    store %32, mat3x2<f16>(vec2<f16>(0.0h))
+    %33:ptr<storage, mat3x3<f16>, read_write> = access %sb, 0u, %idx, 29u
+    store %33, mat3x3<f16>(vec3<f16>(0.0h))
+    %34:ptr<storage, mat3x4<f16>, read_write> = access %sb, 0u, %idx, 30u
+    store %34, mat3x4<f16>(vec4<f16>(0.0h))
+    %35:ptr<storage, mat4x2<f16>, read_write> = access %sb, 0u, %idx, 31u
+    store %35, mat4x2<f16>(vec2<f16>(0.0h))
+    %36:ptr<storage, mat4x3<f16>, read_write> = access %sb, 0u, %idx, 32u
+    store %36, mat4x3<f16>(vec3<f16>(0.0h))
+    %37:ptr<storage, mat4x4<f16>, read_write> = access %sb, 0u, %idx, 33u
+    store %37, mat4x4<f16>(vec4<f16>(0.0h))
+    %38:ptr<storage, array<vec3<f32>, 2>, read_write> = access %sb, 0u, %idx, 34u
+    store %38, array<vec3<f32>, 2>(vec3<f32>(0.0f))
+    %39:ptr<storage, array<mat4x2<f16>, 2>, read_write> = access %sb, 0u, %idx, 35u
+    store %39, array<mat4x2<f16>, 2>(mat4x2<f16>(vec2<f16>(0.0h)))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/static_index/read.wgsl.expected.ir.msl b/test/tint/buffer/storage/static_index/read.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9aca6f3
--- /dev/null
+++ b/test/tint/buffer/storage/static_index/read.wgsl.expected.ir.msl
@@ -0,0 +1,99 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(4) {
+  scalar_i32:i32 @offset(0)
+  scalar_f32:f32 @offset(4)
+}
+
+S = struct @align(16) {
+  scalar_f32:f32 @offset(0)
+  scalar_i32:i32 @offset(4)
+  scalar_u32:u32 @offset(8)
+  vec2_f32:vec2<f32> @offset(16)
+  vec2_i32:vec2<i32> @offset(24)
+  vec2_u32:vec2<u32> @offset(32)
+  vec3_f32:vec3<f32> @offset(48)
+  vec3_i32:vec3<i32> @offset(64)
+  vec3_u32:vec3<u32> @offset(80)
+  vec4_f32:vec4<f32> @offset(96)
+  vec4_i32:vec4<i32> @offset(112)
+  vec4_u32:vec4<u32> @offset(128)
+  mat2x2_f32:mat2x2<f32> @offset(144)
+  mat2x3_f32:mat2x3<f32> @offset(160)
+  mat2x4_f32:mat2x4<f32> @offset(192)
+  mat3x2_f32:mat3x2<f32> @offset(224)
+  mat3x3_f32:mat3x3<f32> @offset(256)
+  mat3x4_f32:mat3x4<f32> @offset(304)
+  mat4x2_f32:mat4x2<f32> @offset(352)
+  mat4x3_f32:mat4x3<f32> @offset(384)
+  mat4x4_f32:mat4x4<f32> @offset(448)
+  arr2_vec3_f32:array<vec3<f32>, 2> @offset(512)
+  struct_inner:Inner @offset(544)
+  array_struct_inner:array<Inner, 4> @offset(552)
+}
+
+%b1 = block {  # root
+  %sb:ptr<storage, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, f32, read> = access %sb, 0u
+    %scalar_f32:f32 = load %3
+    %5:ptr<storage, i32, read> = access %sb, 1u
+    %scalar_i32:i32 = load %5
+    %7:ptr<storage, u32, read> = access %sb, 2u
+    %scalar_u32:u32 = load %7
+    %9:ptr<storage, vec2<f32>, read> = access %sb, 3u
+    %vec2_f32:vec2<f32> = load %9
+    %11:ptr<storage, vec2<i32>, read> = access %sb, 4u
+    %vec2_i32:vec2<i32> = load %11
+    %13:ptr<storage, vec2<u32>, read> = access %sb, 5u
+    %vec2_u32:vec2<u32> = load %13
+    %15:ptr<storage, vec3<f32>, read> = access %sb, 6u
+    %vec3_f32:vec3<f32> = load %15
+    %17:ptr<storage, vec3<i32>, read> = access %sb, 7u
+    %vec3_i32:vec3<i32> = load %17
+    %19:ptr<storage, vec3<u32>, read> = access %sb, 8u
+    %vec3_u32:vec3<u32> = load %19
+    %21:ptr<storage, vec4<f32>, read> = access %sb, 9u
+    %vec4_f32:vec4<f32> = load %21
+    %23:ptr<storage, vec4<i32>, read> = access %sb, 10u
+    %vec4_i32:vec4<i32> = load %23
+    %25:ptr<storage, vec4<u32>, read> = access %sb, 11u
+    %vec4_u32:vec4<u32> = load %25
+    %27:ptr<storage, mat2x2<f32>, read> = access %sb, 12u
+    %mat2x2_f32:mat2x2<f32> = load %27
+    %29:ptr<storage, mat2x3<f32>, read> = access %sb, 13u
+    %mat2x3_f32:mat2x3<f32> = load %29
+    %31:ptr<storage, mat2x4<f32>, read> = access %sb, 14u
+    %mat2x4_f32:mat2x4<f32> = load %31
+    %33:ptr<storage, mat3x2<f32>, read> = access %sb, 15u
+    %mat3x2_f32:mat3x2<f32> = load %33
+    %35:ptr<storage, mat3x3<f32>, read> = access %sb, 16u
+    %mat3x3_f32:mat3x3<f32> = load %35
+    %37:ptr<storage, mat3x4<f32>, read> = access %sb, 17u
+    %mat3x4_f32:mat3x4<f32> = load %37
+    %39:ptr<storage, mat4x2<f32>, read> = access %sb, 18u
+    %mat4x2_f32:mat4x2<f32> = load %39
+    %41:ptr<storage, mat4x3<f32>, read> = access %sb, 19u
+    %mat4x3_f32:mat4x3<f32> = load %41
+    %43:ptr<storage, mat4x4<f32>, read> = access %sb, 20u
+    %mat4x4_f32:mat4x4<f32> = load %43
+    %45:ptr<storage, array<vec3<f32>, 2>, read> = access %sb, 21u
+    %arr2_vec3_f32:array<vec3<f32>, 2> = load %45
+    %47:ptr<storage, Inner, read> = access %sb, 22u
+    %struct_inner:Inner = load %47
+    %49:ptr<storage, array<Inner, 4>, read> = access %sb, 23u
+    %array_struct_inner:array<Inner, 4> = load %49
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/static_index/read_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/static_index/read_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..625cb04
--- /dev/null
+++ b/test/tint/buffer/storage/static_index/read_f16.wgsl.expected.ir.msl
@@ -0,0 +1,142 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(4) {
+  scalar_i32:i32 @offset(0)
+  scalar_f32:f32 @offset(4)
+  scalar_f16:f16 @offset(8)
+}
+
+S = struct @align(16) {
+  scalar_f32:f32 @offset(0)
+  scalar_i32:i32 @offset(4)
+  scalar_u32:u32 @offset(8)
+  scalar_f16:f16 @offset(12)
+  vec2_f32:vec2<f32> @offset(16)
+  vec2_i32:vec2<i32> @offset(24)
+  vec2_u32:vec2<u32> @offset(32)
+  vec2_f16:vec2<f16> @offset(40)
+  vec3_f32:vec3<f32> @offset(48)
+  vec3_i32:vec3<i32> @offset(64)
+  vec3_u32:vec3<u32> @offset(80)
+  vec3_f16:vec3<f16> @offset(96)
+  vec4_f32:vec4<f32> @offset(112)
+  vec4_i32:vec4<i32> @offset(128)
+  vec4_u32:vec4<u32> @offset(144)
+  vec4_f16:vec4<f16> @offset(160)
+  mat2x2_f32:mat2x2<f32> @offset(168)
+  mat2x3_f32:mat2x3<f32> @offset(192)
+  mat2x4_f32:mat2x4<f32> @offset(224)
+  mat3x2_f32:mat3x2<f32> @offset(256)
+  mat3x3_f32:mat3x3<f32> @offset(288)
+  mat3x4_f32:mat3x4<f32> @offset(336)
+  mat4x2_f32:mat4x2<f32> @offset(384)
+  mat4x3_f32:mat4x3<f32> @offset(416)
+  mat4x4_f32:mat4x4<f32> @offset(480)
+  mat2x2_f16:mat2x2<f16> @offset(544)
+  mat2x3_f16:mat2x3<f16> @offset(552)
+  mat2x4_f16:mat2x4<f16> @offset(568)
+  mat3x2_f16:mat3x2<f16> @offset(584)
+  mat3x3_f16:mat3x3<f16> @offset(600)
+  mat3x4_f16:mat3x4<f16> @offset(624)
+  mat4x2_f16:mat4x2<f16> @offset(648)
+  mat4x3_f16:mat4x3<f16> @offset(664)
+  mat4x4_f16:mat4x4<f16> @offset(696)
+  arr2_vec3_f32:array<vec3<f32>, 2> @offset(736)
+  arr2_mat4x2_f16:array<mat4x2<f16>, 2> @offset(768)
+  struct_inner:Inner @offset(800)
+  array_struct_inner:array<Inner, 4> @offset(812)
+}
+
+%b1 = block {  # root
+  %sb:ptr<storage, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, f32, read> = access %sb, 0u
+    %scalar_f32:f32 = load %3
+    %5:ptr<storage, i32, read> = access %sb, 1u
+    %scalar_i32:i32 = load %5
+    %7:ptr<storage, u32, read> = access %sb, 2u
+    %scalar_u32:u32 = load %7
+    %9:ptr<storage, f16, read> = access %sb, 3u
+    %scalar_f16:f16 = load %9
+    %11:ptr<storage, vec2<f32>, read> = access %sb, 4u
+    %vec2_f32:vec2<f32> = load %11
+    %13:ptr<storage, vec2<i32>, read> = access %sb, 5u
+    %vec2_i32:vec2<i32> = load %13
+    %15:ptr<storage, vec2<u32>, read> = access %sb, 6u
+    %vec2_u32:vec2<u32> = load %15
+    %17:ptr<storage, vec2<f16>, read> = access %sb, 7u
+    %vec2_f16:vec2<f16> = load %17
+    %19:ptr<storage, vec3<f32>, read> = access %sb, 8u
+    %vec3_f32:vec3<f32> = load %19
+    %21:ptr<storage, vec3<i32>, read> = access %sb, 9u
+    %vec3_i32:vec3<i32> = load %21
+    %23:ptr<storage, vec3<u32>, read> = access %sb, 10u
+    %vec3_u32:vec3<u32> = load %23
+    %25:ptr<storage, vec3<f16>, read> = access %sb, 11u
+    %vec3_f16:vec3<f16> = load %25
+    %27:ptr<storage, vec4<f32>, read> = access %sb, 12u
+    %vec4_f32:vec4<f32> = load %27
+    %29:ptr<storage, vec4<i32>, read> = access %sb, 13u
+    %vec4_i32:vec4<i32> = load %29
+    %31:ptr<storage, vec4<u32>, read> = access %sb, 14u
+    %vec4_u32:vec4<u32> = load %31
+    %33:ptr<storage, vec4<f16>, read> = access %sb, 15u
+    %vec4_f16:vec4<f16> = load %33
+    %35:ptr<storage, mat2x2<f32>, read> = access %sb, 16u
+    %mat2x2_f32:mat2x2<f32> = load %35
+    %37:ptr<storage, mat2x3<f32>, read> = access %sb, 17u
+    %mat2x3_f32:mat2x3<f32> = load %37
+    %39:ptr<storage, mat2x4<f32>, read> = access %sb, 18u
+    %mat2x4_f32:mat2x4<f32> = load %39
+    %41:ptr<storage, mat3x2<f32>, read> = access %sb, 19u
+    %mat3x2_f32:mat3x2<f32> = load %41
+    %43:ptr<storage, mat3x3<f32>, read> = access %sb, 20u
+    %mat3x3_f32:mat3x3<f32> = load %43
+    %45:ptr<storage, mat3x4<f32>, read> = access %sb, 21u
+    %mat3x4_f32:mat3x4<f32> = load %45
+    %47:ptr<storage, mat4x2<f32>, read> = access %sb, 22u
+    %mat4x2_f32:mat4x2<f32> = load %47
+    %49:ptr<storage, mat4x3<f32>, read> = access %sb, 23u
+    %mat4x3_f32:mat4x3<f32> = load %49
+    %51:ptr<storage, mat4x4<f32>, read> = access %sb, 24u
+    %mat4x4_f32:mat4x4<f32> = load %51
+    %53:ptr<storage, mat2x2<f16>, read> = access %sb, 25u
+    %mat2x2_f16:mat2x2<f16> = load %53
+    %55:ptr<storage, mat2x3<f16>, read> = access %sb, 26u
+    %mat2x3_f16:mat2x3<f16> = load %55
+    %57:ptr<storage, mat2x4<f16>, read> = access %sb, 27u
+    %mat2x4_f16:mat2x4<f16> = load %57
+    %59:ptr<storage, mat3x2<f16>, read> = access %sb, 28u
+    %mat3x2_f16:mat3x2<f16> = load %59
+    %61:ptr<storage, mat3x3<f16>, read> = access %sb, 29u
+    %mat3x3_f16:mat3x3<f16> = load %61
+    %63:ptr<storage, mat3x4<f16>, read> = access %sb, 30u
+    %mat3x4_f16:mat3x4<f16> = load %63
+    %65:ptr<storage, mat4x2<f16>, read> = access %sb, 31u
+    %mat4x2_f16:mat4x2<f16> = load %65
+    %67:ptr<storage, mat4x3<f16>, read> = access %sb, 32u
+    %mat4x3_f16:mat4x3<f16> = load %67
+    %69:ptr<storage, mat4x4<f16>, read> = access %sb, 33u
+    %mat4x4_f16:mat4x4<f16> = load %69
+    %71:ptr<storage, array<vec3<f32>, 2>, read> = access %sb, 34u
+    %arr2_vec3_f32:array<vec3<f32>, 2> = load %71
+    %73:ptr<storage, array<mat4x2<f16>, 2>, read> = access %sb, 35u
+    %arr2_mat4x2_f16:array<mat4x2<f16>, 2> = load %73
+    %75:ptr<storage, Inner, read> = access %sb, 36u
+    %struct_inner:Inner = load %75
+    %77:ptr<storage, array<Inner, 4>, read> = access %sb, 37u
+    %array_struct_inner:array<Inner, 4> = load %77
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/static_index/write.wgsl.expected.ir.msl b/test/tint/buffer/storage/static_index/write.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8da450a
--- /dev/null
+++ b/test/tint/buffer/storage/static_index/write.wgsl.expected.ir.msl
@@ -0,0 +1,99 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(4) {
+  scalar_i32:i32 @offset(0)
+  scalar_f32:f32 @offset(4)
+}
+
+S = struct @align(16) {
+  scalar_f32:f32 @offset(0)
+  scalar_i32:i32 @offset(4)
+  scalar_u32:u32 @offset(8)
+  vec2_f32:vec2<f32> @offset(16)
+  vec2_i32:vec2<i32> @offset(24)
+  vec2_u32:vec2<u32> @offset(32)
+  vec3_f32:vec3<f32> @offset(48)
+  vec3_i32:vec3<i32> @offset(64)
+  vec3_u32:vec3<u32> @offset(80)
+  vec4_f32:vec4<f32> @offset(96)
+  vec4_i32:vec4<i32> @offset(112)
+  vec4_u32:vec4<u32> @offset(128)
+  mat2x2_f32:mat2x2<f32> @offset(144)
+  mat2x3_f32:mat2x3<f32> @offset(160)
+  mat2x4_f32:mat2x4<f32> @offset(192)
+  mat3x2_f32:mat3x2<f32> @offset(224)
+  mat3x3_f32:mat3x3<f32> @offset(256)
+  mat3x4_f32:mat3x4<f32> @offset(304)
+  mat4x2_f32:mat4x2<f32> @offset(352)
+  mat4x3_f32:mat4x3<f32> @offset(384)
+  mat4x4_f32:mat4x4<f32> @offset(448)
+  arr2_vec3_f32:array<vec3<f32>, 2> @offset(512)
+  struct_inner:Inner @offset(544)
+  array_struct_inner:array<Inner, 4> @offset(552)
+}
+
+%b1 = block {  # root
+  %sb:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, f32, read_write> = access %sb, 0u
+    store %3, 0.0f
+    %4:ptr<storage, i32, read_write> = access %sb, 1u
+    store %4, 0i
+    %5:ptr<storage, u32, read_write> = access %sb, 2u
+    store %5, 0u
+    %6:ptr<storage, vec2<f32>, read_write> = access %sb, 3u
+    store %6, vec2<f32>(0.0f)
+    %7:ptr<storage, vec2<i32>, read_write> = access %sb, 4u
+    store %7, vec2<i32>(0i)
+    %8:ptr<storage, vec2<u32>, read_write> = access %sb, 5u
+    store %8, vec2<u32>(0u)
+    %9:ptr<storage, vec3<f32>, read_write> = access %sb, 6u
+    store %9, vec3<f32>(0.0f)
+    %10:ptr<storage, vec3<i32>, read_write> = access %sb, 7u
+    store %10, vec3<i32>(0i)
+    %11:ptr<storage, vec3<u32>, read_write> = access %sb, 8u
+    store %11, vec3<u32>(0u)
+    %12:ptr<storage, vec4<f32>, read_write> = access %sb, 9u
+    store %12, vec4<f32>(0.0f)
+    %13:ptr<storage, vec4<i32>, read_write> = access %sb, 10u
+    store %13, vec4<i32>(0i)
+    %14:ptr<storage, vec4<u32>, read_write> = access %sb, 11u
+    store %14, vec4<u32>(0u)
+    %15:ptr<storage, mat2x2<f32>, read_write> = access %sb, 12u
+    store %15, mat2x2<f32>(vec2<f32>(0.0f))
+    %16:ptr<storage, mat2x3<f32>, read_write> = access %sb, 13u
+    store %16, mat2x3<f32>(vec3<f32>(0.0f))
+    %17:ptr<storage, mat2x4<f32>, read_write> = access %sb, 14u
+    store %17, mat2x4<f32>(vec4<f32>(0.0f))
+    %18:ptr<storage, mat3x2<f32>, read_write> = access %sb, 15u
+    store %18, mat3x2<f32>(vec2<f32>(0.0f))
+    %19:ptr<storage, mat3x3<f32>, read_write> = access %sb, 16u
+    store %19, mat3x3<f32>(vec3<f32>(0.0f))
+    %20:ptr<storage, mat3x4<f32>, read_write> = access %sb, 17u
+    store %20, mat3x4<f32>(vec4<f32>(0.0f))
+    %21:ptr<storage, mat4x2<f32>, read_write> = access %sb, 18u
+    store %21, mat4x2<f32>(vec2<f32>(0.0f))
+    %22:ptr<storage, mat4x3<f32>, read_write> = access %sb, 19u
+    store %22, mat4x3<f32>(vec3<f32>(0.0f))
+    %23:ptr<storage, mat4x4<f32>, read_write> = access %sb, 20u
+    store %23, mat4x4<f32>(vec4<f32>(0.0f))
+    %24:ptr<storage, array<vec3<f32>, 2>, read_write> = access %sb, 21u
+    store %24, array<vec3<f32>, 2>(vec3<f32>(0.0f))
+    %25:ptr<storage, Inner, read_write> = access %sb, 22u
+    store %25, Inner(0i, 0.0f)
+    %26:ptr<storage, array<Inner, 4>, read_write> = access %sb, 23u
+    store %26, array<Inner, 4>(Inner(0i, 0.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/static_index/write_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/static_index/write_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..be16f05
--- /dev/null
+++ b/test/tint/buffer/storage/static_index/write_f16.wgsl.expected.ir.msl
@@ -0,0 +1,142 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(4) {
+  scalar_i32:i32 @offset(0)
+  scalar_f32:f32 @offset(4)
+  scalar_f16:f16 @offset(8)
+}
+
+S = struct @align(16) {
+  scalar_f32:f32 @offset(0)
+  scalar_i32:i32 @offset(4)
+  scalar_u32:u32 @offset(8)
+  scalar_f16:f16 @offset(12)
+  vec2_f32:vec2<f32> @offset(16)
+  vec2_i32:vec2<i32> @offset(24)
+  vec2_u32:vec2<u32> @offset(32)
+  vec2_f16:vec2<f16> @offset(40)
+  vec3_f32:vec3<f32> @offset(48)
+  vec3_i32:vec3<i32> @offset(64)
+  vec3_u32:vec3<u32> @offset(80)
+  vec3_f16:vec3<f16> @offset(96)
+  vec4_f32:vec4<f32> @offset(112)
+  vec4_i32:vec4<i32> @offset(128)
+  vec4_u32:vec4<u32> @offset(144)
+  vec4_f16:vec4<f16> @offset(160)
+  mat2x2_f32:mat2x2<f32> @offset(168)
+  mat2x3_f32:mat2x3<f32> @offset(192)
+  mat2x4_f32:mat2x4<f32> @offset(224)
+  mat3x2_f32:mat3x2<f32> @offset(256)
+  mat3x3_f32:mat3x3<f32> @offset(288)
+  mat3x4_f32:mat3x4<f32> @offset(336)
+  mat4x2_f32:mat4x2<f32> @offset(384)
+  mat4x3_f32:mat4x3<f32> @offset(416)
+  mat4x4_f32:mat4x4<f32> @offset(480)
+  mat2x2_f16:mat2x2<f16> @offset(544)
+  mat2x3_f16:mat2x3<f16> @offset(552)
+  mat2x4_f16:mat2x4<f16> @offset(568)
+  mat3x2_f16:mat3x2<f16> @offset(584)
+  mat3x3_f16:mat3x3<f16> @offset(600)
+  mat3x4_f16:mat3x4<f16> @offset(624)
+  mat4x2_f16:mat4x2<f16> @offset(648)
+  mat4x3_f16:mat4x3<f16> @offset(664)
+  mat4x4_f16:mat4x4<f16> @offset(696)
+  arr2_vec3_f32:array<vec3<f32>, 2> @offset(736)
+  arr2_mat4x2_f16:array<mat4x2<f16>, 2> @offset(768)
+  struct_inner:Inner @offset(800)
+  array_struct_inner:array<Inner, 4> @offset(812)
+}
+
+%b1 = block {  # root
+  %sb:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, f32, read_write> = access %sb, 0u
+    store %3, 0.0f
+    %4:ptr<storage, i32, read_write> = access %sb, 1u
+    store %4, 0i
+    %5:ptr<storage, u32, read_write> = access %sb, 2u
+    store %5, 0u
+    %6:ptr<storage, f16, read_write> = access %sb, 3u
+    store %6, 0.0h
+    %7:ptr<storage, vec2<f32>, read_write> = access %sb, 4u
+    store %7, vec2<f32>(0.0f)
+    %8:ptr<storage, vec2<i32>, read_write> = access %sb, 5u
+    store %8, vec2<i32>(0i)
+    %9:ptr<storage, vec2<u32>, read_write> = access %sb, 6u
+    store %9, vec2<u32>(0u)
+    %10:ptr<storage, vec2<f16>, read_write> = access %sb, 7u
+    store %10, vec2<f16>(0.0h)
+    %11:ptr<storage, vec3<f32>, read_write> = access %sb, 8u
+    store %11, vec3<f32>(0.0f)
+    %12:ptr<storage, vec3<i32>, read_write> = access %sb, 9u
+    store %12, vec3<i32>(0i)
+    %13:ptr<storage, vec3<u32>, read_write> = access %sb, 10u
+    store %13, vec3<u32>(0u)
+    %14:ptr<storage, vec3<f16>, read_write> = access %sb, 11u
+    store %14, vec3<f16>(0.0h)
+    %15:ptr<storage, vec4<f32>, read_write> = access %sb, 12u
+    store %15, vec4<f32>(0.0f)
+    %16:ptr<storage, vec4<i32>, read_write> = access %sb, 13u
+    store %16, vec4<i32>(0i)
+    %17:ptr<storage, vec4<u32>, read_write> = access %sb, 14u
+    store %17, vec4<u32>(0u)
+    %18:ptr<storage, vec4<f16>, read_write> = access %sb, 15u
+    store %18, vec4<f16>(0.0h)
+    %19:ptr<storage, mat2x2<f32>, read_write> = access %sb, 16u
+    store %19, mat2x2<f32>(vec2<f32>(0.0f))
+    %20:ptr<storage, mat2x3<f32>, read_write> = access %sb, 17u
+    store %20, mat2x3<f32>(vec3<f32>(0.0f))
+    %21:ptr<storage, mat2x4<f32>, read_write> = access %sb, 18u
+    store %21, mat2x4<f32>(vec4<f32>(0.0f))
+    %22:ptr<storage, mat3x2<f32>, read_write> = access %sb, 19u
+    store %22, mat3x2<f32>(vec2<f32>(0.0f))
+    %23:ptr<storage, mat3x3<f32>, read_write> = access %sb, 20u
+    store %23, mat3x3<f32>(vec3<f32>(0.0f))
+    %24:ptr<storage, mat3x4<f32>, read_write> = access %sb, 21u
+    store %24, mat3x4<f32>(vec4<f32>(0.0f))
+    %25:ptr<storage, mat4x2<f32>, read_write> = access %sb, 22u
+    store %25, mat4x2<f32>(vec2<f32>(0.0f))
+    %26:ptr<storage, mat4x3<f32>, read_write> = access %sb, 23u
+    store %26, mat4x3<f32>(vec3<f32>(0.0f))
+    %27:ptr<storage, mat4x4<f32>, read_write> = access %sb, 24u
+    store %27, mat4x4<f32>(vec4<f32>(0.0f))
+    %28:ptr<storage, mat2x2<f16>, read_write> = access %sb, 25u
+    store %28, mat2x2<f16>(vec2<f16>(0.0h))
+    %29:ptr<storage, mat2x3<f16>, read_write> = access %sb, 26u
+    store %29, mat2x3<f16>(vec3<f16>(0.0h))
+    %30:ptr<storage, mat2x4<f16>, read_write> = access %sb, 27u
+    store %30, mat2x4<f16>(vec4<f16>(0.0h))
+    %31:ptr<storage, mat3x2<f16>, read_write> = access %sb, 28u
+    store %31, mat3x2<f16>(vec2<f16>(0.0h))
+    %32:ptr<storage, mat3x3<f16>, read_write> = access %sb, 29u
+    store %32, mat3x3<f16>(vec3<f16>(0.0h))
+    %33:ptr<storage, mat3x4<f16>, read_write> = access %sb, 30u
+    store %33, mat3x4<f16>(vec4<f16>(0.0h))
+    %34:ptr<storage, mat4x2<f16>, read_write> = access %sb, 31u
+    store %34, mat4x2<f16>(vec2<f16>(0.0h))
+    %35:ptr<storage, mat4x3<f16>, read_write> = access %sb, 32u
+    store %35, mat4x3<f16>(vec3<f16>(0.0h))
+    %36:ptr<storage, mat4x4<f16>, read_write> = access %sb, 33u
+    store %36, mat4x4<f16>(vec4<f16>(0.0h))
+    %37:ptr<storage, array<vec3<f32>, 2>, read_write> = access %sb, 34u
+    store %37, array<vec3<f32>, 2>(vec3<f32>(0.0f))
+    %38:ptr<storage, array<mat4x2<f16>, 2>, read_write> = access %sb, 35u
+    store %38, array<mat4x2<f16>, 2>(mat4x2<f16>(vec2<f16>(0.0h)))
+    %39:ptr<storage, Inner, read_write> = access %sb, 36u
+    store %39, Inner(0i, 0.0f, 0.0h)
+    %40:ptr<storage, array<Inner, 4>, read_write> = access %sb, 37u
+    store %40, array<Inner, 4>(Inner(0i, 0.0f, 0.0h))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/array4_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/array4_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6a3ffbb
--- /dev/null
+++ b/test/tint/buffer/storage/types/array4_f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, array<f16, 4>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, array<f16, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<f16, 4> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/array4_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/array4_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9442558
--- /dev/null
+++ b/test/tint/buffer/storage/types/array4_f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, array<f32, 4>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, array<f32, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<f32, 4> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2fe002f
--- /dev/null
+++ b/test/tint/buffer/storage/types/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, f16, read> = var @binding_point(0, 0)
+  %out:ptr<storage, f16, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:f16 = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8d02974
--- /dev/null
+++ b/test/tint/buffer/storage/types/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, f32, read> = var @binding_point(0, 0)
+  %out:ptr<storage, f32, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:f32 = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/i32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..199e131
--- /dev/null
+++ b/test/tint/buffer/storage/types/i32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, i32, read> = var @binding_point(0, 0)
+  %out:ptr<storage, i32, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:i32 = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/mat2x2_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat2x2_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3ebfdc9
--- /dev/null
+++ b/test/tint/buffer/storage/types/mat2x2_f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, mat2x2<f16>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, mat2x2<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f16> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/mat2x2_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat2x2_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..726c9eb
--- /dev/null
+++ b/test/tint/buffer/storage/types/mat2x2_f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, mat2x2<f32>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f32> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/mat2x3_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat2x3_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5197c24
--- /dev/null
+++ b/test/tint/buffer/storage/types/mat2x3_f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, mat2x3<f16>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, mat2x3<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f16> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/mat2x3_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat2x3_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c7c9ccf
--- /dev/null
+++ b/test/tint/buffer/storage/types/mat2x3_f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, mat2x3<f32>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f32> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/mat2x4_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat2x4_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..99c1686
--- /dev/null
+++ b/test/tint/buffer/storage/types/mat2x4_f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, mat2x4<f16>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, mat2x4<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f16> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/mat2x4_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat2x4_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..72f0f8a
--- /dev/null
+++ b/test/tint/buffer/storage/types/mat2x4_f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, mat2x4<f32>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f32> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/mat3x2_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat3x2_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b2df7f4
--- /dev/null
+++ b/test/tint/buffer/storage/types/mat3x2_f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, mat3x2<f16>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, mat3x2<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f16> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/mat3x2_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat3x2_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ef3b803
--- /dev/null
+++ b/test/tint/buffer/storage/types/mat3x2_f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, mat3x2<f32>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f32> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/mat3x3_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat3x3_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5ae796a
--- /dev/null
+++ b/test/tint/buffer/storage/types/mat3x3_f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, mat3x3<f16>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, mat3x3<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f16> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/mat3x3_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat3x3_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e35d5b7
--- /dev/null
+++ b/test/tint/buffer/storage/types/mat3x3_f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, mat3x3<f32>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f32> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/mat3x4_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat3x4_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6cc8cc0
--- /dev/null
+++ b/test/tint/buffer/storage/types/mat3x4_f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, mat3x4<f16>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, mat3x4<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f16> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/mat3x4_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat3x4_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2497dde
--- /dev/null
+++ b/test/tint/buffer/storage/types/mat3x4_f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, mat3x4<f32>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f32> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/mat4x2_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat4x2_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9ec67a9
--- /dev/null
+++ b/test/tint/buffer/storage/types/mat4x2_f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, mat4x2<f16>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, mat4x2<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f16> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/mat4x2_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat4x2_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..03500f2
--- /dev/null
+++ b/test/tint/buffer/storage/types/mat4x2_f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, mat4x2<f32>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f32> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/mat4x3_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat4x3_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1e49ad3
--- /dev/null
+++ b/test/tint/buffer/storage/types/mat4x3_f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, mat4x3<f16>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, mat4x3<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f16> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/mat4x3_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat4x3_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e732e4
--- /dev/null
+++ b/test/tint/buffer/storage/types/mat4x3_f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, mat4x3<f32>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f32> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/mat4x4_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat4x4_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b362c32
--- /dev/null
+++ b/test/tint/buffer/storage/types/mat4x4_f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, mat4x4<f16>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, mat4x4<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f16> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/mat4x4_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat4x4_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..86b7368
--- /dev/null
+++ b/test/tint/buffer/storage/types/mat4x4_f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, mat4x4<f32>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f32> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/runtime_array_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/runtime_array_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dfe8c55
--- /dev/null
+++ b/test/tint/buffer/storage/types/runtime_array_f16.wgsl.expected.ir.msl
@@ -0,0 +1,24 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, array<f16>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, array<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, f16, read_write> = access %out, 0i
+    %5:ptr<storage, f16, read> = access %in, 0i
+    %6:f16 = load %5
+    store %4, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/runtime_array_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/runtime_array_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7ad242c
--- /dev/null
+++ b/test/tint/buffer/storage/types/runtime_array_f32.wgsl.expected.ir.msl
@@ -0,0 +1,24 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, array<f32>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, array<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, f32, read_write> = access %out, 0i
+    %5:ptr<storage, f32, read> = access %in, 0i
+    %6:f32 = load %5
+    store %4, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/struct_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/struct_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..39a82df
--- /dev/null
+++ b/test/tint/buffer/storage/types/struct_f16.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  scalar_f16:f16 @offset(0)
+  vec3_f16:vec3<f16> @offset(8)
+  mat2x4_f16:mat2x4<f16> @offset(16)
+}
+
+S = struct @align(8) {
+  inner:Inner @offset(0)
+}
+
+%b1 = block {  # root
+  %in:ptr<storage, S, read> = var @binding_point(0, 0)
+  %out:ptr<storage, S, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %t:S = load %in
+    store %out, %t
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/struct_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/struct_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..16968a5
--- /dev/null
+++ b/test/tint/buffer/storage/types/struct_f32.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  scalar_f32:f32 @offset(0)
+  vec3_f32:vec3<f32> @offset(16)
+  mat2x4_f32:mat2x4<f32> @offset(32)
+}
+
+S = struct @align(16) {
+  inner:Inner @offset(0)
+}
+
+%b1 = block {  # root
+  %in:ptr<storage, S, read> = var @binding_point(0, 0)
+  %out:ptr<storage, S, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %t:S = load %in
+    store %out, %t
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/u32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5ccb6cb
--- /dev/null
+++ b/test/tint/buffer/storage/types/u32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, u32, read> = var @binding_point(0, 0)
+  %out:ptr<storage, u32, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:u32 = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/vec2_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec2_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8b96037
--- /dev/null
+++ b/test/tint/buffer/storage/types/vec2_f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, vec2<f16>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, vec2<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:vec2<f16> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/vec2_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec2_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cb06734
--- /dev/null
+++ b/test/tint/buffer/storage/types/vec2_f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, vec2<f32>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, vec2<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:vec2<f32> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/vec2_i32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec2_i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f82dca6
--- /dev/null
+++ b/test/tint/buffer/storage/types/vec2_i32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, vec2<i32>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, vec2<i32>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:vec2<i32> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/vec2_u32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec2_u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fdcd286
--- /dev/null
+++ b/test/tint/buffer/storage/types/vec2_u32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, vec2<u32>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, vec2<u32>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:vec2<u32> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/vec3_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec3_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9e1f62e
--- /dev/null
+++ b/test/tint/buffer/storage/types/vec3_f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, vec3<f16>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, vec3<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:vec3<f16> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/vec3_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec3_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c8eb97f
--- /dev/null
+++ b/test/tint/buffer/storage/types/vec3_f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, vec3<f32>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, vec3<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:vec3<f32> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/vec3_i32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec3_i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..08501f6
--- /dev/null
+++ b/test/tint/buffer/storage/types/vec3_i32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, vec3<i32>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, vec3<i32>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:vec3<i32> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/vec3_u32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec3_u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d206212
--- /dev/null
+++ b/test/tint/buffer/storage/types/vec3_u32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, vec3<u32>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, vec3<u32>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:vec3<u32> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/vec4_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec4_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fe820d4
--- /dev/null
+++ b/test/tint/buffer/storage/types/vec4_f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, vec4<f16>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, vec4<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:vec4<f16> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/vec4_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec4_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..50164ab
--- /dev/null
+++ b/test/tint/buffer/storage/types/vec4_f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, vec4<f32>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, vec4<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:vec4<f32> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/vec4_i32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec4_i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8f6aa16
--- /dev/null
+++ b/test/tint/buffer/storage/types/vec4_i32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, vec4<i32>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, vec4<i32>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:vec4<i32> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/storage/types/vec4_u32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec4_u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aa7facd
--- /dev/null
+++ b/test/tint/buffer/storage/types/vec4_u32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %in:ptr<storage, vec4<u32>, read> = var @binding_point(0, 0)
+  %out:ptr<storage, vec4<u32>, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:vec4<u32> = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.msl b/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1b4401a4
--- /dev/null
+++ b/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.msl
@@ -0,0 +1,92 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  scalar_f32:f32 @offset(0)
+  scalar_i32:i32 @offset(4)
+  scalar_u32:u32 @offset(8)
+  vec2_f32:vec2<f32> @offset(16)
+  vec2_i32:vec2<i32> @offset(24)
+  vec2_u32:vec2<u32> @offset(32)
+  vec3_f32:vec3<f32> @offset(48)
+  vec3_i32:vec3<i32> @offset(64)
+  vec3_u32:vec3<u32> @offset(80)
+  vec4_f32:vec4<f32> @offset(96)
+  vec4_i32:vec4<i32> @offset(112)
+  vec4_u32:vec4<u32> @offset(128)
+  mat2x2_f32:mat2x2<f32> @offset(144)
+  mat2x3_f32:mat2x3<f32> @offset(160)
+  mat2x4_f32:mat2x4<f32> @offset(192)
+  mat3x2_f32:mat3x2<f32> @offset(224)
+  mat3x3_f32:mat3x3<f32> @offset(256)
+  mat3x4_f32:mat3x4<f32> @offset(304)
+  mat4x2_f32:mat4x2<f32> @offset(352)
+  mat4x3_f32:mat4x3<f32> @offset(384)
+  mat4x4_f32:mat4x4<f32> @offset(448)
+  arr2_vec3_f32:array<vec3<f32>, 2> @offset(512)
+}
+
+S = struct @align(16) {
+  arr:array<Inner, 8> @offset(0)
+}
+
+%b1 = block {  # root
+  %ub:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%idx:u32 [@local_invocation_index]):void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, f32, read> = access %ub, 0u, %idx, 0u
+    %scalar_f32:f32 = load %4
+    %6:ptr<uniform, i32, read> = access %ub, 0u, %idx, 1u
+    %scalar_i32:i32 = load %6
+    %8:ptr<uniform, u32, read> = access %ub, 0u, %idx, 2u
+    %scalar_u32:u32 = load %8
+    %10:ptr<uniform, vec2<f32>, read> = access %ub, 0u, %idx, 3u
+    %vec2_f32:vec2<f32> = load %10
+    %12:ptr<uniform, vec2<i32>, read> = access %ub, 0u, %idx, 4u
+    %vec2_i32:vec2<i32> = load %12
+    %14:ptr<uniform, vec2<u32>, read> = access %ub, 0u, %idx, 5u
+    %vec2_u32:vec2<u32> = load %14
+    %16:ptr<uniform, vec3<f32>, read> = access %ub, 0u, %idx, 6u
+    %vec3_f32:vec3<f32> = load %16
+    %18:ptr<uniform, vec3<i32>, read> = access %ub, 0u, %idx, 7u
+    %vec3_i32:vec3<i32> = load %18
+    %20:ptr<uniform, vec3<u32>, read> = access %ub, 0u, %idx, 8u
+    %vec3_u32:vec3<u32> = load %20
+    %22:ptr<uniform, vec4<f32>, read> = access %ub, 0u, %idx, 9u
+    %vec4_f32:vec4<f32> = load %22
+    %24:ptr<uniform, vec4<i32>, read> = access %ub, 0u, %idx, 10u
+    %vec4_i32:vec4<i32> = load %24
+    %26:ptr<uniform, vec4<u32>, read> = access %ub, 0u, %idx, 11u
+    %vec4_u32:vec4<u32> = load %26
+    %28:ptr<uniform, mat2x2<f32>, read> = access %ub, 0u, %idx, 12u
+    %mat2x2_f32:mat2x2<f32> = load %28
+    %30:ptr<uniform, mat2x3<f32>, read> = access %ub, 0u, %idx, 13u
+    %mat2x3_f32:mat2x3<f32> = load %30
+    %32:ptr<uniform, mat2x4<f32>, read> = access %ub, 0u, %idx, 14u
+    %mat2x4_f32:mat2x4<f32> = load %32
+    %34:ptr<uniform, mat3x2<f32>, read> = access %ub, 0u, %idx, 15u
+    %mat3x2_f32:mat3x2<f32> = load %34
+    %36:ptr<uniform, mat3x3<f32>, read> = access %ub, 0u, %idx, 16u
+    %mat3x3_f32:mat3x3<f32> = load %36
+    %38:ptr<uniform, mat3x4<f32>, read> = access %ub, 0u, %idx, 17u
+    %mat3x4_f32:mat3x4<f32> = load %38
+    %40:ptr<uniform, mat4x2<f32>, read> = access %ub, 0u, %idx, 18u
+    %mat4x2_f32:mat4x2<f32> = load %40
+    %42:ptr<uniform, mat4x3<f32>, read> = access %ub, 0u, %idx, 19u
+    %mat4x3_f32:mat4x3<f32> = load %42
+    %44:ptr<uniform, mat4x4<f32>, read> = access %ub, 0u, %idx, 20u
+    %mat4x4_f32:mat4x4<f32> = load %44
+    %46:ptr<uniform, array<vec3<f32>, 2>, read> = access %ub, 0u, %idx, 21u
+    %arr2_vec3_f32:array<vec3<f32>, 2> = load %46
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0dac2fd
--- /dev/null
+++ b/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.ir.msl
@@ -0,0 +1,134 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  scalar_f32:f32 @offset(0)
+  scalar_i32:i32 @offset(4)
+  scalar_u32:u32 @offset(8)
+  scalar_f16:f16 @offset(12)
+  vec2_f32:vec2<f32> @offset(16)
+  vec2_i32:vec2<i32> @offset(24)
+  vec2_u32:vec2<u32> @offset(32)
+  vec2_f16:vec2<f16> @offset(40)
+  vec3_f32:vec3<f32> @offset(48)
+  vec3_i32:vec3<i32> @offset(64)
+  vec3_u32:vec3<u32> @offset(80)
+  vec3_f16:vec3<f16> @offset(96)
+  vec4_f32:vec4<f32> @offset(112)
+  vec4_i32:vec4<i32> @offset(128)
+  vec4_u32:vec4<u32> @offset(144)
+  vec4_f16:vec4<f16> @offset(160)
+  mat2x2_f32:mat2x2<f32> @offset(168)
+  mat2x3_f32:mat2x3<f32> @offset(192)
+  mat2x4_f32:mat2x4<f32> @offset(224)
+  mat3x2_f32:mat3x2<f32> @offset(256)
+  mat3x3_f32:mat3x3<f32> @offset(288)
+  mat3x4_f32:mat3x4<f32> @offset(336)
+  mat4x2_f32:mat4x2<f32> @offset(384)
+  mat4x3_f32:mat4x3<f32> @offset(416)
+  mat4x4_f32:mat4x4<f32> @offset(480)
+  mat2x2_f16:mat2x2<f16> @offset(544)
+  mat2x3_f16:mat2x3<f16> @offset(552)
+  mat2x4_f16:mat2x4<f16> @offset(568)
+  mat3x2_f16:mat3x2<f16> @offset(584)
+  mat3x3_f16:mat3x3<f16> @offset(600)
+  mat3x4_f16:mat3x4<f16> @offset(624)
+  mat4x2_f16:mat4x2<f16> @offset(648)
+  mat4x3_f16:mat4x3<f16> @offset(664)
+  mat4x4_f16:mat4x4<f16> @offset(696)
+  arr2_vec3_f32:array<vec3<f32>, 2> @offset(736)
+  arr2_mat4x2_f16:array<mat4x2<f16>, 2> @offset(768)
+}
+
+S = struct @align(16) {
+  arr:array<Inner, 8> @offset(0)
+}
+
+%b1 = block {  # root
+  %ub:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%idx:u32 [@local_invocation_index]):void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, f32, read> = access %ub, 0u, %idx, 0u
+    %scalar_f32:f32 = load %4
+    %6:ptr<uniform, i32, read> = access %ub, 0u, %idx, 1u
+    %scalar_i32:i32 = load %6
+    %8:ptr<uniform, u32, read> = access %ub, 0u, %idx, 2u
+    %scalar_u32:u32 = load %8
+    %10:ptr<uniform, f16, read> = access %ub, 0u, %idx, 3u
+    %scalar_f16:f16 = load %10
+    %12:ptr<uniform, vec2<f32>, read> = access %ub, 0u, %idx, 4u
+    %vec2_f32:vec2<f32> = load %12
+    %14:ptr<uniform, vec2<i32>, read> = access %ub, 0u, %idx, 5u
+    %vec2_i32:vec2<i32> = load %14
+    %16:ptr<uniform, vec2<u32>, read> = access %ub, 0u, %idx, 6u
+    %vec2_u32:vec2<u32> = load %16
+    %18:ptr<uniform, vec2<f16>, read> = access %ub, 0u, %idx, 7u
+    %vec2_f16:vec2<f16> = load %18
+    %20:ptr<uniform, vec3<f32>, read> = access %ub, 0u, %idx, 8u
+    %vec3_f32:vec3<f32> = load %20
+    %22:ptr<uniform, vec3<i32>, read> = access %ub, 0u, %idx, 9u
+    %vec3_i32:vec3<i32> = load %22
+    %24:ptr<uniform, vec3<u32>, read> = access %ub, 0u, %idx, 10u
+    %vec3_u32:vec3<u32> = load %24
+    %26:ptr<uniform, vec3<f16>, read> = access %ub, 0u, %idx, 11u
+    %vec3_f16:vec3<f16> = load %26
+    %28:ptr<uniform, vec4<f32>, read> = access %ub, 0u, %idx, 12u
+    %vec4_f32:vec4<f32> = load %28
+    %30:ptr<uniform, vec4<i32>, read> = access %ub, 0u, %idx, 13u
+    %vec4_i32:vec4<i32> = load %30
+    %32:ptr<uniform, vec4<u32>, read> = access %ub, 0u, %idx, 14u
+    %vec4_u32:vec4<u32> = load %32
+    %34:ptr<uniform, vec4<f16>, read> = access %ub, 0u, %idx, 15u
+    %vec4_f16:vec4<f16> = load %34
+    %36:ptr<uniform, mat2x2<f32>, read> = access %ub, 0u, %idx, 16u
+    %mat2x2_f32:mat2x2<f32> = load %36
+    %38:ptr<uniform, mat2x3<f32>, read> = access %ub, 0u, %idx, 17u
+    %mat2x3_f32:mat2x3<f32> = load %38
+    %40:ptr<uniform, mat2x4<f32>, read> = access %ub, 0u, %idx, 18u
+    %mat2x4_f32:mat2x4<f32> = load %40
+    %42:ptr<uniform, mat3x2<f32>, read> = access %ub, 0u, %idx, 19u
+    %mat3x2_f32:mat3x2<f32> = load %42
+    %44:ptr<uniform, mat3x3<f32>, read> = access %ub, 0u, %idx, 20u
+    %mat3x3_f32:mat3x3<f32> = load %44
+    %46:ptr<uniform, mat3x4<f32>, read> = access %ub, 0u, %idx, 21u
+    %mat3x4_f32:mat3x4<f32> = load %46
+    %48:ptr<uniform, mat4x2<f32>, read> = access %ub, 0u, %idx, 22u
+    %mat4x2_f32:mat4x2<f32> = load %48
+    %50:ptr<uniform, mat4x3<f32>, read> = access %ub, 0u, %idx, 23u
+    %mat4x3_f32:mat4x3<f32> = load %50
+    %52:ptr<uniform, mat4x4<f32>, read> = access %ub, 0u, %idx, 24u
+    %mat4x4_f32:mat4x4<f32> = load %52
+    %54:ptr<uniform, mat2x2<f16>, read> = access %ub, 0u, %idx, 25u
+    %mat2x2_f16:mat2x2<f16> = load %54
+    %56:ptr<uniform, mat2x3<f16>, read> = access %ub, 0u, %idx, 26u
+    %mat2x3_f16:mat2x3<f16> = load %56
+    %58:ptr<uniform, mat2x4<f16>, read> = access %ub, 0u, %idx, 27u
+    %mat2x4_f16:mat2x4<f16> = load %58
+    %60:ptr<uniform, mat3x2<f16>, read> = access %ub, 0u, %idx, 28u
+    %mat3x2_f16:mat3x2<f16> = load %60
+    %62:ptr<uniform, mat3x3<f16>, read> = access %ub, 0u, %idx, 29u
+    %mat3x3_f16:mat3x3<f16> = load %62
+    %64:ptr<uniform, mat3x4<f16>, read> = access %ub, 0u, %idx, 30u
+    %mat3x4_f16:mat3x4<f16> = load %64
+    %66:ptr<uniform, mat4x2<f16>, read> = access %ub, 0u, %idx, 31u
+    %mat4x2_f16:mat4x2<f16> = load %66
+    %68:ptr<uniform, mat4x3<f16>, read> = access %ub, 0u, %idx, 32u
+    %mat4x3_f16:mat4x3<f16> = load %68
+    %70:ptr<uniform, mat4x4<f16>, read> = access %ub, 0u, %idx, 33u
+    %mat4x4_f16:mat4x4<f16> = load %70
+    %72:ptr<uniform, array<vec3<f32>, 2>, read> = access %ub, 0u, %idx, 34u
+    %arr2_vec3_f32:array<vec3<f32>, 2> = load %72
+    %74:ptr<uniform, array<mat4x2<f16>, 2>, read> = access %ub, 0u, %idx, 35u
+    %arr2_mat4x2_f16:array<mat4x2<f16>, 2> = load %74
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/static_index/read.wgsl.expected.ir.msl b/test/tint/buffer/uniform/static_index/read.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9bde499
--- /dev/null
+++ b/test/tint/buffer/uniform/static_index/read.wgsl.expected.ir.msl
@@ -0,0 +1,99 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  scalar_i32:i32 @offset(0)
+  scalar_f32:f32 @offset(16)
+}
+
+S = struct @align(16) {
+  scalar_f32:f32 @offset(0)
+  scalar_i32:i32 @offset(4)
+  scalar_u32:u32 @offset(8)
+  vec2_f32:vec2<f32> @offset(16)
+  vec2_i32:vec2<i32> @offset(24)
+  vec2_u32:vec2<u32> @offset(32)
+  vec3_f32:vec3<f32> @offset(48)
+  vec3_i32:vec3<i32> @offset(64)
+  vec3_u32:vec3<u32> @offset(80)
+  vec4_f32:vec4<f32> @offset(96)
+  vec4_i32:vec4<i32> @offset(112)
+  vec4_u32:vec4<u32> @offset(128)
+  mat2x2_f32:mat2x2<f32> @offset(144)
+  mat2x3_f32:mat2x3<f32> @offset(160)
+  mat2x4_f32:mat2x4<f32> @offset(192)
+  mat3x2_f32:mat3x2<f32> @offset(224)
+  mat3x3_f32:mat3x3<f32> @offset(256)
+  mat3x4_f32:mat3x4<f32> @offset(304)
+  mat4x2_f32:mat4x2<f32> @offset(352)
+  mat4x3_f32:mat4x3<f32> @offset(384)
+  mat4x4_f32:mat4x4<f32> @offset(448)
+  arr2_vec3_f32:array<vec3<f32>, 2> @offset(512)
+  struct_inner:Inner @offset(544)
+  array_struct_inner:array<Inner, 4> @offset(576)
+}
+
+%b1 = block {  # root
+  %ub:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, f32, read> = access %ub, 0u
+    %scalar_f32:f32 = load %3
+    %5:ptr<uniform, i32, read> = access %ub, 1u
+    %scalar_i32:i32 = load %5
+    %7:ptr<uniform, u32, read> = access %ub, 2u
+    %scalar_u32:u32 = load %7
+    %9:ptr<uniform, vec2<f32>, read> = access %ub, 3u
+    %vec2_f32:vec2<f32> = load %9
+    %11:ptr<uniform, vec2<i32>, read> = access %ub, 4u
+    %vec2_i32:vec2<i32> = load %11
+    %13:ptr<uniform, vec2<u32>, read> = access %ub, 5u
+    %vec2_u32:vec2<u32> = load %13
+    %15:ptr<uniform, vec3<f32>, read> = access %ub, 6u
+    %vec3_f32:vec3<f32> = load %15
+    %17:ptr<uniform, vec3<i32>, read> = access %ub, 7u
+    %vec3_i32:vec3<i32> = load %17
+    %19:ptr<uniform, vec3<u32>, read> = access %ub, 8u
+    %vec3_u32:vec3<u32> = load %19
+    %21:ptr<uniform, vec4<f32>, read> = access %ub, 9u
+    %vec4_f32:vec4<f32> = load %21
+    %23:ptr<uniform, vec4<i32>, read> = access %ub, 10u
+    %vec4_i32:vec4<i32> = load %23
+    %25:ptr<uniform, vec4<u32>, read> = access %ub, 11u
+    %vec4_u32:vec4<u32> = load %25
+    %27:ptr<uniform, mat2x2<f32>, read> = access %ub, 12u
+    %mat2x2_f32:mat2x2<f32> = load %27
+    %29:ptr<uniform, mat2x3<f32>, read> = access %ub, 13u
+    %mat2x3_f32:mat2x3<f32> = load %29
+    %31:ptr<uniform, mat2x4<f32>, read> = access %ub, 14u
+    %mat2x4_f32:mat2x4<f32> = load %31
+    %33:ptr<uniform, mat3x2<f32>, read> = access %ub, 15u
+    %mat3x2_f32:mat3x2<f32> = load %33
+    %35:ptr<uniform, mat3x3<f32>, read> = access %ub, 16u
+    %mat3x3_f32:mat3x3<f32> = load %35
+    %37:ptr<uniform, mat3x4<f32>, read> = access %ub, 17u
+    %mat3x4_f32:mat3x4<f32> = load %37
+    %39:ptr<uniform, mat4x2<f32>, read> = access %ub, 18u
+    %mat4x2_f32:mat4x2<f32> = load %39
+    %41:ptr<uniform, mat4x3<f32>, read> = access %ub, 19u
+    %mat4x3_f32:mat4x3<f32> = load %41
+    %43:ptr<uniform, mat4x4<f32>, read> = access %ub, 20u
+    %mat4x4_f32:mat4x4<f32> = load %43
+    %45:ptr<uniform, array<vec3<f32>, 2>, read> = access %ub, 21u
+    %arr2_vec3_f32:array<vec3<f32>, 2> = load %45
+    %47:ptr<uniform, Inner, read> = access %ub, 22u
+    %struct_inner:Inner = load %47
+    %49:ptr<uniform, array<Inner, 4>, read> = access %ub, 23u
+    %array_struct_inner:array<Inner, 4> = load %49
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/static_index/read_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/static_index/read_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f04a3af
--- /dev/null
+++ b/test/tint/buffer/uniform/static_index/read_f16.wgsl.expected.ir.msl
@@ -0,0 +1,142 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(4) {
+  scalar_i32:i32 @offset(0)
+  scalar_f32:f32 @offset(4)
+  scalar_f16:f16 @offset(8)
+}
+
+S = struct @align(16) {
+  scalar_f32:f32 @offset(0)
+  scalar_i32:i32 @offset(4)
+  scalar_u32:u32 @offset(8)
+  scalar_f16:f16 @offset(12)
+  vec2_f32:vec2<f32> @offset(16)
+  vec2_i32:vec2<i32> @offset(24)
+  vec2_u32:vec2<u32> @offset(32)
+  vec2_f16:vec2<f16> @offset(40)
+  vec3_f32:vec3<f32> @offset(48)
+  vec3_i32:vec3<i32> @offset(64)
+  vec3_u32:vec3<u32> @offset(80)
+  vec3_f16:vec3<f16> @offset(96)
+  vec4_f32:vec4<f32> @offset(112)
+  vec4_i32:vec4<i32> @offset(128)
+  vec4_u32:vec4<u32> @offset(144)
+  vec4_f16:vec4<f16> @offset(160)
+  mat2x2_f32:mat2x2<f32> @offset(168)
+  mat2x3_f32:mat2x3<f32> @offset(192)
+  mat2x4_f32:mat2x4<f32> @offset(224)
+  mat3x2_f32:mat3x2<f32> @offset(256)
+  mat3x3_f32:mat3x3<f32> @offset(288)
+  mat3x4_f32:mat3x4<f32> @offset(336)
+  mat4x2_f32:mat4x2<f32> @offset(384)
+  mat4x3_f32:mat4x3<f32> @offset(416)
+  mat4x4_f32:mat4x4<f32> @offset(480)
+  mat2x2_f16:mat2x2<f16> @offset(544)
+  mat2x3_f16:mat2x3<f16> @offset(552)
+  mat2x4_f16:mat2x4<f16> @offset(568)
+  mat3x2_f16:mat3x2<f16> @offset(584)
+  mat3x3_f16:mat3x3<f16> @offset(600)
+  mat3x4_f16:mat3x4<f16> @offset(624)
+  mat4x2_f16:mat4x2<f16> @offset(648)
+  mat4x3_f16:mat4x3<f16> @offset(664)
+  mat4x4_f16:mat4x4<f16> @offset(696)
+  arr2_vec3_f32:array<vec3<f32>, 2> @offset(736)
+  arr2_mat4x2_f16:array<mat4x2<f16>, 2> @offset(768)
+  struct_inner:Inner @offset(800)
+  array_struct_inner:array<Inner, 4> @offset(816)
+}
+
+%b1 = block {  # root
+  %ub:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, f32, read> = access %ub, 0u
+    %scalar_f32:f32 = load %3
+    %5:ptr<uniform, i32, read> = access %ub, 1u
+    %scalar_i32:i32 = load %5
+    %7:ptr<uniform, u32, read> = access %ub, 2u
+    %scalar_u32:u32 = load %7
+    %9:ptr<uniform, f16, read> = access %ub, 3u
+    %scalar_f16:f16 = load %9
+    %11:ptr<uniform, vec2<f32>, read> = access %ub, 4u
+    %vec2_f32:vec2<f32> = load %11
+    %13:ptr<uniform, vec2<i32>, read> = access %ub, 5u
+    %vec2_i32:vec2<i32> = load %13
+    %15:ptr<uniform, vec2<u32>, read> = access %ub, 6u
+    %vec2_u32:vec2<u32> = load %15
+    %17:ptr<uniform, vec2<f16>, read> = access %ub, 7u
+    %vec2_f16:vec2<f16> = load %17
+    %19:ptr<uniform, vec3<f32>, read> = access %ub, 8u
+    %vec3_f32:vec3<f32> = load %19
+    %21:ptr<uniform, vec3<i32>, read> = access %ub, 9u
+    %vec3_i32:vec3<i32> = load %21
+    %23:ptr<uniform, vec3<u32>, read> = access %ub, 10u
+    %vec3_u32:vec3<u32> = load %23
+    %25:ptr<uniform, vec3<f16>, read> = access %ub, 11u
+    %vec3_f16:vec3<f16> = load %25
+    %27:ptr<uniform, vec4<f32>, read> = access %ub, 12u
+    %vec4_f32:vec4<f32> = load %27
+    %29:ptr<uniform, vec4<i32>, read> = access %ub, 13u
+    %vec4_i32:vec4<i32> = load %29
+    %31:ptr<uniform, vec4<u32>, read> = access %ub, 14u
+    %vec4_u32:vec4<u32> = load %31
+    %33:ptr<uniform, vec4<f16>, read> = access %ub, 15u
+    %vec4_f16:vec4<f16> = load %33
+    %35:ptr<uniform, mat2x2<f32>, read> = access %ub, 16u
+    %mat2x2_f32:mat2x2<f32> = load %35
+    %37:ptr<uniform, mat2x3<f32>, read> = access %ub, 17u
+    %mat2x3_f32:mat2x3<f32> = load %37
+    %39:ptr<uniform, mat2x4<f32>, read> = access %ub, 18u
+    %mat2x4_f32:mat2x4<f32> = load %39
+    %41:ptr<uniform, mat3x2<f32>, read> = access %ub, 19u
+    %mat3x2_f32:mat3x2<f32> = load %41
+    %43:ptr<uniform, mat3x3<f32>, read> = access %ub, 20u
+    %mat3x3_f32:mat3x3<f32> = load %43
+    %45:ptr<uniform, mat3x4<f32>, read> = access %ub, 21u
+    %mat3x4_f32:mat3x4<f32> = load %45
+    %47:ptr<uniform, mat4x2<f32>, read> = access %ub, 22u
+    %mat4x2_f32:mat4x2<f32> = load %47
+    %49:ptr<uniform, mat4x3<f32>, read> = access %ub, 23u
+    %mat4x3_f32:mat4x3<f32> = load %49
+    %51:ptr<uniform, mat4x4<f32>, read> = access %ub, 24u
+    %mat4x4_f32:mat4x4<f32> = load %51
+    %53:ptr<uniform, mat2x2<f16>, read> = access %ub, 25u
+    %mat2x2_f16:mat2x2<f16> = load %53
+    %55:ptr<uniform, mat2x3<f16>, read> = access %ub, 26u
+    %mat2x3_f16:mat2x3<f16> = load %55
+    %57:ptr<uniform, mat2x4<f16>, read> = access %ub, 27u
+    %mat2x4_f16:mat2x4<f16> = load %57
+    %59:ptr<uniform, mat3x2<f16>, read> = access %ub, 28u
+    %mat3x2_f16:mat3x2<f16> = load %59
+    %61:ptr<uniform, mat3x3<f16>, read> = access %ub, 29u
+    %mat3x3_f16:mat3x3<f16> = load %61
+    %63:ptr<uniform, mat3x4<f16>, read> = access %ub, 30u
+    %mat3x4_f16:mat3x4<f16> = load %63
+    %65:ptr<uniform, mat4x2<f16>, read> = access %ub, 31u
+    %mat4x2_f16:mat4x2<f16> = load %65
+    %67:ptr<uniform, mat4x3<f16>, read> = access %ub, 32u
+    %mat4x3_f16:mat4x3<f16> = load %67
+    %69:ptr<uniform, mat4x4<f16>, read> = access %ub, 33u
+    %mat4x4_f16:mat4x4<f16> = load %69
+    %71:ptr<uniform, array<vec3<f32>, 2>, read> = access %ub, 34u
+    %arr2_vec3_f32:array<vec3<f32>, 2> = load %71
+    %73:ptr<uniform, array<mat4x2<f16>, 2>, read> = access %ub, 35u
+    %arr2_mat4x2_f16:array<mat4x2<f16>, 2> = load %73
+    %75:ptr<uniform, Inner, read> = access %ub, 36u
+    %struct_inner:Inner = load %75
+    %77:ptr<uniform, array<Inner, 4>, read> = access %ub, 37u
+    %array_struct_inner:array<Inner, 4> = load %77
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5ac9fe2
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat2x2<f32>, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<mat2x2<f32>, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, mat2x2<f32>, read> = access %p_a, %9
+    %11:i32 = call %i
+    %p_a_i_i:ptr<uniform, vec2<f32>, read> = access %p_a_i, %11
+    %l_a:array<mat2x2<f32>, 4> = load %p_a
+    %l_a_i:mat2x2<f32> = load %p_a_i
+    %l_a_i_i:vec2<f32> = load %p_a_i_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..21dd5d7
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,25 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat2x2<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<mat2x2<f32>, 4>, read> = let %a
+    %p_a_2:ptr<uniform, mat2x2<f32>, read> = access %p_a, 2i
+    %p_a_2_1:ptr<uniform, vec2<f32>, read> = access %p_a_2, 1i
+    %l_a:array<mat2x2<f32>, 4> = load %p_a
+    %l_a_i:mat2x2<f32> = load %p_a_2
+    %l_a_i_i:vec2<f32> = load %p_a_2_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x2_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2414505
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x2<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat2x2<f32>, read> = access %u, 2i
+    %4:mat2x2<f32> = load %3
+    %t:mat2x2<f32> = transpose %4
+    %6:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
+    %7:vec2<f32> = load %6
+    %8:vec2<f32> = swizzle %7, yx
+    %l:f32 = length %8
+    %10:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
+    %11:vec2<f32> = load %10
+    %12:vec2<f32> = swizzle %11, yx
+    %13:f32 = access %12, 0u
+    %a:f32 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x2_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cc22e5b
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x2<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<mat2x2<f32>, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%m:mat2x2<f32>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%v:vec2<f32>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%f:f32):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {  # %f_1: 'f'
+  %b6 = block {
+    %11:array<mat2x2<f32>, 4> = load %u
+    %12:void = call %a, %11
+    %13:ptr<uniform, mat2x2<f32>, read> = access %u, 1i
+    %14:mat2x2<f32> = load %13
+    %15:void = call %b, %14
+    %16:ptr<uniform, vec2<f32>, read> = access %u, 1i, 0i
+    %17:vec2<f32> = load %16
+    %18:vec2<f32> = swizzle %17, yx
+    %19:void = call %c, %18
+    %20:ptr<uniform, vec2<f32>, read> = access %u, 1i, 0i
+    %21:vec2<f32> = load %20
+    %22:vec2<f32> = swizzle %21, yx
+    %23:f32 = access %22, 0u
+    %24:void = call %d, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x2_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d93db77
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x2<f32>, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<mat2x2<f32>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat2x2<f32>, 4> = load %u
+    store %p, %4
+    %5:ptr<private, mat2x2<f32>, read_write> = access %p, 1i
+    %6:ptr<uniform, mat2x2<f32>, read> = access %u, 2i
+    %7:mat2x2<f32> = load %6
+    store %5, %7
+    %8:ptr<private, vec2<f32>, read_write> = access %p, 1i, 0i
+    %9:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
+    %10:vec2<f32> = load %9
+    %11:vec2<f32> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<private, vec2<f32>, read_write> = access %p, 1i, 0i
+    %13:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x2_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0bf64aa
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x2<f32>, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<mat2x2<f32>, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat2x2<f32>, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, mat2x2<f32>, read_write> = access %s, 1i
+    %6:ptr<uniform, mat2x2<f32>, read> = access %u, 2i
+    %7:mat2x2<f32> = load %6
+    store %5, %7
+    %8:ptr<storage, vec2<f32>, read_write> = access %s, 1i, 0i
+    %9:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
+    %10:vec2<f32> = load %9
+    %11:vec2<f32> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<storage, vec2<f32>, read_write> = access %s, 1i, 0i
+    %13:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x2_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6e1e695
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x2<f32>, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<mat2x2<f32>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat2x2<f32>, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, mat2x2<f32>, read_write> = access %w, 1i
+    %6:ptr<uniform, mat2x2<f32>, read> = access %u, 2i
+    %7:mat2x2<f32> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec2<f32>, read_write> = access %w, 1i, 0i
+    %9:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
+    %10:vec2<f32> = load %9
+    %11:vec2<f32> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<workgroup, vec2<f32>, read_write> = access %w, 1i, 0i
+    %13:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f954066
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat2x3<f16>, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<mat2x3<f16>, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, mat2x3<f16>, read> = access %p_a, %9
+    %11:i32 = call %i
+    %p_a_i_i:ptr<uniform, vec3<f16>, read> = access %p_a_i, %11
+    %l_a:array<mat2x3<f16>, 4> = load %p_a
+    %l_a_i:mat2x3<f16> = load %p_a_i
+    %l_a_i_i:vec3<f16> = load %p_a_i_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a3deefa
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,25 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat2x3<f16>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<mat2x3<f16>, 4>, read> = let %a
+    %p_a_2:ptr<uniform, mat2x3<f16>, read> = access %p_a, 2i
+    %p_a_2_1:ptr<uniform, vec3<f16>, read> = access %p_a_2, 1i
+    %l_a:array<mat2x3<f16>, 4> = load %p_a
+    %l_a_i:mat2x3<f16> = load %p_a_2
+    %l_a_i_i:vec3<f16> = load %p_a_2_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x3_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4360569
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x3<f16>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat2x3<f16>, read> = access %u, 2i
+    %4:mat2x3<f16> = load %3
+    %t:mat3x2<f16> = transpose %4
+    %6:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
+    %7:vec3<f16> = load %6
+    %8:vec3<f16> = swizzle %7, zxy
+    %l:f16 = length %8
+    %10:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
+    %11:vec3<f16> = load %10
+    %12:vec3<f16> = swizzle %11, zxy
+    %13:f16 = access %12, 0u
+    %a:f16 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..73777fa
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x3<f16>, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<mat2x3<f16>, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%m:mat2x3<f16>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%v:vec3<f16>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%f:f16):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {  # %f_1: 'f'
+  %b6 = block {
+    %11:array<mat2x3<f16>, 4> = load %u
+    %12:void = call %a, %11
+    %13:ptr<uniform, mat2x3<f16>, read> = access %u, 1i
+    %14:mat2x3<f16> = load %13
+    %15:void = call %b, %14
+    %16:ptr<uniform, vec3<f16>, read> = access %u, 1i, 0i
+    %17:vec3<f16> = load %16
+    %18:vec3<f16> = swizzle %17, zxy
+    %19:void = call %c, %18
+    %20:ptr<uniform, vec3<f16>, read> = access %u, 1i, 0i
+    %21:vec3<f16> = load %20
+    %22:vec3<f16> = swizzle %21, zxy
+    %23:f16 = access %22, 0u
+    %24:void = call %d, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28cef5d
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x3<f16>, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<mat2x3<f16>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat2x3<f16>, 4> = load %u
+    store %p, %4
+    %5:ptr<private, mat2x3<f16>, read_write> = access %p, 1i
+    %6:ptr<uniform, mat2x3<f16>, read> = access %u, 2i
+    %7:mat2x3<f16> = load %6
+    store %5, %7
+    %8:ptr<private, vec3<f16>, read_write> = access %p, 1i, 0i
+    %9:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
+    %10:vec3<f16> = load %9
+    %11:vec3<f16> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<private, vec3<f16>, read_write> = access %p, 1i, 0i
+    %13:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
+    %14:f16 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x3_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fd65746
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x3<f16>, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<mat2x3<f16>, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat2x3<f16>, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, mat2x3<f16>, read_write> = access %s, 1i
+    %6:ptr<uniform, mat2x3<f16>, read> = access %u, 2i
+    %7:mat2x3<f16> = load %6
+    store %5, %7
+    %8:ptr<storage, vec3<f16>, read_write> = access %s, 1i, 0i
+    %9:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
+    %10:vec3<f16> = load %9
+    %11:vec3<f16> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<storage, vec3<f16>, read_write> = access %s, 1i, 0i
+    %13:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
+    %14:f16 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x3_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..09f609b
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x3<f16>, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<mat2x3<f16>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat2x3<f16>, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, mat2x3<f16>, read_write> = access %w, 1i
+    %6:ptr<uniform, mat2x3<f16>, read> = access %u, 2i
+    %7:mat2x3<f16> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec3<f16>, read_write> = access %w, 1i, 0i
+    %9:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
+    %10:vec3<f16> = load %9
+    %11:vec3<f16> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<workgroup, vec3<f16>, read_write> = access %w, 1i, 0i
+    %13:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
+    %14:f16 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..57ea490
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat2x3<f32>, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<mat2x3<f32>, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, mat2x3<f32>, read> = access %p_a, %9
+    %11:i32 = call %i
+    %p_a_i_i:ptr<uniform, vec3<f32>, read> = access %p_a_i, %11
+    %l_a:array<mat2x3<f32>, 4> = load %p_a
+    %l_a_i:mat2x3<f32> = load %p_a_i
+    %l_a_i_i:vec3<f32> = load %p_a_i_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e31cc23e
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,25 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat2x3<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<mat2x3<f32>, 4>, read> = let %a
+    %p_a_2:ptr<uniform, mat2x3<f32>, read> = access %p_a, 2i
+    %p_a_2_1:ptr<uniform, vec3<f32>, read> = access %p_a_2, 1i
+    %l_a:array<mat2x3<f32>, 4> = load %p_a
+    %l_a_i:mat2x3<f32> = load %p_a_2
+    %l_a_i_i:vec3<f32> = load %p_a_2_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x3_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..68d6fe2
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x3<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat2x3<f32>, read> = access %u, 2i
+    %4:mat2x3<f32> = load %3
+    %t:mat3x2<f32> = transpose %4
+    %6:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %7:vec3<f32> = load %6
+    %8:vec3<f32> = swizzle %7, zxy
+    %l:f32 = length %8
+    %10:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %11:vec3<f32> = load %10
+    %12:vec3<f32> = swizzle %11, zxy
+    %13:f32 = access %12, 0u
+    %a:f32 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x3_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ec3e52e
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x3<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<mat2x3<f32>, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%m:mat2x3<f32>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%v:vec3<f32>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%f:f32):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {  # %f_1: 'f'
+  %b6 = block {
+    %11:array<mat2x3<f32>, 4> = load %u
+    %12:void = call %a, %11
+    %13:ptr<uniform, mat2x3<f32>, read> = access %u, 1i
+    %14:mat2x3<f32> = load %13
+    %15:void = call %b, %14
+    %16:ptr<uniform, vec3<f32>, read> = access %u, 1i, 0i
+    %17:vec3<f32> = load %16
+    %18:vec3<f32> = swizzle %17, zxy
+    %19:void = call %c, %18
+    %20:ptr<uniform, vec3<f32>, read> = access %u, 1i, 0i
+    %21:vec3<f32> = load %20
+    %22:vec3<f32> = swizzle %21, zxy
+    %23:f32 = access %22, 0u
+    %24:void = call %d, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x3_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eb56d2a
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x3<f32>, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<mat2x3<f32>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat2x3<f32>, 4> = load %u
+    store %p, %4
+    %5:ptr<private, mat2x3<f32>, read_write> = access %p, 1i
+    %6:ptr<uniform, mat2x3<f32>, read> = access %u, 2i
+    %7:mat2x3<f32> = load %6
+    store %5, %7
+    %8:ptr<private, vec3<f32>, read_write> = access %p, 1i, 0i
+    %9:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %10:vec3<f32> = load %9
+    %11:vec3<f32> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<private, vec3<f32>, read_write> = access %p, 1i, 0i
+    %13:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x3_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b83bd8c
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x3<f32>, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<mat2x3<f32>, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat2x3<f32>, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, mat2x3<f32>, read_write> = access %s, 1i
+    %6:ptr<uniform, mat2x3<f32>, read> = access %u, 2i
+    %7:mat2x3<f32> = load %6
+    store %5, %7
+    %8:ptr<storage, vec3<f32>, read_write> = access %s, 1i, 0i
+    %9:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %10:vec3<f32> = load %9
+    %11:vec3<f32> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<storage, vec3<f32>, read_write> = access %s, 1i, 0i
+    %13:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x3_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..98edbe4
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x3<f32>, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<mat2x3<f32>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat2x3<f32>, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, mat2x3<f32>, read_write> = access %w, 1i
+    %6:ptr<uniform, mat2x3<f32>, read> = access %u, 2i
+    %7:mat2x3<f32> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec3<f32>, read_write> = access %w, 1i, 0i
+    %9:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %10:vec3<f32> = load %9
+    %11:vec3<f32> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<workgroup, vec3<f32>, read_write> = access %w, 1i, 0i
+    %13:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4dacefe
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat2x4<f16>, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<mat2x4<f16>, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, mat2x4<f16>, read> = access %p_a, %9
+    %11:i32 = call %i
+    %p_a_i_i:ptr<uniform, vec4<f16>, read> = access %p_a_i, %11
+    %l_a:array<mat2x4<f16>, 4> = load %p_a
+    %l_a_i:mat2x4<f16> = load %p_a_i
+    %l_a_i_i:vec4<f16> = load %p_a_i_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ba7636b
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,25 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat2x4<f16>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<mat2x4<f16>, 4>, read> = let %a
+    %p_a_2:ptr<uniform, mat2x4<f16>, read> = access %p_a, 2i
+    %p_a_2_1:ptr<uniform, vec4<f16>, read> = access %p_a_2, 1i
+    %l_a:array<mat2x4<f16>, 4> = load %p_a
+    %l_a_i:mat2x4<f16> = load %p_a_2
+    %l_a_i_i:vec4<f16> = load %p_a_2_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x4_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6e548f8
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x4<f16>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat2x4<f16>, read> = access %u, 2i
+    %4:mat2x4<f16> = load %3
+    %t:mat4x2<f16> = transpose %4
+    %6:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
+    %7:vec4<f16> = load %6
+    %8:vec4<f16> = swizzle %7, ywxz
+    %l:f16 = length %8
+    %10:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
+    %11:vec4<f16> = load %10
+    %12:vec4<f16> = swizzle %11, ywxz
+    %13:f16 = access %12, 0u
+    %a:f16 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..afade6c
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x4<f16>, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<mat2x4<f16>, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%m:mat2x4<f16>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%v:vec4<f16>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%f:f16):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {  # %f_1: 'f'
+  %b6 = block {
+    %11:array<mat2x4<f16>, 4> = load %u
+    %12:void = call %a, %11
+    %13:ptr<uniform, mat2x4<f16>, read> = access %u, 1i
+    %14:mat2x4<f16> = load %13
+    %15:void = call %b, %14
+    %16:ptr<uniform, vec4<f16>, read> = access %u, 1i, 0i
+    %17:vec4<f16> = load %16
+    %18:vec4<f16> = swizzle %17, ywxz
+    %19:void = call %c, %18
+    %20:ptr<uniform, vec4<f16>, read> = access %u, 1i, 0i
+    %21:vec4<f16> = load %20
+    %22:vec4<f16> = swizzle %21, ywxz
+    %23:f16 = access %22, 0u
+    %24:void = call %d, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..18967f3
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x4<f16>, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<mat2x4<f16>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat2x4<f16>, 4> = load %u
+    store %p, %4
+    %5:ptr<private, mat2x4<f16>, read_write> = access %p, 1i
+    %6:ptr<uniform, mat2x4<f16>, read> = access %u, 2i
+    %7:mat2x4<f16> = load %6
+    store %5, %7
+    %8:ptr<private, vec4<f16>, read_write> = access %p, 1i, 0i
+    %9:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
+    %10:vec4<f16> = load %9
+    %11:vec4<f16> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<private, vec4<f16>, read_write> = access %p, 1i, 0i
+    %13:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
+    %14:f16 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x4_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bdcd2db
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x4<f16>, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<mat2x4<f16>, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat2x4<f16>, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, mat2x4<f16>, read_write> = access %s, 1i
+    %6:ptr<uniform, mat2x4<f16>, read> = access %u, 2i
+    %7:mat2x4<f16> = load %6
+    store %5, %7
+    %8:ptr<storage, vec4<f16>, read_write> = access %s, 1i, 0i
+    %9:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
+    %10:vec4<f16> = load %9
+    %11:vec4<f16> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<storage, vec4<f16>, read_write> = access %s, 1i, 0i
+    %13:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
+    %14:f16 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x4_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c7ee507
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x4<f16>, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<mat2x4<f16>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat2x4<f16>, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, mat2x4<f16>, read_write> = access %w, 1i
+    %6:ptr<uniform, mat2x4<f16>, read> = access %u, 2i
+    %7:mat2x4<f16> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec4<f16>, read_write> = access %w, 1i, 0i
+    %9:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
+    %10:vec4<f16> = load %9
+    %11:vec4<f16> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<workgroup, vec4<f16>, read_write> = access %w, 1i, 0i
+    %13:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
+    %14:f16 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aabebe3
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat2x4<f32>, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<mat2x4<f32>, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, mat2x4<f32>, read> = access %p_a, %9
+    %11:i32 = call %i
+    %p_a_i_i:ptr<uniform, vec4<f32>, read> = access %p_a_i, %11
+    %l_a:array<mat2x4<f32>, 4> = load %p_a
+    %l_a_i:mat2x4<f32> = load %p_a_i
+    %l_a_i_i:vec4<f32> = load %p_a_i_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c1506df
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,25 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat2x4<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<mat2x4<f32>, 4>, read> = let %a
+    %p_a_2:ptr<uniform, mat2x4<f32>, read> = access %p_a, 2i
+    %p_a_2_1:ptr<uniform, vec4<f32>, read> = access %p_a_2, 1i
+    %l_a:array<mat2x4<f32>, 4> = load %p_a
+    %l_a_i:mat2x4<f32> = load %p_a_2
+    %l_a_i_i:vec4<f32> = load %p_a_2_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x4_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0be87f4
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x4<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat2x4<f32>, read> = access %u, 2i
+    %4:mat2x4<f32> = load %3
+    %t:mat4x2<f32> = transpose %4
+    %6:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %7:vec4<f32> = load %6
+    %8:vec4<f32> = swizzle %7, ywxz
+    %l:f32 = length %8
+    %10:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %11:vec4<f32> = load %10
+    %12:vec4<f32> = swizzle %11, ywxz
+    %13:f32 = access %12, 0u
+    %a:f32 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x4_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f5af612
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x4<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<mat2x4<f32>, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%m:mat2x4<f32>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%v:vec4<f32>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%f:f32):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {  # %f_1: 'f'
+  %b6 = block {
+    %11:array<mat2x4<f32>, 4> = load %u
+    %12:void = call %a, %11
+    %13:ptr<uniform, mat2x4<f32>, read> = access %u, 1i
+    %14:mat2x4<f32> = load %13
+    %15:void = call %b, %14
+    %16:ptr<uniform, vec4<f32>, read> = access %u, 1i, 0i
+    %17:vec4<f32> = load %16
+    %18:vec4<f32> = swizzle %17, ywxz
+    %19:void = call %c, %18
+    %20:ptr<uniform, vec4<f32>, read> = access %u, 1i, 0i
+    %21:vec4<f32> = load %20
+    %22:vec4<f32> = swizzle %21, ywxz
+    %23:f32 = access %22, 0u
+    %24:void = call %d, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x4_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cda2a20
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x4<f32>, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<mat2x4<f32>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat2x4<f32>, 4> = load %u
+    store %p, %4
+    %5:ptr<private, mat2x4<f32>, read_write> = access %p, 1i
+    %6:ptr<uniform, mat2x4<f32>, read> = access %u, 2i
+    %7:mat2x4<f32> = load %6
+    store %5, %7
+    %8:ptr<private, vec4<f32>, read_write> = access %p, 1i, 0i
+    %9:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %10:vec4<f32> = load %9
+    %11:vec4<f32> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<private, vec4<f32>, read_write> = access %p, 1i, 0i
+    %13:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x4_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..61fe75d
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x4<f32>, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<mat2x4<f32>, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat2x4<f32>, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, mat2x4<f32>, read_write> = access %s, 1i
+    %6:ptr<uniform, mat2x4<f32>, read> = access %u, 2i
+    %7:mat2x4<f32> = load %6
+    store %5, %7
+    %8:ptr<storage, vec4<f32>, read_write> = access %s, 1i, 0i
+    %9:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %10:vec4<f32> = load %9
+    %11:vec4<f32> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<storage, vec4<f32>, read_write> = access %s, 1i, 0i
+    %13:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat2x4_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4c1b8cc
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat2x4<f32>, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<mat2x4<f32>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat2x4<f32>, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, mat2x4<f32>, read_write> = access %w, 1i
+    %6:ptr<uniform, mat2x4<f32>, read> = access %u, 2i
+    %7:mat2x4<f32> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec4<f32>, read_write> = access %w, 1i, 0i
+    %9:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %10:vec4<f32> = load %9
+    %11:vec4<f32> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<workgroup, vec4<f32>, read_write> = access %w, 1i, 0i
+    %13:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5793fcb
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat3x3<f32>, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<mat3x3<f32>, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, mat3x3<f32>, read> = access %p_a, %9
+    %11:i32 = call %i
+    %p_a_i_i:ptr<uniform, vec3<f32>, read> = access %p_a_i, %11
+    %l_a:array<mat3x3<f32>, 4> = load %p_a
+    %l_a_i:mat3x3<f32> = load %p_a_i
+    %l_a_i_i:vec3<f32> = load %p_a_i_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..74fb232
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,25 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat3x3<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<mat3x3<f32>, 4>, read> = let %a
+    %p_a_2:ptr<uniform, mat3x3<f32>, read> = access %p_a, 2i
+    %p_a_2_1:ptr<uniform, vec3<f32>, read> = access %p_a_2, 1i
+    %l_a:array<mat3x3<f32>, 4> = load %p_a
+    %l_a_i:mat3x3<f32> = load %p_a_2
+    %l_a_i_i:vec3<f32> = load %p_a_2_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat3x3_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..26bc440
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat3x3<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat3x3<f32>, read> = access %u, 2i
+    %4:mat3x3<f32> = load %3
+    %t:mat3x3<f32> = transpose %4
+    %6:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %7:vec3<f32> = load %6
+    %8:vec3<f32> = swizzle %7, zxy
+    %l:f32 = length %8
+    %10:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %11:vec3<f32> = load %10
+    %12:vec3<f32> = swizzle %11, zxy
+    %13:f32 = access %12, 0u
+    %a:f32 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat3x3_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eaffe25
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat3x3<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<mat3x3<f32>, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%m:mat3x3<f32>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%v:vec3<f32>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%f:f32):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {  # %f_1: 'f'
+  %b6 = block {
+    %11:array<mat3x3<f32>, 4> = load %u
+    %12:void = call %a, %11
+    %13:ptr<uniform, mat3x3<f32>, read> = access %u, 1i
+    %14:mat3x3<f32> = load %13
+    %15:void = call %b, %14
+    %16:ptr<uniform, vec3<f32>, read> = access %u, 1i, 0i
+    %17:vec3<f32> = load %16
+    %18:vec3<f32> = swizzle %17, zxy
+    %19:void = call %c, %18
+    %20:ptr<uniform, vec3<f32>, read> = access %u, 1i, 0i
+    %21:vec3<f32> = load %20
+    %22:vec3<f32> = swizzle %21, zxy
+    %23:f32 = access %22, 0u
+    %24:void = call %d, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat3x3_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e2df4b5
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat3x3<f32>, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<mat3x3<f32>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat3x3<f32>, 4> = load %u
+    store %p, %4
+    %5:ptr<private, mat3x3<f32>, read_write> = access %p, 1i
+    %6:ptr<uniform, mat3x3<f32>, read> = access %u, 2i
+    %7:mat3x3<f32> = load %6
+    store %5, %7
+    %8:ptr<private, vec3<f32>, read_write> = access %p, 1i, 0i
+    %9:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %10:vec3<f32> = load %9
+    %11:vec3<f32> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<private, vec3<f32>, read_write> = access %p, 1i, 0i
+    %13:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat3x3_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4671971
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat3x3<f32>, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<mat3x3<f32>, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat3x3<f32>, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, mat3x3<f32>, read_write> = access %s, 1i
+    %6:ptr<uniform, mat3x3<f32>, read> = access %u, 2i
+    %7:mat3x3<f32> = load %6
+    store %5, %7
+    %8:ptr<storage, vec3<f32>, read_write> = access %s, 1i, 0i
+    %9:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %10:vec3<f32> = load %9
+    %11:vec3<f32> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<storage, vec3<f32>, read_write> = access %s, 1i, 0i
+    %13:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat3x3_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bc9640d
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat3x3<f32>, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<mat3x3<f32>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat3x3<f32>, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, mat3x3<f32>, read_write> = access %w, 1i
+    %6:ptr<uniform, mat3x3<f32>, read> = access %u, 2i
+    %7:mat3x3<f32> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec3<f32>, read_write> = access %w, 1i, 0i
+    %9:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %10:vec3<f32> = load %9
+    %11:vec3<f32> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<workgroup, vec3<f32>, read_write> = access %w, 1i, 0i
+    %13:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6c5a57f
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat3x4<f32>, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<mat3x4<f32>, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, mat3x4<f32>, read> = access %p_a, %9
+    %11:i32 = call %i
+    %p_a_i_i:ptr<uniform, vec4<f32>, read> = access %p_a_i, %11
+    %l_a:array<mat3x4<f32>, 4> = load %p_a
+    %l_a_i:mat3x4<f32> = load %p_a_i
+    %l_a_i_i:vec4<f32> = load %p_a_i_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..96a9953
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,25 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat3x4<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<mat3x4<f32>, 4>, read> = let %a
+    %p_a_2:ptr<uniform, mat3x4<f32>, read> = access %p_a, 2i
+    %p_a_2_1:ptr<uniform, vec4<f32>, read> = access %p_a_2, 1i
+    %l_a:array<mat3x4<f32>, 4> = load %p_a
+    %l_a_i:mat3x4<f32> = load %p_a_2
+    %l_a_i_i:vec4<f32> = load %p_a_2_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat3x4_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3d0daa2
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat3x4<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat3x4<f32>, read> = access %u, 2i
+    %4:mat3x4<f32> = load %3
+    %t:mat4x3<f32> = transpose %4
+    %6:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %7:vec4<f32> = load %6
+    %8:vec4<f32> = swizzle %7, ywxz
+    %l:f32 = length %8
+    %10:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %11:vec4<f32> = load %10
+    %12:vec4<f32> = swizzle %11, ywxz
+    %13:f32 = access %12, 0u
+    %a:f32 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat3x4_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b760ded
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat3x4<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<mat3x4<f32>, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%m:mat3x4<f32>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%v:vec4<f32>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%f:f32):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {  # %f_1: 'f'
+  %b6 = block {
+    %11:array<mat3x4<f32>, 4> = load %u
+    %12:void = call %a, %11
+    %13:ptr<uniform, mat3x4<f32>, read> = access %u, 1i
+    %14:mat3x4<f32> = load %13
+    %15:void = call %b, %14
+    %16:ptr<uniform, vec4<f32>, read> = access %u, 1i, 0i
+    %17:vec4<f32> = load %16
+    %18:vec4<f32> = swizzle %17, ywxz
+    %19:void = call %c, %18
+    %20:ptr<uniform, vec4<f32>, read> = access %u, 1i, 0i
+    %21:vec4<f32> = load %20
+    %22:vec4<f32> = swizzle %21, ywxz
+    %23:f32 = access %22, 0u
+    %24:void = call %d, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat3x4_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6391b35
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat3x4<f32>, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<mat3x4<f32>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat3x4<f32>, 4> = load %u
+    store %p, %4
+    %5:ptr<private, mat3x4<f32>, read_write> = access %p, 1i
+    %6:ptr<uniform, mat3x4<f32>, read> = access %u, 2i
+    %7:mat3x4<f32> = load %6
+    store %5, %7
+    %8:ptr<private, vec4<f32>, read_write> = access %p, 1i, 0i
+    %9:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %10:vec4<f32> = load %9
+    %11:vec4<f32> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<private, vec4<f32>, read_write> = access %p, 1i, 0i
+    %13:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat3x4_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bc2a2f6
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat3x4<f32>, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<mat3x4<f32>, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat3x4<f32>, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, mat3x4<f32>, read_write> = access %s, 1i
+    %6:ptr<uniform, mat3x4<f32>, read> = access %u, 2i
+    %7:mat3x4<f32> = load %6
+    store %5, %7
+    %8:ptr<storage, vec4<f32>, read_write> = access %s, 1i, 0i
+    %9:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %10:vec4<f32> = load %9
+    %11:vec4<f32> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<storage, vec4<f32>, read_write> = access %s, 1i, 0i
+    %13:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat3x4_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cd658aa
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat3x4<f32>, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<mat3x4<f32>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat3x4<f32>, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, mat3x4<f32>, read_write> = access %w, 1i
+    %6:ptr<uniform, mat3x4<f32>, read> = access %u, 2i
+    %7:mat3x4<f32> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec4<f32>, read_write> = access %w, 1i, 0i
+    %9:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %10:vec4<f32> = load %9
+    %11:vec4<f32> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<workgroup, vec4<f32>, read_write> = access %w, 1i, 0i
+    %13:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..df5682c
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat4x2<f16>, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<mat4x2<f16>, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, mat4x2<f16>, read> = access %p_a, %9
+    %11:i32 = call %i
+    %p_a_i_i:ptr<uniform, vec2<f16>, read> = access %p_a_i, %11
+    %l_a:array<mat4x2<f16>, 4> = load %p_a
+    %l_a_i:mat4x2<f16> = load %p_a_i
+    %l_a_i_i:vec2<f16> = load %p_a_i_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5c02fd1
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,25 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat4x2<f16>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<mat4x2<f16>, 4>, read> = let %a
+    %p_a_2:ptr<uniform, mat4x2<f16>, read> = access %p_a, 2i
+    %p_a_2_1:ptr<uniform, vec2<f16>, read> = access %p_a_2, 1i
+    %l_a:array<mat4x2<f16>, 4> = load %p_a
+    %l_a_i:mat4x2<f16> = load %p_a_2
+    %l_a_i_i:vec2<f16> = load %p_a_2_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x2_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3ad4229
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x2<f16>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat4x2<f16>, read> = access %u, 2i
+    %4:mat4x2<f16> = load %3
+    %t:mat2x4<f16> = transpose %4
+    %6:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1i
+    %7:vec2<f16> = load %6
+    %8:vec2<f16> = swizzle %7, yx
+    %l:f16 = length %8
+    %10:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1i
+    %11:vec2<f16> = load %10
+    %12:vec2<f16> = swizzle %11, yx
+    %13:f16 = access %12, 0u
+    %a:f16 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..73aea88
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x2<f16>, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<mat4x2<f16>, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%m:mat4x2<f16>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%v:vec2<f16>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%f:f16):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {  # %f_1: 'f'
+  %b6 = block {
+    %11:array<mat4x2<f16>, 4> = load %u
+    %12:void = call %a, %11
+    %13:ptr<uniform, mat4x2<f16>, read> = access %u, 1i
+    %14:mat4x2<f16> = load %13
+    %15:void = call %b, %14
+    %16:ptr<uniform, vec2<f16>, read> = access %u, 1i, 0i
+    %17:vec2<f16> = load %16
+    %18:vec2<f16> = swizzle %17, yx
+    %19:void = call %c, %18
+    %20:ptr<uniform, vec2<f16>, read> = access %u, 1i, 0i
+    %21:vec2<f16> = load %20
+    %22:vec2<f16> = swizzle %21, yx
+    %23:f16 = access %22, 0u
+    %24:void = call %d, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7334c56
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x2<f16>, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<mat4x2<f16>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat4x2<f16>, 4> = load %u
+    store %p, %4
+    %5:ptr<private, mat4x2<f16>, read_write> = access %p, 1i
+    %6:ptr<uniform, mat4x2<f16>, read> = access %u, 2i
+    %7:mat4x2<f16> = load %6
+    store %5, %7
+    %8:ptr<private, vec2<f16>, read_write> = access %p, 1i, 0i
+    %9:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1i
+    %10:vec2<f16> = load %9
+    %11:vec2<f16> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<private, vec2<f16>, read_write> = access %p, 1i, 0i
+    %13:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1i
+    %14:f16 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x2_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d39980a
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x2<f16>, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<mat4x2<f16>, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat4x2<f16>, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, mat4x2<f16>, read_write> = access %s, 1i
+    %6:ptr<uniform, mat4x2<f16>, read> = access %u, 2i
+    %7:mat4x2<f16> = load %6
+    store %5, %7
+    %8:ptr<storage, vec2<f16>, read_write> = access %s, 1i, 0i
+    %9:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1i
+    %10:vec2<f16> = load %9
+    %11:vec2<f16> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<storage, vec2<f16>, read_write> = access %s, 1i, 0i
+    %13:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1i
+    %14:f16 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x2_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b7712ac
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x2<f16>, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<mat4x2<f16>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat4x2<f16>, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, mat4x2<f16>, read_write> = access %w, 1i
+    %6:ptr<uniform, mat4x2<f16>, read> = access %u, 2i
+    %7:mat4x2<f16> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec2<f16>, read_write> = access %w, 1i, 0i
+    %9:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1i
+    %10:vec2<f16> = load %9
+    %11:vec2<f16> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<workgroup, vec2<f16>, read_write> = access %w, 1i, 0i
+    %13:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1i
+    %14:f16 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ad5ce7c
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat4x2<f32>, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<mat4x2<f32>, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, mat4x2<f32>, read> = access %p_a, %9
+    %11:i32 = call %i
+    %p_a_i_i:ptr<uniform, vec2<f32>, read> = access %p_a_i, %11
+    %l_a:array<mat4x2<f32>, 4> = load %p_a
+    %l_a_i:mat4x2<f32> = load %p_a_i
+    %l_a_i_i:vec2<f32> = load %p_a_i_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b673d2e
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,25 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat4x2<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<mat4x2<f32>, 4>, read> = let %a
+    %p_a_2:ptr<uniform, mat4x2<f32>, read> = access %p_a, 2i
+    %p_a_2_1:ptr<uniform, vec2<f32>, read> = access %p_a_2, 1i
+    %l_a:array<mat4x2<f32>, 4> = load %p_a
+    %l_a_i:mat4x2<f32> = load %p_a_2
+    %l_a_i_i:vec2<f32> = load %p_a_2_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x2_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..33dcc4e
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x2<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat4x2<f32>, read> = access %u, 2i
+    %4:mat4x2<f32> = load %3
+    %t:mat2x4<f32> = transpose %4
+    %6:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
+    %7:vec2<f32> = load %6
+    %8:vec2<f32> = swizzle %7, yx
+    %l:f32 = length %8
+    %10:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
+    %11:vec2<f32> = load %10
+    %12:vec2<f32> = swizzle %11, yx
+    %13:f32 = access %12, 0u
+    %a:f32 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x2_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6cf89d2
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x2<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<mat4x2<f32>, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%m:mat4x2<f32>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%v:vec2<f32>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%f:f32):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {  # %f_1: 'f'
+  %b6 = block {
+    %11:array<mat4x2<f32>, 4> = load %u
+    %12:void = call %a, %11
+    %13:ptr<uniform, mat4x2<f32>, read> = access %u, 1i
+    %14:mat4x2<f32> = load %13
+    %15:void = call %b, %14
+    %16:ptr<uniform, vec2<f32>, read> = access %u, 1i, 0i
+    %17:vec2<f32> = load %16
+    %18:vec2<f32> = swizzle %17, yx
+    %19:void = call %c, %18
+    %20:ptr<uniform, vec2<f32>, read> = access %u, 1i, 0i
+    %21:vec2<f32> = load %20
+    %22:vec2<f32> = swizzle %21, yx
+    %23:f32 = access %22, 0u
+    %24:void = call %d, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x2_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c91288b
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x2<f32>, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<mat4x2<f32>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat4x2<f32>, 4> = load %u
+    store %p, %4
+    %5:ptr<private, mat4x2<f32>, read_write> = access %p, 1i
+    %6:ptr<uniform, mat4x2<f32>, read> = access %u, 2i
+    %7:mat4x2<f32> = load %6
+    store %5, %7
+    %8:ptr<private, vec2<f32>, read_write> = access %p, 1i, 0i
+    %9:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
+    %10:vec2<f32> = load %9
+    %11:vec2<f32> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<private, vec2<f32>, read_write> = access %p, 1i, 0i
+    %13:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x2_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..18b969d
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x2<f32>, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<mat4x2<f32>, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat4x2<f32>, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, mat4x2<f32>, read_write> = access %s, 1i
+    %6:ptr<uniform, mat4x2<f32>, read> = access %u, 2i
+    %7:mat4x2<f32> = load %6
+    store %5, %7
+    %8:ptr<storage, vec2<f32>, read_write> = access %s, 1i, 0i
+    %9:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
+    %10:vec2<f32> = load %9
+    %11:vec2<f32> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<storage, vec2<f32>, read_write> = access %s, 1i, 0i
+    %13:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x2_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..301d083
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x2<f32>, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<mat4x2<f32>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat4x2<f32>, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, mat4x2<f32>, read_write> = access %w, 1i
+    %6:ptr<uniform, mat4x2<f32>, read> = access %u, 2i
+    %7:mat4x2<f32> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec2<f32>, read_write> = access %w, 1i, 0i
+    %9:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
+    %10:vec2<f32> = load %9
+    %11:vec2<f32> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<workgroup, vec2<f32>, read_write> = access %w, 1i, 0i
+    %13:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..457bc4f
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat4x3<f16>, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<mat4x3<f16>, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, mat4x3<f16>, read> = access %p_a, %9
+    %11:i32 = call %i
+    %p_a_i_i:ptr<uniform, vec3<f16>, read> = access %p_a_i, %11
+    %l_a:array<mat4x3<f16>, 4> = load %p_a
+    %l_a_i:mat4x3<f16> = load %p_a_i
+    %l_a_i_i:vec3<f16> = load %p_a_i_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..97784a7
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,25 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat4x3<f16>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<mat4x3<f16>, 4>, read> = let %a
+    %p_a_2:ptr<uniform, mat4x3<f16>, read> = access %p_a, 2i
+    %p_a_2_1:ptr<uniform, vec3<f16>, read> = access %p_a_2, 1i
+    %l_a:array<mat4x3<f16>, 4> = load %p_a
+    %l_a_i:mat4x3<f16> = load %p_a_2
+    %l_a_i_i:vec3<f16> = load %p_a_2_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x3_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e150d2b
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x3<f16>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat4x3<f16>, read> = access %u, 2i
+    %4:mat4x3<f16> = load %3
+    %t:mat3x4<f16> = transpose %4
+    %6:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
+    %7:vec3<f16> = load %6
+    %8:vec3<f16> = swizzle %7, zxy
+    %l:f16 = length %8
+    %10:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
+    %11:vec3<f16> = load %10
+    %12:vec3<f16> = swizzle %11, zxy
+    %13:f16 = access %12, 0u
+    %a:f16 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..24516e1
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x3<f16>, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<mat4x3<f16>, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%m:mat4x3<f16>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%v:vec3<f16>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%f:f16):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {  # %f_1: 'f'
+  %b6 = block {
+    %11:array<mat4x3<f16>, 4> = load %u
+    %12:void = call %a, %11
+    %13:ptr<uniform, mat4x3<f16>, read> = access %u, 1i
+    %14:mat4x3<f16> = load %13
+    %15:void = call %b, %14
+    %16:ptr<uniform, vec3<f16>, read> = access %u, 1i, 0i
+    %17:vec3<f16> = load %16
+    %18:vec3<f16> = swizzle %17, zxy
+    %19:void = call %c, %18
+    %20:ptr<uniform, vec3<f16>, read> = access %u, 1i, 0i
+    %21:vec3<f16> = load %20
+    %22:vec3<f16> = swizzle %21, zxy
+    %23:f16 = access %22, 0u
+    %24:void = call %d, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..13a9ba2
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x3<f16>, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<mat4x3<f16>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat4x3<f16>, 4> = load %u
+    store %p, %4
+    %5:ptr<private, mat4x3<f16>, read_write> = access %p, 1i
+    %6:ptr<uniform, mat4x3<f16>, read> = access %u, 2i
+    %7:mat4x3<f16> = load %6
+    store %5, %7
+    %8:ptr<private, vec3<f16>, read_write> = access %p, 1i, 0i
+    %9:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
+    %10:vec3<f16> = load %9
+    %11:vec3<f16> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<private, vec3<f16>, read_write> = access %p, 1i, 0i
+    %13:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
+    %14:f16 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x3_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..35b4520
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x3<f16>, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<mat4x3<f16>, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat4x3<f16>, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, mat4x3<f16>, read_write> = access %s, 1i
+    %6:ptr<uniform, mat4x3<f16>, read> = access %u, 2i
+    %7:mat4x3<f16> = load %6
+    store %5, %7
+    %8:ptr<storage, vec3<f16>, read_write> = access %s, 1i, 0i
+    %9:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
+    %10:vec3<f16> = load %9
+    %11:vec3<f16> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<storage, vec3<f16>, read_write> = access %s, 1i, 0i
+    %13:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
+    %14:f16 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x3_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..006f2d7
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x3<f16>, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<mat4x3<f16>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat4x3<f16>, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, mat4x3<f16>, read_write> = access %w, 1i
+    %6:ptr<uniform, mat4x3<f16>, read> = access %u, 2i
+    %7:mat4x3<f16> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec3<f16>, read_write> = access %w, 1i, 0i
+    %9:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
+    %10:vec3<f16> = load %9
+    %11:vec3<f16> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<workgroup, vec3<f16>, read_write> = access %w, 1i, 0i
+    %13:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
+    %14:f16 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ee7a621
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat4x3<f32>, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<mat4x3<f32>, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, mat4x3<f32>, read> = access %p_a, %9
+    %11:i32 = call %i
+    %p_a_i_i:ptr<uniform, vec3<f32>, read> = access %p_a_i, %11
+    %l_a:array<mat4x3<f32>, 4> = load %p_a
+    %l_a_i:mat4x3<f32> = load %p_a_i
+    %l_a_i_i:vec3<f32> = load %p_a_i_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a5c5359
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,25 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat4x3<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<mat4x3<f32>, 4>, read> = let %a
+    %p_a_2:ptr<uniform, mat4x3<f32>, read> = access %p_a, 2i
+    %p_a_2_1:ptr<uniform, vec3<f32>, read> = access %p_a_2, 1i
+    %l_a:array<mat4x3<f32>, 4> = load %p_a
+    %l_a_i:mat4x3<f32> = load %p_a_2
+    %l_a_i_i:vec3<f32> = load %p_a_2_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x3_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..326ff09
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x3<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat4x3<f32>, read> = access %u, 2i
+    %4:mat4x3<f32> = load %3
+    %t:mat3x4<f32> = transpose %4
+    %6:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %7:vec3<f32> = load %6
+    %8:vec3<f32> = swizzle %7, zxy
+    %l:f32 = length %8
+    %10:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %11:vec3<f32> = load %10
+    %12:vec3<f32> = swizzle %11, zxy
+    %13:f32 = access %12, 0u
+    %a:f32 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x3_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..914a921
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x3<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<mat4x3<f32>, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%m:mat4x3<f32>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%v:vec3<f32>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%f:f32):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {  # %f_1: 'f'
+  %b6 = block {
+    %11:array<mat4x3<f32>, 4> = load %u
+    %12:void = call %a, %11
+    %13:ptr<uniform, mat4x3<f32>, read> = access %u, 1i
+    %14:mat4x3<f32> = load %13
+    %15:void = call %b, %14
+    %16:ptr<uniform, vec3<f32>, read> = access %u, 1i, 0i
+    %17:vec3<f32> = load %16
+    %18:vec3<f32> = swizzle %17, zxy
+    %19:void = call %c, %18
+    %20:ptr<uniform, vec3<f32>, read> = access %u, 1i, 0i
+    %21:vec3<f32> = load %20
+    %22:vec3<f32> = swizzle %21, zxy
+    %23:f32 = access %22, 0u
+    %24:void = call %d, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x3_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6eb409e
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x3<f32>, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<mat4x3<f32>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat4x3<f32>, 4> = load %u
+    store %p, %4
+    %5:ptr<private, mat4x3<f32>, read_write> = access %p, 1i
+    %6:ptr<uniform, mat4x3<f32>, read> = access %u, 2i
+    %7:mat4x3<f32> = load %6
+    store %5, %7
+    %8:ptr<private, vec3<f32>, read_write> = access %p, 1i, 0i
+    %9:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %10:vec3<f32> = load %9
+    %11:vec3<f32> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<private, vec3<f32>, read_write> = access %p, 1i, 0i
+    %13:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x3_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d015b00
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x3<f32>, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<mat4x3<f32>, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat4x3<f32>, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, mat4x3<f32>, read_write> = access %s, 1i
+    %6:ptr<uniform, mat4x3<f32>, read> = access %u, 2i
+    %7:mat4x3<f32> = load %6
+    store %5, %7
+    %8:ptr<storage, vec3<f32>, read_write> = access %s, 1i, 0i
+    %9:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %10:vec3<f32> = load %9
+    %11:vec3<f32> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<storage, vec3<f32>, read_write> = access %s, 1i, 0i
+    %13:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x3_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e32bb2
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x3<f32>, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<mat4x3<f32>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat4x3<f32>, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, mat4x3<f32>, read_write> = access %w, 1i
+    %6:ptr<uniform, mat4x3<f32>, read> = access %u, 2i
+    %7:mat4x3<f32> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec3<f32>, read_write> = access %w, 1i, 0i
+    %9:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %10:vec3<f32> = load %9
+    %11:vec3<f32> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<workgroup, vec3<f32>, read_write> = access %w, 1i, 0i
+    %13:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..021c37f
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat4x4<f16>, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<mat4x4<f16>, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, mat4x4<f16>, read> = access %p_a, %9
+    %11:i32 = call %i
+    %p_a_i_i:ptr<uniform, vec4<f16>, read> = access %p_a_i, %11
+    %l_a:array<mat4x4<f16>, 4> = load %p_a
+    %l_a_i:mat4x4<f16> = load %p_a_i
+    %l_a_i_i:vec4<f16> = load %p_a_i_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..686aa97
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,25 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat4x4<f16>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<mat4x4<f16>, 4>, read> = let %a
+    %p_a_2:ptr<uniform, mat4x4<f16>, read> = access %p_a, 2i
+    %p_a_2_1:ptr<uniform, vec4<f16>, read> = access %p_a_2, 1i
+    %l_a:array<mat4x4<f16>, 4> = load %p_a
+    %l_a_i:mat4x4<f16> = load %p_a_2
+    %l_a_i_i:vec4<f16> = load %p_a_2_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x4_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0690293
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x4<f16>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat4x4<f16>, read> = access %u, 2i
+    %4:mat4x4<f16> = load %3
+    %t:mat4x4<f16> = transpose %4
+    %6:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
+    %7:vec4<f16> = load %6
+    %8:vec4<f16> = swizzle %7, ywxz
+    %l:f16 = length %8
+    %10:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
+    %11:vec4<f16> = load %10
+    %12:vec4<f16> = swizzle %11, ywxz
+    %13:f16 = access %12, 0u
+    %a:f16 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..36a3da5
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x4<f16>, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<mat4x4<f16>, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%m:mat4x4<f16>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%v:vec4<f16>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%f:f16):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {  # %f_1: 'f'
+  %b6 = block {
+    %11:array<mat4x4<f16>, 4> = load %u
+    %12:void = call %a, %11
+    %13:ptr<uniform, mat4x4<f16>, read> = access %u, 1i
+    %14:mat4x4<f16> = load %13
+    %15:void = call %b, %14
+    %16:ptr<uniform, vec4<f16>, read> = access %u, 1i, 0i
+    %17:vec4<f16> = load %16
+    %18:vec4<f16> = swizzle %17, ywxz
+    %19:void = call %c, %18
+    %20:ptr<uniform, vec4<f16>, read> = access %u, 1i, 0i
+    %21:vec4<f16> = load %20
+    %22:vec4<f16> = swizzle %21, ywxz
+    %23:f16 = access %22, 0u
+    %24:void = call %d, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aca0afd
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x4<f16>, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<mat4x4<f16>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat4x4<f16>, 4> = load %u
+    store %p, %4
+    %5:ptr<private, mat4x4<f16>, read_write> = access %p, 1i
+    %6:ptr<uniform, mat4x4<f16>, read> = access %u, 2i
+    %7:mat4x4<f16> = load %6
+    store %5, %7
+    %8:ptr<private, vec4<f16>, read_write> = access %p, 1i, 0i
+    %9:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
+    %10:vec4<f16> = load %9
+    %11:vec4<f16> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<private, vec4<f16>, read_write> = access %p, 1i, 0i
+    %13:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
+    %14:f16 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x4_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..654eb2c
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x4<f16>, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<mat4x4<f16>, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat4x4<f16>, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, mat4x4<f16>, read_write> = access %s, 1i
+    %6:ptr<uniform, mat4x4<f16>, read> = access %u, 2i
+    %7:mat4x4<f16> = load %6
+    store %5, %7
+    %8:ptr<storage, vec4<f16>, read_write> = access %s, 1i, 0i
+    %9:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
+    %10:vec4<f16> = load %9
+    %11:vec4<f16> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<storage, vec4<f16>, read_write> = access %s, 1i, 0i
+    %13:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
+    %14:f16 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x4_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7b3bb97
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x4<f16>, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<mat4x4<f16>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat4x4<f16>, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, mat4x4<f16>, read_write> = access %w, 1i
+    %6:ptr<uniform, mat4x4<f16>, read> = access %u, 2i
+    %7:mat4x4<f16> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec4<f16>, read_write> = access %w, 1i, 0i
+    %9:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
+    %10:vec4<f16> = load %9
+    %11:vec4<f16> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<workgroup, vec4<f16>, read_write> = access %w, 1i, 0i
+    %13:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
+    %14:f16 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8e31abf
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat4x4<f32>, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<mat4x4<f32>, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, mat4x4<f32>, read> = access %p_a, %9
+    %11:i32 = call %i
+    %p_a_i_i:ptr<uniform, vec4<f32>, read> = access %p_a_i, %11
+    %l_a:array<mat4x4<f32>, 4> = load %p_a
+    %l_a_i:mat4x4<f32> = load %p_a_i
+    %l_a_i_i:vec4<f32> = load %p_a_i_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dac7881
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,25 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<uniform, array<mat4x4<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<mat4x4<f32>, 4>, read> = let %a
+    %p_a_2:ptr<uniform, mat4x4<f32>, read> = access %p_a, 2i
+    %p_a_2_1:ptr<uniform, vec4<f32>, read> = access %p_a_2, 1i
+    %l_a:array<mat4x4<f32>, 4> = load %p_a
+    %l_a_i:mat4x4<f32> = load %p_a_2
+    %l_a_i_i:vec4<f32> = load %p_a_2_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x4_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b64c380
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x4<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat4x4<f32>, read> = access %u, 2i
+    %4:mat4x4<f32> = load %3
+    %t:mat4x4<f32> = transpose %4
+    %6:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %7:vec4<f32> = load %6
+    %8:vec4<f32> = swizzle %7, ywxz
+    %l:f32 = length %8
+    %10:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %11:vec4<f32> = load %10
+    %12:vec4<f32> = swizzle %11, ywxz
+    %13:f32 = access %12, 0u
+    %a:f32 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x4_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d7ed9d4
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x4<f32>, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<mat4x4<f32>, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%m:mat4x4<f32>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%v:vec4<f32>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%f:f32):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {  # %f_1: 'f'
+  %b6 = block {
+    %11:array<mat4x4<f32>, 4> = load %u
+    %12:void = call %a, %11
+    %13:ptr<uniform, mat4x4<f32>, read> = access %u, 1i
+    %14:mat4x4<f32> = load %13
+    %15:void = call %b, %14
+    %16:ptr<uniform, vec4<f32>, read> = access %u, 1i, 0i
+    %17:vec4<f32> = load %16
+    %18:vec4<f32> = swizzle %17, ywxz
+    %19:void = call %c, %18
+    %20:ptr<uniform, vec4<f32>, read> = access %u, 1i, 0i
+    %21:vec4<f32> = load %20
+    %22:vec4<f32> = swizzle %21, ywxz
+    %23:f32 = access %22, 0u
+    %24:void = call %d, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x4_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5af12e4
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x4<f32>, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<mat4x4<f32>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat4x4<f32>, 4> = load %u
+    store %p, %4
+    %5:ptr<private, mat4x4<f32>, read_write> = access %p, 1i
+    %6:ptr<uniform, mat4x4<f32>, read> = access %u, 2i
+    %7:mat4x4<f32> = load %6
+    store %5, %7
+    %8:ptr<private, vec4<f32>, read_write> = access %p, 1i, 0i
+    %9:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %10:vec4<f32> = load %9
+    %11:vec4<f32> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<private, vec4<f32>, read_write> = access %p, 1i, 0i
+    %13:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x4_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..908cb40
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x4<f32>, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<mat4x4<f32>, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat4x4<f32>, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, mat4x4<f32>, read_write> = access %s, 1i
+    %6:ptr<uniform, mat4x4<f32>, read> = access %u, 2i
+    %7:mat4x4<f32> = load %6
+    store %5, %7
+    %8:ptr<storage, vec4<f32>, read_write> = access %s, 1i, 0i
+    %9:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %10:vec4<f32> = load %9
+    %11:vec4<f32> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<storage, vec4<f32>, read_write> = access %s, 1i, 0i
+    %13:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/array/mat4x4_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..67968ab
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, array<mat4x4<f32>, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<mat4x4<f32>, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<mat4x4<f32>, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, mat4x4<f32>, read_write> = access %w, 1i
+    %6:ptr<uniform, mat4x4<f32>, read> = access %u, 2i
+    %7:mat4x4<f32> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec4<f32>, read_write> = access %w, 1i, 0i
+    %9:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %10:vec4<f32> = load %9
+    %11:vec4<f32> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<workgroup, vec4<f32>, read_write> = access %w, 1i, 0i
+    %13:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
+    %14:f32 = load_vector_element %13, 0u
+    store_vector_element %12, 0u, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fbc617f
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(4) {
+  m:mat2x2<f16> @offset(0)
+}
+
+Outer = struct @align(4) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, Outer, read> = access %p_a, %9
+    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
+    %12:i32 = call %i
+    %p_a_i_a_i:ptr<uniform, Inner, read> = access %p_a_i_a, %12
+    %p_a_i_a_i_m:ptr<uniform, mat2x2<f16>, read> = access %p_a_i_a_i, 0u
+    %15:i32 = call %i
+    %p_a_i_a_i_m_i:ptr<uniform, vec2<f16>, read> = access %p_a_i_a_i_m, %15
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_i:Outer = load %p_a_i
+    %l_a_i_a:array<Inner, 4> = load %p_a_i_a
+    %l_a_i_a_i:Inner = load %p_a_i_a_i
+    %l_a_i_a_i_m:mat2x2<f16> = load %p_a_i_a_i_m
+    %l_a_i_a_i_m_i:vec2<f16> = load %p_a_i_a_i_m_i
+    %23:i32 = call %i
+    %l_a_i_a_i_m_i_i:f16 = load_vector_element %p_a_i_a_i_m_i, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x2_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8adb3af
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(4) {
+  m:mat2x2<f16> @offset(0)
+}
+
+Outer = struct @align(4) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %p_a_3:ptr<uniform, Outer, read> = access %p_a, 3i
+    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
+    %p_a_3_a_2:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
+    %p_a_3_a_2_m:ptr<uniform, mat2x2<f16>, read> = access %p_a_3_a_2, 0u
+    %p_a_3_a_2_m_1:ptr<uniform, vec2<f16>, read> = access %p_a_3_a_2_m, 1i
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_3:Outer = load %p_a_3
+    %l_a_3_a:array<Inner, 4> = load %p_a_3_a
+    %l_a_3_a_2:Inner = load %p_a_3_a_2
+    %l_a_3_a_2_m:mat2x2<f16> = load %p_a_3_a_2_m
+    %l_a_3_a_2_m_1:vec2<f16> = load %p_a_3_a_2_m_1
+    %l_a_3_a_2_m_1_0:f16 = load_vector_element %p_a_3_a_2_m_1, 0i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x2_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ee58ed5
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x2<f16> @offset(4)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat2x2<f16>, read> = access %u, 2i, 1u
+    %4:mat2x2<f16> = load %3
+    %t:mat2x2<f16> = transpose %4
+    %6:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %7:vec2<f16> = load %6
+    %8:vec2<f16> = swizzle %7, yx
+    %l:f16 = length %8
+    %10:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %11:vec2<f16> = load %10
+    %12:vec2<f16> = swizzle %11, yx
+    %13:f16 = access %12, 0u
+    %a:f16 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7b6f153
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x2<f16> @offset(4)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<S, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%s:S):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%m:mat2x2<f16>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%v:vec2<f16>):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%e = func(%f:f16):void -> %b6 {
+  %b6 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {  # %f_1: 'f'
+  %b7 = block {
+    %13:array<S, 4> = load %u
+    %14:void = call %a, %13
+    %15:ptr<uniform, S, read> = access %u, 2i
+    %16:S = load %15
+    %17:void = call %b, %16
+    %18:ptr<uniform, mat2x2<f16>, read> = access %u, 2i, 1u
+    %19:mat2x2<f16> = load %18
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %22:vec2<f16> = load %21
+    %23:vec2<f16> = swizzle %22, yx
+    %24:void = call %d, %23
+    %25:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %26:vec2<f16> = load %25
+    %27:vec2<f16> = swizzle %26, yx
+    %28:f16 = access %27, 0u
+    %29:void = call %e, %28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x2_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9d19d27
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x2<f16> @offset(4)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %p, %4
+    %5:ptr<private, S, read_write> = access %p, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<private, mat2x2<f16>, read_write> = access %p, 3i, 1u
+    %9:ptr<uniform, mat2x2<f16>, read> = access %u, 2i, 1u
+    %10:mat2x2<f16> = load %9
+    store %8, %10
+    %11:ptr<private, vec2<f16>, read_write> = access %p, 1i, 1u, 0i
+    %12:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec2<f16> = load %12
+    %14:vec2<f16> = swizzle %13, yx
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x2_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6f50496
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x2<f16> @offset(4)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<S, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, S, read_write> = access %s, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<storage, mat2x2<f16>, read_write> = access %s, 3i, 1u
+    %9:ptr<uniform, mat2x2<f16>, read> = access %u, 2i, 1u
+    %10:mat2x2<f16> = load %9
+    store %8, %10
+    %11:ptr<storage, vec2<f16>, read_write> = access %s, 1i, 1u, 0i
+    %12:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec2<f16> = load %12
+    %14:vec2<f16> = swizzle %13, yx
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x2_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7448cf1
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x2<f16> @offset(4)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, S, read_write> = access %w, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<workgroup, mat2x2<f16>, read_write> = access %w, 3i, 1u
+    %9:ptr<uniform, mat2x2<f16>, read> = access %u, 2i, 1u
+    %10:mat2x2<f16> = load %9
+    store %8, %10
+    %11:ptr<workgroup, vec2<f16>, read_write> = access %w, 1i, 1u, 0i
+    %12:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec2<f16> = load %12
+    %14:vec2<f16> = swizzle %13, yx
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ae44278
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  m:mat2x2<f32> @offset(0)
+}
+
+Outer = struct @align(8) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, Outer, read> = access %p_a, %9
+    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
+    %12:i32 = call %i
+    %p_a_i_a_i:ptr<uniform, Inner, read> = access %p_a_i_a, %12
+    %p_a_i_a_i_m:ptr<uniform, mat2x2<f32>, read> = access %p_a_i_a_i, 0u
+    %15:i32 = call %i
+    %p_a_i_a_i_m_i:ptr<uniform, vec2<f32>, read> = access %p_a_i_a_i_m, %15
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_i:Outer = load %p_a_i
+    %l_a_i_a:array<Inner, 4> = load %p_a_i_a
+    %l_a_i_a_i:Inner = load %p_a_i_a_i
+    %l_a_i_a_i_m:mat2x2<f32> = load %p_a_i_a_i_m
+    %l_a_i_a_i_m_i:vec2<f32> = load %p_a_i_a_i_m_i
+    %23:i32 = call %i
+    %l_a_i_a_i_m_i_i:f32 = load_vector_element %p_a_i_a_i_m_i, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5831ff8
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  m:mat2x2<f32> @offset(0)
+}
+
+Outer = struct @align(8) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %p_a_3:ptr<uniform, Outer, read> = access %p_a, 3i
+    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
+    %p_a_3_a_2:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
+    %p_a_3_a_2_m:ptr<uniform, mat2x2<f32>, read> = access %p_a_3_a_2, 0u
+    %p_a_3_a_2_m_1:ptr<uniform, vec2<f32>, read> = access %p_a_3_a_2_m, 1i
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_3:Outer = load %p_a_3
+    %l_a_3_a:array<Inner, 4> = load %p_a_3_a
+    %l_a_3_a_2:Inner = load %p_a_3_a_2
+    %l_a_3_a_2_m:mat2x2<f32> = load %p_a_3_a_2_m
+    %l_a_3_a_2_m_1:vec2<f32> = load %p_a_3_a_2_m_1
+    %l_a_3_a_2_m_1_0:f32 = load_vector_element %p_a_3_a_2_m_1, 0i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x2_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..93147df
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x2<f32> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat2x2<f32>, read> = access %u, 2i, 1u
+    %4:mat2x2<f32> = load %3
+    %t:mat2x2<f32> = transpose %4
+    %6:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %7:vec2<f32> = load %6
+    %8:vec2<f32> = swizzle %7, yx
+    %l:f32 = length %8
+    %10:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %11:vec2<f32> = load %10
+    %12:vec2<f32> = swizzle %11, yx
+    %13:f32 = access %12, 0u
+    %a:f32 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x2_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..371ef18
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x2<f32> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<S, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%s:S):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%m:mat2x2<f32>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%v:vec2<f32>):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%e = func(%f:f32):void -> %b6 {
+  %b6 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {  # %f_1: 'f'
+  %b7 = block {
+    %13:array<S, 4> = load %u
+    %14:void = call %a, %13
+    %15:ptr<uniform, S, read> = access %u, 2i
+    %16:S = load %15
+    %17:void = call %b, %16
+    %18:ptr<uniform, mat2x2<f32>, read> = access %u, 2i, 1u
+    %19:mat2x2<f32> = load %18
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %22:vec2<f32> = load %21
+    %23:vec2<f32> = swizzle %22, yx
+    %24:void = call %d, %23
+    %25:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %26:vec2<f32> = load %25
+    %27:vec2<f32> = swizzle %26, yx
+    %28:f32 = access %27, 0u
+    %29:void = call %e, %28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x2_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4ec9b1c
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x2<f32> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %p, %4
+    %5:ptr<private, S, read_write> = access %p, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<private, mat2x2<f32>, read_write> = access %p, 3i, 1u
+    %9:ptr<uniform, mat2x2<f32>, read> = access %u, 2i, 1u
+    %10:mat2x2<f32> = load %9
+    store %8, %10
+    %11:ptr<private, vec2<f32>, read_write> = access %p, 1i, 1u, 0i
+    %12:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec2<f32> = load %12
+    %14:vec2<f32> = swizzle %13, yx
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x2_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2cd5d99
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x2<f32> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<S, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, S, read_write> = access %s, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<storage, mat2x2<f32>, read_write> = access %s, 3i, 1u
+    %9:ptr<uniform, mat2x2<f32>, read> = access %u, 2i, 1u
+    %10:mat2x2<f32> = load %9
+    store %8, %10
+    %11:ptr<storage, vec2<f32>, read_write> = access %s, 1i, 1u, 0i
+    %12:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec2<f32> = load %12
+    %14:vec2<f32> = swizzle %13, yx
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x2_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a38c168
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x2<f32> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, S, read_write> = access %w, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<workgroup, mat2x2<f32>, read_write> = access %w, 3i, 1u
+    %9:ptr<uniform, mat2x2<f32>, read> = access %u, 2i, 1u
+    %10:mat2x2<f32> = load %9
+    store %8, %10
+    %11:ptr<workgroup, vec2<f32>, read_write> = access %w, 1i, 1u, 0i
+    %12:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec2<f32> = load %12
+    %14:vec2<f32> = swizzle %13, yx
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..11f8e98
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  m:mat2x3<f16> @offset(0)
+}
+
+Outer = struct @align(8) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, Outer, read> = access %p_a, %9
+    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
+    %12:i32 = call %i
+    %p_a_i_a_i:ptr<uniform, Inner, read> = access %p_a_i_a, %12
+    %p_a_i_a_i_m:ptr<uniform, mat2x3<f16>, read> = access %p_a_i_a_i, 0u
+    %15:i32 = call %i
+    %p_a_i_a_i_m_i:ptr<uniform, vec3<f16>, read> = access %p_a_i_a_i_m, %15
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_i:Outer = load %p_a_i
+    %l_a_i_a:array<Inner, 4> = load %p_a_i_a
+    %l_a_i_a_i:Inner = load %p_a_i_a_i
+    %l_a_i_a_i_m:mat2x3<f16> = load %p_a_i_a_i_m
+    %l_a_i_a_i_m_i:vec3<f16> = load %p_a_i_a_i_m_i
+    %23:i32 = call %i
+    %l_a_i_a_i_m_i_i:f16 = load_vector_element %p_a_i_a_i_m_i, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c6be965
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  m:mat2x3<f16> @offset(0)
+}
+
+Outer = struct @align(8) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %p_a_3:ptr<uniform, Outer, read> = access %p_a, 3i
+    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
+    %p_a_3_a_2:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
+    %p_a_3_a_2_m:ptr<uniform, mat2x3<f16>, read> = access %p_a_3_a_2, 0u
+    %p_a_3_a_2_m_1:ptr<uniform, vec3<f16>, read> = access %p_a_3_a_2_m, 1i
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_3:Outer = load %p_a_3
+    %l_a_3_a:array<Inner, 4> = load %p_a_3_a
+    %l_a_3_a_2:Inner = load %p_a_3_a_2
+    %l_a_3_a_2_m:mat2x3<f16> = load %p_a_3_a_2_m
+    %l_a_3_a_2_m_1:vec3<f16> = load %p_a_3_a_2_m_1
+    %l_a_3_a_2_m_1_0:f16 = load_vector_element %p_a_3_a_2_m_1, 0i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x3_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9964f17
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x3<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat2x3<f16>, read> = access %u, 2i, 1u
+    %4:mat2x3<f16> = load %3
+    %t:mat3x2<f16> = transpose %4
+    %6:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %7:vec3<f16> = load %6
+    %8:vec3<f16> = swizzle %7, zxy
+    %l:f16 = length %8
+    %10:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %11:vec3<f16> = load %10
+    %12:vec3<f16> = swizzle %11, zxy
+    %13:f16 = access %12, 0u
+    %a:f16 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cd1accb
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x3<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<S, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%s:S):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%m:mat2x3<f16>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%v:vec3<f16>):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%e = func(%f:f16):void -> %b6 {
+  %b6 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {  # %f_1: 'f'
+  %b7 = block {
+    %13:array<S, 4> = load %u
+    %14:void = call %a, %13
+    %15:ptr<uniform, S, read> = access %u, 2i
+    %16:S = load %15
+    %17:void = call %b, %16
+    %18:ptr<uniform, mat2x3<f16>, read> = access %u, 2i, 1u
+    %19:mat2x3<f16> = load %18
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %22:vec3<f16> = load %21
+    %23:vec3<f16> = swizzle %22, zxy
+    %24:void = call %d, %23
+    %25:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %26:vec3<f16> = load %25
+    %27:vec3<f16> = swizzle %26, zxy
+    %28:f16 = access %27, 0u
+    %29:void = call %e, %28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x3_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0aad148
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x3<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %p, %4
+    %5:ptr<private, S, read_write> = access %p, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<private, mat2x3<f16>, read_write> = access %p, 3i, 1u
+    %9:ptr<uniform, mat2x3<f16>, read> = access %u, 2i, 1u
+    %10:mat2x3<f16> = load %9
+    store %8, %10
+    %11:ptr<private, vec3<f16>, read_write> = access %p, 1i, 1u, 0i
+    %12:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec3<f16> = load %12
+    %14:vec3<f16> = swizzle %13, zxy
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x3_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f2f2e43
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x3<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<S, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, S, read_write> = access %s, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<storage, mat2x3<f16>, read_write> = access %s, 3i, 1u
+    %9:ptr<uniform, mat2x3<f16>, read> = access %u, 2i, 1u
+    %10:mat2x3<f16> = load %9
+    store %8, %10
+    %11:ptr<storage, vec3<f16>, read_write> = access %s, 1i, 1u, 0i
+    %12:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec3<f16> = load %12
+    %14:vec3<f16> = swizzle %13, zxy
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x3_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d064fce
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x3<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, S, read_write> = access %w, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<workgroup, mat2x3<f16>, read_write> = access %w, 3i, 1u
+    %9:ptr<uniform, mat2x3<f16>, read> = access %u, 2i, 1u
+    %10:mat2x3<f16> = load %9
+    store %8, %10
+    %11:ptr<workgroup, vec3<f16>, read_write> = access %w, 1i, 1u, 0i
+    %12:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec3<f16> = load %12
+    %14:vec3<f16> = swizzle %13, zxy
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8b3526e
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  m:mat2x3<f32> @offset(0)
+}
+
+Outer = struct @align(16) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, Outer, read> = access %p_a, %9
+    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
+    %12:i32 = call %i
+    %p_a_i_a_i:ptr<uniform, Inner, read> = access %p_a_i_a, %12
+    %p_a_i_a_i_m:ptr<uniform, mat2x3<f32>, read> = access %p_a_i_a_i, 0u
+    %15:i32 = call %i
+    %p_a_i_a_i_m_i:ptr<uniform, vec3<f32>, read> = access %p_a_i_a_i_m, %15
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_i:Outer = load %p_a_i
+    %l_a_i_a:array<Inner, 4> = load %p_a_i_a
+    %l_a_i_a_i:Inner = load %p_a_i_a_i
+    %l_a_i_a_i_m:mat2x3<f32> = load %p_a_i_a_i_m
+    %l_a_i_a_i_m_i:vec3<f32> = load %p_a_i_a_i_m_i
+    %23:i32 = call %i
+    %l_a_i_a_i_m_i_i:f32 = load_vector_element %p_a_i_a_i_m_i, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aead604
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  m:mat2x3<f32> @offset(0)
+}
+
+Outer = struct @align(16) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %p_a_3:ptr<uniform, Outer, read> = access %p_a, 3i
+    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
+    %p_a_3_a_2:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
+    %p_a_3_a_2_m:ptr<uniform, mat2x3<f32>, read> = access %p_a_3_a_2, 0u
+    %p_a_3_a_2_m_1:ptr<uniform, vec3<f32>, read> = access %p_a_3_a_2_m, 1i
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_3:Outer = load %p_a_3
+    %l_a_3_a:array<Inner, 4> = load %p_a_3_a
+    %l_a_3_a_2:Inner = load %p_a_3_a_2
+    %l_a_3_a_2_m:mat2x3<f32> = load %p_a_3_a_2_m
+    %l_a_3_a_2_m_1:vec3<f32> = load %p_a_3_a_2_m_1
+    %l_a_3_a_2_m_1_0:f32 = load_vector_element %p_a_3_a_2_m_1, 0i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x3_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1c91d74
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x3<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat2x3<f32>, read> = access %u, 2i, 1u
+    %4:mat2x3<f32> = load %3
+    %t:mat3x2<f32> = transpose %4
+    %6:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %7:vec3<f32> = load %6
+    %8:vec3<f32> = swizzle %7, zxy
+    %l:f32 = length %8
+    %10:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %11:vec3<f32> = load %10
+    %12:vec3<f32> = swizzle %11, zxy
+    %13:f32 = access %12, 0u
+    %a:f32 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x3_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9a45b4d
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x3<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<S, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%s:S):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%m:mat2x3<f32>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%v:vec3<f32>):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%e = func(%f:f32):void -> %b6 {
+  %b6 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {  # %f_1: 'f'
+  %b7 = block {
+    %13:array<S, 4> = load %u
+    %14:void = call %a, %13
+    %15:ptr<uniform, S, read> = access %u, 2i
+    %16:S = load %15
+    %17:void = call %b, %16
+    %18:ptr<uniform, mat2x3<f32>, read> = access %u, 2i, 1u
+    %19:mat2x3<f32> = load %18
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %22:vec3<f32> = load %21
+    %23:vec3<f32> = swizzle %22, zxy
+    %24:void = call %d, %23
+    %25:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %26:vec3<f32> = load %25
+    %27:vec3<f32> = swizzle %26, zxy
+    %28:f32 = access %27, 0u
+    %29:void = call %e, %28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x3_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..493693a
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x3<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %p, %4
+    %5:ptr<private, S, read_write> = access %p, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<private, mat2x3<f32>, read_write> = access %p, 3i, 1u
+    %9:ptr<uniform, mat2x3<f32>, read> = access %u, 2i, 1u
+    %10:mat2x3<f32> = load %9
+    store %8, %10
+    %11:ptr<private, vec3<f32>, read_write> = access %p, 1i, 1u, 0i
+    %12:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec3<f32> = load %12
+    %14:vec3<f32> = swizzle %13, zxy
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x3_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..55b828f
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x3<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<S, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, S, read_write> = access %s, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<storage, mat2x3<f32>, read_write> = access %s, 3i, 1u
+    %9:ptr<uniform, mat2x3<f32>, read> = access %u, 2i, 1u
+    %10:mat2x3<f32> = load %9
+    store %8, %10
+    %11:ptr<storage, vec3<f32>, read_write> = access %s, 1i, 1u, 0i
+    %12:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec3<f32> = load %12
+    %14:vec3<f32> = swizzle %13, zxy
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x3_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..22f01dd
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x3<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, S, read_write> = access %w, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<workgroup, mat2x3<f32>, read_write> = access %w, 3i, 1u
+    %9:ptr<uniform, mat2x3<f32>, read> = access %u, 2i, 1u
+    %10:mat2x3<f32> = load %9
+    store %8, %10
+    %11:ptr<workgroup, vec3<f32>, read_write> = access %w, 1i, 1u, 0i
+    %12:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec3<f32> = load %12
+    %14:vec3<f32> = swizzle %13, zxy
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8b5f584
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  m:mat2x4<f16> @offset(0)
+}
+
+Outer = struct @align(8) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, Outer, read> = access %p_a, %9
+    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
+    %12:i32 = call %i
+    %p_a_i_a_i:ptr<uniform, Inner, read> = access %p_a_i_a, %12
+    %p_a_i_a_i_m:ptr<uniform, mat2x4<f16>, read> = access %p_a_i_a_i, 0u
+    %15:i32 = call %i
+    %p_a_i_a_i_m_i:ptr<uniform, vec4<f16>, read> = access %p_a_i_a_i_m, %15
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_i:Outer = load %p_a_i
+    %l_a_i_a:array<Inner, 4> = load %p_a_i_a
+    %l_a_i_a_i:Inner = load %p_a_i_a_i
+    %l_a_i_a_i_m:mat2x4<f16> = load %p_a_i_a_i_m
+    %l_a_i_a_i_m_i:vec4<f16> = load %p_a_i_a_i_m_i
+    %23:i32 = call %i
+    %l_a_i_a_i_m_i_i:f16 = load_vector_element %p_a_i_a_i_m_i, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8939c27
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  m:mat2x4<f16> @offset(0)
+}
+
+Outer = struct @align(8) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %p_a_3:ptr<uniform, Outer, read> = access %p_a, 3i
+    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
+    %p_a_3_a_2:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
+    %p_a_3_a_2_m:ptr<uniform, mat2x4<f16>, read> = access %p_a_3_a_2, 0u
+    %p_a_3_a_2_m_1:ptr<uniform, vec4<f16>, read> = access %p_a_3_a_2_m, 1i
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_3:Outer = load %p_a_3
+    %l_a_3_a:array<Inner, 4> = load %p_a_3_a
+    %l_a_3_a_2:Inner = load %p_a_3_a_2
+    %l_a_3_a_2_m:mat2x4<f16> = load %p_a_3_a_2_m
+    %l_a_3_a_2_m_1:vec4<f16> = load %p_a_3_a_2_m_1
+    %l_a_3_a_2_m_1_0:f16 = load_vector_element %p_a_3_a_2_m_1, 0i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x4_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e18150f
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x4<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat2x4<f16>, read> = access %u, 2i, 1u
+    %4:mat2x4<f16> = load %3
+    %t:mat4x2<f16> = transpose %4
+    %6:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %7:vec4<f16> = load %6
+    %8:vec4<f16> = swizzle %7, ywxz
+    %l:f16 = length %8
+    %10:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %11:vec4<f16> = load %10
+    %12:vec4<f16> = swizzle %11, ywxz
+    %13:f16 = access %12, 0u
+    %a:f16 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..25ab058
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x4<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<S, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%s:S):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%m:mat2x4<f16>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%v:vec4<f16>):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%e = func(%f:f16):void -> %b6 {
+  %b6 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {  # %f_1: 'f'
+  %b7 = block {
+    %13:array<S, 4> = load %u
+    %14:void = call %a, %13
+    %15:ptr<uniform, S, read> = access %u, 2i
+    %16:S = load %15
+    %17:void = call %b, %16
+    %18:ptr<uniform, mat2x4<f16>, read> = access %u, 2i, 1u
+    %19:mat2x4<f16> = load %18
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %22:vec4<f16> = load %21
+    %23:vec4<f16> = swizzle %22, ywxz
+    %24:void = call %d, %23
+    %25:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %26:vec4<f16> = load %25
+    %27:vec4<f16> = swizzle %26, ywxz
+    %28:f16 = access %27, 0u
+    %29:void = call %e, %28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x4_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..521e1bb
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x4<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %p, %4
+    %5:ptr<private, S, read_write> = access %p, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<private, mat2x4<f16>, read_write> = access %p, 3i, 1u
+    %9:ptr<uniform, mat2x4<f16>, read> = access %u, 2i, 1u
+    %10:mat2x4<f16> = load %9
+    store %8, %10
+    %11:ptr<private, vec4<f16>, read_write> = access %p, 1i, 1u, 0i
+    %12:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec4<f16> = load %12
+    %14:vec4<f16> = swizzle %13, ywxz
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x4_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b637eff
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x4<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<S, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, S, read_write> = access %s, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<storage, mat2x4<f16>, read_write> = access %s, 3i, 1u
+    %9:ptr<uniform, mat2x4<f16>, read> = access %u, 2i, 1u
+    %10:mat2x4<f16> = load %9
+    store %8, %10
+    %11:ptr<storage, vec4<f16>, read_write> = access %s, 1i, 1u, 0i
+    %12:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec4<f16> = load %12
+    %14:vec4<f16> = swizzle %13, ywxz
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x4_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e59160c
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x4<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, S, read_write> = access %w, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<workgroup, mat2x4<f16>, read_write> = access %w, 3i, 1u
+    %9:ptr<uniform, mat2x4<f16>, read> = access %u, 2i, 1u
+    %10:mat2x4<f16> = load %9
+    store %8, %10
+    %11:ptr<workgroup, vec4<f16>, read_write> = access %w, 1i, 1u, 0i
+    %12:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec4<f16> = load %12
+    %14:vec4<f16> = swizzle %13, ywxz
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0e36171
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  m:mat2x4<f32> @offset(0)
+}
+
+Outer = struct @align(16) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, Outer, read> = access %p_a, %9
+    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
+    %12:i32 = call %i
+    %p_a_i_a_i:ptr<uniform, Inner, read> = access %p_a_i_a, %12
+    %p_a_i_a_i_m:ptr<uniform, mat2x4<f32>, read> = access %p_a_i_a_i, 0u
+    %15:i32 = call %i
+    %p_a_i_a_i_m_i:ptr<uniform, vec4<f32>, read> = access %p_a_i_a_i_m, %15
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_i:Outer = load %p_a_i
+    %l_a_i_a:array<Inner, 4> = load %p_a_i_a
+    %l_a_i_a_i:Inner = load %p_a_i_a_i
+    %l_a_i_a_i_m:mat2x4<f32> = load %p_a_i_a_i_m
+    %l_a_i_a_i_m_i:vec4<f32> = load %p_a_i_a_i_m_i
+    %23:i32 = call %i
+    %l_a_i_a_i_m_i_i:f32 = load_vector_element %p_a_i_a_i_m_i, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..632a216
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  m:mat2x4<f32> @offset(0)
+}
+
+Outer = struct @align(16) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %p_a_3:ptr<uniform, Outer, read> = access %p_a, 3i
+    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
+    %p_a_3_a_2:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
+    %p_a_3_a_2_m:ptr<uniform, mat2x4<f32>, read> = access %p_a_3_a_2, 0u
+    %p_a_3_a_2_m_1:ptr<uniform, vec4<f32>, read> = access %p_a_3_a_2_m, 1i
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_3:Outer = load %p_a_3
+    %l_a_3_a:array<Inner, 4> = load %p_a_3_a
+    %l_a_3_a_2:Inner = load %p_a_3_a_2
+    %l_a_3_a_2_m:mat2x4<f32> = load %p_a_3_a_2_m
+    %l_a_3_a_2_m_1:vec4<f32> = load %p_a_3_a_2_m_1
+    %l_a_3_a_2_m_1_0:f32 = load_vector_element %p_a_3_a_2_m_1, 0i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x4_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b2da235
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x4<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat2x4<f32>, read> = access %u, 2i, 1u
+    %4:mat2x4<f32> = load %3
+    %t:mat4x2<f32> = transpose %4
+    %6:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %7:vec4<f32> = load %6
+    %8:vec4<f32> = swizzle %7, ywxz
+    %l:f32 = length %8
+    %10:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %11:vec4<f32> = load %10
+    %12:vec4<f32> = swizzle %11, ywxz
+    %13:f32 = access %12, 0u
+    %a:f32 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x4_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0c24a20
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x4<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<S, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%s:S):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%m:mat2x4<f32>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%v:vec4<f32>):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%e = func(%f:f32):void -> %b6 {
+  %b6 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {  # %f_1: 'f'
+  %b7 = block {
+    %13:array<S, 4> = load %u
+    %14:void = call %a, %13
+    %15:ptr<uniform, S, read> = access %u, 2i
+    %16:S = load %15
+    %17:void = call %b, %16
+    %18:ptr<uniform, mat2x4<f32>, read> = access %u, 2i, 1u
+    %19:mat2x4<f32> = load %18
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %22:vec4<f32> = load %21
+    %23:vec4<f32> = swizzle %22, ywxz
+    %24:void = call %d, %23
+    %25:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %26:vec4<f32> = load %25
+    %27:vec4<f32> = swizzle %26, ywxz
+    %28:f32 = access %27, 0u
+    %29:void = call %e, %28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x4_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..476762d
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x4<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %p, %4
+    %5:ptr<private, S, read_write> = access %p, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<private, mat2x4<f32>, read_write> = access %p, 3i, 1u
+    %9:ptr<uniform, mat2x4<f32>, read> = access %u, 2i, 1u
+    %10:mat2x4<f32> = load %9
+    store %8, %10
+    %11:ptr<private, vec4<f32>, read_write> = access %p, 1i, 1u, 0i
+    %12:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec4<f32> = load %12
+    %14:vec4<f32> = swizzle %13, ywxz
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x4_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..00874ef
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x4<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<S, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, S, read_write> = access %s, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<storage, mat2x4<f32>, read_write> = access %s, 3i, 1u
+    %9:ptr<uniform, mat2x4<f32>, read> = access %u, 2i, 1u
+    %10:mat2x4<f32> = load %9
+    store %8, %10
+    %11:ptr<storage, vec4<f32>, read_write> = access %s, 1i, 1u, 0i
+    %12:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec4<f32> = load %12
+    %14:vec4<f32> = swizzle %13, ywxz
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat2x4_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7af440c
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat2x4<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, S, read_write> = access %w, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<workgroup, mat2x4<f32>, read_write> = access %w, 3i, 1u
+    %9:ptr<uniform, mat2x4<f32>, read> = access %u, 2i, 1u
+    %10:mat2x4<f32> = load %9
+    store %8, %10
+    %11:ptr<workgroup, vec4<f32>, read_write> = access %w, 1i, 1u, 0i
+    %12:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec4<f32> = load %12
+    %14:vec4<f32> = swizzle %13, ywxz
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..af95beb
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(4) {
+  m:mat3x2<f16> @offset(0)
+}
+
+Outer = struct @align(4) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, Outer, read> = access %p_a, %9
+    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
+    %12:i32 = call %i
+    %p_a_i_a_i:ptr<uniform, Inner, read> = access %p_a_i_a, %12
+    %p_a_i_a_i_m:ptr<uniform, mat3x2<f16>, read> = access %p_a_i_a_i, 0u
+    %15:i32 = call %i
+    %p_a_i_a_i_m_i:ptr<uniform, vec2<f16>, read> = access %p_a_i_a_i_m, %15
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_i:Outer = load %p_a_i
+    %l_a_i_a:array<Inner, 4> = load %p_a_i_a
+    %l_a_i_a_i:Inner = load %p_a_i_a_i
+    %l_a_i_a_i_m:mat3x2<f16> = load %p_a_i_a_i_m
+    %l_a_i_a_i_m_i:vec2<f16> = load %p_a_i_a_i_m_i
+    %23:i32 = call %i
+    %l_a_i_a_i_m_i_i:f16 = load_vector_element %p_a_i_a_i_m_i, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x2_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8ebf0b1
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(4) {
+  m:mat3x2<f16> @offset(0)
+}
+
+Outer = struct @align(4) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %p_a_3:ptr<uniform, Outer, read> = access %p_a, 3i
+    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
+    %p_a_3_a_2:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
+    %p_a_3_a_2_m:ptr<uniform, mat3x2<f16>, read> = access %p_a_3_a_2, 0u
+    %p_a_3_a_2_m_1:ptr<uniform, vec2<f16>, read> = access %p_a_3_a_2_m, 1i
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_3:Outer = load %p_a_3
+    %l_a_3_a:array<Inner, 4> = load %p_a_3_a
+    %l_a_3_a_2:Inner = load %p_a_3_a_2
+    %l_a_3_a_2_m:mat3x2<f16> = load %p_a_3_a_2_m
+    %l_a_3_a_2_m_1:vec2<f16> = load %p_a_3_a_2_m_1
+    %l_a_3_a_2_m_1_0:f16 = load_vector_element %p_a_3_a_2_m_1, 0i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x2_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ab3afba
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x2<f16> @offset(4)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat3x2<f16>, read> = access %u, 2i, 1u
+    %4:mat3x2<f16> = load %3
+    %t:mat2x3<f16> = transpose %4
+    %6:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %7:vec2<f16> = load %6
+    %8:vec2<f16> = swizzle %7, yx
+    %l:f16 = length %8
+    %10:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %11:vec2<f16> = load %10
+    %12:vec2<f16> = swizzle %11, yx
+    %13:f16 = access %12, 0u
+    %a:f16 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..30c80ed
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x2<f16> @offset(4)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<S, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%s:S):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%m:mat3x2<f16>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%v:vec2<f16>):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%e = func(%f:f16):void -> %b6 {
+  %b6 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {  # %f_1: 'f'
+  %b7 = block {
+    %13:array<S, 4> = load %u
+    %14:void = call %a, %13
+    %15:ptr<uniform, S, read> = access %u, 2i
+    %16:S = load %15
+    %17:void = call %b, %16
+    %18:ptr<uniform, mat3x2<f16>, read> = access %u, 2i, 1u
+    %19:mat3x2<f16> = load %18
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %22:vec2<f16> = load %21
+    %23:vec2<f16> = swizzle %22, yx
+    %24:void = call %d, %23
+    %25:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %26:vec2<f16> = load %25
+    %27:vec2<f16> = swizzle %26, yx
+    %28:f16 = access %27, 0u
+    %29:void = call %e, %28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x2_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..50cbbbe
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x2<f16> @offset(4)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %p, %4
+    %5:ptr<private, S, read_write> = access %p, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<private, mat3x2<f16>, read_write> = access %p, 3i, 1u
+    %9:ptr<uniform, mat3x2<f16>, read> = access %u, 2i, 1u
+    %10:mat3x2<f16> = load %9
+    store %8, %10
+    %11:ptr<private, vec2<f16>, read_write> = access %p, 1i, 1u, 0i
+    %12:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec2<f16> = load %12
+    %14:vec2<f16> = swizzle %13, yx
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x2_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5035ff6
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x2<f16> @offset(4)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<S, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, S, read_write> = access %s, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<storage, mat3x2<f16>, read_write> = access %s, 3i, 1u
+    %9:ptr<uniform, mat3x2<f16>, read> = access %u, 2i, 1u
+    %10:mat3x2<f16> = load %9
+    store %8, %10
+    %11:ptr<storage, vec2<f16>, read_write> = access %s, 1i, 1u, 0i
+    %12:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec2<f16> = load %12
+    %14:vec2<f16> = swizzle %13, yx
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x2_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0265a2b
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x2<f16> @offset(4)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, S, read_write> = access %w, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<workgroup, mat3x2<f16>, read_write> = access %w, 3i, 1u
+    %9:ptr<uniform, mat3x2<f16>, read> = access %u, 2i, 1u
+    %10:mat3x2<f16> = load %9
+    store %8, %10
+    %11:ptr<workgroup, vec2<f16>, read_write> = access %w, 1i, 1u, 0i
+    %12:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec2<f16> = load %12
+    %14:vec2<f16> = swizzle %13, yx
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..33038c5
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  m:mat3x2<f32> @offset(0)
+}
+
+Outer = struct @align(8) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, Outer, read> = access %p_a, %9
+    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
+    %12:i32 = call %i
+    %p_a_i_a_i:ptr<uniform, Inner, read> = access %p_a_i_a, %12
+    %p_a_i_a_i_m:ptr<uniform, mat3x2<f32>, read> = access %p_a_i_a_i, 0u
+    %15:i32 = call %i
+    %p_a_i_a_i_m_i:ptr<uniform, vec2<f32>, read> = access %p_a_i_a_i_m, %15
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_i:Outer = load %p_a_i
+    %l_a_i_a:array<Inner, 4> = load %p_a_i_a
+    %l_a_i_a_i:Inner = load %p_a_i_a_i
+    %l_a_i_a_i_m:mat3x2<f32> = load %p_a_i_a_i_m
+    %l_a_i_a_i_m_i:vec2<f32> = load %p_a_i_a_i_m_i
+    %23:i32 = call %i
+    %l_a_i_a_i_m_i_i:f32 = load_vector_element %p_a_i_a_i_m_i, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x2_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..067cbdf
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  m:mat3x2<f32> @offset(0)
+}
+
+Outer = struct @align(8) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %p_a_3:ptr<uniform, Outer, read> = access %p_a, 3i
+    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
+    %p_a_3_a_2:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
+    %p_a_3_a_2_m:ptr<uniform, mat3x2<f32>, read> = access %p_a_3_a_2, 0u
+    %p_a_3_a_2_m_1:ptr<uniform, vec2<f32>, read> = access %p_a_3_a_2_m, 1i
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_3:Outer = load %p_a_3
+    %l_a_3_a:array<Inner, 4> = load %p_a_3_a
+    %l_a_3_a_2:Inner = load %p_a_3_a_2
+    %l_a_3_a_2_m:mat3x2<f32> = load %p_a_3_a_2_m
+    %l_a_3_a_2_m_1:vec2<f32> = load %p_a_3_a_2_m_1
+    %l_a_3_a_2_m_1_0:f32 = load_vector_element %p_a_3_a_2_m_1, 0i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x2_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..20432b7
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x2<f32> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat3x2<f32>, read> = access %u, 2i, 1u
+    %4:mat3x2<f32> = load %3
+    %t:mat2x3<f32> = transpose %4
+    %6:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %7:vec2<f32> = load %6
+    %8:vec2<f32> = swizzle %7, yx
+    %l:f32 = length %8
+    %10:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %11:vec2<f32> = load %10
+    %12:vec2<f32> = swizzle %11, yx
+    %13:f32 = access %12, 0u
+    %a:f32 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x2_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fe2e732
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x2<f32> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<S, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%s:S):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%m:mat3x2<f32>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%v:vec2<f32>):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%e = func(%f:f32):void -> %b6 {
+  %b6 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {  # %f_1: 'f'
+  %b7 = block {
+    %13:array<S, 4> = load %u
+    %14:void = call %a, %13
+    %15:ptr<uniform, S, read> = access %u, 2i
+    %16:S = load %15
+    %17:void = call %b, %16
+    %18:ptr<uniform, mat3x2<f32>, read> = access %u, 2i, 1u
+    %19:mat3x2<f32> = load %18
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %22:vec2<f32> = load %21
+    %23:vec2<f32> = swizzle %22, yx
+    %24:void = call %d, %23
+    %25:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %26:vec2<f32> = load %25
+    %27:vec2<f32> = swizzle %26, yx
+    %28:f32 = access %27, 0u
+    %29:void = call %e, %28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x2_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ab86742
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x2<f32> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %p, %4
+    %5:ptr<private, S, read_write> = access %p, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<private, mat3x2<f32>, read_write> = access %p, 3i, 1u
+    %9:ptr<uniform, mat3x2<f32>, read> = access %u, 2i, 1u
+    %10:mat3x2<f32> = load %9
+    store %8, %10
+    %11:ptr<private, vec2<f32>, read_write> = access %p, 1i, 1u, 0i
+    %12:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec2<f32> = load %12
+    %14:vec2<f32> = swizzle %13, yx
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x2_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b586ee2
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x2<f32> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<S, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, S, read_write> = access %s, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<storage, mat3x2<f32>, read_write> = access %s, 3i, 1u
+    %9:ptr<uniform, mat3x2<f32>, read> = access %u, 2i, 1u
+    %10:mat3x2<f32> = load %9
+    store %8, %10
+    %11:ptr<storage, vec2<f32>, read_write> = access %s, 1i, 1u, 0i
+    %12:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec2<f32> = load %12
+    %14:vec2<f32> = swizzle %13, yx
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x2_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..57ec35f
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x2<f32> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, S, read_write> = access %w, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<workgroup, mat3x2<f32>, read_write> = access %w, 3i, 1u
+    %9:ptr<uniform, mat3x2<f32>, read> = access %u, 2i, 1u
+    %10:mat3x2<f32> = load %9
+    store %8, %10
+    %11:ptr<workgroup, vec2<f32>, read_write> = access %w, 1i, 1u, 0i
+    %12:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec2<f32> = load %12
+    %14:vec2<f32> = swizzle %13, yx
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6fdda89
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  m:mat3x3<f16> @offset(0)
+}
+
+Outer = struct @align(8) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, Outer, read> = access %p_a, %9
+    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
+    %12:i32 = call %i
+    %p_a_i_a_i:ptr<uniform, Inner, read> = access %p_a_i_a, %12
+    %p_a_i_a_i_m:ptr<uniform, mat3x3<f16>, read> = access %p_a_i_a_i, 0u
+    %15:i32 = call %i
+    %p_a_i_a_i_m_i:ptr<uniform, vec3<f16>, read> = access %p_a_i_a_i_m, %15
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_i:Outer = load %p_a_i
+    %l_a_i_a:array<Inner, 4> = load %p_a_i_a
+    %l_a_i_a_i:Inner = load %p_a_i_a_i
+    %l_a_i_a_i_m:mat3x3<f16> = load %p_a_i_a_i_m
+    %l_a_i_a_i_m_i:vec3<f16> = load %p_a_i_a_i_m_i
+    %23:i32 = call %i
+    %l_a_i_a_i_m_i_i:f16 = load_vector_element %p_a_i_a_i_m_i, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x3_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..897cc7c
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  m:mat3x3<f16> @offset(0)
+}
+
+Outer = struct @align(8) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %p_a_3:ptr<uniform, Outer, read> = access %p_a, 3i
+    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
+    %p_a_3_a_2:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
+    %p_a_3_a_2_m:ptr<uniform, mat3x3<f16>, read> = access %p_a_3_a_2, 0u
+    %p_a_3_a_2_m_1:ptr<uniform, vec3<f16>, read> = access %p_a_3_a_2_m, 1i
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_3:Outer = load %p_a_3
+    %l_a_3_a:array<Inner, 4> = load %p_a_3_a
+    %l_a_3_a_2:Inner = load %p_a_3_a_2
+    %l_a_3_a_2_m:mat3x3<f16> = load %p_a_3_a_2_m
+    %l_a_3_a_2_m_1:vec3<f16> = load %p_a_3_a_2_m_1
+    %l_a_3_a_2_m_1_0:f16 = load_vector_element %p_a_3_a_2_m_1, 0i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x3_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..027e047
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x3<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat3x3<f16>, read> = access %u, 2i, 1u
+    %4:mat3x3<f16> = load %3
+    %t:mat3x3<f16> = transpose %4
+    %6:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %7:vec3<f16> = load %6
+    %8:vec3<f16> = swizzle %7, zxy
+    %l:f16 = length %8
+    %10:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %11:vec3<f16> = load %10
+    %12:vec3<f16> = swizzle %11, zxy
+    %13:f16 = access %12, 0u
+    %a:f16 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bc8ae86
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x3<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<S, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%s:S):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%m:mat3x3<f16>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%v:vec3<f16>):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%e = func(%f:f16):void -> %b6 {
+  %b6 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {  # %f_1: 'f'
+  %b7 = block {
+    %13:array<S, 4> = load %u
+    %14:void = call %a, %13
+    %15:ptr<uniform, S, read> = access %u, 2i
+    %16:S = load %15
+    %17:void = call %b, %16
+    %18:ptr<uniform, mat3x3<f16>, read> = access %u, 2i, 1u
+    %19:mat3x3<f16> = load %18
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %22:vec3<f16> = load %21
+    %23:vec3<f16> = swizzle %22, zxy
+    %24:void = call %d, %23
+    %25:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %26:vec3<f16> = load %25
+    %27:vec3<f16> = swizzle %26, zxy
+    %28:f16 = access %27, 0u
+    %29:void = call %e, %28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x3_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..066e525
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x3<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %p, %4
+    %5:ptr<private, S, read_write> = access %p, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<private, mat3x3<f16>, read_write> = access %p, 3i, 1u
+    %9:ptr<uniform, mat3x3<f16>, read> = access %u, 2i, 1u
+    %10:mat3x3<f16> = load %9
+    store %8, %10
+    %11:ptr<private, vec3<f16>, read_write> = access %p, 1i, 1u, 0i
+    %12:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec3<f16> = load %12
+    %14:vec3<f16> = swizzle %13, zxy
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x3_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a1c8203
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x3<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<S, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, S, read_write> = access %s, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<storage, mat3x3<f16>, read_write> = access %s, 3i, 1u
+    %9:ptr<uniform, mat3x3<f16>, read> = access %u, 2i, 1u
+    %10:mat3x3<f16> = load %9
+    store %8, %10
+    %11:ptr<storage, vec3<f16>, read_write> = access %s, 1i, 1u, 0i
+    %12:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec3<f16> = load %12
+    %14:vec3<f16> = swizzle %13, zxy
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x3_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f6f0e36
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x3<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, S, read_write> = access %w, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<workgroup, mat3x3<f16>, read_write> = access %w, 3i, 1u
+    %9:ptr<uniform, mat3x3<f16>, read> = access %u, 2i, 1u
+    %10:mat3x3<f16> = load %9
+    store %8, %10
+    %11:ptr<workgroup, vec3<f16>, read_write> = access %w, 1i, 1u, 0i
+    %12:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec3<f16> = load %12
+    %14:vec3<f16> = swizzle %13, zxy
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0b9fdd3
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  m:mat3x3<f32> @offset(0)
+}
+
+Outer = struct @align(16) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, Outer, read> = access %p_a, %9
+    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
+    %12:i32 = call %i
+    %p_a_i_a_i:ptr<uniform, Inner, read> = access %p_a_i_a, %12
+    %p_a_i_a_i_m:ptr<uniform, mat3x3<f32>, read> = access %p_a_i_a_i, 0u
+    %15:i32 = call %i
+    %p_a_i_a_i_m_i:ptr<uniform, vec3<f32>, read> = access %p_a_i_a_i_m, %15
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_i:Outer = load %p_a_i
+    %l_a_i_a:array<Inner, 4> = load %p_a_i_a
+    %l_a_i_a_i:Inner = load %p_a_i_a_i
+    %l_a_i_a_i_m:mat3x3<f32> = load %p_a_i_a_i_m
+    %l_a_i_a_i_m_i:vec3<f32> = load %p_a_i_a_i_m_i
+    %23:i32 = call %i
+    %l_a_i_a_i_m_i_i:f32 = load_vector_element %p_a_i_a_i_m_i, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..10a63ff
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  m:mat3x3<f32> @offset(0)
+}
+
+Outer = struct @align(16) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %p_a_3:ptr<uniform, Outer, read> = access %p_a, 3i
+    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
+    %p_a_3_a_2:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
+    %p_a_3_a_2_m:ptr<uniform, mat3x3<f32>, read> = access %p_a_3_a_2, 0u
+    %p_a_3_a_2_m_1:ptr<uniform, vec3<f32>, read> = access %p_a_3_a_2_m, 1i
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_3:Outer = load %p_a_3
+    %l_a_3_a:array<Inner, 4> = load %p_a_3_a
+    %l_a_3_a_2:Inner = load %p_a_3_a_2
+    %l_a_3_a_2_m:mat3x3<f32> = load %p_a_3_a_2_m
+    %l_a_3_a_2_m_1:vec3<f32> = load %p_a_3_a_2_m_1
+    %l_a_3_a_2_m_1_0:f32 = load_vector_element %p_a_3_a_2_m_1, 0i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x3_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b97f516
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x3<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat3x3<f32>, read> = access %u, 2i, 1u
+    %4:mat3x3<f32> = load %3
+    %t:mat3x3<f32> = transpose %4
+    %6:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %7:vec3<f32> = load %6
+    %8:vec3<f32> = swizzle %7, zxy
+    %l:f32 = length %8
+    %10:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %11:vec3<f32> = load %10
+    %12:vec3<f32> = swizzle %11, zxy
+    %13:f32 = access %12, 0u
+    %a:f32 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x3_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b8da91e
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x3<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<S, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%s:S):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%m:mat3x3<f32>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%v:vec3<f32>):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%e = func(%f:f32):void -> %b6 {
+  %b6 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {  # %f_1: 'f'
+  %b7 = block {
+    %13:array<S, 4> = load %u
+    %14:void = call %a, %13
+    %15:ptr<uniform, S, read> = access %u, 2i
+    %16:S = load %15
+    %17:void = call %b, %16
+    %18:ptr<uniform, mat3x3<f32>, read> = access %u, 2i, 1u
+    %19:mat3x3<f32> = load %18
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %22:vec3<f32> = load %21
+    %23:vec3<f32> = swizzle %22, zxy
+    %24:void = call %d, %23
+    %25:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %26:vec3<f32> = load %25
+    %27:vec3<f32> = swizzle %26, zxy
+    %28:f32 = access %27, 0u
+    %29:void = call %e, %28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x3_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1bae12e
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x3<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %p, %4
+    %5:ptr<private, S, read_write> = access %p, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<private, mat3x3<f32>, read_write> = access %p, 3i, 1u
+    %9:ptr<uniform, mat3x3<f32>, read> = access %u, 2i, 1u
+    %10:mat3x3<f32> = load %9
+    store %8, %10
+    %11:ptr<private, vec3<f32>, read_write> = access %p, 1i, 1u, 0i
+    %12:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec3<f32> = load %12
+    %14:vec3<f32> = swizzle %13, zxy
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x3_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a650360
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x3<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<S, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, S, read_write> = access %s, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<storage, mat3x3<f32>, read_write> = access %s, 3i, 1u
+    %9:ptr<uniform, mat3x3<f32>, read> = access %u, 2i, 1u
+    %10:mat3x3<f32> = load %9
+    store %8, %10
+    %11:ptr<storage, vec3<f32>, read_write> = access %s, 1i, 1u, 0i
+    %12:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec3<f32> = load %12
+    %14:vec3<f32> = swizzle %13, zxy
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x3_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..923c8d5
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x3<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, S, read_write> = access %w, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<workgroup, mat3x3<f32>, read_write> = access %w, 3i, 1u
+    %9:ptr<uniform, mat3x3<f32>, read> = access %u, 2i, 1u
+    %10:mat3x3<f32> = load %9
+    store %8, %10
+    %11:ptr<workgroup, vec3<f32>, read_write> = access %w, 1i, 1u, 0i
+    %12:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec3<f32> = load %12
+    %14:vec3<f32> = swizzle %13, zxy
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..da4d04c
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  m:mat3x4<f16> @offset(0)
+}
+
+Outer = struct @align(8) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, Outer, read> = access %p_a, %9
+    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
+    %12:i32 = call %i
+    %p_a_i_a_i:ptr<uniform, Inner, read> = access %p_a_i_a, %12
+    %p_a_i_a_i_m:ptr<uniform, mat3x4<f16>, read> = access %p_a_i_a_i, 0u
+    %15:i32 = call %i
+    %p_a_i_a_i_m_i:ptr<uniform, vec4<f16>, read> = access %p_a_i_a_i_m, %15
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_i:Outer = load %p_a_i
+    %l_a_i_a:array<Inner, 4> = load %p_a_i_a
+    %l_a_i_a_i:Inner = load %p_a_i_a_i
+    %l_a_i_a_i_m:mat3x4<f16> = load %p_a_i_a_i_m
+    %l_a_i_a_i_m_i:vec4<f16> = load %p_a_i_a_i_m_i
+    %23:i32 = call %i
+    %l_a_i_a_i_m_i_i:f16 = load_vector_element %p_a_i_a_i_m_i, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x4_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..49433b1
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  m:mat3x4<f16> @offset(0)
+}
+
+Outer = struct @align(8) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %p_a_3:ptr<uniform, Outer, read> = access %p_a, 3i
+    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
+    %p_a_3_a_2:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
+    %p_a_3_a_2_m:ptr<uniform, mat3x4<f16>, read> = access %p_a_3_a_2, 0u
+    %p_a_3_a_2_m_1:ptr<uniform, vec4<f16>, read> = access %p_a_3_a_2_m, 1i
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_3:Outer = load %p_a_3
+    %l_a_3_a:array<Inner, 4> = load %p_a_3_a
+    %l_a_3_a_2:Inner = load %p_a_3_a_2
+    %l_a_3_a_2_m:mat3x4<f16> = load %p_a_3_a_2_m
+    %l_a_3_a_2_m_1:vec4<f16> = load %p_a_3_a_2_m_1
+    %l_a_3_a_2_m_1_0:f16 = load_vector_element %p_a_3_a_2_m_1, 0i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x4_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..21f6138
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x4<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat3x4<f16>, read> = access %u, 2i, 1u
+    %4:mat3x4<f16> = load %3
+    %t:mat4x3<f16> = transpose %4
+    %6:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %7:vec4<f16> = load %6
+    %8:vec4<f16> = swizzle %7, ywxz
+    %l:f16 = length %8
+    %10:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %11:vec4<f16> = load %10
+    %12:vec4<f16> = swizzle %11, ywxz
+    %13:f16 = access %12, 0u
+    %a:f16 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..316f6a9
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x4<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<S, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%s:S):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%m:mat3x4<f16>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%v:vec4<f16>):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%e = func(%f:f16):void -> %b6 {
+  %b6 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {  # %f_1: 'f'
+  %b7 = block {
+    %13:array<S, 4> = load %u
+    %14:void = call %a, %13
+    %15:ptr<uniform, S, read> = access %u, 2i
+    %16:S = load %15
+    %17:void = call %b, %16
+    %18:ptr<uniform, mat3x4<f16>, read> = access %u, 2i, 1u
+    %19:mat3x4<f16> = load %18
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %22:vec4<f16> = load %21
+    %23:vec4<f16> = swizzle %22, ywxz
+    %24:void = call %d, %23
+    %25:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %26:vec4<f16> = load %25
+    %27:vec4<f16> = swizzle %26, ywxz
+    %28:f16 = access %27, 0u
+    %29:void = call %e, %28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x4_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f0ab48d
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x4<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %p, %4
+    %5:ptr<private, S, read_write> = access %p, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<private, mat3x4<f16>, read_write> = access %p, 3i, 1u
+    %9:ptr<uniform, mat3x4<f16>, read> = access %u, 2i, 1u
+    %10:mat3x4<f16> = load %9
+    store %8, %10
+    %11:ptr<private, vec4<f16>, read_write> = access %p, 1i, 1u, 0i
+    %12:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec4<f16> = load %12
+    %14:vec4<f16> = swizzle %13, ywxz
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x4_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c5b440a
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x4<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<S, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, S, read_write> = access %s, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<storage, mat3x4<f16>, read_write> = access %s, 3i, 1u
+    %9:ptr<uniform, mat3x4<f16>, read> = access %u, 2i, 1u
+    %10:mat3x4<f16> = load %9
+    store %8, %10
+    %11:ptr<storage, vec4<f16>, read_write> = access %s, 1i, 1u, 0i
+    %12:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec4<f16> = load %12
+    %14:vec4<f16> = swizzle %13, ywxz
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x4_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..580b070
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x4<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, S, read_write> = access %w, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<workgroup, mat3x4<f16>, read_write> = access %w, 3i, 1u
+    %9:ptr<uniform, mat3x4<f16>, read> = access %u, 2i, 1u
+    %10:mat3x4<f16> = load %9
+    store %8, %10
+    %11:ptr<workgroup, vec4<f16>, read_write> = access %w, 1i, 1u, 0i
+    %12:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec4<f16> = load %12
+    %14:vec4<f16> = swizzle %13, ywxz
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a71e7d2
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  m:mat3x4<f32> @offset(0)
+}
+
+Outer = struct @align(16) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, Outer, read> = access %p_a, %9
+    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
+    %12:i32 = call %i
+    %p_a_i_a_i:ptr<uniform, Inner, read> = access %p_a_i_a, %12
+    %p_a_i_a_i_m:ptr<uniform, mat3x4<f32>, read> = access %p_a_i_a_i, 0u
+    %15:i32 = call %i
+    %p_a_i_a_i_m_i:ptr<uniform, vec4<f32>, read> = access %p_a_i_a_i_m, %15
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_i:Outer = load %p_a_i
+    %l_a_i_a:array<Inner, 4> = load %p_a_i_a
+    %l_a_i_a_i:Inner = load %p_a_i_a_i
+    %l_a_i_a_i_m:mat3x4<f32> = load %p_a_i_a_i_m
+    %l_a_i_a_i_m_i:vec4<f32> = load %p_a_i_a_i_m_i
+    %23:i32 = call %i
+    %l_a_i_a_i_m_i_i:f32 = load_vector_element %p_a_i_a_i_m_i, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4f1844e
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  m:mat3x4<f32> @offset(0)
+}
+
+Outer = struct @align(16) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %p_a_3:ptr<uniform, Outer, read> = access %p_a, 3i
+    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
+    %p_a_3_a_2:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
+    %p_a_3_a_2_m:ptr<uniform, mat3x4<f32>, read> = access %p_a_3_a_2, 0u
+    %p_a_3_a_2_m_1:ptr<uniform, vec4<f32>, read> = access %p_a_3_a_2_m, 1i
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_3:Outer = load %p_a_3
+    %l_a_3_a:array<Inner, 4> = load %p_a_3_a
+    %l_a_3_a_2:Inner = load %p_a_3_a_2
+    %l_a_3_a_2_m:mat3x4<f32> = load %p_a_3_a_2_m
+    %l_a_3_a_2_m_1:vec4<f32> = load %p_a_3_a_2_m_1
+    %l_a_3_a_2_m_1_0:f32 = load_vector_element %p_a_3_a_2_m_1, 0i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x4_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5126b54
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x4<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat3x4<f32>, read> = access %u, 2i, 1u
+    %4:mat3x4<f32> = load %3
+    %t:mat4x3<f32> = transpose %4
+    %6:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %7:vec4<f32> = load %6
+    %8:vec4<f32> = swizzle %7, ywxz
+    %l:f32 = length %8
+    %10:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %11:vec4<f32> = load %10
+    %12:vec4<f32> = swizzle %11, ywxz
+    %13:f32 = access %12, 0u
+    %a:f32 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x4_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ffbd46f
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x4<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<S, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%s:S):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%m:mat3x4<f32>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%v:vec4<f32>):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%e = func(%f:f32):void -> %b6 {
+  %b6 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {  # %f_1: 'f'
+  %b7 = block {
+    %13:array<S, 4> = load %u
+    %14:void = call %a, %13
+    %15:ptr<uniform, S, read> = access %u, 2i
+    %16:S = load %15
+    %17:void = call %b, %16
+    %18:ptr<uniform, mat3x4<f32>, read> = access %u, 2i, 1u
+    %19:mat3x4<f32> = load %18
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %22:vec4<f32> = load %21
+    %23:vec4<f32> = swizzle %22, ywxz
+    %24:void = call %d, %23
+    %25:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %26:vec4<f32> = load %25
+    %27:vec4<f32> = swizzle %26, ywxz
+    %28:f32 = access %27, 0u
+    %29:void = call %e, %28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x4_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..68cae57
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x4<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %p, %4
+    %5:ptr<private, S, read_write> = access %p, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<private, mat3x4<f32>, read_write> = access %p, 3i, 1u
+    %9:ptr<uniform, mat3x4<f32>, read> = access %u, 2i, 1u
+    %10:mat3x4<f32> = load %9
+    store %8, %10
+    %11:ptr<private, vec4<f32>, read_write> = access %p, 1i, 1u, 0i
+    %12:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec4<f32> = load %12
+    %14:vec4<f32> = swizzle %13, ywxz
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x4_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5fc9747
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x4<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<S, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, S, read_write> = access %s, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<storage, mat3x4<f32>, read_write> = access %s, 3i, 1u
+    %9:ptr<uniform, mat3x4<f32>, read> = access %u, 2i, 1u
+    %10:mat3x4<f32> = load %9
+    store %8, %10
+    %11:ptr<storage, vec4<f32>, read_write> = access %s, 1i, 1u, 0i
+    %12:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec4<f32> = load %12
+    %14:vec4<f32> = swizzle %13, ywxz
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat3x4_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b5f3d95
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat3x4<f32> @offset(16)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, S, read_write> = access %w, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<workgroup, mat3x4<f32>, read_write> = access %w, 3i, 1u
+    %9:ptr<uniform, mat3x4<f32>, read> = access %u, 2i, 1u
+    %10:mat3x4<f32> = load %9
+    store %8, %10
+    %11:ptr<workgroup, vec4<f32>, read_write> = access %w, 1i, 1u, 0i
+    %12:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec4<f32> = load %12
+    %14:vec4<f32> = swizzle %13, ywxz
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8306964
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(4) {
+  m:mat4x2<f16> @offset(0)
+}
+
+Outer = struct @align(4) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, Outer, read> = access %p_a, %9
+    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
+    %12:i32 = call %i
+    %p_a_i_a_i:ptr<uniform, Inner, read> = access %p_a_i_a, %12
+    %p_a_i_a_i_m:ptr<uniform, mat4x2<f16>, read> = access %p_a_i_a_i, 0u
+    %15:i32 = call %i
+    %p_a_i_a_i_m_i:ptr<uniform, vec2<f16>, read> = access %p_a_i_a_i_m, %15
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_i:Outer = load %p_a_i
+    %l_a_i_a:array<Inner, 4> = load %p_a_i_a
+    %l_a_i_a_i:Inner = load %p_a_i_a_i
+    %l_a_i_a_i_m:mat4x2<f16> = load %p_a_i_a_i_m
+    %l_a_i_a_i_m_i:vec2<f16> = load %p_a_i_a_i_m_i
+    %23:i32 = call %i
+    %l_a_i_a_i_m_i_i:f16 = load_vector_element %p_a_i_a_i_m_i, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1f50328
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(4) {
+  m:mat4x2<f16> @offset(0)
+}
+
+Outer = struct @align(4) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %p_a_3:ptr<uniform, Outer, read> = access %p_a, 3i
+    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
+    %p_a_3_a_2:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
+    %p_a_3_a_2_m:ptr<uniform, mat4x2<f16>, read> = access %p_a_3_a_2, 0u
+    %p_a_3_a_2_m_1:ptr<uniform, vec2<f16>, read> = access %p_a_3_a_2_m, 1i
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_3:Outer = load %p_a_3
+    %l_a_3_a:array<Inner, 4> = load %p_a_3_a
+    %l_a_3_a_2:Inner = load %p_a_3_a_2
+    %l_a_3_a_2_m:mat4x2<f16> = load %p_a_3_a_2_m
+    %l_a_3_a_2_m_1:vec2<f16> = load %p_a_3_a_2_m_1
+    %l_a_3_a_2_m_1_0:f16 = load_vector_element %p_a_3_a_2_m_1, 0i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x2_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..636630f
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x2<f16> @offset(4)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat4x2<f16>, read> = access %u, 2i, 1u
+    %4:mat4x2<f16> = load %3
+    %t:mat2x4<f16> = transpose %4
+    %6:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %7:vec2<f16> = load %6
+    %8:vec2<f16> = swizzle %7, yx
+    %l:f16 = length %8
+    %10:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %11:vec2<f16> = load %10
+    %12:vec2<f16> = swizzle %11, yx
+    %13:f16 = access %12, 0u
+    %a:f16 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9f1ee81
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x2<f16> @offset(4)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<S, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%s:S):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%m:mat4x2<f16>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%v:vec2<f16>):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%e = func(%f:f16):void -> %b6 {
+  %b6 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {  # %f_1: 'f'
+  %b7 = block {
+    %13:array<S, 4> = load %u
+    %14:void = call %a, %13
+    %15:ptr<uniform, S, read> = access %u, 2i
+    %16:S = load %15
+    %17:void = call %b, %16
+    %18:ptr<uniform, mat4x2<f16>, read> = access %u, 2i, 1u
+    %19:mat4x2<f16> = load %18
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %22:vec2<f16> = load %21
+    %23:vec2<f16> = swizzle %22, yx
+    %24:void = call %d, %23
+    %25:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %26:vec2<f16> = load %25
+    %27:vec2<f16> = swizzle %26, yx
+    %28:f16 = access %27, 0u
+    %29:void = call %e, %28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x2_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6993c15
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x2<f16> @offset(4)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %p, %4
+    %5:ptr<private, S, read_write> = access %p, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<private, mat4x2<f16>, read_write> = access %p, 3i, 1u
+    %9:ptr<uniform, mat4x2<f16>, read> = access %u, 2i, 1u
+    %10:mat4x2<f16> = load %9
+    store %8, %10
+    %11:ptr<private, vec2<f16>, read_write> = access %p, 1i, 1u, 0i
+    %12:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec2<f16> = load %12
+    %14:vec2<f16> = swizzle %13, yx
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x2_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c0e3d0f
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x2<f16> @offset(4)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<S, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, S, read_write> = access %s, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<storage, mat4x2<f16>, read_write> = access %s, 3i, 1u
+    %9:ptr<uniform, mat4x2<f16>, read> = access %u, 2i, 1u
+    %10:mat4x2<f16> = load %9
+    store %8, %10
+    %11:ptr<storage, vec2<f16>, read_write> = access %s, 1i, 1u, 0i
+    %12:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec2<f16> = load %12
+    %14:vec2<f16> = swizzle %13, yx
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x2_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ea84300
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x2<f16> @offset(4)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, S, read_write> = access %w, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<workgroup, mat4x2<f16>, read_write> = access %w, 3i, 1u
+    %9:ptr<uniform, mat4x2<f16>, read> = access %u, 2i, 1u
+    %10:mat4x2<f16> = load %9
+    store %8, %10
+    %11:ptr<workgroup, vec2<f16>, read_write> = access %w, 1i, 1u, 0i
+    %12:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec2<f16> = load %12
+    %14:vec2<f16> = swizzle %13, yx
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..65ef9c2
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  m:mat4x2<f32> @offset(0)
+}
+
+Outer = struct @align(8) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, Outer, read> = access %p_a, %9
+    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
+    %12:i32 = call %i
+    %p_a_i_a_i:ptr<uniform, Inner, read> = access %p_a_i_a, %12
+    %p_a_i_a_i_m:ptr<uniform, mat4x2<f32>, read> = access %p_a_i_a_i, 0u
+    %15:i32 = call %i
+    %p_a_i_a_i_m_i:ptr<uniform, vec2<f32>, read> = access %p_a_i_a_i_m, %15
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_i:Outer = load %p_a_i
+    %l_a_i_a:array<Inner, 4> = load %p_a_i_a
+    %l_a_i_a_i:Inner = load %p_a_i_a_i
+    %l_a_i_a_i_m:mat4x2<f32> = load %p_a_i_a_i_m
+    %l_a_i_a_i_m_i:vec2<f32> = load %p_a_i_a_i_m_i
+    %23:i32 = call %i
+    %l_a_i_a_i_m_i_i:f32 = load_vector_element %p_a_i_a_i_m_i, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c0e31b9
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  m:mat4x2<f32> @offset(0)
+}
+
+Outer = struct @align(8) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %p_a_3:ptr<uniform, Outer, read> = access %p_a, 3i
+    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
+    %p_a_3_a_2:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
+    %p_a_3_a_2_m:ptr<uniform, mat4x2<f32>, read> = access %p_a_3_a_2, 0u
+    %p_a_3_a_2_m_1:ptr<uniform, vec2<f32>, read> = access %p_a_3_a_2_m, 1i
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_3:Outer = load %p_a_3
+    %l_a_3_a:array<Inner, 4> = load %p_a_3_a
+    %l_a_3_a_2:Inner = load %p_a_3_a_2
+    %l_a_3_a_2_m:mat4x2<f32> = load %p_a_3_a_2_m
+    %l_a_3_a_2_m_1:vec2<f32> = load %p_a_3_a_2_m_1
+    %l_a_3_a_2_m_1_0:f32 = load_vector_element %p_a_3_a_2_m_1, 0i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x2_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a80ba28
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x2<f32> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat4x2<f32>, read> = access %u, 2i, 1u
+    %4:mat4x2<f32> = load %3
+    %t:mat2x4<f32> = transpose %4
+    %6:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %7:vec2<f32> = load %6
+    %8:vec2<f32> = swizzle %7, yx
+    %l:f32 = length %8
+    %10:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %11:vec2<f32> = load %10
+    %12:vec2<f32> = swizzle %11, yx
+    %13:f32 = access %12, 0u
+    %a:f32 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x2_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8173c6a
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x2<f32> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<S, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%s:S):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%m:mat4x2<f32>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%v:vec2<f32>):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%e = func(%f:f32):void -> %b6 {
+  %b6 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {  # %f_1: 'f'
+  %b7 = block {
+    %13:array<S, 4> = load %u
+    %14:void = call %a, %13
+    %15:ptr<uniform, S, read> = access %u, 2i
+    %16:S = load %15
+    %17:void = call %b, %16
+    %18:ptr<uniform, mat4x2<f32>, read> = access %u, 2i, 1u
+    %19:mat4x2<f32> = load %18
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %22:vec2<f32> = load %21
+    %23:vec2<f32> = swizzle %22, yx
+    %24:void = call %d, %23
+    %25:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %26:vec2<f32> = load %25
+    %27:vec2<f32> = swizzle %26, yx
+    %28:f32 = access %27, 0u
+    %29:void = call %e, %28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x2_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6293405
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x2<f32> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %p, %4
+    %5:ptr<private, S, read_write> = access %p, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<private, mat4x2<f32>, read_write> = access %p, 3i, 1u
+    %9:ptr<uniform, mat4x2<f32>, read> = access %u, 2i, 1u
+    %10:mat4x2<f32> = load %9
+    store %8, %10
+    %11:ptr<private, vec2<f32>, read_write> = access %p, 1i, 1u, 0i
+    %12:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec2<f32> = load %12
+    %14:vec2<f32> = swizzle %13, yx
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x2_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7931490
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x2<f32> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<S, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, S, read_write> = access %s, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<storage, mat4x2<f32>, read_write> = access %s, 3i, 1u
+    %9:ptr<uniform, mat4x2<f32>, read> = access %u, 2i, 1u
+    %10:mat4x2<f32> = load %9
+    store %8, %10
+    %11:ptr<storage, vec2<f32>, read_write> = access %s, 1i, 1u, 0i
+    %12:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec2<f32> = load %12
+    %14:vec2<f32> = swizzle %13, yx
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x2_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..162eeb9
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x2<f32> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, S, read_write> = access %w, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<workgroup, mat4x2<f32>, read_write> = access %w, 3i, 1u
+    %9:ptr<uniform, mat4x2<f32>, read> = access %u, 2i, 1u
+    %10:mat4x2<f32> = load %9
+    store %8, %10
+    %11:ptr<workgroup, vec2<f32>, read_write> = access %w, 1i, 1u, 0i
+    %12:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec2<f32> = load %12
+    %14:vec2<f32> = swizzle %13, yx
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..12cd26c
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  m:mat4x3<f16> @offset(0)
+}
+
+Outer = struct @align(8) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, Outer, read> = access %p_a, %9
+    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
+    %12:i32 = call %i
+    %p_a_i_a_i:ptr<uniform, Inner, read> = access %p_a_i_a, %12
+    %p_a_i_a_i_m:ptr<uniform, mat4x3<f16>, read> = access %p_a_i_a_i, 0u
+    %15:i32 = call %i
+    %p_a_i_a_i_m_i:ptr<uniform, vec3<f16>, read> = access %p_a_i_a_i_m, %15
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_i:Outer = load %p_a_i
+    %l_a_i_a:array<Inner, 4> = load %p_a_i_a
+    %l_a_i_a_i:Inner = load %p_a_i_a_i
+    %l_a_i_a_i_m:mat4x3<f16> = load %p_a_i_a_i_m
+    %l_a_i_a_i_m_i:vec3<f16> = load %p_a_i_a_i_m_i
+    %23:i32 = call %i
+    %l_a_i_a_i_m_i_i:f16 = load_vector_element %p_a_i_a_i_m_i, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c7f2f11
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  m:mat4x3<f16> @offset(0)
+}
+
+Outer = struct @align(8) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %p_a_3:ptr<uniform, Outer, read> = access %p_a, 3i
+    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
+    %p_a_3_a_2:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
+    %p_a_3_a_2_m:ptr<uniform, mat4x3<f16>, read> = access %p_a_3_a_2, 0u
+    %p_a_3_a_2_m_1:ptr<uniform, vec3<f16>, read> = access %p_a_3_a_2_m, 1i
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_3:Outer = load %p_a_3
+    %l_a_3_a:array<Inner, 4> = load %p_a_3_a
+    %l_a_3_a_2:Inner = load %p_a_3_a_2
+    %l_a_3_a_2_m:mat4x3<f16> = load %p_a_3_a_2_m
+    %l_a_3_a_2_m_1:vec3<f16> = load %p_a_3_a_2_m_1
+    %l_a_3_a_2_m_1_0:f16 = load_vector_element %p_a_3_a_2_m_1, 0i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x3_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1bd5a11
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x3<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat4x3<f16>, read> = access %u, 2i, 1u
+    %4:mat4x3<f16> = load %3
+    %t:mat3x4<f16> = transpose %4
+    %6:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %7:vec3<f16> = load %6
+    %8:vec3<f16> = swizzle %7, zxy
+    %l:f16 = length %8
+    %10:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %11:vec3<f16> = load %10
+    %12:vec3<f16> = swizzle %11, zxy
+    %13:f16 = access %12, 0u
+    %a:f16 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9408077
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x3<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<S, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%s:S):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%m:mat4x3<f16>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%v:vec3<f16>):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%e = func(%f:f16):void -> %b6 {
+  %b6 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {  # %f_1: 'f'
+  %b7 = block {
+    %13:array<S, 4> = load %u
+    %14:void = call %a, %13
+    %15:ptr<uniform, S, read> = access %u, 2i
+    %16:S = load %15
+    %17:void = call %b, %16
+    %18:ptr<uniform, mat4x3<f16>, read> = access %u, 2i, 1u
+    %19:mat4x3<f16> = load %18
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %22:vec3<f16> = load %21
+    %23:vec3<f16> = swizzle %22, zxy
+    %24:void = call %d, %23
+    %25:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %26:vec3<f16> = load %25
+    %27:vec3<f16> = swizzle %26, zxy
+    %28:f16 = access %27, 0u
+    %29:void = call %e, %28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x3_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e2852af
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x3<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %p, %4
+    %5:ptr<private, S, read_write> = access %p, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<private, mat4x3<f16>, read_write> = access %p, 3i, 1u
+    %9:ptr<uniform, mat4x3<f16>, read> = access %u, 2i, 1u
+    %10:mat4x3<f16> = load %9
+    store %8, %10
+    %11:ptr<private, vec3<f16>, read_write> = access %p, 1i, 1u, 0i
+    %12:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec3<f16> = load %12
+    %14:vec3<f16> = swizzle %13, zxy
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x3_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9e9472f
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x3<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<S, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, S, read_write> = access %s, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<storage, mat4x3<f16>, read_write> = access %s, 3i, 1u
+    %9:ptr<uniform, mat4x3<f16>, read> = access %u, 2i, 1u
+    %10:mat4x3<f16> = load %9
+    store %8, %10
+    %11:ptr<storage, vec3<f16>, read_write> = access %s, 1i, 1u, 0i
+    %12:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec3<f16> = load %12
+    %14:vec3<f16> = swizzle %13, zxy
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x3_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3f6e08e
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x3<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, S, read_write> = access %w, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<workgroup, mat4x3<f16>, read_write> = access %w, 3i, 1u
+    %9:ptr<uniform, mat4x3<f16>, read> = access %u, 2i, 1u
+    %10:mat4x3<f16> = load %9
+    store %8, %10
+    %11:ptr<workgroup, vec3<f16>, read_write> = access %w, 1i, 1u, 0i
+    %12:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec3<f16> = load %12
+    %14:vec3<f16> = swizzle %13, zxy
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b8f58ea
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  m:mat4x3<f32> @offset(0)
+}
+
+Outer = struct @align(16) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, Outer, read> = access %p_a, %9
+    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
+    %12:i32 = call %i
+    %p_a_i_a_i:ptr<uniform, Inner, read> = access %p_a_i_a, %12
+    %p_a_i_a_i_m:ptr<uniform, mat4x3<f32>, read> = access %p_a_i_a_i, 0u
+    %15:i32 = call %i
+    %p_a_i_a_i_m_i:ptr<uniform, vec3<f32>, read> = access %p_a_i_a_i_m, %15
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_i:Outer = load %p_a_i
+    %l_a_i_a:array<Inner, 4> = load %p_a_i_a
+    %l_a_i_a_i:Inner = load %p_a_i_a_i
+    %l_a_i_a_i_m:mat4x3<f32> = load %p_a_i_a_i_m
+    %l_a_i_a_i_m_i:vec3<f32> = load %p_a_i_a_i_m_i
+    %23:i32 = call %i
+    %l_a_i_a_i_m_i_i:f32 = load_vector_element %p_a_i_a_i_m_i, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0e73a4d
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  m:mat4x3<f32> @offset(0)
+}
+
+Outer = struct @align(16) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %p_a_3:ptr<uniform, Outer, read> = access %p_a, 3i
+    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
+    %p_a_3_a_2:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
+    %p_a_3_a_2_m:ptr<uniform, mat4x3<f32>, read> = access %p_a_3_a_2, 0u
+    %p_a_3_a_2_m_1:ptr<uniform, vec3<f32>, read> = access %p_a_3_a_2_m, 1i
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_3:Outer = load %p_a_3
+    %l_a_3_a:array<Inner, 4> = load %p_a_3_a
+    %l_a_3_a_2:Inner = load %p_a_3_a_2
+    %l_a_3_a_2_m:mat4x3<f32> = load %p_a_3_a_2_m
+    %l_a_3_a_2_m_1:vec3<f32> = load %p_a_3_a_2_m_1
+    %l_a_3_a_2_m_1_0:f32 = load_vector_element %p_a_3_a_2_m_1, 0i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x3_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..737274f
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x3<f32> @offset(16)
+  after:i32 @offset(128)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat4x3<f32>, read> = access %u, 2i, 1u
+    %4:mat4x3<f32> = load %3
+    %t:mat3x4<f32> = transpose %4
+    %6:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %7:vec3<f32> = load %6
+    %8:vec3<f32> = swizzle %7, zxy
+    %l:f32 = length %8
+    %10:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %11:vec3<f32> = load %10
+    %12:vec3<f32> = swizzle %11, zxy
+    %13:f32 = access %12, 0u
+    %a:f32 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x3_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b253302
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x3<f32> @offset(16)
+  after:i32 @offset(128)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<S, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%s:S):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%m:mat4x3<f32>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%v:vec3<f32>):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%e = func(%f:f32):void -> %b6 {
+  %b6 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {  # %f_1: 'f'
+  %b7 = block {
+    %13:array<S, 4> = load %u
+    %14:void = call %a, %13
+    %15:ptr<uniform, S, read> = access %u, 2i
+    %16:S = load %15
+    %17:void = call %b, %16
+    %18:ptr<uniform, mat4x3<f32>, read> = access %u, 2i, 1u
+    %19:mat4x3<f32> = load %18
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %22:vec3<f32> = load %21
+    %23:vec3<f32> = swizzle %22, zxy
+    %24:void = call %d, %23
+    %25:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %26:vec3<f32> = load %25
+    %27:vec3<f32> = swizzle %26, zxy
+    %28:f32 = access %27, 0u
+    %29:void = call %e, %28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x3_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..732c6e8
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x3<f32> @offset(16)
+  after:i32 @offset(128)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %p, %4
+    %5:ptr<private, S, read_write> = access %p, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<private, mat4x3<f32>, read_write> = access %p, 3i, 1u
+    %9:ptr<uniform, mat4x3<f32>, read> = access %u, 2i, 1u
+    %10:mat4x3<f32> = load %9
+    store %8, %10
+    %11:ptr<private, vec3<f32>, read_write> = access %p, 1i, 1u, 0i
+    %12:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec3<f32> = load %12
+    %14:vec3<f32> = swizzle %13, zxy
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x3_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ed7180e
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x3<f32> @offset(16)
+  after:i32 @offset(128)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<S, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, S, read_write> = access %s, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<storage, mat4x3<f32>, read_write> = access %s, 3i, 1u
+    %9:ptr<uniform, mat4x3<f32>, read> = access %u, 2i, 1u
+    %10:mat4x3<f32> = load %9
+    store %8, %10
+    %11:ptr<storage, vec3<f32>, read_write> = access %s, 1i, 1u, 0i
+    %12:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec3<f32> = load %12
+    %14:vec3<f32> = swizzle %13, zxy
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x3_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ec8e2c0
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x3<f32> @offset(16)
+  after:i32 @offset(128)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, S, read_write> = access %w, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<workgroup, mat4x3<f32>, read_write> = access %w, 3i, 1u
+    %9:ptr<uniform, mat4x3<f32>, read> = access %u, 2i, 1u
+    %10:mat4x3<f32> = load %9
+    store %8, %10
+    %11:ptr<workgroup, vec3<f32>, read_write> = access %w, 1i, 1u, 0i
+    %12:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec3<f32> = load %12
+    %14:vec3<f32> = swizzle %13, zxy
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8e9ad89
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  m:mat4x4<f16> @offset(0)
+}
+
+Outer = struct @align(8) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, Outer, read> = access %p_a, %9
+    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
+    %12:i32 = call %i
+    %p_a_i_a_i:ptr<uniform, Inner, read> = access %p_a_i_a, %12
+    %p_a_i_a_i_m:ptr<uniform, mat4x4<f16>, read> = access %p_a_i_a_i, 0u
+    %15:i32 = call %i
+    %p_a_i_a_i_m_i:ptr<uniform, vec4<f16>, read> = access %p_a_i_a_i_m, %15
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_i:Outer = load %p_a_i
+    %l_a_i_a:array<Inner, 4> = load %p_a_i_a
+    %l_a_i_a_i:Inner = load %p_a_i_a_i
+    %l_a_i_a_i_m:mat4x4<f16> = load %p_a_i_a_i_m
+    %l_a_i_a_i_m_i:vec4<f16> = load %p_a_i_a_i_m_i
+    %23:i32 = call %i
+    %l_a_i_a_i_m_i_i:f16 = load_vector_element %p_a_i_a_i_m_i, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a48f846
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  m:mat4x4<f16> @offset(0)
+}
+
+Outer = struct @align(8) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %p_a_3:ptr<uniform, Outer, read> = access %p_a, 3i
+    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
+    %p_a_3_a_2:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
+    %p_a_3_a_2_m:ptr<uniform, mat4x4<f16>, read> = access %p_a_3_a_2, 0u
+    %p_a_3_a_2_m_1:ptr<uniform, vec4<f16>, read> = access %p_a_3_a_2_m, 1i
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_3:Outer = load %p_a_3
+    %l_a_3_a:array<Inner, 4> = load %p_a_3_a
+    %l_a_3_a_2:Inner = load %p_a_3_a_2
+    %l_a_3_a_2_m:mat4x4<f16> = load %p_a_3_a_2_m
+    %l_a_3_a_2_m_1:vec4<f16> = load %p_a_3_a_2_m_1
+    %l_a_3_a_2_m_1_0:f16 = load_vector_element %p_a_3_a_2_m_1, 0i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x4_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3fc783f
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x4<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat4x4<f16>, read> = access %u, 2i, 1u
+    %4:mat4x4<f16> = load %3
+    %t:mat4x4<f16> = transpose %4
+    %6:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %7:vec4<f16> = load %6
+    %8:vec4<f16> = swizzle %7, ywxz
+    %l:f16 = length %8
+    %10:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %11:vec4<f16> = load %10
+    %12:vec4<f16> = swizzle %11, ywxz
+    %13:f16 = access %12, 0u
+    %a:f16 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a804500
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x4<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<S, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%s:S):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%m:mat4x4<f16>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%v:vec4<f16>):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%e = func(%f:f16):void -> %b6 {
+  %b6 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {  # %f_1: 'f'
+  %b7 = block {
+    %13:array<S, 4> = load %u
+    %14:void = call %a, %13
+    %15:ptr<uniform, S, read> = access %u, 2i
+    %16:S = load %15
+    %17:void = call %b, %16
+    %18:ptr<uniform, mat4x4<f16>, read> = access %u, 2i, 1u
+    %19:mat4x4<f16> = load %18
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %22:vec4<f16> = load %21
+    %23:vec4<f16> = swizzle %22, ywxz
+    %24:void = call %d, %23
+    %25:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %26:vec4<f16> = load %25
+    %27:vec4<f16> = swizzle %26, ywxz
+    %28:f16 = access %27, 0u
+    %29:void = call %e, %28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x4_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..16b06b8
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x4<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %p, %4
+    %5:ptr<private, S, read_write> = access %p, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<private, mat4x4<f16>, read_write> = access %p, 3i, 1u
+    %9:ptr<uniform, mat4x4<f16>, read> = access %u, 2i, 1u
+    %10:mat4x4<f16> = load %9
+    store %8, %10
+    %11:ptr<private, vec4<f16>, read_write> = access %p, 1i, 1u, 0i
+    %12:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec4<f16> = load %12
+    %14:vec4<f16> = swizzle %13, ywxz
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x4_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b8ef1e8
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x4<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<S, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, S, read_write> = access %s, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<storage, mat4x4<f16>, read_write> = access %s, 3i, 1u
+    %9:ptr<uniform, mat4x4<f16>, read> = access %u, 2i, 1u
+    %10:mat4x4<f16> = load %9
+    store %8, %10
+    %11:ptr<storage, vec4<f16>, read_write> = access %s, 1i, 1u, 0i
+    %12:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec4<f16> = load %12
+    %14:vec4<f16> = swizzle %13, ywxz
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x4_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7bc6c13
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x4<f16> @offset(8)
+  after:i32 @offset(64)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, S, read_write> = access %w, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<workgroup, mat4x4<f16>, read_write> = access %w, 3i, 1u
+    %9:ptr<uniform, mat4x4<f16>, read> = access %u, 2i, 1u
+    %10:mat4x4<f16> = load %9
+    store %8, %10
+    %11:ptr<workgroup, vec4<f16>, read_write> = access %w, 1i, 1u, 0i
+    %12:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
+    %13:vec4<f16> = load %12
+    %14:vec4<f16> = swizzle %13, ywxz
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d06e288
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  m:mat4x4<f32> @offset(0)
+}
+
+Outer = struct @align(16) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %9:i32 = call %i
+    %p_a_i:ptr<uniform, Outer, read> = access %p_a, %9
+    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
+    %12:i32 = call %i
+    %p_a_i_a_i:ptr<uniform, Inner, read> = access %p_a_i_a, %12
+    %p_a_i_a_i_m:ptr<uniform, mat4x4<f32>, read> = access %p_a_i_a_i, 0u
+    %15:i32 = call %i
+    %p_a_i_a_i_m_i:ptr<uniform, vec4<f32>, read> = access %p_a_i_a_i_m, %15
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_i:Outer = load %p_a_i
+    %l_a_i_a:array<Inner, 4> = load %p_a_i_a
+    %l_a_i_a_i:Inner = load %p_a_i_a_i
+    %l_a_i_a_i_m:mat4x4<f32> = load %p_a_i_a_i_m
+    %l_a_i_a_i_m_i:vec4<f32> = load %p_a_i_a_i_m_i
+    %23:i32 = call %i
+    %l_a_i_a_i_m_i_i:f32 = load_vector_element %p_a_i_a_i_m_i, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c28300a
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  m:mat4x4<f32> @offset(0)
+}
+
+Outer = struct @align(16) {
+  a:array<Inner, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
+    %p_a_3:ptr<uniform, Outer, read> = access %p_a, 3i
+    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
+    %p_a_3_a_2:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
+    %p_a_3_a_2_m:ptr<uniform, mat4x4<f32>, read> = access %p_a_3_a_2, 0u
+    %p_a_3_a_2_m_1:ptr<uniform, vec4<f32>, read> = access %p_a_3_a_2_m, 1i
+    %l_a:array<Outer, 4> = load %p_a
+    %l_a_3:Outer = load %p_a_3
+    %l_a_3_a:array<Inner, 4> = load %p_a_3_a
+    %l_a_3_a_2:Inner = load %p_a_3_a_2
+    %l_a_3_a_2_m:mat4x4<f32> = load %p_a_3_a_2_m
+    %l_a_3_a_2_m_1:vec4<f32> = load %p_a_3_a_2_m_1
+    %l_a_3_a_2_m_1_0:f32 = load_vector_element %p_a_3_a_2_m_1, 0i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x4_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0df1147
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x4<f32> @offset(16)
+  after:i32 @offset(128)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat4x4<f32>, read> = access %u, 2i, 1u
+    %4:mat4x4<f32> = load %3
+    %t:mat4x4<f32> = transpose %4
+    %6:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %7:vec4<f32> = load %6
+    %8:vec4<f32> = swizzle %7, ywxz
+    %l:f32 = length %8
+    %10:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %11:vec4<f32> = load %10
+    %12:vec4<f32> = swizzle %11, ywxz
+    %13:f32 = access %12, 0u
+    %a:f32 = abs %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x4_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efd1e78
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x4<f32> @offset(16)
+  after:i32 @offset(128)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%a_1:array<S, 4>):void -> %b2 {  # %a_1: 'a'
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%s:S):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%m:mat4x4<f32>):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%d = func(%v:vec4<f32>):void -> %b5 {
+  %b5 = block {
+    ret
+  }
+}
+%e = func(%f:f32):void -> %b6 {
+  %b6 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {  # %f_1: 'f'
+  %b7 = block {
+    %13:array<S, 4> = load %u
+    %14:void = call %a, %13
+    %15:ptr<uniform, S, read> = access %u, 2i
+    %16:S = load %15
+    %17:void = call %b, %16
+    %18:ptr<uniform, mat4x4<f32>, read> = access %u, 2i, 1u
+    %19:mat4x4<f32> = load %18
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %22:vec4<f32> = load %21
+    %23:vec4<f32> = swizzle %22, ywxz
+    %24:void = call %d, %23
+    %25:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %26:vec4<f32> = load %25
+    %27:vec4<f32> = swizzle %26, ywxz
+    %28:f32 = access %27, 0u
+    %29:void = call %e, %28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x4_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..40e5ea9
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x4<f32> @offset(16)
+  after:i32 @offset(128)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %p:ptr<private, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %p, %4
+    %5:ptr<private, S, read_write> = access %p, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<private, mat4x4<f32>, read_write> = access %p, 3i, 1u
+    %9:ptr<uniform, mat4x4<f32>, read> = access %u, 2i, 1u
+    %10:mat4x4<f32> = load %9
+    store %8, %10
+    %11:ptr<private, vec4<f32>, read_write> = access %p, 1i, 1u, 0i
+    %12:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec4<f32> = load %12
+    %14:vec4<f32> = swizzle %13, ywxz
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x4_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..450e67d
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x4<f32> @offset(16)
+  after:i32 @offset(128)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, array<S, 4>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %s, %4
+    %5:ptr<storage, S, read_write> = access %s, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<storage, mat4x4<f32>, read_write> = access %s, 3i, 1u
+    %9:ptr<uniform, mat4x4<f32>, read> = access %u, 2i, 1u
+    %10:mat4x4<f32> = load %9
+    store %8, %10
+    %11:ptr<storage, vec4<f32>, read_write> = access %s, 1i, 1u, 0i
+    %12:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec4<f32> = load %12
+    %14:vec4<f32> = swizzle %13, ywxz
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/struct/mat4x4_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..31ca2e4
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(64) {
+  before:i32 @offset(0)
+  m:mat4x4<f32> @offset(16)
+  after:i32 @offset(128)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, array<S, 4>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:array<S, 4> = load %u
+    store %w, %4
+    %5:ptr<workgroup, S, read_write> = access %w, 1i
+    %6:ptr<uniform, S, read> = access %u, 2i
+    %7:S = load %6
+    store %5, %7
+    %8:ptr<workgroup, mat4x4<f32>, read_write> = access %w, 3i, 1u
+    %9:ptr<uniform, mat4x4<f32>, read> = access %u, 2i, 1u
+    %10:mat4x4<f32> = load %9
+    store %8, %10
+    %11:ptr<workgroup, vec4<f32>, read_write> = access %w, 1i, 1u, 0i
+    %12:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1u, 1i
+    %13:vec4<f32> = load %12
+    %14:vec4<f32> = swizzle %13, ywxz
+    store %11, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..58d2c7e
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat2x2<f16>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat2x2<f16>, read> = let %m
+    %9:i32 = call %i
+    %p_m_i:ptr<uniform, vec2<f16>, read> = access %p_m, %9
+    %l_m:mat2x2<f16> = load %p_m
+    %l_m_i:vec2<f16> = load %p_m_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x2_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..554a8df
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat2x2<f16>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat2x2<f16>, read> = let %m
+    %p_m_1:ptr<uniform, vec2<f16>, read> = access %p_m, 1i
+    %l_m:mat2x2<f16> = load %p_m
+    %l_m_1:vec2<f16> = load %p_m_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ab08cdd
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x2<f16>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:mat2x2<f16> = load %u
+    %t:mat2x2<f16> = transpose %3
+    %5:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %6:vec2<f16> = load %5
+    %l:f16 = length %6
+    %8:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %9:vec2<f16> = load %8
+    %10:vec2<f16> = swizzle %9, yx
+    %11:f16 = access %10, 0u
+    %a:f16 = abs %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dbf8128
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x2<f16>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%m:mat2x2<f16>):void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%v:vec2<f16>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%f:f16):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {  # %f_1: 'f'
+  %b5 = block {
+    %9:mat2x2<f16> = load %u
+    %10:void = call %a, %9
+    %11:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %12:vec2<f16> = load %11
+    %13:void = call %b, %12
+    %14:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %15:vec2<f16> = load %14
+    %16:vec2<f16> = swizzle %15, yx
+    %17:void = call %b, %16
+    %18:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %19:f16 = load_vector_element %18, 0u
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %22:vec2<f16> = load %21
+    %23:vec2<f16> = swizzle %22, yx
+    %24:f16 = access %23, 0u
+    %25:void = call %c, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2f0bd64
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x2<f16>, read> = var @binding_point(0, 0)
+  %p:ptr<private, mat2x2<f16>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f16> = load %u
+    store %p, %4
+    %5:ptr<private, vec2<f16>, read_write> = access %p, 1i
+    %6:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %7:vec2<f16> = load %6
+    store %5, %7
+    %8:ptr<private, vec2<f16>, read_write> = access %p, 1i
+    %9:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %10:vec2<f16> = load %9
+    %11:vec2<f16> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<private, vec2<f16>, read_write> = access %p, 0i
+    %13:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f4b675e
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x2<f16>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, mat2x2<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f16> = load %u
+    store %s, %4
+    %5:ptr<storage, vec2<f16>, read_write> = access %s, 1i
+    %6:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %7:vec2<f16> = load %6
+    store %5, %7
+    %8:ptr<storage, vec2<f16>, read_write> = access %s, 1i
+    %9:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %10:vec2<f16> = load %9
+    %11:vec2<f16> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<storage, vec2<f16>, read_write> = access %s, 0i
+    %13:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a2baf6b
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x2<f16>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, mat2x2<f16>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f16> = load %u
+    store %w, %4
+    %5:ptr<workgroup, vec2<f16>, read_write> = access %w, 1i
+    %6:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %7:vec2<f16> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec2<f16>, read_write> = access %w, 1i
+    %9:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %10:vec2<f16> = load %9
+    %11:vec2<f16> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<workgroup, vec2<f16>, read_write> = access %w, 0i
+    %13:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ba40f3b
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat2x2<f32>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat2x2<f32>, read> = let %m
+    %9:i32 = call %i
+    %p_m_i:ptr<uniform, vec2<f32>, read> = access %p_m, %9
+    %l_m:mat2x2<f32> = load %p_m
+    %l_m_i:vec2<f32> = load %p_m_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..12f9ac2
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat2x2<f32>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat2x2<f32>, read> = let %m
+    %p_m_1:ptr<uniform, vec2<f32>, read> = access %p_m, 1i
+    %l_m:mat2x2<f32> = load %p_m
+    %l_m_1:vec2<f32> = load %p_m_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d2f040e
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x2<f32>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:mat2x2<f32> = load %u
+    %t:mat2x2<f32> = transpose %3
+    %5:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %6:vec2<f32> = load %5
+    %l:f32 = length %6
+    %8:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %9:vec2<f32> = load %8
+    %10:vec2<f32> = swizzle %9, yx
+    %11:f32 = access %10, 0u
+    %a:f32 = abs %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..26dcceb
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x2<f32>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%m:mat2x2<f32>):void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%v:vec2<f32>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%f:f32):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {  # %f_1: 'f'
+  %b5 = block {
+    %9:mat2x2<f32> = load %u
+    %10:void = call %a, %9
+    %11:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %12:vec2<f32> = load %11
+    %13:void = call %b, %12
+    %14:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %15:vec2<f32> = load %14
+    %16:vec2<f32> = swizzle %15, yx
+    %17:void = call %b, %16
+    %18:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %19:f32 = load_vector_element %18, 0u
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %22:vec2<f32> = load %21
+    %23:vec2<f32> = swizzle %22, yx
+    %24:f32 = access %23, 0u
+    %25:void = call %c, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0e4b6f7
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x2<f32>, read> = var @binding_point(0, 0)
+  %p:ptr<private, mat2x2<f32>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f32> = load %u
+    store %p, %4
+    %5:ptr<private, vec2<f32>, read_write> = access %p, 1i
+    %6:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %7:vec2<f32> = load %6
+    store %5, %7
+    %8:ptr<private, vec2<f32>, read_write> = access %p, 1i
+    %9:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %10:vec2<f32> = load %9
+    %11:vec2<f32> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<private, vec2<f32>, read_write> = access %p, 0i
+    %13:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f8f5aef
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x2<f32>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f32> = load %u
+    store %s, %4
+    %5:ptr<storage, vec2<f32>, read_write> = access %s, 1i
+    %6:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %7:vec2<f32> = load %6
+    store %5, %7
+    %8:ptr<storage, vec2<f32>, read_write> = access %s, 1i
+    %9:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %10:vec2<f32> = load %9
+    %11:vec2<f32> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<storage, vec2<f32>, read_write> = access %s, 0i
+    %13:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6fb47d0
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x2<f32>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, mat2x2<f32>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f32> = load %u
+    store %w, %4
+    %5:ptr<workgroup, vec2<f32>, read_write> = access %w, 1i
+    %6:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %7:vec2<f32> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec2<f32>, read_write> = access %w, 1i
+    %9:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %10:vec2<f32> = load %9
+    %11:vec2<f32> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<workgroup, vec2<f32>, read_write> = access %w, 0i
+    %13:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a99fb35
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat2x3<f16>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat2x3<f16>, read> = let %m
+    %9:i32 = call %i
+    %p_m_i:ptr<uniform, vec3<f16>, read> = access %p_m, %9
+    %l_m:mat2x3<f16> = load %p_m
+    %l_m_i:vec3<f16> = load %p_m_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9b7c840
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat2x3<f16>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat2x3<f16>, read> = let %m
+    %p_m_1:ptr<uniform, vec3<f16>, read> = access %p_m, 1i
+    %l_m:mat2x3<f16> = load %p_m
+    %l_m_1:vec3<f16> = load %p_m_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aa59475
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x3<f16>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:mat2x3<f16> = load %u
+    %t:mat3x2<f16> = transpose %3
+    %5:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %6:vec3<f16> = load %5
+    %l:f16 = length %6
+    %8:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %9:vec3<f16> = load %8
+    %10:vec3<f16> = swizzle %9, zxy
+    %11:f16 = access %10, 0u
+    %a:f16 = abs %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..00839af
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x3<f16>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%m:mat2x3<f16>):void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%v:vec3<f16>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%f:f16):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {  # %f_1: 'f'
+  %b5 = block {
+    %9:mat2x3<f16> = load %u
+    %10:void = call %a, %9
+    %11:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %12:vec3<f16> = load %11
+    %13:void = call %b, %12
+    %14:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %15:vec3<f16> = load %14
+    %16:vec3<f16> = swizzle %15, zxy
+    %17:void = call %b, %16
+    %18:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %19:f16 = load_vector_element %18, 0u
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %22:vec3<f16> = load %21
+    %23:vec3<f16> = swizzle %22, zxy
+    %24:f16 = access %23, 0u
+    %25:void = call %c, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4ad5f1d
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x3<f16>, read> = var @binding_point(0, 0)
+  %p:ptr<private, mat2x3<f16>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f16> = load %u
+    store %p, %4
+    %5:ptr<private, vec3<f16>, read_write> = access %p, 1i
+    %6:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %7:vec3<f16> = load %6
+    store %5, %7
+    %8:ptr<private, vec3<f16>, read_write> = access %p, 1i
+    %9:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %10:vec3<f16> = load %9
+    %11:vec3<f16> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<private, vec3<f16>, read_write> = access %p, 0i
+    %13:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3ad6649
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x3<f16>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, mat2x3<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f16> = load %u
+    store %s, %4
+    %5:ptr<storage, vec3<f16>, read_write> = access %s, 1i
+    %6:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %7:vec3<f16> = load %6
+    store %5, %7
+    %8:ptr<storage, vec3<f16>, read_write> = access %s, 1i
+    %9:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %10:vec3<f16> = load %9
+    %11:vec3<f16> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<storage, vec3<f16>, read_write> = access %s, 0i
+    %13:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..944ad65
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x3<f16>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, mat2x3<f16>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f16> = load %u
+    store %w, %4
+    %5:ptr<workgroup, vec3<f16>, read_write> = access %w, 1i
+    %6:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %7:vec3<f16> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec3<f16>, read_write> = access %w, 1i
+    %9:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %10:vec3<f16> = load %9
+    %11:vec3<f16> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<workgroup, vec3<f16>, read_write> = access %w, 0i
+    %13:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d397864
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat2x3<f32>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat2x3<f32>, read> = let %m
+    %9:i32 = call %i
+    %p_m_i:ptr<uniform, vec3<f32>, read> = access %p_m, %9
+    %l_m:mat2x3<f32> = load %p_m
+    %l_m_i:vec3<f32> = load %p_m_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ef68a506
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat2x3<f32>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat2x3<f32>, read> = let %m
+    %p_m_1:ptr<uniform, vec3<f32>, read> = access %p_m, 1i
+    %l_m:mat2x3<f32> = load %p_m
+    %l_m_1:vec3<f32> = load %p_m_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cc3b659
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x3<f32>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:mat2x3<f32> = load %u
+    %t:mat3x2<f32> = transpose %3
+    %5:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %6:vec3<f32> = load %5
+    %l:f32 = length %6
+    %8:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %9:vec3<f32> = load %8
+    %10:vec3<f32> = swizzle %9, zxy
+    %11:f32 = access %10, 0u
+    %a:f32 = abs %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c4d09fb
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x3<f32>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%m:mat2x3<f32>):void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%v:vec3<f32>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%f:f32):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {  # %f_1: 'f'
+  %b5 = block {
+    %9:mat2x3<f32> = load %u
+    %10:void = call %a, %9
+    %11:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %12:vec3<f32> = load %11
+    %13:void = call %b, %12
+    %14:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %15:vec3<f32> = load %14
+    %16:vec3<f32> = swizzle %15, zxy
+    %17:void = call %b, %16
+    %18:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %19:f32 = load_vector_element %18, 0u
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %22:vec3<f32> = load %21
+    %23:vec3<f32> = swizzle %22, zxy
+    %24:f32 = access %23, 0u
+    %25:void = call %c, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..23c7804
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x3<f32>, read> = var @binding_point(0, 0)
+  %p:ptr<private, mat2x3<f32>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f32> = load %u
+    store %p, %4
+    %5:ptr<private, vec3<f32>, read_write> = access %p, 1i
+    %6:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %7:vec3<f32> = load %6
+    store %5, %7
+    %8:ptr<private, vec3<f32>, read_write> = access %p, 1i
+    %9:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %10:vec3<f32> = load %9
+    %11:vec3<f32> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<private, vec3<f32>, read_write> = access %p, 0i
+    %13:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b4b5227
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x3<f32>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f32> = load %u
+    store %s, %4
+    %5:ptr<storage, vec3<f32>, read_write> = access %s, 1i
+    %6:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %7:vec3<f32> = load %6
+    store %5, %7
+    %8:ptr<storage, vec3<f32>, read_write> = access %s, 1i
+    %9:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %10:vec3<f32> = load %9
+    %11:vec3<f32> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<storage, vec3<f32>, read_write> = access %s, 0i
+    %13:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3decd16
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x3<f32>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, mat2x3<f32>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f32> = load %u
+    store %w, %4
+    %5:ptr<workgroup, vec3<f32>, read_write> = access %w, 1i
+    %6:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %7:vec3<f32> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec3<f32>, read_write> = access %w, 1i
+    %9:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %10:vec3<f32> = load %9
+    %11:vec3<f32> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<workgroup, vec3<f32>, read_write> = access %w, 0i
+    %13:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e0961a0
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat2x4<f16>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat2x4<f16>, read> = let %m
+    %9:i32 = call %i
+    %p_m_i:ptr<uniform, vec4<f16>, read> = access %p_m, %9
+    %l_m:mat2x4<f16> = load %p_m
+    %l_m_i:vec4<f16> = load %p_m_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..391ff69
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat2x4<f16>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat2x4<f16>, read> = let %m
+    %p_m_1:ptr<uniform, vec4<f16>, read> = access %p_m, 1i
+    %l_m:mat2x4<f16> = load %p_m
+    %l_m_1:vec4<f16> = load %p_m_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bd0dd78
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x4<f16>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:mat2x4<f16> = load %u
+    %t:mat4x2<f16> = transpose %3
+    %5:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %6:vec4<f16> = load %5
+    %l:f16 = length %6
+    %8:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %9:vec4<f16> = load %8
+    %10:vec4<f16> = swizzle %9, ywxz
+    %11:f16 = access %10, 0u
+    %a:f16 = abs %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8d97bfc
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x4<f16>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%m:mat2x4<f16>):void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%v:vec4<f16>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%f:f16):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {  # %f_1: 'f'
+  %b5 = block {
+    %9:mat2x4<f16> = load %u
+    %10:void = call %a, %9
+    %11:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %12:vec4<f16> = load %11
+    %13:void = call %b, %12
+    %14:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %15:vec4<f16> = load %14
+    %16:vec4<f16> = swizzle %15, ywxz
+    %17:void = call %b, %16
+    %18:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %19:f16 = load_vector_element %18, 0u
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %22:vec4<f16> = load %21
+    %23:vec4<f16> = swizzle %22, ywxz
+    %24:f16 = access %23, 0u
+    %25:void = call %c, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..95f8ed8
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x4<f16>, read> = var @binding_point(0, 0)
+  %p:ptr<private, mat2x4<f16>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f16> = load %u
+    store %p, %4
+    %5:ptr<private, vec4<f16>, read_write> = access %p, 1i
+    %6:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %7:vec4<f16> = load %6
+    store %5, %7
+    %8:ptr<private, vec4<f16>, read_write> = access %p, 1i
+    %9:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %10:vec4<f16> = load %9
+    %11:vec4<f16> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<private, vec4<f16>, read_write> = access %p, 0i
+    %13:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9285b78
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x4<f16>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, mat2x4<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f16> = load %u
+    store %s, %4
+    %5:ptr<storage, vec4<f16>, read_write> = access %s, 1i
+    %6:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %7:vec4<f16> = load %6
+    store %5, %7
+    %8:ptr<storage, vec4<f16>, read_write> = access %s, 1i
+    %9:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %10:vec4<f16> = load %9
+    %11:vec4<f16> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<storage, vec4<f16>, read_write> = access %s, 0i
+    %13:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f997446
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x4<f16>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, mat2x4<f16>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f16> = load %u
+    store %w, %4
+    %5:ptr<workgroup, vec4<f16>, read_write> = access %w, 1i
+    %6:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %7:vec4<f16> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec4<f16>, read_write> = access %w, 1i
+    %9:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %10:vec4<f16> = load %9
+    %11:vec4<f16> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<workgroup, vec4<f16>, read_write> = access %w, 0i
+    %13:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9900f21
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat2x4<f32>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat2x4<f32>, read> = let %m
+    %9:i32 = call %i
+    %p_m_i:ptr<uniform, vec4<f32>, read> = access %p_m, %9
+    %l_m:mat2x4<f32> = load %p_m
+    %l_m_i:vec4<f32> = load %p_m_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..73ee6ec
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat2x4<f32>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat2x4<f32>, read> = let %m
+    %p_m_1:ptr<uniform, vec4<f32>, read> = access %p_m, 1i
+    %l_m:mat2x4<f32> = load %p_m
+    %l_m_1:vec4<f32> = load %p_m_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..030a9a5
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x4<f32>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:mat2x4<f32> = load %u
+    %t:mat4x2<f32> = transpose %3
+    %5:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %6:vec4<f32> = load %5
+    %l:f32 = length %6
+    %8:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %9:vec4<f32> = load %8
+    %10:vec4<f32> = swizzle %9, ywxz
+    %11:f32 = access %10, 0u
+    %a:f32 = abs %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..399c288
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x4<f32>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%m:mat2x4<f32>):void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%v:vec4<f32>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%f:f32):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {  # %f_1: 'f'
+  %b5 = block {
+    %9:mat2x4<f32> = load %u
+    %10:void = call %a, %9
+    %11:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %12:vec4<f32> = load %11
+    %13:void = call %b, %12
+    %14:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %15:vec4<f32> = load %14
+    %16:vec4<f32> = swizzle %15, ywxz
+    %17:void = call %b, %16
+    %18:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %19:f32 = load_vector_element %18, 0u
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %22:vec4<f32> = load %21
+    %23:vec4<f32> = swizzle %22, ywxz
+    %24:f32 = access %23, 0u
+    %25:void = call %c, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1b5d8ef
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x4<f32>, read> = var @binding_point(0, 0)
+  %p:ptr<private, mat2x4<f32>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f32> = load %u
+    store %p, %4
+    %5:ptr<private, vec4<f32>, read_write> = access %p, 1i
+    %6:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %7:vec4<f32> = load %6
+    store %5, %7
+    %8:ptr<private, vec4<f32>, read_write> = access %p, 1i
+    %9:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %10:vec4<f32> = load %9
+    %11:vec4<f32> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<private, vec4<f32>, read_write> = access %p, 0i
+    %13:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..69f3a2f
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x4<f32>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f32> = load %u
+    store %s, %4
+    %5:ptr<storage, vec4<f32>, read_write> = access %s, 1i
+    %6:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %7:vec4<f32> = load %6
+    store %5, %7
+    %8:ptr<storage, vec4<f32>, read_write> = access %s, 1i
+    %9:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %10:vec4<f32> = load %9
+    %11:vec4<f32> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<storage, vec4<f32>, read_write> = access %s, 0i
+    %13:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1af4b3e
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x4<f32>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, mat2x4<f32>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f32> = load %u
+    store %w, %4
+    %5:ptr<workgroup, vec4<f32>, read_write> = access %w, 1i
+    %6:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %7:vec4<f32> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec4<f32>, read_write> = access %w, 1i
+    %9:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %10:vec4<f32> = load %9
+    %11:vec4<f32> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<workgroup, vec4<f32>, read_write> = access %w, 0i
+    %13:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2bdc90a
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat3x2<f16>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat3x2<f16>, read> = let %m
+    %9:i32 = call %i
+    %p_m_i:ptr<uniform, vec2<f16>, read> = access %p_m, %9
+    %l_m:mat3x2<f16> = load %p_m
+    %l_m_i:vec2<f16> = load %p_m_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x2_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0278175
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat3x2<f16>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat3x2<f16>, read> = let %m
+    %p_m_1:ptr<uniform, vec2<f16>, read> = access %p_m, 1i
+    %l_m:mat3x2<f16> = load %p_m
+    %l_m_1:vec2<f16> = load %p_m_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..df1dcc7
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x2<f16>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:mat3x2<f16> = load %u
+    %t:mat2x3<f16> = transpose %3
+    %5:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %6:vec2<f16> = load %5
+    %l:f16 = length %6
+    %8:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %9:vec2<f16> = load %8
+    %10:vec2<f16> = swizzle %9, yx
+    %11:f16 = access %10, 0u
+    %a:f16 = abs %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e8810e1
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x2<f16>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%m:mat3x2<f16>):void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%v:vec2<f16>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%f:f16):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {  # %f_1: 'f'
+  %b5 = block {
+    %9:mat3x2<f16> = load %u
+    %10:void = call %a, %9
+    %11:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %12:vec2<f16> = load %11
+    %13:void = call %b, %12
+    %14:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %15:vec2<f16> = load %14
+    %16:vec2<f16> = swizzle %15, yx
+    %17:void = call %b, %16
+    %18:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %19:f16 = load_vector_element %18, 0u
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %22:vec2<f16> = load %21
+    %23:vec2<f16> = swizzle %22, yx
+    %24:f16 = access %23, 0u
+    %25:void = call %c, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b1276af
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x2<f16>, read> = var @binding_point(0, 0)
+  %p:ptr<private, mat3x2<f16>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f16> = load %u
+    store %p, %4
+    %5:ptr<private, vec2<f16>, read_write> = access %p, 1i
+    %6:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %7:vec2<f16> = load %6
+    store %5, %7
+    %8:ptr<private, vec2<f16>, read_write> = access %p, 1i
+    %9:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %10:vec2<f16> = load %9
+    %11:vec2<f16> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<private, vec2<f16>, read_write> = access %p, 0i
+    %13:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3f27aea
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x2<f16>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, mat3x2<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f16> = load %u
+    store %s, %4
+    %5:ptr<storage, vec2<f16>, read_write> = access %s, 1i
+    %6:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %7:vec2<f16> = load %6
+    store %5, %7
+    %8:ptr<storage, vec2<f16>, read_write> = access %s, 1i
+    %9:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %10:vec2<f16> = load %9
+    %11:vec2<f16> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<storage, vec2<f16>, read_write> = access %s, 0i
+    %13:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..81f1128
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x2<f16>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, mat3x2<f16>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f16> = load %u
+    store %w, %4
+    %5:ptr<workgroup, vec2<f16>, read_write> = access %w, 1i
+    %6:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %7:vec2<f16> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec2<f16>, read_write> = access %w, 1i
+    %9:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %10:vec2<f16> = load %9
+    %11:vec2<f16> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<workgroup, vec2<f16>, read_write> = access %w, 0i
+    %13:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d3d90db
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat3x2<f32>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat3x2<f32>, read> = let %m
+    %9:i32 = call %i
+    %p_m_i:ptr<uniform, vec2<f32>, read> = access %p_m, %9
+    %l_m:mat3x2<f32> = load %p_m
+    %l_m_i:vec2<f32> = load %p_m_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x2_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..18c3cce
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat3x2<f32>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat3x2<f32>, read> = let %m
+    %p_m_1:ptr<uniform, vec2<f32>, read> = access %p_m, 1i
+    %l_m:mat3x2<f32> = load %p_m
+    %l_m_1:vec2<f32> = load %p_m_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..535ddb0
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x2<f32>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:mat3x2<f32> = load %u
+    %t:mat2x3<f32> = transpose %3
+    %5:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %6:vec2<f32> = load %5
+    %l:f32 = length %6
+    %8:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %9:vec2<f32> = load %8
+    %10:vec2<f32> = swizzle %9, yx
+    %11:f32 = access %10, 0u
+    %a:f32 = abs %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28f78bb
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x2<f32>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%m:mat3x2<f32>):void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%v:vec2<f32>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%f:f32):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {  # %f_1: 'f'
+  %b5 = block {
+    %9:mat3x2<f32> = load %u
+    %10:void = call %a, %9
+    %11:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %12:vec2<f32> = load %11
+    %13:void = call %b, %12
+    %14:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %15:vec2<f32> = load %14
+    %16:vec2<f32> = swizzle %15, yx
+    %17:void = call %b, %16
+    %18:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %19:f32 = load_vector_element %18, 0u
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %22:vec2<f32> = load %21
+    %23:vec2<f32> = swizzle %22, yx
+    %24:f32 = access %23, 0u
+    %25:void = call %c, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..98d3c68
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x2<f32>, read> = var @binding_point(0, 0)
+  %p:ptr<private, mat3x2<f32>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f32> = load %u
+    store %p, %4
+    %5:ptr<private, vec2<f32>, read_write> = access %p, 1i
+    %6:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %7:vec2<f32> = load %6
+    store %5, %7
+    %8:ptr<private, vec2<f32>, read_write> = access %p, 1i
+    %9:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %10:vec2<f32> = load %9
+    %11:vec2<f32> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<private, vec2<f32>, read_write> = access %p, 0i
+    %13:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..33f2504
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x2<f32>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f32> = load %u
+    store %s, %4
+    %5:ptr<storage, vec2<f32>, read_write> = access %s, 1i
+    %6:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %7:vec2<f32> = load %6
+    store %5, %7
+    %8:ptr<storage, vec2<f32>, read_write> = access %s, 1i
+    %9:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %10:vec2<f32> = load %9
+    %11:vec2<f32> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<storage, vec2<f32>, read_write> = access %s, 0i
+    %13:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e903ad8
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x2<f32>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, mat3x2<f32>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f32> = load %u
+    store %w, %4
+    %5:ptr<workgroup, vec2<f32>, read_write> = access %w, 1i
+    %6:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %7:vec2<f32> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec2<f32>, read_write> = access %w, 1i
+    %9:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %10:vec2<f32> = load %9
+    %11:vec2<f32> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<workgroup, vec2<f32>, read_write> = access %w, 0i
+    %13:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..069fa27
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat3x3<f16>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat3x3<f16>, read> = let %m
+    %9:i32 = call %i
+    %p_m_i:ptr<uniform, vec3<f16>, read> = access %p_m, %9
+    %l_m:mat3x3<f16> = load %p_m
+    %l_m_i:vec3<f16> = load %p_m_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x3_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..79f04e3
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat3x3<f16>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat3x3<f16>, read> = let %m
+    %p_m_1:ptr<uniform, vec3<f16>, read> = access %p_m, 1i
+    %l_m:mat3x3<f16> = load %p_m
+    %l_m_1:vec3<f16> = load %p_m_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ec69afd
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x3<f16>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:mat3x3<f16> = load %u
+    %t:mat3x3<f16> = transpose %3
+    %5:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %6:vec3<f16> = load %5
+    %l:f16 = length %6
+    %8:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %9:vec3<f16> = load %8
+    %10:vec3<f16> = swizzle %9, zxy
+    %11:f16 = access %10, 0u
+    %a:f16 = abs %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4ea6635
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x3<f16>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%m:mat3x3<f16>):void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%v:vec3<f16>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%f:f16):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {  # %f_1: 'f'
+  %b5 = block {
+    %9:mat3x3<f16> = load %u
+    %10:void = call %a, %9
+    %11:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %12:vec3<f16> = load %11
+    %13:void = call %b, %12
+    %14:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %15:vec3<f16> = load %14
+    %16:vec3<f16> = swizzle %15, zxy
+    %17:void = call %b, %16
+    %18:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %19:f16 = load_vector_element %18, 0u
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %22:vec3<f16> = load %21
+    %23:vec3<f16> = swizzle %22, zxy
+    %24:f16 = access %23, 0u
+    %25:void = call %c, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9f5ee9d
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x3<f16>, read> = var @binding_point(0, 0)
+  %p:ptr<private, mat3x3<f16>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f16> = load %u
+    store %p, %4
+    %5:ptr<private, vec3<f16>, read_write> = access %p, 1i
+    %6:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %7:vec3<f16> = load %6
+    store %5, %7
+    %8:ptr<private, vec3<f16>, read_write> = access %p, 1i
+    %9:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %10:vec3<f16> = load %9
+    %11:vec3<f16> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<private, vec3<f16>, read_write> = access %p, 0i
+    %13:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..70a150d
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x3<f16>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, mat3x3<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f16> = load %u
+    store %s, %4
+    %5:ptr<storage, vec3<f16>, read_write> = access %s, 1i
+    %6:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %7:vec3<f16> = load %6
+    store %5, %7
+    %8:ptr<storage, vec3<f16>, read_write> = access %s, 1i
+    %9:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %10:vec3<f16> = load %9
+    %11:vec3<f16> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<storage, vec3<f16>, read_write> = access %s, 0i
+    %13:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..22c48c0
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x3<f16>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, mat3x3<f16>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f16> = load %u
+    store %w, %4
+    %5:ptr<workgroup, vec3<f16>, read_write> = access %w, 1i
+    %6:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %7:vec3<f16> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec3<f16>, read_write> = access %w, 1i
+    %9:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %10:vec3<f16> = load %9
+    %11:vec3<f16> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<workgroup, vec3<f16>, read_write> = access %w, 0i
+    %13:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ee02b29
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat3x3<f32>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat3x3<f32>, read> = let %m
+    %9:i32 = call %i
+    %p_m_i:ptr<uniform, vec3<f32>, read> = access %p_m, %9
+    %l_m:mat3x3<f32> = load %p_m
+    %l_m_i:vec3<f32> = load %p_m_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0ec69d2c
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat3x3<f32>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat3x3<f32>, read> = let %m
+    %p_m_1:ptr<uniform, vec3<f32>, read> = access %p_m, 1i
+    %l_m:mat3x3<f32> = load %p_m
+    %l_m_1:vec3<f32> = load %p_m_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b04e140
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x3<f32>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:mat3x3<f32> = load %u
+    %t:mat3x3<f32> = transpose %3
+    %5:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %6:vec3<f32> = load %5
+    %l:f32 = length %6
+    %8:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %9:vec3<f32> = load %8
+    %10:vec3<f32> = swizzle %9, zxy
+    %11:f32 = access %10, 0u
+    %a:f32 = abs %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cf7cd2b
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x3<f32>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%m:mat3x3<f32>):void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%v:vec3<f32>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%f:f32):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {  # %f_1: 'f'
+  %b5 = block {
+    %9:mat3x3<f32> = load %u
+    %10:void = call %a, %9
+    %11:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %12:vec3<f32> = load %11
+    %13:void = call %b, %12
+    %14:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %15:vec3<f32> = load %14
+    %16:vec3<f32> = swizzle %15, zxy
+    %17:void = call %b, %16
+    %18:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %19:f32 = load_vector_element %18, 0u
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %22:vec3<f32> = load %21
+    %23:vec3<f32> = swizzle %22, zxy
+    %24:f32 = access %23, 0u
+    %25:void = call %c, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e25b41e
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x3<f32>, read> = var @binding_point(0, 0)
+  %p:ptr<private, mat3x3<f32>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f32> = load %u
+    store %p, %4
+    %5:ptr<private, vec3<f32>, read_write> = access %p, 1i
+    %6:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %7:vec3<f32> = load %6
+    store %5, %7
+    %8:ptr<private, vec3<f32>, read_write> = access %p, 1i
+    %9:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %10:vec3<f32> = load %9
+    %11:vec3<f32> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<private, vec3<f32>, read_write> = access %p, 0i
+    %13:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..67b3a37
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x3<f32>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f32> = load %u
+    store %s, %4
+    %5:ptr<storage, vec3<f32>, read_write> = access %s, 1i
+    %6:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %7:vec3<f32> = load %6
+    store %5, %7
+    %8:ptr<storage, vec3<f32>, read_write> = access %s, 1i
+    %9:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %10:vec3<f32> = load %9
+    %11:vec3<f32> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<storage, vec3<f32>, read_write> = access %s, 0i
+    %13:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b82634b
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x3<f32>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, mat3x3<f32>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f32> = load %u
+    store %w, %4
+    %5:ptr<workgroup, vec3<f32>, read_write> = access %w, 1i
+    %6:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %7:vec3<f32> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec3<f32>, read_write> = access %w, 1i
+    %9:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %10:vec3<f32> = load %9
+    %11:vec3<f32> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<workgroup, vec3<f32>, read_write> = access %w, 0i
+    %13:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e0f32bf
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat3x4<f16>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat3x4<f16>, read> = let %m
+    %9:i32 = call %i
+    %p_m_i:ptr<uniform, vec4<f16>, read> = access %p_m, %9
+    %l_m:mat3x4<f16> = load %p_m
+    %l_m_i:vec4<f16> = load %p_m_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x4_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fce40e4
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat3x4<f16>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat3x4<f16>, read> = let %m
+    %p_m_1:ptr<uniform, vec4<f16>, read> = access %p_m, 1i
+    %l_m:mat3x4<f16> = load %p_m
+    %l_m_1:vec4<f16> = load %p_m_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..49ff783
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x4<f16>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:mat3x4<f16> = load %u
+    %t:mat4x3<f16> = transpose %3
+    %5:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %6:vec4<f16> = load %5
+    %l:f16 = length %6
+    %8:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %9:vec4<f16> = load %8
+    %10:vec4<f16> = swizzle %9, ywxz
+    %11:f16 = access %10, 0u
+    %a:f16 = abs %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..76b983b
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x4<f16>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%m:mat3x4<f16>):void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%v:vec4<f16>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%f:f16):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {  # %f_1: 'f'
+  %b5 = block {
+    %9:mat3x4<f16> = load %u
+    %10:void = call %a, %9
+    %11:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %12:vec4<f16> = load %11
+    %13:void = call %b, %12
+    %14:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %15:vec4<f16> = load %14
+    %16:vec4<f16> = swizzle %15, ywxz
+    %17:void = call %b, %16
+    %18:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %19:f16 = load_vector_element %18, 0u
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %22:vec4<f16> = load %21
+    %23:vec4<f16> = swizzle %22, ywxz
+    %24:f16 = access %23, 0u
+    %25:void = call %c, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c3ab1fa
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x4<f16>, read> = var @binding_point(0, 0)
+  %p:ptr<private, mat3x4<f16>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f16> = load %u
+    store %p, %4
+    %5:ptr<private, vec4<f16>, read_write> = access %p, 1i
+    %6:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %7:vec4<f16> = load %6
+    store %5, %7
+    %8:ptr<private, vec4<f16>, read_write> = access %p, 1i
+    %9:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %10:vec4<f16> = load %9
+    %11:vec4<f16> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<private, vec4<f16>, read_write> = access %p, 0i
+    %13:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5eede1d
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x4<f16>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, mat3x4<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f16> = load %u
+    store %s, %4
+    %5:ptr<storage, vec4<f16>, read_write> = access %s, 1i
+    %6:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %7:vec4<f16> = load %6
+    store %5, %7
+    %8:ptr<storage, vec4<f16>, read_write> = access %s, 1i
+    %9:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %10:vec4<f16> = load %9
+    %11:vec4<f16> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<storage, vec4<f16>, read_write> = access %s, 0i
+    %13:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9bc230d
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x4<f16>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, mat3x4<f16>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f16> = load %u
+    store %w, %4
+    %5:ptr<workgroup, vec4<f16>, read_write> = access %w, 1i
+    %6:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %7:vec4<f16> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec4<f16>, read_write> = access %w, 1i
+    %9:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %10:vec4<f16> = load %9
+    %11:vec4<f16> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<workgroup, vec4<f16>, read_write> = access %w, 0i
+    %13:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4fe1ad2
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat3x4<f32>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat3x4<f32>, read> = let %m
+    %9:i32 = call %i
+    %p_m_i:ptr<uniform, vec4<f32>, read> = access %p_m, %9
+    %l_m:mat3x4<f32> = load %p_m
+    %l_m_i:vec4<f32> = load %p_m_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f99ccff
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat3x4<f32>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat3x4<f32>, read> = let %m
+    %p_m_1:ptr<uniform, vec4<f32>, read> = access %p_m, 1i
+    %l_m:mat3x4<f32> = load %p_m
+    %l_m_1:vec4<f32> = load %p_m_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..376d33f
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x4<f32>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:mat3x4<f32> = load %u
+    %t:mat4x3<f32> = transpose %3
+    %5:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %6:vec4<f32> = load %5
+    %l:f32 = length %6
+    %8:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %9:vec4<f32> = load %8
+    %10:vec4<f32> = swizzle %9, ywxz
+    %11:f32 = access %10, 0u
+    %a:f32 = abs %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6611c8c
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x4<f32>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%m:mat3x4<f32>):void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%v:vec4<f32>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%f:f32):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {  # %f_1: 'f'
+  %b5 = block {
+    %9:mat3x4<f32> = load %u
+    %10:void = call %a, %9
+    %11:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %12:vec4<f32> = load %11
+    %13:void = call %b, %12
+    %14:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %15:vec4<f32> = load %14
+    %16:vec4<f32> = swizzle %15, ywxz
+    %17:void = call %b, %16
+    %18:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %19:f32 = load_vector_element %18, 0u
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %22:vec4<f32> = load %21
+    %23:vec4<f32> = swizzle %22, ywxz
+    %24:f32 = access %23, 0u
+    %25:void = call %c, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e50a043
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x4<f32>, read> = var @binding_point(0, 0)
+  %p:ptr<private, mat3x4<f32>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f32> = load %u
+    store %p, %4
+    %5:ptr<private, vec4<f32>, read_write> = access %p, 1i
+    %6:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %7:vec4<f32> = load %6
+    store %5, %7
+    %8:ptr<private, vec4<f32>, read_write> = access %p, 1i
+    %9:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %10:vec4<f32> = load %9
+    %11:vec4<f32> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<private, vec4<f32>, read_write> = access %p, 0i
+    %13:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8231629
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x4<f32>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f32> = load %u
+    store %s, %4
+    %5:ptr<storage, vec4<f32>, read_write> = access %s, 1i
+    %6:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %7:vec4<f32> = load %6
+    store %5, %7
+    %8:ptr<storage, vec4<f32>, read_write> = access %s, 1i
+    %9:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %10:vec4<f32> = load %9
+    %11:vec4<f32> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<storage, vec4<f32>, read_write> = access %s, 0i
+    %13:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..49d958d
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x4<f32>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, mat3x4<f32>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f32> = load %u
+    store %w, %4
+    %5:ptr<workgroup, vec4<f32>, read_write> = access %w, 1i
+    %6:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %7:vec4<f32> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec4<f32>, read_write> = access %w, 1i
+    %9:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %10:vec4<f32> = load %9
+    %11:vec4<f32> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<workgroup, vec4<f32>, read_write> = access %w, 0i
+    %13:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..286f7f6
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat4x2<f16>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat4x2<f16>, read> = let %m
+    %9:i32 = call %i
+    %p_m_i:ptr<uniform, vec2<f16>, read> = access %p_m, %9
+    %l_m:mat4x2<f16> = load %p_m
+    %l_m_i:vec2<f16> = load %p_m_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b9711ae
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat4x2<f16>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat4x2<f16>, read> = let %m
+    %p_m_1:ptr<uniform, vec2<f16>, read> = access %p_m, 1i
+    %l_m:mat4x2<f16> = load %p_m
+    %l_m_1:vec2<f16> = load %p_m_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..25a50ce
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x2<f16>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:mat4x2<f16> = load %u
+    %t:mat2x4<f16> = transpose %3
+    %5:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %6:vec2<f16> = load %5
+    %l:f16 = length %6
+    %8:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %9:vec2<f16> = load %8
+    %10:vec2<f16> = swizzle %9, yx
+    %11:f16 = access %10, 0u
+    %a:f16 = abs %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6bc5e8a
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x2<f16>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%m:mat4x2<f16>):void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%v:vec2<f16>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%f:f16):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {  # %f_1: 'f'
+  %b5 = block {
+    %9:mat4x2<f16> = load %u
+    %10:void = call %a, %9
+    %11:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %12:vec2<f16> = load %11
+    %13:void = call %b, %12
+    %14:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %15:vec2<f16> = load %14
+    %16:vec2<f16> = swizzle %15, yx
+    %17:void = call %b, %16
+    %18:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %19:f16 = load_vector_element %18, 0u
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %22:vec2<f16> = load %21
+    %23:vec2<f16> = swizzle %22, yx
+    %24:f16 = access %23, 0u
+    %25:void = call %c, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f04ceab
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x2<f16>, read> = var @binding_point(0, 0)
+  %p:ptr<private, mat4x2<f16>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f16> = load %u
+    store %p, %4
+    %5:ptr<private, vec2<f16>, read_write> = access %p, 1i
+    %6:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %7:vec2<f16> = load %6
+    store %5, %7
+    %8:ptr<private, vec2<f16>, read_write> = access %p, 1i
+    %9:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %10:vec2<f16> = load %9
+    %11:vec2<f16> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<private, vec2<f16>, read_write> = access %p, 0i
+    %13:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5c4c080
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x2<f16>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, mat4x2<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f16> = load %u
+    store %s, %4
+    %5:ptr<storage, vec2<f16>, read_write> = access %s, 1i
+    %6:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %7:vec2<f16> = load %6
+    store %5, %7
+    %8:ptr<storage, vec2<f16>, read_write> = access %s, 1i
+    %9:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %10:vec2<f16> = load %9
+    %11:vec2<f16> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<storage, vec2<f16>, read_write> = access %s, 0i
+    %13:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a31eb1a
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x2<f16>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, mat4x2<f16>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f16> = load %u
+    store %w, %4
+    %5:ptr<workgroup, vec2<f16>, read_write> = access %w, 1i
+    %6:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %7:vec2<f16> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec2<f16>, read_write> = access %w, 1i
+    %9:ptr<uniform, vec2<f16>, read> = access %u, 0i
+    %10:vec2<f16> = load %9
+    %11:vec2<f16> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<workgroup, vec2<f16>, read_write> = access %w, 0i
+    %13:ptr<uniform, vec2<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5c5ba9b
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat4x2<f32>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat4x2<f32>, read> = let %m
+    %9:i32 = call %i
+    %p_m_i:ptr<uniform, vec2<f32>, read> = access %p_m, %9
+    %l_m:mat4x2<f32> = load %p_m
+    %l_m_i:vec2<f32> = load %p_m_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e42efb1
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat4x2<f32>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat4x2<f32>, read> = let %m
+    %p_m_1:ptr<uniform, vec2<f32>, read> = access %p_m, 1i
+    %l_m:mat4x2<f32> = load %p_m
+    %l_m_1:vec2<f32> = load %p_m_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..070f0a1
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x2<f32>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:mat4x2<f32> = load %u
+    %t:mat2x4<f32> = transpose %3
+    %5:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %6:vec2<f32> = load %5
+    %l:f32 = length %6
+    %8:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %9:vec2<f32> = load %8
+    %10:vec2<f32> = swizzle %9, yx
+    %11:f32 = access %10, 0u
+    %a:f32 = abs %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..941364e
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x2<f32>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%m:mat4x2<f32>):void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%v:vec2<f32>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%f:f32):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {  # %f_1: 'f'
+  %b5 = block {
+    %9:mat4x2<f32> = load %u
+    %10:void = call %a, %9
+    %11:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %12:vec2<f32> = load %11
+    %13:void = call %b, %12
+    %14:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %15:vec2<f32> = load %14
+    %16:vec2<f32> = swizzle %15, yx
+    %17:void = call %b, %16
+    %18:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %19:f32 = load_vector_element %18, 0u
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %22:vec2<f32> = load %21
+    %23:vec2<f32> = swizzle %22, yx
+    %24:f32 = access %23, 0u
+    %25:void = call %c, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..506bb84
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x2<f32>, read> = var @binding_point(0, 0)
+  %p:ptr<private, mat4x2<f32>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f32> = load %u
+    store %p, %4
+    %5:ptr<private, vec2<f32>, read_write> = access %p, 1i
+    %6:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %7:vec2<f32> = load %6
+    store %5, %7
+    %8:ptr<private, vec2<f32>, read_write> = access %p, 1i
+    %9:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %10:vec2<f32> = load %9
+    %11:vec2<f32> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<private, vec2<f32>, read_write> = access %p, 0i
+    %13:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3206af9
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x2<f32>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f32> = load %u
+    store %s, %4
+    %5:ptr<storage, vec2<f32>, read_write> = access %s, 1i
+    %6:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %7:vec2<f32> = load %6
+    store %5, %7
+    %8:ptr<storage, vec2<f32>, read_write> = access %s, 1i
+    %9:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %10:vec2<f32> = load %9
+    %11:vec2<f32> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<storage, vec2<f32>, read_write> = access %s, 0i
+    %13:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3b495d6
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x2<f32>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, mat4x2<f32>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f32> = load %u
+    store %w, %4
+    %5:ptr<workgroup, vec2<f32>, read_write> = access %w, 1i
+    %6:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %7:vec2<f32> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec2<f32>, read_write> = access %w, 1i
+    %9:ptr<uniform, vec2<f32>, read> = access %u, 0i
+    %10:vec2<f32> = load %9
+    %11:vec2<f32> = swizzle %10, yx
+    store %8, %11
+    %12:ptr<workgroup, vec2<f32>, read_write> = access %w, 0i
+    %13:ptr<uniform, vec2<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..312a211
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat4x3<f16>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat4x3<f16>, read> = let %m
+    %9:i32 = call %i
+    %p_m_i:ptr<uniform, vec3<f16>, read> = access %p_m, %9
+    %l_m:mat4x3<f16> = load %p_m
+    %l_m_i:vec3<f16> = load %p_m_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e7685d8
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat4x3<f16>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat4x3<f16>, read> = let %m
+    %p_m_1:ptr<uniform, vec3<f16>, read> = access %p_m, 1i
+    %l_m:mat4x3<f16> = load %p_m
+    %l_m_1:vec3<f16> = load %p_m_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..61f7d76
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x3<f16>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:mat4x3<f16> = load %u
+    %t:mat3x4<f16> = transpose %3
+    %5:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %6:vec3<f16> = load %5
+    %l:f16 = length %6
+    %8:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %9:vec3<f16> = load %8
+    %10:vec3<f16> = swizzle %9, zxy
+    %11:f16 = access %10, 0u
+    %a:f16 = abs %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f54edaf
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x3<f16>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%m:mat4x3<f16>):void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%v:vec3<f16>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%f:f16):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {  # %f_1: 'f'
+  %b5 = block {
+    %9:mat4x3<f16> = load %u
+    %10:void = call %a, %9
+    %11:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %12:vec3<f16> = load %11
+    %13:void = call %b, %12
+    %14:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %15:vec3<f16> = load %14
+    %16:vec3<f16> = swizzle %15, zxy
+    %17:void = call %b, %16
+    %18:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %19:f16 = load_vector_element %18, 0u
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %22:vec3<f16> = load %21
+    %23:vec3<f16> = swizzle %22, zxy
+    %24:f16 = access %23, 0u
+    %25:void = call %c, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..61513da
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x3<f16>, read> = var @binding_point(0, 0)
+  %p:ptr<private, mat4x3<f16>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f16> = load %u
+    store %p, %4
+    %5:ptr<private, vec3<f16>, read_write> = access %p, 1i
+    %6:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %7:vec3<f16> = load %6
+    store %5, %7
+    %8:ptr<private, vec3<f16>, read_write> = access %p, 1i
+    %9:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %10:vec3<f16> = load %9
+    %11:vec3<f16> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<private, vec3<f16>, read_write> = access %p, 0i
+    %13:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d7e305e
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x3<f16>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, mat4x3<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f16> = load %u
+    store %s, %4
+    %5:ptr<storage, vec3<f16>, read_write> = access %s, 1i
+    %6:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %7:vec3<f16> = load %6
+    store %5, %7
+    %8:ptr<storage, vec3<f16>, read_write> = access %s, 1i
+    %9:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %10:vec3<f16> = load %9
+    %11:vec3<f16> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<storage, vec3<f16>, read_write> = access %s, 0i
+    %13:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..735464c
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x3<f16>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, mat4x3<f16>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f16> = load %u
+    store %w, %4
+    %5:ptr<workgroup, vec3<f16>, read_write> = access %w, 1i
+    %6:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %7:vec3<f16> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec3<f16>, read_write> = access %w, 1i
+    %9:ptr<uniform, vec3<f16>, read> = access %u, 0i
+    %10:vec3<f16> = load %9
+    %11:vec3<f16> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<workgroup, vec3<f16>, read_write> = access %w, 0i
+    %13:ptr<uniform, vec3<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cc38512
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat4x3<f32>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat4x3<f32>, read> = let %m
+    %9:i32 = call %i
+    %p_m_i:ptr<uniform, vec3<f32>, read> = access %p_m, %9
+    %l_m:mat4x3<f32> = load %p_m
+    %l_m_i:vec3<f32> = load %p_m_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..26c10bf
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat4x3<f32>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat4x3<f32>, read> = let %m
+    %p_m_1:ptr<uniform, vec3<f32>, read> = access %p_m, 1i
+    %l_m:mat4x3<f32> = load %p_m
+    %l_m_1:vec3<f32> = load %p_m_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8bfb8f2
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x3<f32>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:mat4x3<f32> = load %u
+    %t:mat3x4<f32> = transpose %3
+    %5:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %6:vec3<f32> = load %5
+    %l:f32 = length %6
+    %8:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %9:vec3<f32> = load %8
+    %10:vec3<f32> = swizzle %9, zxy
+    %11:f32 = access %10, 0u
+    %a:f32 = abs %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..99b9217
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x3<f32>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%m:mat4x3<f32>):void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%v:vec3<f32>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%f:f32):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {  # %f_1: 'f'
+  %b5 = block {
+    %9:mat4x3<f32> = load %u
+    %10:void = call %a, %9
+    %11:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %12:vec3<f32> = load %11
+    %13:void = call %b, %12
+    %14:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %15:vec3<f32> = load %14
+    %16:vec3<f32> = swizzle %15, zxy
+    %17:void = call %b, %16
+    %18:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %19:f32 = load_vector_element %18, 0u
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %22:vec3<f32> = load %21
+    %23:vec3<f32> = swizzle %22, zxy
+    %24:f32 = access %23, 0u
+    %25:void = call %c, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..40b6eb1
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x3<f32>, read> = var @binding_point(0, 0)
+  %p:ptr<private, mat4x3<f32>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f32> = load %u
+    store %p, %4
+    %5:ptr<private, vec3<f32>, read_write> = access %p, 1i
+    %6:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %7:vec3<f32> = load %6
+    store %5, %7
+    %8:ptr<private, vec3<f32>, read_write> = access %p, 1i
+    %9:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %10:vec3<f32> = load %9
+    %11:vec3<f32> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<private, vec3<f32>, read_write> = access %p, 0i
+    %13:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f3dfcaa
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x3<f32>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f32> = load %u
+    store %s, %4
+    %5:ptr<storage, vec3<f32>, read_write> = access %s, 1i
+    %6:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %7:vec3<f32> = load %6
+    store %5, %7
+    %8:ptr<storage, vec3<f32>, read_write> = access %s, 1i
+    %9:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %10:vec3<f32> = load %9
+    %11:vec3<f32> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<storage, vec3<f32>, read_write> = access %s, 0i
+    %13:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f61ad92
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x3<f32>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, mat4x3<f32>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f32> = load %u
+    store %w, %4
+    %5:ptr<workgroup, vec3<f32>, read_write> = access %w, 1i
+    %6:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %7:vec3<f32> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec3<f32>, read_write> = access %w, 1i
+    %9:ptr<uniform, vec3<f32>, read> = access %u, 0i
+    %10:vec3<f32> = load %9
+    %11:vec3<f32> = swizzle %10, zxy
+    store %8, %11
+    %12:ptr<workgroup, vec3<f32>, read_write> = access %w, 0i
+    %13:ptr<uniform, vec3<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b216cd2
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat4x4<f16>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat4x4<f16>, read> = let %m
+    %9:i32 = call %i
+    %p_m_i:ptr<uniform, vec4<f16>, read> = access %p_m, %9
+    %l_m:mat4x4<f16> = load %p_m
+    %l_m_i:vec4<f16> = load %p_m_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e6a9990
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat4x4<f16>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat4x4<f16>, read> = let %m
+    %p_m_1:ptr<uniform, vec4<f16>, read> = access %p_m, 1i
+    %l_m:mat4x4<f16> = load %p_m
+    %l_m_1:vec4<f16> = load %p_m_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..88f8c8c
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x4<f16>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:mat4x4<f16> = load %u
+    %t:mat4x4<f16> = transpose %3
+    %5:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %6:vec4<f16> = load %5
+    %l:f16 = length %6
+    %8:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %9:vec4<f16> = load %8
+    %10:vec4<f16> = swizzle %9, ywxz
+    %11:f16 = access %10, 0u
+    %a:f16 = abs %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0ff46b3
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x4<f16>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%m:mat4x4<f16>):void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%v:vec4<f16>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%f:f16):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {  # %f_1: 'f'
+  %b5 = block {
+    %9:mat4x4<f16> = load %u
+    %10:void = call %a, %9
+    %11:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %12:vec4<f16> = load %11
+    %13:void = call %b, %12
+    %14:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %15:vec4<f16> = load %14
+    %16:vec4<f16> = swizzle %15, ywxz
+    %17:void = call %b, %16
+    %18:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %19:f16 = load_vector_element %18, 0u
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %22:vec4<f16> = load %21
+    %23:vec4<f16> = swizzle %22, ywxz
+    %24:f16 = access %23, 0u
+    %25:void = call %c, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..014a389
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x4<f16>, read> = var @binding_point(0, 0)
+  %p:ptr<private, mat4x4<f16>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f16> = load %u
+    store %p, %4
+    %5:ptr<private, vec4<f16>, read_write> = access %p, 1i
+    %6:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %7:vec4<f16> = load %6
+    store %5, %7
+    %8:ptr<private, vec4<f16>, read_write> = access %p, 1i
+    %9:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %10:vec4<f16> = load %9
+    %11:vec4<f16> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<private, vec4<f16>, read_write> = access %p, 0i
+    %13:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..00e56b6
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x4<f16>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, mat4x4<f16>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f16> = load %u
+    store %s, %4
+    %5:ptr<storage, vec4<f16>, read_write> = access %s, 1i
+    %6:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %7:vec4<f16> = load %6
+    store %5, %7
+    %8:ptr<storage, vec4<f16>, read_write> = access %s, 1i
+    %9:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %10:vec4<f16> = load %9
+    %11:vec4<f16> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<storage, vec4<f16>, read_write> = access %s, 0i
+    %13:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4661ed0
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x4<f16>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, mat4x4<f16>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f16> = load %u
+    store %w, %4
+    %5:ptr<workgroup, vec4<f16>, read_write> = access %w, 1i
+    %6:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %7:vec4<f16> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec4<f16>, read_write> = access %w, 1i
+    %9:ptr<uniform, vec4<f16>, read> = access %u, 0i
+    %10:vec4<f16> = load %9
+    %11:vec4<f16> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<workgroup, vec4<f16>, read_write> = access %w, 0i
+    %13:ptr<uniform, vec4<f16>, read> = access %u, 1i
+    %14:f16 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5430b17
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat4x4<f32>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat4x4<f32>, read> = let %m
+    %9:i32 = call %i
+    %p_m_i:ptr<uniform, vec4<f32>, read> = access %p_m, %9
+    %l_m:mat4x4<f32> = load %p_m
+    %l_m_i:vec4<f32> = load %p_m_i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..011471b
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<uniform, mat4x4<f32>, read> = var @binding_point(0, 0)
+  %counter:ptr<private, i32, read_write> = var, 0i
+}
+
+%i = func():i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %counter
+    %5:i32 = add %4, 1i
+    store %counter, %5
+    %6:i32 = load %counter
+    ret %6
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %p_m:ptr<uniform, mat4x4<f32>, read> = let %m
+    %p_m_1:ptr<uniform, vec4<f32>, read> = access %p_m, 1i
+    %l_m:mat4x4<f32> = load %p_m
+    %l_m_1:vec4<f32> = load %p_m_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_builtin.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1adcdb6
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x4<f32>, read> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:mat4x4<f32> = load %u
+    %t:mat4x4<f32> = transpose %3
+    %5:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %6:vec4<f32> = load %5
+    %l:f32 = length %6
+    %8:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %9:vec4<f32> = load %8
+    %10:vec4<f32> = swizzle %9, ywxz
+    %11:f32 = access %10, 0u
+    %a:f32 = abs %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8c2ae43
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_fn.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x4<f32>, read> = var @binding_point(0, 0)
+}
+
+%a = func(%m:mat4x4<f32>):void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%b = func(%v:vec4<f32>):void -> %b3 {
+  %b3 = block {
+    ret
+  }
+}
+%c = func(%f:f32):void -> %b4 {
+  %b4 = block {
+    ret
+  }
+}
+%f_1 = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {  # %f_1: 'f'
+  %b5 = block {
+    %9:mat4x4<f32> = load %u
+    %10:void = call %a, %9
+    %11:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %12:vec4<f32> = load %11
+    %13:void = call %b, %12
+    %14:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %15:vec4<f32> = load %14
+    %16:vec4<f32> = swizzle %15, ywxz
+    %17:void = call %b, %16
+    %18:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %19:f32 = load_vector_element %18, 0u
+    %20:void = call %c, %19
+    %21:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %22:vec4<f32> = load %21
+    %23:vec4<f32> = swizzle %22, ywxz
+    %24:f32 = access %23, 0u
+    %25:void = call %c, %24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..39f0e8d
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_private.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x4<f32>, read> = var @binding_point(0, 0)
+  %p:ptr<private, mat4x4<f32>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f32> = load %u
+    store %p, %4
+    %5:ptr<private, vec4<f32>, read_write> = access %p, 1i
+    %6:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %7:vec4<f32> = load %6
+    store %5, %7
+    %8:ptr<private, vec4<f32>, read_write> = access %p, 1i
+    %9:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %10:vec4<f32> = load %9
+    %11:vec4<f32> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<private, vec4<f32>, read_write> = access %p, 0i
+    %13:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1245fdb
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_storage.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x4<f32>, read> = var @binding_point(0, 0)
+  %s:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f32> = load %u
+    store %s, %4
+    %5:ptr<storage, vec4<f32>, read_write> = access %s, 1i
+    %6:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %7:vec4<f32> = load %6
+    store %5, %7
+    %8:ptr<storage, vec4<f32>, read_write> = access %s, 1i
+    %9:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %10:vec4<f32> = load %9
+    %11:vec4<f32> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<storage, vec4<f32>, read_write> = access %s, 0i
+    %13:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_workgroup.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a89e85c
--- /dev/null
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x4<f32>, read> = var @binding_point(0, 0)
+  %w:ptr<workgroup, mat4x4<f32>, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f32> = load %u
+    store %w, %4
+    %5:ptr<workgroup, vec4<f32>, read_write> = access %w, 1i
+    %6:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %7:vec4<f32> = load %6
+    store %5, %7
+    %8:ptr<workgroup, vec4<f32>, read_write> = access %w, 1i
+    %9:ptr<uniform, vec4<f32>, read> = access %u, 0i
+    %10:vec4<f32> = load %9
+    %11:vec4<f32> = swizzle %10, ywxz
+    store %8, %11
+    %12:ptr<workgroup, vec4<f32>, read_write> = access %w, 0i
+    %13:ptr<uniform, vec4<f32>, read> = access %u, 1i
+    %14:f32 = load_vector_element %13, 0i
+    store_vector_element %12, 1i, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a644025
--- /dev/null
+++ b/test/tint/buffer/uniform/types/f16.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, f16, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:f16 = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bac63fc
--- /dev/null
+++ b/test/tint/buffer/uniform/types/f32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, f32, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:f32 = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/i32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..14ca4df
--- /dev/null
+++ b/test/tint/buffer/uniform/types/i32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, i32, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:i32 = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/mat2x2_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat2x2_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cd86fd3
--- /dev/null
+++ b/test/tint/buffer/uniform/types/mat2x2_f16.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x2<f16>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:mat2x2<f16> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/mat2x2_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat2x2_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fc906ce
--- /dev/null
+++ b/test/tint/buffer/uniform/types/mat2x2_f32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x2<f32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:mat2x2<f32> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/mat2x3_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat2x3_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0e6a340
--- /dev/null
+++ b/test/tint/buffer/uniform/types/mat2x3_f16.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x3<f16>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:mat2x3<f16> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/mat2x3_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat2x3_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..adf0fed
--- /dev/null
+++ b/test/tint/buffer/uniform/types/mat2x3_f32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x3<f32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:mat2x3<f32> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/mat2x4_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat2x4_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..70eebd1
--- /dev/null
+++ b/test/tint/buffer/uniform/types/mat2x4_f16.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x4<f16>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:mat2x4<f16> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/mat2x4_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat2x4_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0b526cb
--- /dev/null
+++ b/test/tint/buffer/uniform/types/mat2x4_f32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat2x4<f32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:mat2x4<f32> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/mat3x2_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat3x2_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..83a1b11
--- /dev/null
+++ b/test/tint/buffer/uniform/types/mat3x2_f16.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x2<f16>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:mat3x2<f16> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/mat3x2_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat3x2_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2482e7a
--- /dev/null
+++ b/test/tint/buffer/uniform/types/mat3x2_f32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x2<f32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:mat3x2<f32> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/mat3x3_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat3x3_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f8d04f8
--- /dev/null
+++ b/test/tint/buffer/uniform/types/mat3x3_f16.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x3<f16>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:mat3x3<f16> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/mat3x3_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat3x3_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0be5b17
--- /dev/null
+++ b/test/tint/buffer/uniform/types/mat3x3_f32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x3<f32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:mat3x3<f32> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/mat3x4_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat3x4_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..54e9cfe
--- /dev/null
+++ b/test/tint/buffer/uniform/types/mat3x4_f16.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x4<f16>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:mat3x4<f16> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/mat3x4_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat3x4_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..45fd1c6
--- /dev/null
+++ b/test/tint/buffer/uniform/types/mat3x4_f32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat3x4<f32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:mat3x4<f32> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/mat4x2_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat4x2_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3411dbd
--- /dev/null
+++ b/test/tint/buffer/uniform/types/mat4x2_f16.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x2<f16>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:mat4x2<f16> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/mat4x2_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat4x2_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..034bfa4
--- /dev/null
+++ b/test/tint/buffer/uniform/types/mat4x2_f32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x2<f32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:mat4x2<f32> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/mat4x3_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat4x3_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3c0c743
--- /dev/null
+++ b/test/tint/buffer/uniform/types/mat4x3_f16.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x3<f16>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:mat4x3<f16> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/mat4x3_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat4x3_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..53a6da8
--- /dev/null
+++ b/test/tint/buffer/uniform/types/mat4x3_f32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x3<f32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:mat4x3<f32> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/mat4x4_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat4x4_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c879469
--- /dev/null
+++ b/test/tint/buffer/uniform/types/mat4x4_f16.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x4<f16>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:mat4x4<f16> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/mat4x4_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat4x4_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e384e59
--- /dev/null
+++ b/test/tint/buffer/uniform/types/mat4x4_f32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, mat4x4<f32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:mat4x4<f32> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/struct_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/struct_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b567e6c
--- /dev/null
+++ b/test/tint/buffer/uniform/types/struct_f16.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(8) {
+  scalar_f16:f16 @offset(0)
+  vec3_f16:vec3<f16> @offset(8)
+  mat2x4_f16:mat2x4<f16> @offset(16)
+}
+
+S = struct @align(8) {
+  inner:Inner @offset(0)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:S = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/struct_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/struct_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9be6cf2
--- /dev/null
+++ b/test/tint/buffer/uniform/types/struct_f32.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
+  scalar_f32:f32 @offset(0)
+  vec3_f32:vec3<f32> @offset(16)
+  mat2x4_f32:mat2x4<f32> @offset(32)
+}
+
+S = struct @align(16) {
+  inner:Inner @offset(0)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:S = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/u32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8dc1f0d
--- /dev/null
+++ b/test/tint/buffer/uniform/types/u32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, u32, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:u32 = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/vec2_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec2_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a908f8d
--- /dev/null
+++ b/test/tint/buffer/uniform/types/vec2_f16.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, vec2<f16>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:vec2<f16> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/vec2_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec2_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c5bcd69
--- /dev/null
+++ b/test/tint/buffer/uniform/types/vec2_f32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, vec2<f32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:vec2<f32> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/vec2_i32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec2_i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4506737
--- /dev/null
+++ b/test/tint/buffer/uniform/types/vec2_i32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, vec2<i32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:vec2<i32> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/vec2_u32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec2_u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dc2f477
--- /dev/null
+++ b/test/tint/buffer/uniform/types/vec2_u32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, vec2<u32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:vec2<u32> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/vec3_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec3_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..52474cd
--- /dev/null
+++ b/test/tint/buffer/uniform/types/vec3_f16.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, vec3<f16>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:vec3<f16> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/vec3_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec3_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28ba54f
--- /dev/null
+++ b/test/tint/buffer/uniform/types/vec3_f32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, vec3<f32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:vec3<f32> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/vec3_i32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec3_i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8da11b1
--- /dev/null
+++ b/test/tint/buffer/uniform/types/vec3_i32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, vec3<i32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:vec3<i32> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/vec3_u32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec3_u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..509a8c0
--- /dev/null
+++ b/test/tint/buffer/uniform/types/vec3_u32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, vec3<u32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:vec3<u32> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/vec4_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec4_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c44790d
--- /dev/null
+++ b/test/tint/buffer/uniform/types/vec4_f16.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, vec4<f16>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:vec4<f16> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/vec4_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec4_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2f461bd
--- /dev/null
+++ b/test/tint/buffer/uniform/types/vec4_f32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, vec4<f32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:vec4<f32> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/vec4_i32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec4_i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..808e2fd
--- /dev/null
+++ b/test/tint/buffer/uniform/types/vec4_i32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, vec4<i32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:vec4<i32> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/buffer/uniform/types/vec4_u32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec4_u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9b7f573
--- /dev/null
+++ b/test/tint/buffer/uniform/types/vec4_u32.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, vec4<u32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %x:vec4<u32> = load %u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/chromium/1251009.wgsl.expected.ir.msl b/test/tint/bug/chromium/1251009.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/bug/chromium/1251009.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/bug/chromium/1273230.wgsl.expected.ir.msl b/test/tint/bug/chromium/1273230.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1053e3b
--- /dev/null
+++ b/test/tint/bug/chromium/1273230.wgsl.expected.ir.msl
@@ -0,0 +1,271 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(16) {
+  numTriangles:u32 @offset(0)
+  gridSize:u32 @offset(4)
+  puuuuuuuuuuuuuuuuad1:u32 @offset(8)
+  pad2:u32 @offset(12)
+  bbMin:vec3<f32> @offset(16)
+  bbMax:vec3<f32> @offset(32)
+}
+
+U32s = struct @align(4) {
+  values:array<u32> @offset(0)
+}
+
+F32s = struct @align(4) {
+  values:array<f32> @offset(0)
+}
+
+AU32s = struct @align(4) {
+  values:array<atomic<u32>> @offset(0)
+}
+
+AI32s = struct @align(4) {
+  values:array<atomic<i32>> @offset(0)
+}
+
+Dbg = struct @align(4) {
+  offsetCounter:atomic<u32> @offset(0)
+  pad0:u32 @offset(4)
+  pad1:u32 @offset(8)
+  pad2:u32 @offset(12)
+  value0:u32 @offset(16)
+  value1:u32 @offset(20)
+  value2:u32 @offset(24)
+  value3:u32 @offset(28)
+  value_f32_0:f32 @offset(32)
+  value_f32_1:f32 @offset(36)
+  value_f32_2:f32 @offset(40)
+  value_f32_3:f32 @offset(44)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(0, 0)
+  %indices:ptr<storage, U32s, read_write> = var @binding_point(0, 10)
+  %positions:ptr<storage, F32s, read_write> = var @binding_point(0, 11)
+  %counters:ptr<storage, AU32s, read_write> = var @binding_point(0, 20)
+  %LUT:ptr<storage, AI32s, read_write> = var @binding_point(0, 21)
+  %dbg:ptr<storage, Dbg, read_write> = var @binding_point(0, 50)
+}
+
+%marg8uintin = func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%toVoxelPos = func(%position:vec3<f32>):vec3<f32> -> %b3 {
+  %b3 = block {
+    %10:ptr<uniform, vec3<f32>, read> = access %uniforms, 4u
+    %11:f32 = load_vector_element %10, 0u
+    %12:ptr<uniform, vec3<f32>, read> = access %uniforms, 4u
+    %13:f32 = load_vector_element %12, 1u
+    %14:ptr<uniform, vec3<f32>, read> = access %uniforms, 4u
+    %15:f32 = load_vector_element %14, 2u
+    %16:vec3<f32> = construct %11, %13, %15
+    %bbMin:ptr<function, vec3<f32>, read_write> = var, %16
+    %18:ptr<uniform, vec3<f32>, read> = access %uniforms, 5u
+    %19:f32 = load_vector_element %18, 0u
+    %20:ptr<uniform, vec3<f32>, read> = access %uniforms, 5u
+    %21:f32 = load_vector_element %20, 1u
+    %22:ptr<uniform, vec3<f32>, read> = access %uniforms, 5u
+    %23:f32 = load_vector_element %22, 2u
+    %24:vec3<f32> = construct %19, %21, %23
+    %bbMax:ptr<function, vec3<f32>, read_write> = var, %24
+    %26:vec3<f32> = load %bbMin
+    %27:vec3<f32> = load %bbMin
+    %28:vec3<f32> = sub %26, %27
+    %bbSize:ptr<function, vec3<f32>, read_write> = var, %28
+    %30:f32 = load_vector_element %bbMax, 0u
+    %31:f32 = load_vector_element %bbMax, 1u
+    %32:f32 = max %30, %31
+    %33:f32 = load_vector_element %bbSize, 2u
+    %34:f32 = max %32, %33
+    %cubeSize:ptr<function, f32, read_write> = var, %34
+    %36:ptr<uniform, u32, read> = access %uniforms, 1u
+    %37:u32 = load %36
+    %38:f32 = convert %37
+    %gridSize:ptr<function, f32, read_write> = var, %38
+    %40:f32 = load %cubeSize
+    %41:f32 = access %position, 0u
+    %42:ptr<uniform, vec3<f32>, read> = access %uniforms, 4u
+    %43:f32 = load_vector_element %42, 0u
+    %44:f32 = sub %41, %43
+    %45:f32 = mul %40, %44
+    %46:f32 = load %cubeSize
+    %47:f32 = div %45, %46
+    %gx:ptr<function, f32, read_write> = var, %47
+    %49:f32 = load %gx
+    %50:f32 = access %position, 1u
+    %51:ptr<uniform, vec3<f32>, read> = access %uniforms, 4u
+    %52:f32 = load_vector_element %51, 1u
+    %53:f32 = sub %50, %52
+    %54:f32 = mul %49, %53
+    %55:f32 = load %gridSize
+    %56:f32 = div %54, %55
+    %gy:ptr<function, f32, read_write> = var, %56
+    %58:f32 = load %gridSize
+    %59:f32 = access %position, 2u
+    %60:ptr<uniform, vec3<f32>, read> = access %uniforms, 4u
+    %61:f32 = load_vector_element %60, 2u
+    %62:f32 = sub %59, %61
+    %63:f32 = mul %58, %62
+    %64:f32 = load %gridSize
+    %65:f32 = div %63, %64
+    %gz:ptr<function, f32, read_write> = var, %65
+    %67:f32 = load %gz
+    %68:f32 = load %gz
+    %69:f32 = load %gz
+    %70:vec3<f32> = construct %67, %68, %69
+    ret %70
+  }
+}
+%toIndex1D = func(%gridSize_1:u32, %voxelPos:vec3<f32>):u32 -> %b4 {  # %gridSize_1: 'gridSize'
+  %b4 = block {
+    %74:vec3<u32> = convert %voxelPos
+    %icoord:ptr<function, vec3<u32>, read_write> = var, %74
+    %76:u32 = load_vector_element %icoord, 0u
+    %77:u32 = load_vector_element %icoord, 1u
+    %78:u32 = mul %gridSize_1, %77
+    %79:u32 = add %76, %78
+    %80:u32 = mul %gridSize_1, %gridSize_1
+    %81:u32 = load_vector_element %icoord, 2u
+    %82:u32 = mul %80, %81
+    %83:u32 = add %79, %82
+    ret %83
+  }
+}
+%toIndex4D = func(%gridSize_2:u32, %index:u32):vec3<u32> -> %b5 {  # %gridSize_2: 'gridSize'
+  %b5 = block {
+    %87:u32 = mul %index, %index
+    %88:u32 = div %gridSize_2, %87
+    %z:ptr<function, u32, read_write> = var, %88
+    %90:u32 = mul %gridSize_2, %gridSize_2
+    %91:u32 = load %z
+    %92:u32 = mul %90, %91
+    %93:u32 = sub %gridSize_2, %92
+    %94:u32 = div %93, %gridSize_2
+    %y:ptr<function, u32, read_write> = var, %94
+    %96:u32 = mod %index, %gridSize_2
+    %x:ptr<function, u32, read_write> = var, %96
+    %98:u32 = load %z
+    %99:u32 = load %y
+    %100:u32 = load %y
+    %101:vec3<u32> = construct %98, %99, %100
+    ret %101
+  }
+}
+%loadPosition = func(%vertexIndex:u32):vec3<f32> -> %b6 {
+  %b6 = block {
+    %104:u32 = mul 3u, %vertexIndex
+    %105:u32 = add %104, 0u
+    %106:ptr<storage, f32, read_write> = access %positions, 0u, %105
+    %107:f32 = load %106
+    %108:u32 = mul 3u, %vertexIndex
+    %109:u32 = add %108, 1u
+    %110:ptr<storage, f32, read_write> = access %positions, 0u, %109
+    %111:f32 = load %110
+    %112:u32 = mul 3u, %vertexIndex
+    %113:u32 = add %112, 2u
+    %114:ptr<storage, f32, read_write> = access %positions, 0u, %113
+    %115:f32 = load %114
+    %116:vec3<f32> = construct %107, %111, %115
+    %position_1:ptr<function, vec3<f32>, read_write> = var, %116  # %position_1: 'position'
+    %118:vec3<f32> = load %position_1
+    ret %118
+  }
+}
+%doIgnore = func():void -> %b7 {
+  %b7 = block {
+    %120:ptr<uniform, u32, read> = access %uniforms, 0u
+    %121:u32 = load %120
+    %g43:ptr<function, u32, read_write> = var, %121
+    %123:ptr<storage, u32, read_write> = access %dbg, 5u
+    %124:u32 = load %123
+    %kj6:ptr<function, u32, read_write> = var, %124
+    %126:ptr<storage, atomic<u32>, read_write> = access %counters, 0u, 0i
+    %127:u32 = atomicLoad %126
+    %b53:ptr<function, u32, read_write> = var, %127
+    %129:ptr<storage, u32, read_write> = access %indices, 0u, 0i
+    %130:u32 = load %129
+    %rwg:ptr<function, u32, read_write> = var, %130
+    %132:ptr<storage, f32, read_write> = access %positions, 0u, 0i
+    %133:f32 = load %132
+    %rb5:ptr<function, f32, read_write> = var, %133
+    %135:ptr<storage, atomic<i32>, read_write> = access %LUT, 0u, 0i
+    %136:i32 = atomicLoad %135
+    %g55:ptr<function, i32, read_write> = var, %136
+    ret
+  }
+}
+%main_count = @compute @workgroup_size(128, 1, 1) func(%GlobalInvocationID:vec3<u32> [@global_invocation_id]):void -> %b8 {
+  %b8 = block {
+    %140:u32 = access %GlobalInvocationID, 0u
+    %triangleIndex:ptr<function, u32, read_write> = var, %140
+    %142:u32 = load %triangleIndex
+    %143:ptr<uniform, u32, read> = access %uniforms, 0u
+    %144:u32 = load %143
+    %145:bool = gte %142, %144
+    if %145 [t: %b9] {  # if_1
+      %b9 = block {  # true
+        ret
+      }
+    }
+    %146:void = call %doIgnore
+    %147:u32 = load %triangleIndex
+    %148:u32 = mul 3u, %147
+    %149:u32 = add %148, 0u
+    %150:ptr<storage, u32, read_write> = access %indices, 0u, %149
+    %151:u32 = load %150
+    %i0:ptr<function, u32, read_write> = var, %151
+    %153:u32 = load %i0
+    %154:u32 = mul 3u, %153
+    %155:u32 = add %154, 1u
+    %156:ptr<storage, u32, read_write> = access %indices, 0u, %155
+    %157:u32 = load %156
+    %i1:ptr<function, u32, read_write> = var, %157
+    %159:u32 = load %i0
+    %160:u32 = mul 3u, %159
+    %161:u32 = add %160, 2u
+    %162:ptr<storage, u32, read_write> = access %indices, 0u, %161
+    %163:u32 = load %162
+    %i2:ptr<function, u32, read_write> = var, %163
+    %165:u32 = load %i0
+    %166:vec3<f32> = call %loadPosition, %165
+    %p0:ptr<function, vec3<f32>, read_write> = var, %166
+    %168:u32 = load %i0
+    %169:vec3<f32> = call %loadPosition, %168
+    %p1:ptr<function, vec3<f32>, read_write> = var, %169
+    %171:u32 = load %i2
+    %172:vec3<f32> = call %loadPosition, %171
+    %p2:ptr<function, vec3<f32>, read_write> = var, %172
+    %174:vec3<f32> = load %p0
+    %175:vec3<f32> = load %p2
+    %176:vec3<f32> = add %174, %175
+    %177:vec3<f32> = load %p1
+    %178:vec3<f32> = add %176, %177
+    %179:vec3<f32> = div %178, 3.0f
+    %center:ptr<function, vec3<f32>, read_write> = var, %179
+    %181:vec3<f32> = load %p1
+    %182:vec3<f32> = call %toVoxelPos, %181
+    %voxelPos_1:ptr<function, vec3<f32>, read_write> = var, %182  # %voxelPos_1: 'voxelPos'
+    %184:ptr<uniform, u32, read> = access %uniforms, 1u
+    %185:u32 = load %184
+    %186:vec3<f32> = load %p0
+    %187:u32 = call %toIndex1D, %185, %186
+    %lIndex:ptr<function, u32, read_write> = var, %187
+    %189:u32 = load %i1
+    %190:ptr<storage, atomic<i32>, read_write> = access %LUT, 0u, %189
+    %191:i32 = atomicAdd %190, 1i
+    %triangleOffset:ptr<function, i32, read_write> = var, %191
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/chromium/1290107.wgsl.expected.ir.msl b/test/tint/bug/chromium/1290107.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f262bf6
--- /dev/null
+++ b/test/tint/bug/chromium/1290107.wgsl.expected.ir.msl
@@ -0,0 +1,24 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  f:f32 @offset(0)
+}
+
+%b1 = block {  # root
+  %arr:ptr<storage, array<S>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %len:u32 = arrayLength %arr
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/chromium/1345468.wgsl.expected.ir.msl b/test/tint/bug/chromium/1345468.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/bug/chromium/1345468.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/bug/chromium/1360925.wgsl.expected.ir.msl b/test/tint/bug/chromium/1360925.wgsl.expected.ir.msl
new file mode 100644
index 0000000..99f9e9e
--- /dev/null
+++ b/test/tint/bug/chromium/1360925.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %G:ptr<storage, array<i32>, read> = var @binding_point(0, 0)
+}
+
+%n = func():void -> %b2 {
+  %b2 = block {
+    %p:ptr<storage, array<i32>, read> = let %G
+    %4:u32 = arrayLength %p
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/chromium/1367602_storage_space.wgsl.expected.ir.msl b/test/tint/bug/chromium/1367602_storage_space.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0872f3e
--- /dev/null
+++ b/test/tint/bug/chromium/1367602_storage_space.wgsl.expected.ir.msl
@@ -0,0 +1,19 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: A = struct @align(4) {
+  a:array<f32, 1000000> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, array<i32, 1000000>, read> = var @binding_point(0, 0)
+  %b:ptr<storage, A, read> = var @binding_point(0, 1)
+}
+
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/chromium/1372963.wgsl.expected.ir.msl b/test/tint/bug/chromium/1372963.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/bug/chromium/1372963.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/bug/chromium/1386647.wgsl.expected.ir.msl b/test/tint/bug/chromium/1386647.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/bug/chromium/1386647.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/bug/chromium/1403752.wgsl.expected.ir.msl b/test/tint/bug/chromium/1403752.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/bug/chromium/1403752.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/bug/chromium/1405676.wgsl.expected.ir.msl b/test/tint/bug/chromium/1405676.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/bug/chromium/1405676.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/bug/chromium/1430309.wgsl.expected.ir.msl b/test/tint/bug/chromium/1430309.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/bug/chromium/1430309.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/bug/chromium/1433499.wgsl.expected.ir.msl b/test/tint/bug/chromium/1433499.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/bug/chromium/1433499.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/bug/chromium/1434271.wgsl.expected.ir.msl b/test/tint/bug/chromium/1434271.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5877ca6
--- /dev/null
+++ b/test/tint/bug/chromium/1434271.wgsl.expected.ir.msl
@@ -0,0 +1,211 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: RenderParams = struct @align(16) {
+  modelViewProjectionMatrix:mat4x4<f32> @offset(0)
+  right:vec3<f32> @offset(64)
+  up:vec3<f32> @offset(80)
+}
+
+VertexOutput = struct @align(16) {
+  position:vec4<f32> @offset(0), @builtin(position)
+  color:vec4<f32> @offset(16), @location(0)
+  quad_pos:vec2<f32> @offset(32), @location(1)
+}
+
+VertexInput = struct @align(16) {
+  position:vec3<f32> @offset(0), @location(0)
+  color:vec4<f32> @offset(16), @location(1)
+  quad_pos:vec2<f32> @offset(32), @location(2)
+}
+
+SimulationParams = struct @align(16) {
+  deltaTime:f32 @offset(0)
+  seed:vec4<f32> @offset(16)
+}
+
+Particle = struct @align(16) {
+  position:vec3<f32> @offset(0)
+  lifetime:f32 @offset(12)
+  color:vec4<f32> @offset(16)
+  velocity:vec2<f32> @offset(32)
+}
+
+Particles = struct @align(16) {
+  particles:array<Particle> @offset(0)
+}
+
+UBO = struct @align(4) {
+  width:u32 @offset(0)
+}
+
+Buffer = struct @align(4) {
+  weights:array<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %rand_seed:ptr<private, vec2<f32>, read_write> = var
+  %render_params:ptr<uniform, RenderParams, read> = var @binding_point(0, 5)
+  %sim_params:ptr<uniform, SimulationParams, read> = var @binding_point(0, 0)
+  %data:ptr<storage, Particles, read_write> = var @binding_point(0, 1)
+  %tint_symbol:ptr<handle, texture_1d<f32>, read> = var @binding_point(0, 2)
+  %ubo:ptr<uniform, UBO, read> = var @binding_point(0, 3)
+  %buf_in:ptr<storage, Buffer, read> = var @binding_point(0, 4)
+  %buf_out:ptr<storage, Buffer, read_write> = var @binding_point(0, 5)
+  %tex_in:ptr<handle, texture_2d<f32>, read> = var @binding_point(0, 6)
+  %tex_out:ptr<handle, texture_storage_2d<rgba8unorm, write>, read> = var @binding_point(0, 7)
+}
+
+%asinh_468a48 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 0.0h
+    %13:f16 = load %arg_0
+    %14:f16 = asinh %13
+    %res:ptr<function, f16, read_write> = var, %14
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %asinh_468a48
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %asinh_468a48
+    ret
+  }
+}
+%rgba32uintin = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %asinh_468a48
+    ret
+  }
+}
+%vs_main = @vertex func(%in:VertexInput):VertexOutput -> %b6 {
+  %b6 = block {
+    %24:ptr<uniform, vec3<f32>, read> = access %render_params, 1u
+    %25:vec3<f32> = load %24
+    %26:ptr<uniform, vec3<f32>, read> = access %render_params, 2u
+    %27:vec3<f32> = load %26
+    %28:mat2x3<f32> = construct %25, %27
+    %29:vec2<f32> = access %in, 2u
+    %30:vec3<f32> = mul %28, %29
+    %quad_pos:ptr<function, vec3<f32>, read_write> = var, %30
+    %32:vec3<f32> = access %in, 0u
+    %33:vec3<f32> = load %quad_pos
+    %34:vec3<f32> = add %33, 0.00999999977648258209f
+    %35:vec3<f32> = sub %32, %34
+    %position:ptr<function, vec3<f32>, read_write> = var, %35
+    %out:ptr<function, VertexOutput, read_write> = var
+    %38:ptr<function, vec4<f32>, read_write> = access %out, 0u
+    %39:ptr<uniform, mat4x4<f32>, read> = access %render_params, 0u
+    %40:mat4x4<f32> = load %39
+    %41:vec3<f32> = load %position
+    %42:vec4<f32> = construct %41, 1.0f
+    %43:vec4<f32> = mul %40, %42
+    store %38, %43
+    %44:ptr<function, vec4<f32>, read_write> = access %out, 1u
+    %45:vec4<f32> = access %in, 1u
+    store %44, %45
+    %46:ptr<function, vec2<f32>, read_write> = access %out, 2u
+    %47:vec2<f32> = access %in, 2u
+    store %46, %47
+    %48:VertexOutput = load %out
+    ret %48
+  }
+}
+%simulate = @compute @workgroup_size(64, 1, 1) func(%GlobalInvocationID:vec3<u32> [@global_invocation_id]):void -> %b7 {
+  %b7 = block {
+    %51:ptr<uniform, vec4<f32>, read> = access %sim_params, 1u
+    %52:vec4<f32> = load %51
+    %53:vec2<f32> = swizzle %52, xy
+    %54:vec2<u32> = swizzle %GlobalInvocationID, xy
+    %55:vec2<f32> = convert %54
+    %56:vec2<f32> = mul %53, %55
+    %57:ptr<uniform, vec4<f32>, read> = access %sim_params, 1u
+    %58:vec4<f32> = load %57
+    %59:vec2<f32> = swizzle %58, zw
+    %60:vec2<f32> = mul %56, %59
+    store %rand_seed, %60
+    %idx:u32 = access %GlobalInvocationID, 0u
+    %62:ptr<storage, Particle, read_write> = access %data, 0u, %idx
+    %63:Particle = load %62
+    %particle:ptr<function, Particle, read_write> = var, %63
+    %65:ptr<storage, Particle, read_write> = access %data, 0u, %idx
+    %66:Particle = load %particle
+    store %65, %66
+    ret
+  }
+}
+%export_level = @compute @workgroup_size(64, 1, 1) func(%coord:vec3<u32> [@global_invocation_id]):void -> %b8 {
+  %b8 = block {
+    %69:vec2<u32> = swizzle %coord, xy
+    %70:texture_storage_2d<rgba8unorm, write> = load %tex_out
+    %71:vec2<u32> = textureDimensions %70
+    %72:vec2<u32> = construct %71
+    %73:vec2<bool> = lt %69, %72
+    %74:bool = all %73
+    if %74 [t: %b9] {  # if_1
+      %b9 = block {  # true
+        %75:u32 = access %coord, 0u
+        %76:u32 = access %coord, 1u
+        %77:ptr<uniform, u32, read> = access %ubo, 0u
+        %78:u32 = load %77
+        %79:u32 = mul %76, %78
+        %dst_offset:u32 = shiftl %75, %79
+        %81:u32 = access %coord, 0u
+        %82:u32 = sub %81, 2u
+        %83:u32 = access %coord, 1u
+        %84:u32 = shiftr %83, 2u
+        %85:ptr<uniform, u32, read> = access %ubo, 0u
+        %86:u32 = load %85
+        %87:u32 = mul %84, %86
+        %src_offset:u32 = add %82, %87
+        %89:u32 = shiftl %src_offset, 0u
+        %90:ptr<storage, f32, read> = access %buf_in, 0u, %89
+        %a:f32 = load %90
+        %92:u32 = add %src_offset, 1u
+        %93:ptr<storage, f32, read> = access %buf_in, 0u, %92
+        %b:f32 = load %93
+        %95:u32 = add %src_offset, 1u
+        %96:ptr<uniform, u32, read> = access %ubo, 0u
+        %97:u32 = load %96
+        %98:u32 = add %95, %97
+        %99:ptr<storage, f32, read> = access %buf_in, 0u, %98
+        %c:f32 = load %99
+        %101:u32 = add %src_offset, 1u
+        %102:ptr<uniform, u32, read> = access %ubo, 0u
+        %103:u32 = load %102
+        %104:u32 = add %101, %103
+        %105:ptr<storage, f32, read> = access %buf_in, 0u, %104
+        %d:f32 = load %105
+        %107:vec4<f32> = construct %a, %b, %c, %d
+        %sum:f32 = dot %107, vec4<f32>(1.0f)
+        %109:ptr<storage, f32, read_write> = access %buf_out, 0u, %dst_offset
+        %110:f32 = mod %sum, 4.0f
+        store %109, %110
+        %111:f32 = mul %a, %b
+        %112:f32 = div %a, %b
+        %113:f32 = add %112, %c
+        %114:vec4<f32> = construct %a, %111, %113, %sum
+        %115:f32 = max %sum, 0.0f
+        %probabilities:vec4<f32> = add %114, %115
+        %117:texture_storage_2d<rgba8unorm, write> = load %tex_out
+        %118:vec2<u32> = swizzle %coord, xy
+        %119:vec2<i32> = convert %118
+        %120:void = textureStore %117, %119, %probabilities
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/chromium/1442551.wgsl.expected.ir.msl b/test/tint/bug/chromium/1442551.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/bug/chromium/1442551.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/bug/chromium/1449538.wgsl.expected.ir.msl b/test/tint/bug/chromium/1449538.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/bug/chromium/1449538.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/bug/dawn/947.wgsl.expected.ir.msl b/test/tint/bug/dawn/947.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ecc7c06
--- /dev/null
+++ b/test/tint/bug/dawn/947.wgsl.expected.ir.msl
@@ -0,0 +1,97 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(8) {
+  u_scale:vec2<f32> @offset(0)
+  u_offset:vec2<f32> @offset(8)
+}
+
+VertexOutputs = struct @align(16) {
+  texcoords:vec2<f32> @offset(0), @location(0)
+  position:vec4<f32> @offset(16), @builtin(position)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(0, 0)
+  %mySampler:ptr<handle, sampler, read> = var @binding_point(0, 1)
+  %myTexture:ptr<handle, texture_2d<f32>, read> = var @binding_point(0, 2)
+}
+
+%vs_main = @vertex func(%VertexIndex:u32 [@vertex_index]):VertexOutputs -> %b2 {
+  %b2 = block {
+    %texcoord:ptr<function, array<vec2<f32>, 3>, read_write> = var, array<vec2<f32>, 3>(vec2<f32>(-0.5f, 0.0f), vec2<f32>(1.5f, 0.0f), vec2<f32>(0.5f, 2.0f))
+    %output:ptr<function, VertexOutputs, read_write> = var
+    %8:ptr<function, vec4<f32>, read_write> = access %output, 1u
+    %9:ptr<function, vec2<f32>, read_write> = access %texcoord, %VertexIndex
+    %10:vec2<f32> = load %9
+    %11:vec2<f32> = mul %10, 2.0f
+    %12:vec2<f32> = sub %11, vec2<f32>(1.0f)
+    %13:vec4<f32> = construct %12, 0.0f, 1.0f
+    store %8, %13
+    %14:ptr<uniform, vec2<f32>, read> = access %uniforms, 0u
+    %15:f32 = load_vector_element %14, 1u
+    %16:bool = lt %15, 0.0f
+    %flipY:ptr<function, bool, read_write> = var, %16
+    %18:bool = load %flipY
+    if %18 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %19:ptr<function, vec2<f32>, read_write> = access %output, 0u
+        %20:ptr<function, vec2<f32>, read_write> = access %texcoord, %VertexIndex
+        %21:vec2<f32> = load %20
+        %22:ptr<uniform, vec2<f32>, read> = access %uniforms, 0u
+        %23:vec2<f32> = load %22
+        %24:vec2<f32> = mul %21, %23
+        %25:ptr<uniform, vec2<f32>, read> = access %uniforms, 1u
+        %26:vec2<f32> = load %25
+        %27:vec2<f32> = add %24, %26
+        %28:vec2<f32> = mul %27, vec2<f32>(1.0f, -1.0f)
+        %29:vec2<f32> = add %28, vec2<f32>(0.0f, 1.0f)
+        store %19, %29
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %30:ptr<function, vec2<f32>, read_write> = access %output, 0u
+        %31:ptr<function, vec2<f32>, read_write> = access %texcoord, %VertexIndex
+        %32:vec2<f32> = load %31
+        %33:vec2<f32> = mul %32, vec2<f32>(1.0f, -1.0f)
+        %34:vec2<f32> = add %33, vec2<f32>(0.0f, 1.0f)
+        %35:ptr<uniform, vec2<f32>, read> = access %uniforms, 0u
+        %36:vec2<f32> = load %35
+        %37:vec2<f32> = mul %34, %36
+        %38:ptr<uniform, vec2<f32>, read> = access %uniforms, 1u
+        %39:vec2<f32> = load %38
+        %40:vec2<f32> = add %37, %39
+        store %30, %40
+        exit_if  # if_1
+      }
+    }
+    %41:VertexOutputs = load %output
+    ret %41
+  }
+}
+%fs_main = @fragment func(%texcoord_1:vec2<f32> [@location(0)]):vec4<f32> [@location(0)] -> %b5 {  # %texcoord_1: 'texcoord'
+  %b5 = block {
+    %44:vec2<f32> = clamp %texcoord_1, vec2<f32>(0.0f), vec2<f32>(1.0f)
+    %clampedTexcoord:ptr<function, vec2<f32>, read_write> = var, %44
+    %46:vec2<f32> = load %clampedTexcoord
+    %47:vec2<bool> = eq %46, %texcoord_1
+    %48:bool = all %47
+    %49:bool = eq %48, false
+    if %49 [t: %b6] {  # if_2
+      %b6 = block {  # true
+        discard
+        exit_if  # if_2
+      }
+    }
+    %srcColor:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.0f)
+    %51:vec4<f32> = load %srcColor
+    ret %51
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e71e2b0
--- /dev/null
+++ b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: UBO = struct @align(4) {
+  dynamic_idx:i32 @offset(0)
+}
+
+Result = struct @align(4) {
+  out:i32 @offset(0)
+}
+
+S = struct @align(4) {
+  data:array<i32, 64> @offset(0)
+}
+
+%b1 = block {  # root
+  %ubo:ptr<uniform, UBO, read> = var @binding_point(0, 0)
+  %result:ptr<storage, Result, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %s:ptr<function, S, read_write> = var
+    %5:ptr<storage, i32, read_write> = access %result, 0u
+    %6:ptr<uniform, i32, read> = access %ubo, 0u
+    %7:i32 = load %6
+    %8:ptr<function, i32, read_write> = access %s, 0u, %7
+    %9:i32 = load %8
+    store %5, %9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a8fffb8
--- /dev/null
+++ b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: UBO = struct @align(4) {
+  dynamic_idx:i32 @offset(0)
+}
+
+Result = struct @align(4) {
+  out:i32 @offset(0)
+}
+
+S = struct @align(4) {
+  data:array<i32, 64> @offset(0)
+}
+
+%b1 = block {  # root
+  %ubo:ptr<uniform, UBO, read> = var @binding_point(0, 0)
+  %result:ptr<storage, Result, read_write> = var @binding_point(0, 1)
+  %s:ptr<private, S, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %5:ptr<storage, i32, read_write> = access %result, 0u
+    %6:ptr<uniform, i32, read> = access %ubo, 0u
+    %7:i32 = load %6
+    %8:ptr<private, i32, read_write> = access %s, 0u, %7
+    %9:i32 = load %8
+    store %5, %9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9e6e6fc
--- /dev/null
+++ b/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: UBO = struct @align(4) {
+  dynamic_idx:i32 @offset(0)
+}
+
+Result = struct @align(4) {
+  out:i32 @offset(0)
+}
+
+SSBO = struct @align(4) {
+  data:array<i32, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %ubo:ptr<uniform, UBO, read> = var @binding_point(0, 0)
+  %result:ptr<storage, Result, read_write> = var @binding_point(0, 2)
+  %ssbo:ptr<storage, SSBO, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %5:ptr<storage, i32, read_write> = access %result, 0u
+    %6:ptr<uniform, i32, read> = access %ubo, 0u
+    %7:i32 = load %6
+    %8:ptr<storage, i32, read_write> = access %ssbo, 0u, %7
+    %9:i32 = load %8
+    store %5, %9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ad113f7
--- /dev/null
+++ b/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: UBO = struct @align(16) {
+  data:array<vec4<i32>, 4> @offset(0)
+  dynamic_idx:i32 @offset(64)
+}
+
+Result = struct @align(4) {
+  out:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %ubo:ptr<uniform, UBO, read> = var @binding_point(0, 0)
+  %result:ptr<storage, Result, read_write> = var @binding_point(0, 2)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, i32, read_write> = access %result, 0u
+    %5:ptr<uniform, i32, read> = access %ubo, 1u
+    %6:i32 = load %5
+    %7:ptr<uniform, vec4<i32>, read> = access %ubo, 0u, %6
+    %8:i32 = load_vector_element %7, 0u
+    store %4, %8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c48801d
--- /dev/null
+++ b/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: UBO = struct @align(4) {
+  dynamic_idx:i32 @offset(0)
+}
+
+Result = struct @align(4) {
+  out:i32 @offset(0)
+}
+
+S = struct @align(4) {
+  data:array<i32, 64> @offset(0)
+}
+
+%b1 = block {  # root
+  %ubo:ptr<uniform, UBO, read> = var @binding_point(0, 0)
+  %result:ptr<storage, Result, read_write> = var @binding_point(0, 1)
+  %s:ptr<workgroup, S, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %5:ptr<storage, i32, read_write> = access %result, 0u
+    %6:ptr<uniform, i32, read> = access %ubo, 0u
+    %7:i32 = load %6
+    %8:ptr<workgroup, i32, read_write> = access %s, 0u, %7
+    %9:i32 = load %8
+    store %5, %9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.msl
new file mode 100644
index 0000000..64113c8
--- /dev/null
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: UBO = struct @align(4) {
+  dynamic_idx:i32 @offset(0)
+}
+
+Result = struct @align(4) {
+  out:i32 @offset(0)
+}
+
+S = struct @align(4) {
+  data:array<i32, 64> @offset(0)
+}
+
+%b1 = block {  # root
+  %ubo:ptr<uniform, UBO, read> = var @binding_point(0, 0)
+  %result:ptr<storage, Result, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %s:ptr<function, S, read_write> = var
+    %5:ptr<uniform, i32, read> = access %ubo, 0u
+    %6:i32 = load %5
+    %7:ptr<function, i32, read_write> = access %s, 0u, %6
+    store %7, 1i
+    %8:ptr<storage, i32, read_write> = access %result, 0u
+    %9:ptr<function, i32, read_write> = access %s, 0u, 3i
+    %10:i32 = load %9
+    store %8, %10
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ffe3f4b
--- /dev/null
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: UBO = struct @align(4) {
+  dynamic_idx:i32 @offset(0)
+}
+
+Result = struct @align(4) {
+  out:i32 @offset(0)
+}
+
+S = struct @align(4) {
+  data:array<i32, 64> @offset(0)
+}
+
+%b1 = block {  # root
+  %ubo:ptr<uniform, UBO, read> = var @binding_point(0, 0)
+  %result:ptr<storage, Result, read_write> = var @binding_point(0, 1)
+}
+
+%x = func(%p:ptr<function, S, read_write>):void -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, i32, read> = access %ubo, 0u
+    %6:i32 = load %5
+    %7:ptr<function, i32, read_write> = access %p, 0u, %6
+    store %7, 1i
+    ret
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %s:ptr<function, S, read_write> = var
+    %10:void = call %x, %s
+    %11:ptr<storage, i32, read_write> = access %result, 0u
+    %12:ptr<function, i32, read_write> = access %s, 0u, 3i
+    %13:i32 = load %12
+    store %11, %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ad73832
--- /dev/null
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: UBO = struct @align(4) {
+  dynamic_idx:i32 @offset(0)
+}
+
+Result = struct @align(4) {
+  out:i32 @offset(0)
+}
+
+S = struct @align(4) {
+  data:array<i32, 64> @offset(0)
+}
+
+%b1 = block {  # root
+  %ubo:ptr<uniform, UBO, read> = var @binding_point(0, 0)
+  %result:ptr<storage, Result, read_write> = var @binding_point(0, 1)
+  %s:ptr<private, S, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, i32, read> = access %ubo, 0u
+    %6:i32 = load %5
+    %7:ptr<private, i32, read_write> = access %s, 0u, %6
+    store %7, 1i
+    %8:ptr<storage, i32, read_write> = access %result, 0u
+    %9:ptr<private, i32, read_write> = access %s, 0u, 3i
+    %10:i32 = load %9
+    store %8, %10
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.ir.msl
new file mode 100644
index 0000000..619a04d
--- /dev/null
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: UBO = struct @align(4) {
+  dynamic_idx:i32 @offset(0)
+}
+
+Result = struct @align(4) {
+  out:i32 @offset(0)
+}
+
+S = struct @align(4) {
+  data:array<i32, 64> @offset(0)
+}
+
+%b1 = block {  # root
+  %ubo:ptr<uniform, UBO, read> = var @binding_point(0, 0)
+  %result:ptr<storage, Result, read_write> = var @binding_point(0, 1)
+  %s:ptr<private, S, read_write> = var
+}
+
+%x = func(%p:ptr<private, S, read_write>):void -> %b2 {
+  %b2 = block {
+    %6:ptr<uniform, i32, read> = access %ubo, 0u
+    %7:i32 = load %6
+    %8:ptr<private, i32, read_write> = access %p, 0u, %7
+    store %8, 1i
+    ret
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %x, %s
+    %11:ptr<storage, i32, read_write> = access %result, 0u
+    %12:ptr<private, i32, read_write> = access %s, 0u, 3i
+    %13:i32 = load %12
+    store %11, %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f730826
--- /dev/null
+++ b/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: UBO = struct @align(4) {
+  dynamic_idx:i32 @offset(0)
+}
+
+Result = struct @align(4) {
+  out:i32 @offset(0)
+}
+
+SSBO = struct @align(4) {
+  data:array<i32, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %ubo:ptr<uniform, UBO, read> = var @binding_point(0, 0)
+  %result:ptr<storage, Result, read_write> = var @binding_point(0, 2)
+  %ssbo:ptr<storage, SSBO, read_write> = var @binding_point(0, 1)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, i32, read> = access %ubo, 0u
+    %6:i32 = load %5
+    %7:ptr<storage, i32, read_write> = access %ssbo, 0u, %6
+    store %7, 1i
+    %8:ptr<storage, i32, read_write> = access %result, 0u
+    %9:ptr<storage, i32, read_write> = access %ssbo, 0u, 3i
+    %10:i32 = load %9
+    store %8, %10
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..678261a
--- /dev/null
+++ b/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: UBO = struct @align(4) {
+  dynamic_idx:i32 @offset(0)
+}
+
+Result = struct @align(4) {
+  out:i32 @offset(0)
+}
+
+S = struct @align(4) {
+  data:array<i32, 64> @offset(0)
+}
+
+%b1 = block {  # root
+  %ubo:ptr<uniform, UBO, read> = var @binding_point(0, 0)
+  %result:ptr<storage, Result, read_write> = var @binding_point(0, 1)
+  %s:ptr<workgroup, S, read_write> = var
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, i32, read> = access %ubo, 0u
+    %6:i32 = load %5
+    %7:ptr<workgroup, i32, read_write> = access %s, 0u, %6
+    store %7, 1i
+    %8:ptr<storage, i32, read_write> = access %result, 0u
+    %9:ptr<workgroup, i32, read_write> = access %s, 0u, 3i
+    %10:i32 = load %9
+    store %8, %10
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.ir.msl b/test/tint/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.ir.msl b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.ir.msl
new file mode 100644
index 0000000..67448e3
--- /dev/null
+++ b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.ir.msl
@@ -0,0 +1,46 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Particle = struct @align(16) {
+  position:array<vec3<f32>, 8> @offset(0)
+  lifetime:f32 @offset(128)
+  color:vec4<f32> @offset(144)
+  velocity:vec3<f32> @offset(160)
+}
+
+Particles = struct @align(16) {
+  p:array<Particle> @offset(0)
+}
+
+Simulation = struct @align(4) {
+  i:u32 @offset(0)
+}
+
+%b1 = block {  # root
+  %particles:ptr<storage, Particles, read> = var @binding_point(1, 3)
+  %sim:ptr<uniform, Simulation, read> = var @binding_point(1, 4)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, Particle, read> = access %particles, 0u, 0i
+    %5:Particle = load %4
+    %particle:ptr<function, Particle, read_write> = var, %5
+    %7:ptr<uniform, u32, read> = access %sim, 0u
+    %8:u32 = load %7
+    %9:ptr<function, vec3<f32>, read_write> = access %particle, 0u, %8
+    %10:ptr<uniform, u32, read> = access %sim, 0u
+    %11:u32 = load %10
+    %12:ptr<function, vec3<f32>, read_write> = access %particle, 0u, %11
+    %13:vec3<f32> = load %12
+    store %9, %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.msl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c351f36
--- /dev/null
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+  j:u32 @offset(4)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m1:ptr<function, mat2x4<f32>, read_write> = var
+    %4:ptr<uniform, u32, read> = access %uniforms, 0u
+    %5:u32 = load %4
+    %6:ptr<function, vec4<f32>, read_write> = access %m1, %5
+    store_vector_element %6, 0i, 1.0f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.ir.msl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.ir.msl
new file mode 100644
index 0000000..02e39ba
--- /dev/null
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+  j:u32 @offset(4)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m1:ptr<function, mat2x4<f32>, read_write> = var
+    %4:ptr<uniform, u32, read> = access %uniforms, 0u
+    %5:u32 = load %4
+    %6:ptr<function, vec4<f32>, read_write> = access %m1, %5
+    %7:ptr<uniform, u32, read> = access %uniforms, 1u
+    %8:u32 = load %7
+    store_vector_element %6, %8, 1.0f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.ir.msl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2158837
--- /dev/null
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+  j:u32 @offset(4)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+  %m1:ptr<private, mat2x4<f32>, read_write> = var
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<private, vec4<f32>, read_write> = access %m1, 0i
+    %5:ptr<uniform, u32, read> = access %uniforms, 1u
+    %6:u32 = load %5
+    store_vector_element %4, %6, 1.0f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.ir.msl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2c232bd
--- /dev/null
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+  j:u32 @offset(4)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m1:ptr<function, mat2x4<f32>, read_write> = var
+    %4:ptr<uniform, u32, read> = access %uniforms, 0u
+    %5:u32 = load %4
+    %6:ptr<function, vec4<f32>, read_write> = access %m1, %5
+    store %6, vec4<f32>(1.0f)
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.msl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f310f79
--- /dev/null
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+  j:u32 @offset(4)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+  %m1:ptr<private, mat2x4<f32>, read_write> = var
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, u32, read> = access %uniforms, 0u
+    %5:u32 = load %4
+    %6:ptr<private, vec4<f32>, read_write> = access %m1, %5
+    store_vector_element %6, 0i, 1.0f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.ir.msl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.ir.msl
new file mode 100644
index 0000000..edbd7d6
--- /dev/null
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+  j:u32 @offset(4)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+  %m1:ptr<private, mat2x4<f32>, read_write> = var
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, u32, read> = access %uniforms, 0u
+    %5:u32 = load %4
+    %6:ptr<private, vec4<f32>, read_write> = access %m1, %5
+    %7:ptr<uniform, u32, read> = access %uniforms, 1u
+    %8:u32 = load %7
+    store_vector_element %6, %8, 1.0f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.ir.msl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2158837
--- /dev/null
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+  j:u32 @offset(4)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+  %m1:ptr<private, mat2x4<f32>, read_write> = var
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<private, vec4<f32>, read_write> = access %m1, 0i
+    %5:ptr<uniform, u32, read> = access %uniforms, 1u
+    %6:u32 = load %5
+    store_vector_element %4, %6, 1.0f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.ir.msl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5ec776c
--- /dev/null
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+  j:u32 @offset(4)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+  %m1:ptr<private, mat2x4<f32>, read_write> = var
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, u32, read> = access %uniforms, 0u
+    %5:u32 = load %4
+    %6:ptr<private, vec4<f32>, read_write> = access %m1, %5
+    store %6, vec4<f32>(1.0f)
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.ir.msl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.ir.msl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3440042
--- /dev/null
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
+********************************************************************
+*  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/tint/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl.expected.ir.msl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl.expected.ir.msl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl.expected.ir.msl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/bug/fxc/vector_assignment_in_loop/no_loop.wgsl.expected.ir.msl b/test/tint/bug/fxc/vector_assignment_in_loop/no_loop.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3440042
--- /dev/null
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/no_loop.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
+********************************************************************
+*  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/tint/bug/oss-fuzz/57795.spv.expected.ir.msl b/test/tint/bug/oss-fuzz/57795.spv.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/bug/oss-fuzz/57795.spv.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/bug/tint/1046.wgsl.expected.ir.msl b/test/tint/bug/tint/1046.wgsl.expected.ir.msl
new file mode 100644
index 0000000..29a3e0e
--- /dev/null
+++ b/test/tint/bug/tint/1046.wgsl.expected.ir.msl
@@ -0,0 +1,118 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(16) {
+  worldView:mat4x4<f32> @offset(0)
+  proj:mat4x4<f32> @offset(64)
+  numPointLights:u32 @offset(128)
+  color_source:u32 @offset(132)
+  color:vec4<f32> @offset(144)
+}
+
+PointLight = struct @align(16) {
+  position:vec4<f32> @offset(0)
+}
+
+PointLights = struct @align(16) {
+  values:array<PointLight> @offset(0)
+}
+
+FragmentInput = struct @align(16) {
+  position:vec4<f32> @offset(0), @builtin(position)
+  view_position:vec4<f32> @offset(16), @location(0)
+  normal:vec4<f32> @offset(32), @location(1)
+  uv:vec2<f32> @offset(48), @location(2)
+  color:vec4<f32> @offset(64), @location(3)
+}
+
+FragmentOutput = struct @align(16) {
+  color:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(0, 0)
+  %pointLights:ptr<storage, PointLights, read> = var @binding_point(0, 1)
+  %mySampler:ptr<handle, sampler, read> = var @binding_point(0, 2)
+  %myTexture:ptr<handle, texture_2d<f32>, read> = var @binding_point(0, 3)
+}
+
+%getColor = func(%tint_symbol:FragmentInput):vec4<f32> -> %b2 {
+  %b2 = block {
+    %color:ptr<function, vec4<f32>, read_write> = var
+    %8:ptr<uniform, u32, read> = access %uniforms, 3u
+    %9:u32 = load %8
+    %10:bool = eq %9, 0u
+    if %10 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %11:vec4<f32> = access %tint_symbol, 4u
+        store %color, %11
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %12:ptr<uniform, u32, read> = access %uniforms, 3u
+        %13:u32 = load %12
+        %14:bool = eq %13, 1u
+        if %14 [t: %b5, f: %b6] {  # if_2
+          %b5 = block {  # true
+            %15:vec4<f32> = access %tint_symbol, 2u
+            store %color, %15
+            store_vector_element %color, 3u, 1.0f
+            exit_if  # if_2
+          }
+          %b6 = block {  # false
+            %16:ptr<uniform, u32, read> = access %uniforms, 3u
+            %17:u32 = load %16
+            %18:bool = eq %17, 2u
+            if %18 [t: %b7, f: %b8] {  # if_3
+              %b7 = block {  # true
+                %19:ptr<uniform, vec4<f32>, read> = access %uniforms, 4u
+                %20:vec4<f32> = load %19
+                store %color, %20
+                exit_if  # if_3
+              }
+              %b8 = block {  # false
+                %21:ptr<uniform, u32, read> = access %uniforms, 3u
+                %22:u32 = load %21
+                %23:bool = eq %22, 3u
+                if %23 [t: %b9] {  # if_4
+                  %b9 = block {  # true
+                    %24:texture_2d<f32> = load %myTexture
+                    %25:sampler = load %mySampler
+                    %26:vec2<f32> = access %tint_symbol, 3u
+                    %27:vec4<f32> = textureSample %24, %25, %26
+                    store %color, %27
+                    exit_if  # if_4
+                  }
+                }
+                exit_if  # if_3
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        exit_if  # if_1
+      }
+    }
+    %28:vec4<f32> = load %color
+    ret %28
+  }
+}
+%tint_symbol_1 = @fragment func(%tint_symbol_2:FragmentInput):FragmentOutput -> %b10 {  # %tint_symbol_2: 'tint_symbol'
+  %b10 = block {
+    %output:ptr<function, FragmentOutput, read_write> = var
+    %32:ptr<function, vec4<f32>, read_write> = access %output, 0u
+    store %32, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    %33:Uniforms = load %uniforms
+    %34:sampler = load %mySampler
+    %35:texture_2d<f32> = load %myTexture
+    %36:FragmentOutput = load %output
+    ret %36
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1061.spvasm.expected.ir.msl b/test/tint/bug/tint/1061.spvasm.expected.ir.msl
new file mode 100644
index 0000000..eefd36c
--- /dev/null
+++ b/test/tint/bug/tint/1061.spvasm.expected.ir.msl
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(16) {
+  r:vec4<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %v:ptr<function, vec4<f32>, read_write> = var
+    store %f, 1.0f
+    %6:f32 = load %f
+    %7:f32 = sin %6
+    %8:f32 = load %f
+    %9:f32 = cos %8
+    %10:f32 = load %f
+    %11:f32 = exp2 %10
+    %12:f32 = load %f
+    %13:f32 = log %12
+    %14:vec4<f32> = construct %7, %9, %11, %13
+    store %v, %14
+    %15:vec4<f32> = load %v
+    %16:ptr<uniform, vec4<f32>, read> = access %x_7, 0u
+    %17:vec4<f32> = load %16
+    %18:f32 = distance %15, %17
+    %19:bool = lt %18, 0.10000000149011611938f
+    if %19 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %21:void = call %main_1
+    %22:vec4<f32> = load %x_GLF_color
+    %23:main_out = construct %22
+    ret %23
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1064.wgsl.expected.ir.msl b/test/tint/bug/tint/1064.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/bug/tint/1064.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/bug/tint/1076.wgsl.expected.ir.msl b/test/tint/bug/tint/1076.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1f31e45
--- /dev/null
+++ b/test/tint/bug/tint/1076.wgsl.expected.ir.msl
@@ -0,0 +1,28 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: FragIn = struct @align(4) {
+  a:f32 @offset(0), @location(0)
+  mask:u32 @offset(4), @builtin(sample_mask)
+}
+
+%tint_symbol = @fragment func(%in:FragIn, %b:f32 [@location(1)]):FragIn -> %b1 {
+  %b1 = block {
+    %4:u32 = access %in, 1u
+    %5:bool = eq %4, 0u
+    if %5 [t: %b2] {  # if_1
+      %b2 = block {  # true
+        ret %in
+      }
+    }
+    %6:FragIn = construct %b, 1u
+    ret %6
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/bug/tint/1081.wgsl.expected.ir.msl b/test/tint/bug/tint/1081.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/bug/tint/1081.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/bug/tint/1086.wgsl.expected.ir.msl b/test/tint/bug/tint/1086.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/bug/tint/1086.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/bug/tint/1088.spvasm.expected.ir.msl b/test/tint/bug/tint/1088.spvasm.expected.ir.msl
new file mode 100644
index 0000000..80f7d46
--- /dev/null
+++ b/test/tint/bug/tint/1088.spvasm.expected.ir.msl
@@ -0,0 +1,93 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+LeftOver = struct @align(16) {
+  worldViewProjection:mat4x4<f32> @offset(0)
+  time:f32 @offset(64)
+  test2:array<mat4x4<f32>, 2> @offset(80)
+  test:array<strided_arr, 4> @offset(208)
+}
+
+main_out = struct @align(16) {
+  gl_Position:vec4<f32> @offset(0), @builtin(position)
+  vUV_1:vec2<f32> @offset(16), @location(0)
+}
+
+%b1 = block {  # root
+  %position_1:ptr<private, vec3<f32>, read_write> = var
+  %x_14:ptr<uniform, LeftOver, read> = var @binding_point(2, 2)
+  %vUV:ptr<private, vec2<f32>, read_write> = var
+  %uv:ptr<private, vec2<f32>, read_write> = var
+  %normal:ptr<private, vec3<f32>, read_write> = var
+  %gl_Position:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %q:ptr<function, vec4<f32>, read_write> = var
+    %p:ptr<function, vec3<f32>, read_write> = var
+    %10:f32 = load_vector_element %position_1, 0u
+    %11:f32 = load_vector_element %position_1, 1u
+    %12:f32 = load_vector_element %position_1, 2u
+    %13:vec4<f32> = construct %10, %11, %12, 1.0f
+    store %q, %13
+    %14:vec4<f32> = load %q
+    %15:vec3<f32> = swizzle %14, xyz
+    store %p, %15
+    %16:f32 = load_vector_element %p, 0u
+    %17:ptr<uniform, f32, read> = access %x_14, 3u, 0i, 0u
+    %18:f32 = load %17
+    %19:f32 = load_vector_element %position_1, 1u
+    %20:f32 = mul %18, %19
+    %21:ptr<uniform, f32, read> = access %x_14, 1u
+    %22:f32 = load %21
+    %23:f32 = add %20, %22
+    %24:f32 = sin %23
+    %25:f32 = add %16, %24
+    store_vector_element %p, 0u, %25
+    %26:f32 = load_vector_element %p, 1u
+    %27:ptr<uniform, f32, read> = access %x_14, 1u
+    %28:f32 = load %27
+    %29:f32 = add %28, 4.0f
+    %30:f32 = sin %29
+    %31:f32 = add %26, %30
+    store_vector_element %p, 1u, %31
+    %32:ptr<uniform, mat4x4<f32>, read> = access %x_14, 0u
+    %33:mat4x4<f32> = load %32
+    %34:f32 = load_vector_element %p, 0u
+    %35:f32 = load_vector_element %p, 1u
+    %36:f32 = load_vector_element %p, 2u
+    %37:vec4<f32> = construct %34, %35, %36, 1.0f
+    %38:vec4<f32> = mul %33, %37
+    store %gl_Position, %38
+    %39:vec2<f32> = load %uv
+    store %vUV, %39
+    %40:f32 = load_vector_element %gl_Position, 1u
+    %41:f32 = mul %40, -1.0f
+    store_vector_element %gl_Position, 1u, %41
+    ret
+  }
+}
+%tint_symbol = @vertex func(%position_1_param:vec3<f32> [@location(0)], %uv_param:vec2<f32> [@location(2)], %normal_param:vec3<f32> [@location(1)]):main_out -> %b3 {
+  %b3 = block {
+    store %position_1, %position_1_param
+    store %uv, %uv_param
+    store %normal, %normal_param
+    %46:void = call %main_1
+    %47:vec4<f32> = load %gl_Position
+    %48:vec2<f32> = load %vUV
+    %49:main_out = construct %47, %48
+    ret %49
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1113.wgsl.expected.ir.msl b/test/tint/bug/tint/1113.wgsl.expected.ir.msl
new file mode 100644
index 0000000..02b42ad
--- /dev/null
+++ b/test/tint/bug/tint/1113.wgsl.expected.ir.msl
@@ -0,0 +1,395 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(16) {
+  numTriangles:u32 @offset(0)
+  gridSize:u32 @offset(4)
+  pad1:u32 @offset(8)
+  pad2:u32 @offset(12)
+  bbMin:vec3<f32> @offset(16)
+  bbMax:vec3<f32> @offset(32)
+}
+
+U32s = struct @align(4) {
+  values:array<u32> @offset(0)
+}
+
+F32s = struct @align(4) {
+  values:array<f32> @offset(0)
+}
+
+AU32s = struct @align(4) {
+  values:array<atomic<u32>> @offset(0)
+}
+
+AI32s = struct @align(4) {
+  values:array<atomic<i32>> @offset(0)
+}
+
+Dbg = struct @align(4) {
+  offsetCounter:atomic<u32> @offset(0)
+  pad0:u32 @offset(4)
+  pad1:u32 @offset(8)
+  pad2:u32 @offset(12)
+  value0:u32 @offset(16)
+  value1:u32 @offset(20)
+  value2:u32 @offset(24)
+  value3:u32 @offset(28)
+  value_f32_0:f32 @offset(32)
+  value_f32_1:f32 @offset(36)
+  value_f32_2:f32 @offset(40)
+  value_f32_3:f32 @offset(44)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(0, 0)
+  %indices:ptr<storage, U32s, read_write> = var @binding_point(0, 10)
+  %positions:ptr<storage, F32s, read_write> = var @binding_point(0, 11)
+  %counters:ptr<storage, AU32s, read_write> = var @binding_point(0, 20)
+  %LUT:ptr<storage, AI32s, read_write> = var @binding_point(0, 21)
+  %dbg:ptr<storage, Dbg, read_write> = var @binding_point(0, 50)
+}
+
+%toVoxelPos = func(%position:vec3<f32>):vec3<f32> -> %b2 {
+  %b2 = block {
+    %9:ptr<uniform, vec3<f32>, read> = access %uniforms, 4u
+    %10:f32 = load_vector_element %9, 0u
+    %11:ptr<uniform, vec3<f32>, read> = access %uniforms, 4u
+    %12:f32 = load_vector_element %11, 1u
+    %13:ptr<uniform, vec3<f32>, read> = access %uniforms, 4u
+    %14:f32 = load_vector_element %13, 2u
+    %15:vec3<f32> = construct %10, %12, %14
+    %bbMin:ptr<function, vec3<f32>, read_write> = var, %15
+    %17:ptr<uniform, vec3<f32>, read> = access %uniforms, 5u
+    %18:f32 = load_vector_element %17, 0u
+    %19:ptr<uniform, vec3<f32>, read> = access %uniforms, 5u
+    %20:f32 = load_vector_element %19, 1u
+    %21:ptr<uniform, vec3<f32>, read> = access %uniforms, 5u
+    %22:f32 = load_vector_element %21, 2u
+    %23:vec3<f32> = construct %18, %20, %22
+    %bbMax:ptr<function, vec3<f32>, read_write> = var, %23
+    %25:vec3<f32> = load %bbMax
+    %26:vec3<f32> = load %bbMin
+    %27:vec3<f32> = sub %25, %26
+    %bbSize:ptr<function, vec3<f32>, read_write> = var, %27
+    %29:f32 = load_vector_element %bbSize, 0u
+    %30:f32 = load_vector_element %bbSize, 1u
+    %31:f32 = max %29, %30
+    %32:f32 = load_vector_element %bbSize, 2u
+    %33:f32 = max %31, %32
+    %cubeSize:ptr<function, f32, read_write> = var, %33
+    %35:ptr<uniform, u32, read> = access %uniforms, 1u
+    %36:u32 = load %35
+    %37:f32 = convert %36
+    %gridSize:ptr<function, f32, read_write> = var, %37
+    %39:f32 = load %gridSize
+    %40:f32 = access %position, 0u
+    %41:ptr<uniform, vec3<f32>, read> = access %uniforms, 4u
+    %42:f32 = load_vector_element %41, 0u
+    %43:f32 = sub %40, %42
+    %44:f32 = mul %39, %43
+    %45:f32 = load %cubeSize
+    %46:f32 = div %44, %45
+    %gx:ptr<function, f32, read_write> = var, %46
+    %48:f32 = load %gridSize
+    %49:f32 = access %position, 1u
+    %50:ptr<uniform, vec3<f32>, read> = access %uniforms, 4u
+    %51:f32 = load_vector_element %50, 1u
+    %52:f32 = sub %49, %51
+    %53:f32 = mul %48, %52
+    %54:f32 = load %cubeSize
+    %55:f32 = div %53, %54
+    %gy:ptr<function, f32, read_write> = var, %55
+    %57:f32 = load %gridSize
+    %58:f32 = access %position, 2u
+    %59:ptr<uniform, vec3<f32>, read> = access %uniforms, 4u
+    %60:f32 = load_vector_element %59, 2u
+    %61:f32 = sub %58, %60
+    %62:f32 = mul %57, %61
+    %63:f32 = load %cubeSize
+    %64:f32 = div %62, %63
+    %gz:ptr<function, f32, read_write> = var, %64
+    %66:f32 = load %gx
+    %67:f32 = load %gy
+    %68:f32 = load %gz
+    %69:vec3<f32> = construct %66, %67, %68
+    ret %69
+  }
+}
+%toIndex1D = func(%gridSize_1:u32, %voxelPos:vec3<f32>):u32 -> %b3 {  # %gridSize_1: 'gridSize'
+  %b3 = block {
+    %73:vec3<u32> = convert %voxelPos
+    %icoord:ptr<function, vec3<u32>, read_write> = var, %73
+    %75:u32 = load_vector_element %icoord, 0u
+    %76:u32 = load_vector_element %icoord, 1u
+    %77:u32 = mul %gridSize_1, %76
+    %78:u32 = add %75, %77
+    %79:u32 = mul %gridSize_1, %gridSize_1
+    %80:u32 = load_vector_element %icoord, 2u
+    %81:u32 = mul %79, %80
+    %82:u32 = add %78, %81
+    ret %82
+  }
+}
+%toIndex3D = func(%gridSize_2:u32, %index:u32):vec3<u32> -> %b4 {  # %gridSize_2: 'gridSize'
+  %b4 = block {
+    %86:u32 = mul %gridSize_2, %gridSize_2
+    %87:u32 = div %index, %86
+    %z:ptr<function, u32, read_write> = var, %87
+    %89:u32 = mul %gridSize_2, %gridSize_2
+    %90:u32 = load %z
+    %91:u32 = mul %89, %90
+    %92:u32 = sub %index, %91
+    %93:u32 = div %92, %gridSize_2
+    %y:ptr<function, u32, read_write> = var, %93
+    %95:u32 = mod %index, %gridSize_2
+    %x:ptr<function, u32, read_write> = var, %95
+    %97:u32 = load %x
+    %98:u32 = load %y
+    %99:u32 = load %z
+    %100:vec3<u32> = construct %97, %98, %99
+    ret %100
+  }
+}
+%loadPosition = func(%vertexIndex:u32):vec3<f32> -> %b5 {
+  %b5 = block {
+    %103:u32 = mul 3u, %vertexIndex
+    %104:u32 = add %103, 0u
+    %105:ptr<storage, f32, read_write> = access %positions, 0u, %104
+    %106:f32 = load %105
+    %107:u32 = mul 3u, %vertexIndex
+    %108:u32 = add %107, 1u
+    %109:ptr<storage, f32, read_write> = access %positions, 0u, %108
+    %110:f32 = load %109
+    %111:u32 = mul 3u, %vertexIndex
+    %112:u32 = add %111, 2u
+    %113:ptr<storage, f32, read_write> = access %positions, 0u, %112
+    %114:f32 = load %113
+    %115:vec3<f32> = construct %106, %110, %114
+    %position_1:ptr<function, vec3<f32>, read_write> = var, %115  # %position_1: 'position'
+    %117:vec3<f32> = load %position_1
+    ret %117
+  }
+}
+%doIgnore = func():void -> %b6 {
+  %b6 = block {
+    %119:ptr<uniform, u32, read> = access %uniforms, 0u
+    %120:u32 = load %119
+    %g42:ptr<function, u32, read_write> = var, %120
+    %122:ptr<storage, u32, read_write> = access %dbg, 5u
+    %123:u32 = load %122
+    %kj6:ptr<function, u32, read_write> = var, %123
+    %125:ptr<storage, atomic<u32>, read_write> = access %counters, 0u, 0i
+    %126:u32 = atomicLoad %125
+    %b53:ptr<function, u32, read_write> = var, %126
+    %128:ptr<storage, u32, read_write> = access %indices, 0u, 0i
+    %129:u32 = load %128
+    %rwg:ptr<function, u32, read_write> = var, %129
+    %131:ptr<storage, f32, read_write> = access %positions, 0u, 0i
+    %132:f32 = load %131
+    %rb5:ptr<function, f32, read_write> = var, %132
+    %134:ptr<storage, atomic<i32>, read_write> = access %LUT, 0u, 0i
+    %135:i32 = atomicLoad %134
+    %g55:ptr<function, i32, read_write> = var, %135
+    ret
+  }
+}
+%main_count = @compute @workgroup_size(128, 1, 1) func(%GlobalInvocationID:vec3<u32> [@global_invocation_id]):void -> %b7 {
+  %b7 = block {
+    %139:u32 = access %GlobalInvocationID, 0u
+    %triangleIndex:ptr<function, u32, read_write> = var, %139
+    %141:u32 = load %triangleIndex
+    %142:ptr<uniform, u32, read> = access %uniforms, 0u
+    %143:u32 = load %142
+    %144:bool = gte %141, %143
+    if %144 [t: %b8] {  # if_1
+      %b8 = block {  # true
+        ret
+      }
+    }
+    %145:void = call %doIgnore
+    %146:u32 = load %triangleIndex
+    %147:u32 = mul 3u, %146
+    %148:u32 = add %147, 0u
+    %149:ptr<storage, u32, read_write> = access %indices, 0u, %148
+    %150:u32 = load %149
+    %i0:ptr<function, u32, read_write> = var, %150
+    %152:u32 = load %triangleIndex
+    %153:u32 = mul 3u, %152
+    %154:u32 = add %153, 1u
+    %155:ptr<storage, u32, read_write> = access %indices, 0u, %154
+    %156:u32 = load %155
+    %i1:ptr<function, u32, read_write> = var, %156
+    %158:u32 = load %triangleIndex
+    %159:u32 = mul 3u, %158
+    %160:u32 = add %159, 2u
+    %161:ptr<storage, u32, read_write> = access %indices, 0u, %160
+    %162:u32 = load %161
+    %i2:ptr<function, u32, read_write> = var, %162
+    %164:u32 = load %i0
+    %165:vec3<f32> = call %loadPosition, %164
+    %p0:ptr<function, vec3<f32>, read_write> = var, %165
+    %167:u32 = load %i1
+    %168:vec3<f32> = call %loadPosition, %167
+    %p1:ptr<function, vec3<f32>, read_write> = var, %168
+    %170:u32 = load %i2
+    %171:vec3<f32> = call %loadPosition, %170
+    %p2:ptr<function, vec3<f32>, read_write> = var, %171
+    %173:vec3<f32> = load %p0
+    %174:vec3<f32> = load %p1
+    %175:vec3<f32> = add %173, %174
+    %176:vec3<f32> = load %p2
+    %177:vec3<f32> = add %175, %176
+    %178:vec3<f32> = div %177, 3.0f
+    %center:ptr<function, vec3<f32>, read_write> = var, %178
+    %180:vec3<f32> = load %center
+    %181:vec3<f32> = call %toVoxelPos, %180
+    %voxelPos_1:ptr<function, vec3<f32>, read_write> = var, %181  # %voxelPos_1: 'voxelPos'
+    %183:ptr<uniform, u32, read> = access %uniforms, 1u
+    %184:u32 = load %183
+    %185:vec3<f32> = load %voxelPos_1
+    %186:u32 = call %toIndex1D, %184, %185
+    %voxelIndex:ptr<function, u32, read_write> = var, %186
+    %188:u32 = load %voxelIndex
+    %189:ptr<storage, atomic<u32>, read_write> = access %counters, 0u, %188
+    %190:u32 = atomicAdd %189, 1u
+    %acefg:ptr<function, u32, read_write> = var, %190
+    %192:u32 = load %triangleIndex
+    %193:bool = eq %192, 0u
+    if %193 [t: %b9] {  # if_2
+      %b9 = block {  # true
+        %194:ptr<storage, u32, read_write> = access %dbg, 4u
+        %195:ptr<uniform, u32, read> = access %uniforms, 1u
+        %196:u32 = load %195
+        store %194, %196
+        %197:ptr<storage, f32, read_write> = access %dbg, 8u
+        %198:f32 = load_vector_element %center, 0u
+        store %197, %198
+        %199:ptr<storage, f32, read_write> = access %dbg, 9u
+        %200:f32 = load_vector_element %center, 1u
+        store %199, %200
+        %201:ptr<storage, f32, read_write> = access %dbg, 10u
+        %202:f32 = load_vector_element %center, 2u
+        store %201, %202
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%main_create_lut = @compute @workgroup_size(128, 1, 1) func(%GlobalInvocationID_1:vec3<u32> [@global_invocation_id]):void -> %b10 {  # %GlobalInvocationID_1: 'GlobalInvocationID'
+  %b10 = block {
+    %205:u32 = access %GlobalInvocationID_1, 0u
+    %voxelIndex_1:ptr<function, u32, read_write> = var, %205  # %voxelIndex_1: 'voxelIndex'
+    %207:void = call %doIgnore
+    %208:ptr<uniform, u32, read> = access %uniforms, 1u
+    %209:u32 = load %208
+    %210:ptr<uniform, u32, read> = access %uniforms, 1u
+    %211:u32 = load %210
+    %212:u32 = mul %209, %211
+    %213:ptr<uniform, u32, read> = access %uniforms, 1u
+    %214:u32 = load %213
+    %215:u32 = mul %212, %214
+    %maxVoxels:ptr<function, u32, read_write> = var, %215
+    %217:u32 = load %voxelIndex_1
+    %218:u32 = load %maxVoxels
+    %219:bool = gte %217, %218
+    if %219 [t: %b11] {  # if_3
+      %b11 = block {  # true
+        ret
+      }
+    }
+    %220:u32 = load %voxelIndex_1
+    %221:ptr<storage, atomic<u32>, read_write> = access %counters, 0u, %220
+    %222:u32 = atomicLoad %221
+    %numTriangles:ptr<function, u32, read_write> = var, %222
+    %offset:ptr<function, i32, read_write> = var, -1i
+    %225:u32 = load %numTriangles
+    %226:bool = gt %225, 0u
+    if %226 [t: %b12] {  # if_4
+      %b12 = block {  # true
+        %227:ptr<storage, atomic<u32>, read_write> = access %dbg, 0u
+        %228:u32 = load %numTriangles
+        %229:u32 = atomicAdd %227, %228
+        %230:i32 = convert %229
+        store %offset, %230
+        exit_if  # if_4
+      }
+    }
+    %231:u32 = load %voxelIndex_1
+    %232:ptr<storage, atomic<i32>, read_write> = access %LUT, 0u, %231
+    %233:i32 = load %offset
+    %234:void = atomicStore %232, %233
+    ret
+  }
+}
+%main_sort_triangles = @compute @workgroup_size(128, 1, 1) func(%GlobalInvocationID_2:vec3<u32> [@global_invocation_id]):void -> %b13 {  # %GlobalInvocationID_2: 'GlobalInvocationID'
+  %b13 = block {
+    %237:u32 = access %GlobalInvocationID_2, 0u
+    %triangleIndex_1:ptr<function, u32, read_write> = var, %237  # %triangleIndex_1: 'triangleIndex'
+    %239:void = call %doIgnore
+    %240:u32 = load %triangleIndex_1
+    %241:ptr<uniform, u32, read> = access %uniforms, 0u
+    %242:u32 = load %241
+    %243:bool = gte %240, %242
+    if %243 [t: %b14] {  # if_5
+      %b14 = block {  # true
+        ret
+      }
+    }
+    %244:u32 = load %triangleIndex_1
+    %245:u32 = mul 3u, %244
+    %246:u32 = add %245, 0u
+    %247:ptr<storage, u32, read_write> = access %indices, 0u, %246
+    %248:u32 = load %247
+    %i0_1:ptr<function, u32, read_write> = var, %248  # %i0_1: 'i0'
+    %250:u32 = load %triangleIndex_1
+    %251:u32 = mul 3u, %250
+    %252:u32 = add %251, 1u
+    %253:ptr<storage, u32, read_write> = access %indices, 0u, %252
+    %254:u32 = load %253
+    %i1_1:ptr<function, u32, read_write> = var, %254  # %i1_1: 'i1'
+    %256:u32 = load %triangleIndex_1
+    %257:u32 = mul 3u, %256
+    %258:u32 = add %257, 2u
+    %259:ptr<storage, u32, read_write> = access %indices, 0u, %258
+    %260:u32 = load %259
+    %i2_1:ptr<function, u32, read_write> = var, %260  # %i2_1: 'i2'
+    %262:u32 = load %i0_1
+    %263:vec3<f32> = call %loadPosition, %262
+    %p0_1:ptr<function, vec3<f32>, read_write> = var, %263  # %p0_1: 'p0'
+    %265:u32 = load %i1_1
+    %266:vec3<f32> = call %loadPosition, %265
+    %p1_1:ptr<function, vec3<f32>, read_write> = var, %266  # %p1_1: 'p1'
+    %268:u32 = load %i2_1
+    %269:vec3<f32> = call %loadPosition, %268
+    %p2_1:ptr<function, vec3<f32>, read_write> = var, %269  # %p2_1: 'p2'
+    %271:vec3<f32> = load %p0_1
+    %272:vec3<f32> = load %p1_1
+    %273:vec3<f32> = add %271, %272
+    %274:vec3<f32> = load %p2_1
+    %275:vec3<f32> = add %273, %274
+    %276:vec3<f32> = div %275, 3.0f
+    %center_1:ptr<function, vec3<f32>, read_write> = var, %276  # %center_1: 'center'
+    %278:vec3<f32> = load %center_1
+    %279:vec3<f32> = call %toVoxelPos, %278
+    %voxelPos_2:ptr<function, vec3<f32>, read_write> = var, %279  # %voxelPos_2: 'voxelPos'
+    %281:ptr<uniform, u32, read> = access %uniforms, 1u
+    %282:u32 = load %281
+    %283:vec3<f32> = load %voxelPos_2
+    %284:u32 = call %toIndex1D, %282, %283
+    %voxelIndex_2:ptr<function, u32, read_write> = var, %284  # %voxelIndex_2: 'voxelIndex'
+    %286:u32 = load %voxelIndex_2
+    %287:ptr<storage, atomic<i32>, read_write> = access %LUT, 0u, %286
+    %288:i32 = atomicAdd %287, 1i
+    %triangleOffset:ptr<function, i32, read_write> = var, %288
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1118.wgsl.expected.ir.msl b/test/tint/bug/tint/1118.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e2e81f
--- /dev/null
+++ b/test/tint/bug/tint/1118.wgsl.expected.ir.msl
@@ -0,0 +1,197 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Scene = struct @align(16) {
+  vEyePosition:vec4<f32> @offset(0)
+}
+
+Material = struct @align(16) {
+  vDiffuseColor:vec4<f32> @offset(0)
+  vAmbientColor:vec3<f32> @offset(16)
+  placeholder:f32 @offset(28)
+  vEmissiveColor:vec3<f32> @offset(32)
+  placeholder2:f32 @offset(44)
+}
+
+Mesh = struct @align(4) {
+  visibility:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  glFragColor_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %fClipDistance3:ptr<private, f32, read_write> = var
+  %fClipDistance4:ptr<private, f32, read_write> = var
+  %x_29:ptr<uniform, Scene, read> = var @binding_point(0, 0)
+  %x_49:ptr<uniform, Material, read> = var @binding_point(0, 1)
+  %x_137:ptr<uniform, Mesh, read> = var @binding_point(0, 2)
+  %glFragColor:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %viewDirectionW:ptr<function, vec3<f32>, read_write> = var
+    %baseColor:ptr<function, vec4<f32>, read_write> = var
+    %diffuseColor:ptr<function, vec3<f32>, read_write> = var
+    %alpha:ptr<function, f32, read_write> = var
+    %normalW:ptr<function, vec3<f32>, read_write> = var
+    %uvOffset:ptr<function, vec2<f32>, read_write> = var
+    %baseAmbientColor:ptr<function, vec3<f32>, read_write> = var
+    %glossiness:ptr<function, f32, read_write> = var
+    %diffuseBase:ptr<function, vec3<f32>, read_write> = var
+    %shadow:ptr<function, f32, read_write> = var
+    %refractionColor:ptr<function, vec4<f32>, read_write> = var
+    %reflectionColor:ptr<function, vec4<f32>, read_write> = var
+    %emissiveColor:ptr<function, vec3<f32>, read_write> = var
+    %finalDiffuse:ptr<function, vec3<f32>, read_write> = var
+    %finalSpecular:ptr<function, vec3<f32>, read_write> = var
+    %color:ptr<function, vec4<f32>, read_write> = var
+    %x_9:f32 = load %fClipDistance3
+    %25:bool = gt %x_9, 0.0f
+    if %25 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        discard
+        exit_if  # if_1
+      }
+    }
+    %x_17:f32 = load %fClipDistance4
+    %27:bool = gt %x_17, 0.0f
+    if %27 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        discard
+        exit_if  # if_2
+      }
+    }
+    %28:ptr<uniform, vec4<f32>, read> = access %x_29, 0u
+    %x_34:vec4<f32> = load %28
+    %x_38:vec3<f32> = let vec3<f32>(0.0f)
+    %31:f32 = access %x_34, 0u
+    %32:f32 = access %x_34, 1u
+    %33:f32 = access %x_34, 2u
+    %34:vec3<f32> = construct %31, %32, %33
+    %35:vec3<f32> = sub %34, %x_38
+    %36:vec3<f32> = normalize %35
+    store %viewDirectionW, %36
+    store %baseColor, vec4<f32>(1.0f)
+    %37:ptr<uniform, vec4<f32>, read> = access %x_49, 0u
+    %x_52:vec4<f32> = load %37
+    %39:f32 = access %x_52, 0u
+    %40:f32 = access %x_52, 1u
+    %41:f32 = access %x_52, 2u
+    %42:vec3<f32> = construct %39, %40, %41
+    store %diffuseColor, %42
+    %43:ptr<uniform, vec4<f32>, read> = access %x_49, 0u
+    %x_60:f32 = load_vector_element %43, 3u
+    store %alpha, %x_60
+    %x_62:vec3<f32> = let vec3<f32>(0.0f)
+    %x_64:vec3<f32> = let vec3<f32>(0.0f)
+    store %uvOffset, vec2<f32>(0.0f)
+    %x_74:vec4<f32> = let vec4<f32>(0.0f)
+    %x_76:vec4<f32> = load %baseColor
+    %49:f32 = access %x_76, 0u
+    %50:f32 = access %x_76, 1u
+    %51:f32 = access %x_76, 2u
+    %52:vec3<f32> = construct %49, %50, %51
+    %53:f32 = access %x_74, 0u
+    %54:f32 = access %x_74, 1u
+    %55:f32 = access %x_74, 2u
+    %56:vec3<f32> = construct %53, %54, %55
+    %x_78:vec3<f32> = mul %52, %56
+    %x_79:vec4<f32> = load %baseColor
+    %59:f32 = access %x_78, 0u
+    %60:f32 = access %x_78, 1u
+    %61:f32 = access %x_78, 2u
+    %62:f32 = access %x_79, 3u
+    %63:vec4<f32> = construct %59, %60, %61, %62
+    store %baseColor, %63
+    store %baseAmbientColor, vec3<f32>(1.0f)
+    store %glossiness, 0.0f
+    store %diffuseBase, vec3<f32>(0.0f)
+    store %shadow, 1.0f
+    store %refractionColor, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+    store %reflectionColor, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+    %64:ptr<uniform, vec3<f32>, read> = access %x_49, 3u
+    %x_94:vec3<f32> = load %64
+    store %emissiveColor, %x_94
+    %x_96:vec3<f32> = load %diffuseBase
+    %x_97:vec3<f32> = load %diffuseColor
+    %x_99:vec3<f32> = load %emissiveColor
+    %69:ptr<uniform, vec3<f32>, read> = access %x_49, 1u
+    %x_103:vec3<f32> = load %69
+    %x_108:vec4<f32> = load %baseColor
+    %72:vec3<f32> = mul %x_96, %x_97
+    %73:vec3<f32> = add %72, %x_99
+    %74:vec3<f32> = add %73, %x_103
+    %75:vec3<f32> = clamp %74, vec3<f32>(0.0f), vec3<f32>(1.0f)
+    %76:f32 = access %x_108, 0u
+    %77:f32 = access %x_108, 1u
+    %78:f32 = access %x_108, 2u
+    %79:vec3<f32> = construct %76, %77, %78
+    %80:vec3<f32> = mul %75, %79
+    store %finalDiffuse, %80
+    store %finalSpecular, vec3<f32>(0.0f)
+    %x_113:vec3<f32> = load %finalDiffuse
+    %x_114:vec3<f32> = load %baseAmbientColor
+    %x_116:vec3<f32> = load %finalSpecular
+    %x_118:vec4<f32> = load %reflectionColor
+    %x_121:vec4<f32> = load %refractionColor
+    %86:vec3<f32> = mul %x_113, %x_114
+    %87:vec3<f32> = add %86, %x_116
+    %88:f32 = access %x_118, 0u
+    %89:f32 = access %x_118, 1u
+    %90:f32 = access %x_118, 2u
+    %91:vec3<f32> = construct %88, %89, %90
+    %92:vec3<f32> = add %87, %91
+    %93:f32 = access %x_121, 0u
+    %94:f32 = access %x_121, 1u
+    %95:f32 = access %x_121, 2u
+    %96:vec3<f32> = construct %93, %94, %95
+    %x_123:vec3<f32> = add %92, %96
+    %x_124:f32 = load %alpha
+    %99:f32 = access %x_123, 0u
+    %100:f32 = access %x_123, 1u
+    %101:f32 = access %x_123, 2u
+    %102:vec4<f32> = construct %99, %100, %101, %x_124
+    store %color, %102
+    %x_129:vec4<f32> = load %color
+    %104:f32 = access %x_129, 0u
+    %105:f32 = access %x_129, 1u
+    %106:f32 = access %x_129, 2u
+    %107:vec3<f32> = construct %104, %105, %106
+    %x_132:vec3<f32> = max %107, vec3<f32>(0.0f)
+    %x_133:vec4<f32> = load %color
+    %110:f32 = access %x_132, 0u
+    %111:f32 = access %x_132, 1u
+    %112:f32 = access %x_132, 2u
+    %113:f32 = access %x_133, 3u
+    %114:vec4<f32> = construct %110, %111, %112, %113
+    store %color, %114
+    %115:ptr<uniform, f32, read> = access %x_137, 0u
+    %x_140:f32 = load %115
+    %x_142:f32 = load_vector_element %color, 3u
+    %118:f32 = mul %x_142, %x_140
+    store_vector_element %color, 3u, %118
+    %x_147:vec4<f32> = load %color
+    store %glFragColor, %x_147
+    ret
+  }
+}
+%tint_symbol = @fragment func(%fClipDistance3_param:f32 [@location(2)], %fClipDistance4_param:f32 [@location(3)]):main_out -> %b5 {
+  %b5 = block {
+    store %fClipDistance3, %fClipDistance3_param
+    store %fClipDistance4, %fClipDistance4_param
+    %123:void = call %main_1
+    %124:vec4<f32> = load %glFragColor
+    %125:main_out = construct %124
+    ret %125
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1121.wgsl.expected.ir.msl b/test/tint/bug/tint/1121.wgsl.expected.ir.msl
new file mode 100644
index 0000000..87c86a1
--- /dev/null
+++ b/test/tint/bug/tint/1121.wgsl.expected.ir.msl
@@ -0,0 +1,452 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: LightData = struct @align(16) {
+  position:vec4<f32> @offset(0)
+  color:vec3<f32> @offset(16)
+  radius:f32 @offset(28)
+}
+
+LightsBuffer = struct @align(16) {
+  lights:array<LightData> @offset(0)
+}
+
+TileLightIdData = struct @align(4) {
+  count:atomic<u32> @offset(0)
+  lightId:array<u32, 64> @offset(4)
+}
+
+Tiles = struct @align(4) {
+  data:array<TileLightIdData, 4> @offset(0)
+}
+
+Config = struct @align(4) {
+  numLights:u32 @offset(0)
+  numTiles:u32 @offset(4)
+  tileCountX:u32 @offset(8)
+  tileCountY:u32 @offset(12)
+  numTileLightSlot:u32 @offset(16)
+  tileSize:u32 @offset(20)
+}
+
+Uniforms = struct @align(16) {
+  min:vec4<f32> @offset(0)
+  max:vec4<f32> @offset(16)
+  viewMatrix:mat4x4<f32> @offset(32)
+  projectionMatrix:mat4x4<f32> @offset(96)
+  fullScreenSize:vec4<f32> @offset(160)
+}
+
+%b1 = block {  # root
+  %lightsBuffer:ptr<storage, LightsBuffer, read_write> = var @binding_point(0, 0)
+  %tileLightId:ptr<storage, Tiles, read_write> = var @binding_point(1, 0)
+  %config:ptr<uniform, Config, read> = var @binding_point(2, 0)
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(3, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(64, 1, 1) func(%GlobalInvocationID:vec3<u32> [@global_invocation_id]):void -> %b2 {
+  %b2 = block {
+    %7:u32 = access %GlobalInvocationID, 0u
+    %index:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %index
+    %10:ptr<uniform, u32, read> = access %config, 0u
+    %11:u32 = load %10
+    %12:bool = gte %9, %11
+    if %12 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret
+      }
+    }
+    %13:u32 = load %index
+    %14:ptr<storage, vec4<f32>, read_write> = access %lightsBuffer, 0u, %13, 0u
+    %15:u32 = load %index
+    %16:ptr<storage, vec4<f32>, read_write> = access %lightsBuffer, 0u, %15, 0u
+    %17:f32 = load_vector_element %16, 1u
+    %18:f32 = sub %17, 0.10000000149011611938f
+    %19:u32 = load %index
+    %20:f32 = convert %19
+    %21:u32 = load %index
+    %22:f32 = convert %21
+    %23:f32 = div %22, 64.0f
+    %24:f32 = floor %23
+    %25:f32 = mul 64.0f, %24
+    %26:f32 = sub %20, %25
+    %27:f32 = mul 0.00100000004749745131f, %26
+    %28:f32 = add %18, %27
+    store_vector_element %14, 1u, %28
+    %29:u32 = load %index
+    %30:ptr<storage, vec4<f32>, read_write> = access %lightsBuffer, 0u, %29, 0u
+    %31:f32 = load_vector_element %30, 1u
+    %32:ptr<uniform, vec4<f32>, read> = access %uniforms, 0u
+    %33:f32 = load_vector_element %32, 1u
+    %34:bool = lt %31, %33
+    if %34 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %35:u32 = load %index
+        %36:ptr<storage, vec4<f32>, read_write> = access %lightsBuffer, 0u, %35, 0u
+        %37:ptr<uniform, vec4<f32>, read> = access %uniforms, 1u
+        %38:f32 = load_vector_element %37, 1u
+        store_vector_element %36, 1u, %38
+        exit_if  # if_2
+      }
+    }
+    %39:ptr<uniform, mat4x4<f32>, read> = access %uniforms, 3u
+    %40:mat4x4<f32> = load %39
+    %M:ptr<function, mat4x4<f32>, read_write> = var, %40
+    %42:ptr<function, vec4<f32>, read_write> = access %M, 3i
+    %43:f32 = load_vector_element %42, 2i
+    %44:f32 = negation %43
+    %45:ptr<function, vec4<f32>, read_write> = access %M, 2i
+    %46:f32 = load_vector_element %45, 2i
+    %47:f32 = add -1.0f, %46
+    %48:f32 = div %44, %47
+    %viewNear:ptr<function, f32, read_write> = var, %48
+    %50:ptr<function, vec4<f32>, read_write> = access %M, 3i
+    %51:f32 = load_vector_element %50, 2i
+    %52:f32 = negation %51
+    %53:ptr<function, vec4<f32>, read_write> = access %M, 2i
+    %54:f32 = load_vector_element %53, 2i
+    %55:f32 = add 1.0f, %54
+    %56:f32 = div %52, %55
+    %viewFar:ptr<function, f32, read_write> = var, %56
+    %58:u32 = load %index
+    %59:ptr<storage, vec4<f32>, read_write> = access %lightsBuffer, 0u, %58, 0u
+    %60:vec4<f32> = load %59
+    %lightPos:ptr<function, vec4<f32>, read_write> = var, %60
+    %62:ptr<uniform, mat4x4<f32>, read> = access %uniforms, 2u
+    %63:mat4x4<f32> = load %62
+    %64:vec4<f32> = load %lightPos
+    %65:vec4<f32> = mul %63, %64
+    store %lightPos, %65
+    %66:vec4<f32> = load %lightPos
+    %67:f32 = load_vector_element %lightPos, 3u
+    %68:vec4<f32> = div %66, %67
+    store %lightPos, %68
+    %69:u32 = load %index
+    %70:ptr<storage, f32, read_write> = access %lightsBuffer, 0u, %69, 2u
+    %71:f32 = load %70
+    %lightRadius:ptr<function, f32, read_write> = var, %71
+    %73:vec4<f32> = load %lightPos
+    %74:f32 = load %lightRadius
+    %75:vec3<f32> = construct %74
+    %76:vec4<f32> = construct %75, 0.0f
+    %77:vec4<f32> = sub %73, %76
+    %boxMin:ptr<function, vec4<f32>, read_write> = var, %77
+    %79:vec4<f32> = load %lightPos
+    %80:f32 = load %lightRadius
+    %81:vec3<f32> = construct %80
+    %82:vec4<f32> = construct %81, 0.0f
+    %83:vec4<f32> = add %79, %82
+    %boxMax:ptr<function, vec4<f32>, read_write> = var, %83
+    %frustumPlanes:ptr<function, array<vec4<f32>, 6>, read_write> = var
+    %86:ptr<function, vec4<f32>, read_write> = access %frustumPlanes, 4i
+    %87:f32 = load %viewNear
+    %88:vec4<f32> = construct 0.0f, 0.0f, -1.0f, %87
+    store %86, %88
+    %89:ptr<function, vec4<f32>, read_write> = access %frustumPlanes, 5i
+    %90:f32 = load %viewFar
+    %91:f32 = negation %90
+    %92:vec4<f32> = construct 0.0f, 0.0f, 1.0f, %91
+    store %89, %92
+    %TILE_SIZE:i32 = let 16i
+    %TILE_COUNT_X:i32 = let 2i
+    %TILE_COUNT_Y:i32 = let 2i
+    loop [i: %b5, b: %b6, c: %b7] {  # loop_1
+      %b5 = block {  # initializer
+        %y:ptr<function, i32, read_write> = var, 0i
+        next_iteration %b6
+      }
+      %b6 = block {  # body
+        %97:i32 = load %y
+        %98:bool = lt %97, %TILE_COUNT_Y
+        if %98 [t: %b8, f: %b9] {  # if_3
+          %b8 = block {  # true
+            exit_if  # if_3
+          }
+          %b9 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        loop [i: %b10, b: %b11, c: %b12] {  # loop_2
+          %b10 = block {  # initializer
+            %x:ptr<function, i32, read_write> = var, 0i
+            next_iteration %b11
+          }
+          %b11 = block {  # body
+            %100:i32 = load %x
+            %101:bool = lt %100, %TILE_COUNT_X
+            if %101 [t: %b13, f: %b14] {  # if_4
+              %b13 = block {  # true
+                exit_if  # if_4
+              }
+              %b14 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %102:i32 = load %x
+            %103:i32 = mul %102, %TILE_SIZE
+            %104:i32 = load %y
+            %105:i32 = mul %104, %TILE_SIZE
+            %106:vec2<i32> = construct %103, %105
+            %tilePixel0Idx:ptr<function, vec2<i32>, read_write> = var, %106
+            %108:vec2<i32> = load %tilePixel0Idx
+            %109:vec2<f32> = convert %108
+            %110:vec2<f32> = mul 2.0f, %109
+            %111:ptr<uniform, vec4<f32>, read> = access %uniforms, 4u
+            %112:vec4<f32> = load %111
+            %113:vec2<f32> = swizzle %112, xy
+            %114:vec2<f32> = div %110, %113
+            %115:vec2<f32> = sub %114, vec2<f32>(1.0f)
+            %floorCoord:ptr<function, vec2<f32>, read_write> = var, %115
+            %117:vec2<i32> = load %tilePixel0Idx
+            %118:vec2<i32> = construct %TILE_SIZE
+            %119:vec2<i32> = add %117, %118
+            %120:vec2<f32> = convert %119
+            %121:vec2<f32> = mul 2.0f, %120
+            %122:ptr<uniform, vec4<f32>, read> = access %uniforms, 4u
+            %123:vec4<f32> = load %122
+            %124:vec2<f32> = swizzle %123, xy
+            %125:vec2<f32> = div %121, %124
+            %126:vec2<f32> = sub %125, vec2<f32>(1.0f)
+            %ceilCoord:ptr<function, vec2<f32>, read_write> = var, %126
+            %128:f32 = load %viewNear
+            %129:f32 = negation %128
+            %130:f32 = load_vector_element %floorCoord, 0u
+            %131:f32 = mul %129, %130
+            %132:ptr<function, vec4<f32>, read_write> = access %M, 2i
+            %133:f32 = load_vector_element %132, 0i
+            %134:f32 = load %viewNear
+            %135:f32 = mul %133, %134
+            %136:f32 = sub %131, %135
+            %137:ptr<function, vec4<f32>, read_write> = access %M, 0i
+            %138:f32 = load_vector_element %137, 0i
+            %139:f32 = div %136, %138
+            %140:f32 = load %viewNear
+            %141:f32 = negation %140
+            %142:f32 = load_vector_element %floorCoord, 1u
+            %143:f32 = mul %141, %142
+            %144:ptr<function, vec4<f32>, read_write> = access %M, 2i
+            %145:f32 = load_vector_element %144, 1i
+            %146:f32 = load %viewNear
+            %147:f32 = mul %145, %146
+            %148:f32 = sub %143, %147
+            %149:ptr<function, vec4<f32>, read_write> = access %M, 1i
+            %150:f32 = load_vector_element %149, 1i
+            %151:f32 = div %148, %150
+            %152:vec2<f32> = construct %139, %151
+            %viewFloorCoord:ptr<function, vec2<f32>, read_write> = var, %152
+            %154:f32 = load %viewNear
+            %155:f32 = negation %154
+            %156:f32 = load_vector_element %ceilCoord, 0u
+            %157:f32 = mul %155, %156
+            %158:ptr<function, vec4<f32>, read_write> = access %M, 2i
+            %159:f32 = load_vector_element %158, 0i
+            %160:f32 = load %viewNear
+            %161:f32 = mul %159, %160
+            %162:f32 = sub %157, %161
+            %163:ptr<function, vec4<f32>, read_write> = access %M, 0i
+            %164:f32 = load_vector_element %163, 0i
+            %165:f32 = div %162, %164
+            %166:f32 = load %viewNear
+            %167:f32 = negation %166
+            %168:f32 = load_vector_element %ceilCoord, 1u
+            %169:f32 = mul %167, %168
+            %170:ptr<function, vec4<f32>, read_write> = access %M, 2i
+            %171:f32 = load_vector_element %170, 1i
+            %172:f32 = load %viewNear
+            %173:f32 = mul %171, %172
+            %174:f32 = sub %169, %173
+            %175:ptr<function, vec4<f32>, read_write> = access %M, 1i
+            %176:f32 = load_vector_element %175, 1i
+            %177:f32 = div %174, %176
+            %178:vec2<f32> = construct %165, %177
+            %viewCeilCoord:ptr<function, vec2<f32>, read_write> = var, %178
+            %180:ptr<function, vec4<f32>, read_write> = access %frustumPlanes, 0i
+            %181:f32 = load_vector_element %viewFloorCoord, 0u
+            %182:f32 = negation %181
+            %183:f32 = load %viewNear
+            %184:f32 = div %182, %183
+            %185:vec4<f32> = construct 1.0f, 0.0f, %184, 0.0f
+            store %180, %185
+            %186:ptr<function, vec4<f32>, read_write> = access %frustumPlanes, 1i
+            %187:f32 = load_vector_element %viewCeilCoord, 0u
+            %188:f32 = load %viewNear
+            %189:f32 = div %187, %188
+            %190:vec4<f32> = construct -1.0f, 0.0f, %189, 0.0f
+            store %186, %190
+            %191:ptr<function, vec4<f32>, read_write> = access %frustumPlanes, 2i
+            %192:f32 = load_vector_element %viewFloorCoord, 1u
+            %193:f32 = negation %192
+            %194:f32 = load %viewNear
+            %195:f32 = div %193, %194
+            %196:vec4<f32> = construct 0.0f, 1.0f, %195, 0.0f
+            store %191, %196
+            %197:ptr<function, vec4<f32>, read_write> = access %frustumPlanes, 3i
+            %198:f32 = load_vector_element %viewCeilCoord, 1u
+            %199:f32 = load %viewNear
+            %200:f32 = div %198, %199
+            %201:vec4<f32> = construct 0.0f, -1.0f, %200, 0.0f
+            store %197, %201
+            %dp:ptr<function, f32, read_write> = var, 0.0f
+            loop [i: %b15, b: %b16, c: %b17] {  # loop_3
+              %b15 = block {  # initializer
+                %i:ptr<function, u32, read_write> = var, 0u
+                next_iteration %b16
+              }
+              %b16 = block {  # body
+                %204:u32 = load %i
+                %205:bool = lt %204, 6u
+                if %205 [t: %b18, f: %b19] {  # if_5
+                  %b18 = block {  # true
+                    exit_if  # if_5
+                  }
+                  %b19 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %p:ptr<function, vec4<f32>, read_write> = var
+                %207:u32 = load %i
+                %208:ptr<function, vec4<f32>, read_write> = access %frustumPlanes, %207
+                %209:f32 = load_vector_element %208, 0u
+                %210:bool = gt %209, 0.0f
+                if %210 [t: %b20, f: %b21] {  # if_6
+                  %b20 = block {  # true
+                    %211:f32 = load_vector_element %boxMax, 0u
+                    store_vector_element %p, 0u, %211
+                    exit_if  # if_6
+                  }
+                  %b21 = block {  # false
+                    %212:f32 = load_vector_element %boxMin, 0u
+                    store_vector_element %p, 0u, %212
+                    exit_if  # if_6
+                  }
+                }
+                %213:u32 = load %i
+                %214:ptr<function, vec4<f32>, read_write> = access %frustumPlanes, %213
+                %215:f32 = load_vector_element %214, 1u
+                %216:bool = gt %215, 0.0f
+                if %216 [t: %b22, f: %b23] {  # if_7
+                  %b22 = block {  # true
+                    %217:f32 = load_vector_element %boxMax, 1u
+                    store_vector_element %p, 1u, %217
+                    exit_if  # if_7
+                  }
+                  %b23 = block {  # false
+                    %218:f32 = load_vector_element %boxMin, 1u
+                    store_vector_element %p, 1u, %218
+                    exit_if  # if_7
+                  }
+                }
+                %219:u32 = load %i
+                %220:ptr<function, vec4<f32>, read_write> = access %frustumPlanes, %219
+                %221:f32 = load_vector_element %220, 2u
+                %222:bool = gt %221, 0.0f
+                if %222 [t: %b24, f: %b25] {  # if_8
+                  %b24 = block {  # true
+                    %223:f32 = load_vector_element %boxMax, 2u
+                    store_vector_element %p, 2u, %223
+                    exit_if  # if_8
+                  }
+                  %b25 = block {  # false
+                    %224:f32 = load_vector_element %boxMin, 2u
+                    store_vector_element %p, 2u, %224
+                    exit_if  # if_8
+                  }
+                }
+                store_vector_element %p, 3u, 1.0f
+                %225:f32 = load %dp
+                %226:vec4<f32> = load %p
+                %227:u32 = load %i
+                %228:ptr<function, vec4<f32>, read_write> = access %frustumPlanes, %227
+                %229:vec4<f32> = load %228
+                %230:f32 = dot %226, %229
+                %231:f32 = min 0.0f, %230
+                %232:f32 = add %225, %231
+                store %dp, %232
+                continue %b17
+              }
+              %b17 = block {  # continuing
+                %233:u32 = load %i
+                %234:u32 = add %233, 1u
+                store %i, %234
+                next_iteration %b16
+              }
+            }
+            %235:f32 = load %dp
+            %236:bool = gte %235, 0.0f
+            if %236 [t: %b26] {  # if_9
+              %b26 = block {  # true
+                %237:i32 = load %x
+                %238:i32 = load %y
+                %239:i32 = mul %238, %TILE_COUNT_X
+                %240:i32 = add %237, %239
+                %241:u32 = convert %240
+                %tileId:ptr<function, u32, read_write> = var, %241
+                %243:u32 = load %tileId
+                %244:bool = lt %243, 0u
+                %245:bool = if %244 [t: %b27, f: %b28] {  # if_10
+                  %b27 = block {  # true
+                    exit_if true  # if_10
+                  }
+                  %b28 = block {  # false
+                    %246:u32 = load %tileId
+                    %247:ptr<uniform, u32, read> = access %config, 1u
+                    %248:u32 = load %247
+                    %249:bool = gte %246, %248
+                    exit_if %249  # if_10
+                  }
+                }
+                if %245 [t: %b29] {  # if_11
+                  %b29 = block {  # true
+                    continue %b12
+                  }
+                }
+                %250:u32 = load %tileId
+                %251:ptr<storage, atomic<u32>, read_write> = access %tileLightId, 0u, %250, 0u
+                %252:u32 = atomicAdd %251, 1u
+                %offset:ptr<function, u32, read_write> = var, %252
+                %254:u32 = load %offset
+                %255:ptr<uniform, u32, read> = access %config, 4u
+                %256:u32 = load %255
+                %257:bool = gte %254, %256
+                if %257 [t: %b30] {  # if_12
+                  %b30 = block {  # true
+                    continue %b12
+                  }
+                }
+                %258:u32 = load %tileId
+                %259:u32 = load %offset
+                %260:ptr<storage, u32, read_write> = access %tileLightId, 0u, %258, 1u, %259
+                %261:u32 = access %GlobalInvocationID, 0u
+                store %260, %261
+                exit_if  # if_9
+              }
+            }
+            continue %b12
+          }
+          %b12 = block {  # continuing
+            %262:i32 = load %x
+            %263:i32 = add %262, 1i
+            store %x, %263
+            next_iteration %b11
+          }
+        }
+        continue %b7
+      }
+      %b7 = block {  # continuing
+        %264:i32 = load %y
+        %265:i32 = add %264, 1i
+        store %y, %265
+        next_iteration %b6
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1136.wgsl.expected.ir.msl b/test/tint/bug/tint/1136.wgsl.expected.ir.msl
new file mode 100644
index 0000000..42c020c
--- /dev/null
+++ b/test/tint/bug/tint/1136.wgsl.expected.ir.msl
@@ -0,0 +1,28 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Buffer = struct @align(4) {
+  data:u32 @offset(0)
+}
+
+%b1 = block {  # root
+  %tint_symbol:ptr<storage, Buffer, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol_1 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, u32, read_write> = access %tint_symbol, 0u
+    %4:ptr<storage, u32, read_write> = access %tint_symbol, 0u
+    %5:u32 = load %4
+    %6:u32 = add %5, 1u
+    store %3, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1183.wgsl.expected.ir.msl b/test/tint/bug/tint/1183.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/bug/tint/1183.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/bug/tint/1321.wgsl.expected.ir.msl b/test/tint/bug/tint/1321.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/bug/tint/1321.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/bug/tint/1332.wgsl.expected.ir.msl b/test/tint/bug/tint/1332.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/bug/tint/1332.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/bug/tint/1369.wgsl.expected.ir.msl b/test/tint/bug/tint/1369.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/bug/tint/1369.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/bug/tint/1385.wgsl.expected.ir.msl b/test/tint/bug/tint/1385.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c6ead5f
--- /dev/null
+++ b/test/tint/bug/tint/1385.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %data:ptr<storage, array<i32>, read> = var @binding_point(0, 1)
+}
+
+%foo = func():i32 -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, i32, read> = access %data, 0i
+    %4:i32 = load %3
+    ret %4
+  }
+}
+%tint_symbol = @compute @workgroup_size(16, 16, 1) func():void -> %b3 {
+  %b3 = block {
+    %6:i32 = call %foo
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1474-a.wgsl.expected.ir.msl b/test/tint/bug/tint/1474-a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/bug/tint/1474-a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/bug/tint/1474-b.wgsl.expected.ir.msl b/test/tint/bug/tint/1474-b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a0cd356
--- /dev/null
+++ b/test/tint/bug/tint/1474-b.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/test/tint/bug/tint/1474-b.wgsl:7:5 warning: code is unreachable
+    let non_uniform_cond = non_uniform_value == 0;
+    ^^^^^^^^^^^^^^^^^^^^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %non_uniform_value:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1509.wgsl.expected.ir.msl b/test/tint/bug/tint/1509.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/bug/tint/1509.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/bug/tint/1520.spvasm.expected.ir.msl b/test/tint/bug/tint/1520.spvasm.expected.ir.msl
new file mode 100644
index 0000000..68dff4c
--- /dev/null
+++ b/test/tint/bug/tint/1520.spvasm.expected.ir.msl
@@ -0,0 +1,235 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: UniformBuffer = struct @align(16) {
+  unknownInput_S1_c0:f32 @offset(16)
+  ucolorRed_S1_c0:vec4<f32> @offset(32)
+  ucolorGreen_S1_c0:vec4<f32> @offset(48)
+  umatrix_S1:mat3x3<f32> @offset(64)
+}
+
+main_out = struct @align(16) {
+  sk_FragColor_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_4:ptr<uniform, UniformBuffer, read> = var @binding_point(0, 0)
+  %sk_FragColor:ptr<private, vec4<f32>, read_write> = var
+  %sk_Clockwise:ptr<private, bool, read_write> = var
+  %vcolor_S0:ptr<private, vec4<f32>, read_write> = var
+}
+
+%test_int_S1_c0_b = func():bool -> %b2 {
+  %b2 = block {
+    %unknown:ptr<function, i32, read_write> = var
+    %ok:ptr<function, bool, read_write> = var
+    %val:ptr<function, vec4<i32>, read_write> = var
+    %x_40:ptr<function, bool, read_write> = var
+    %x_41:ptr<function, bool, read_write> = var
+    %x_54:ptr<function, bool, read_write> = var
+    %x_55:ptr<function, bool, read_write> = var
+    %x_65:ptr<function, bool, read_write> = var
+    %x_66:ptr<function, bool, read_write> = var
+    %15:ptr<uniform, f32, read> = access %x_4, 0u
+    %16:f32 = load %15
+    %x_27:i32 = convert %16
+    store %unknown, %x_27
+    store %ok, true
+    store %x_41, false
+    if true [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %18:vec4<i32> = construct %x_27
+        %19:vec4<i32> = div vec4<i32>(0i), %18
+        %20:vec4<bool> = eq %19, vec4<i32>(0i)
+        %21:bool = all %20
+        store %x_40, %21
+        %22:bool = load %x_40
+        store %x_41, %22
+        exit_if  # if_1
+      }
+    }
+    %23:bool = load %x_41
+    store %ok, %23
+    %x_44:vec4<i32> = construct %x_27
+    store %val, %x_44
+    %x_47:vec4<i32> = add %x_44, vec4<i32>(1i)
+    store %val, %x_47
+    %x_48:vec4<i32> = sub %x_47, vec4<i32>(1i)
+    store %val, %x_48
+    %x_49:vec4<i32> = add %x_48, vec4<i32>(1i)
+    store %val, %x_49
+    %x_50:vec4<i32> = sub %x_49, vec4<i32>(1i)
+    store %val, %x_50
+    store %x_55, false
+    %29:bool = load %x_41
+    if %29 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %30:vec4<bool> = eq %x_50, %x_44
+        %31:bool = all %30
+        store %x_54, %31
+        %32:bool = load %x_54
+        store %x_55, %32
+        exit_if  # if_2
+      }
+    }
+    %33:bool = load %x_55
+    store %ok, %33
+    %x_58:vec4<i32> = mul %x_50, vec4<i32>(2i)
+    store %val, %x_58
+    %x_59:vec4<i32> = div %x_58, vec4<i32>(2i)
+    store %val, %x_59
+    %x_60:vec4<i32> = mul %x_59, vec4<i32>(2i)
+    store %val, %x_60
+    %x_61:vec4<i32> = div %x_60, vec4<i32>(2i)
+    store %val, %x_61
+    store %x_66, false
+    %38:bool = load %x_55
+    if %38 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        %39:vec4<bool> = eq %x_61, %x_44
+        %40:bool = all %39
+        store %x_65, %40
+        %41:bool = load %x_65
+        store %x_66, %41
+        exit_if  # if_3
+      }
+    }
+    %42:bool = load %x_66
+    store %ok, %42
+    %43:bool = load %x_66
+    ret %43
+  }
+}
+%main_1 = func():void -> %b6 {
+  %b6 = block {
+    %outputColor_S0:ptr<function, vec4<f32>, read_write> = var
+    %output_S1:ptr<function, vec4<f32>, read_write> = var
+    %x_8_unknown:ptr<function, f32, read_write> = var
+    %x_9_ok:ptr<function, bool, read_write> = var
+    %x_10_val:ptr<function, vec4<f32>, read_write> = var
+    %x_116:ptr<function, vec4<f32>, read_write> = var
+    %x_86:ptr<function, bool, read_write> = var
+    %x_87:ptr<function, bool, read_write> = var
+    %x_99:ptr<function, bool, read_write> = var
+    %x_100:ptr<function, bool, read_write> = var
+    %x_110:ptr<function, bool, read_write> = var
+    %x_111:ptr<function, bool, read_write> = var
+    %x_114:ptr<function, bool, read_write> = var
+    %x_115:ptr<function, bool, read_write> = var
+    %59:vec4<f32> = load %vcolor_S0
+    store %outputColor_S0, %59
+    %60:ptr<uniform, f32, read> = access %x_4, 0u
+    %x_77:f32 = load %60
+    store %x_8_unknown, %x_77
+    store %x_9_ok, true
+    store %x_87, false
+    if true [t: %b7] {  # if_4
+      %b7 = block {  # true
+        %62:vec4<f32> = construct %x_77
+        %63:vec4<f32> = div vec4<f32>(0.0f), %62
+        %64:vec4<bool> = eq %63, vec4<f32>(0.0f)
+        %65:bool = all %64
+        store %x_86, %65
+        %66:bool = load %x_86
+        store %x_87, %66
+        exit_if  # if_4
+      }
+    }
+    %67:bool = load %x_87
+    store %x_9_ok, %67
+    %x_89:vec4<f32> = construct %x_77
+    store %x_10_val, %x_89
+    %x_92:vec4<f32> = add %x_89, vec4<f32>(1.0f)
+    store %x_10_val, %x_92
+    %x_93:vec4<f32> = sub %x_92, vec4<f32>(1.0f)
+    store %x_10_val, %x_93
+    %x_94:vec4<f32> = add %x_93, vec4<f32>(1.0f)
+    store %x_10_val, %x_94
+    %x_95:vec4<f32> = sub %x_94, vec4<f32>(1.0f)
+    store %x_10_val, %x_95
+    store %x_100, false
+    %73:bool = load %x_87
+    if %73 [t: %b8] {  # if_5
+      %b8 = block {  # true
+        %74:vec4<bool> = eq %x_95, %x_89
+        %75:bool = all %74
+        store %x_99, %75
+        %76:bool = load %x_99
+        store %x_100, %76
+        exit_if  # if_5
+      }
+    }
+    %77:bool = load %x_100
+    store %x_9_ok, %77
+    %x_103:vec4<f32> = mul %x_95, vec4<f32>(2.0f)
+    store %x_10_val, %x_103
+    %x_104:vec4<f32> = div %x_103, vec4<f32>(2.0f)
+    store %x_10_val, %x_104
+    %x_105:vec4<f32> = mul %x_104, vec4<f32>(2.0f)
+    store %x_10_val, %x_105
+    %x_106:vec4<f32> = div %x_105, vec4<f32>(2.0f)
+    store %x_10_val, %x_106
+    store %x_111, false
+    %82:bool = load %x_100
+    if %82 [t: %b9] {  # if_6
+      %b9 = block {  # true
+        %83:vec4<bool> = eq %x_106, %x_89
+        %84:bool = all %83
+        store %x_110, %84
+        %85:bool = load %x_110
+        store %x_111, %85
+        exit_if  # if_6
+      }
+    }
+    %86:bool = load %x_111
+    store %x_9_ok, %86
+    store %x_115, false
+    %87:bool = load %x_111
+    if %87 [t: %b10] {  # if_7
+      %b10 = block {  # true
+        %88:bool = call %test_int_S1_c0_b
+        store %x_114, %88
+        %89:bool = load %x_114
+        store %x_115, %89
+        exit_if  # if_7
+      }
+    }
+    %90:bool = load %x_115
+    if %90 [t: %b11, f: %b12] {  # if_8
+      %b11 = block {  # true
+        %91:ptr<uniform, vec4<f32>, read> = access %x_4, 2u
+        %92:vec4<f32> = load %91
+        store %x_116, %92
+        exit_if  # if_8
+      }
+      %b12 = block {  # false
+        %93:ptr<uniform, vec4<f32>, read> = access %x_4, 1u
+        %94:vec4<f32> = load %93
+        store %x_116, %94
+        exit_if  # if_8
+      }
+    }
+    %x_125:vec4<f32> = load %x_116
+    %96:vec4<f32> = load %x_116
+    store %output_S1, %96
+    store %sk_FragColor, %x_125
+    ret
+  }
+}
+%tint_symbol = @fragment func(%sk_Clockwise_param:bool [@front_facing], %vcolor_S0_param:vec4<f32> [@location(0)]):main_out -> %b13 {
+  %b13 = block {
+    store %sk_Clockwise, %sk_Clockwise_param
+    store %vcolor_S0, %vcolor_S0_param
+    %100:void = call %main_1
+    %101:vec4<f32> = load %sk_FragColor
+    %102:main_out = construct %101
+    ret %102
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1534.wgsl.expected.ir.msl b/test/tint/bug/tint/1534.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e48bbc6
--- /dev/null
+++ b/test/tint/bug/tint/1534.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: g = struct @align(16) {
+  a:vec3<u32> @offset(0)
+}
+
+h = struct @align(4) {
+  a:u32 @offset(0)
+}
+
+%b1 = block {  # root
+  %i:ptr<uniform, g, read> = var @binding_point(0, 0)
+  %j:ptr<storage, h, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, vec3<u32>, read> = access %i, 0u
+    %5:vec3<u32> = load %4
+    %6:ptr<uniform, vec3<u32>, read> = access %i, 0u
+    %7:vec3<u32> = load %6
+    %l:u32 = dot %5, %7
+    %9:ptr<storage, u32, read_write> = access %j, 0u
+    %10:ptr<uniform, vec3<u32>, read> = access %i, 0u
+    %11:u32 = load_vector_element %10, 0u
+    store %9, %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1538.wgsl.expected.ir.msl b/test/tint/bug/tint/1538.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d5572fe
--- /dev/null
+++ b/test/tint/bug/tint/1538.wgsl.expected.ir.msl
@@ -0,0 +1,59 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %buf:ptr<storage, array<u32, 1>, read_write> = var @binding_point(0, 1)
+}
+
+%g = func():i32 -> %b2 {
+  %b2 = block {
+    ret 0i
+  }
+}
+%f = func():i32 -> %b3 {
+  %b3 = block {
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %4:i32 = call %g
+        exit_loop  # loop_1
+      }
+      %b5 = block {  # continuing
+        next_iteration %b4
+      }
+    }
+    %o:i32 = call %g
+    ret 0i
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %7:ptr<storage, u32, read_write> = access %buf, 0i
+        %8:u32 = load %7
+        %9:bool = eq %8, 0u
+        if %9 [t: %b9] {  # if_1
+          %b9 = block {  # true
+            exit_loop  # loop_2
+          }
+        }
+        %10:i32 = call %f
+        %s:ptr<function, i32, read_write> = var, %10
+        %12:ptr<storage, u32, read_write> = access %buf, 0i
+        store %12, 0u
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        next_iteration %b7
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1541.wgsl.expected.ir.msl b/test/tint/bug/tint/1541.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/bug/tint/1541.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/bug/tint/1542.wgsl.expected.ir.msl b/test/tint/bug/tint/1542.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ed2e4e0
--- /dev/null
+++ b/test/tint/bug/tint/1542.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: UniformBuffer = struct @align(16) {
+  d:vec3<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %u_input:ptr<uniform, UniformBuffer, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, vec3<i32>, read> = access %u_input, 0u
+    %4:vec3<i32> = load %3
+    %temp:vec3<i32> = shiftl %4, vec3<u32>(0u)
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1557.wgsl.expected.ir.msl b/test/tint/bug/tint/1557.wgsl.expected.ir.msl
new file mode 100644
index 0000000..46647fd
--- /dev/null
+++ b/test/tint/bug/tint/1557.wgsl.expected.ir.msl
@@ -0,0 +1,69 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %u:ptr<uniform, i32, read> = var @binding_point(0, 0)
+}
+
+%f = func():i32 -> %b2 {
+  %b2 = block {
+    ret 0i
+  }
+}
+%g = func():void -> %b3 {
+  %b3 = block {
+    %j:ptr<function, i32, read_write> = var, 0i
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %5:i32 = load %j
+        %6:bool = gte %5, 1i
+        if %6 [t: %b6] {  # if_1
+          %b6 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %7:i32 = load %j
+        %8:i32 = add %7, 1i
+        store %j, %8
+        %9:i32 = call %f
+        %k:ptr<function, i32, read_write> = var, %9
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        next_iteration %b4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {
+  %b7 = block {
+    %12:i32 = load %u
+    switch %12 [c: (0i, %b8), c: (default, %b9)] {  # switch_1
+      %b8 = block {  # case
+        %13:i32 = load %u
+        switch %13 [c: (0i, %b10), c: (default, %b11)] {  # switch_2
+          %b10 = block {  # case
+            exit_switch  # switch_2
+          }
+          %b11 = block {  # case
+            %14:void = call %g
+            exit_switch  # switch_2
+          }
+        }
+        exit_switch  # switch_1
+      }
+      %b9 = block {  # case
+        exit_switch  # switch_1
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1563.wgsl.expected.ir.msl b/test/tint/bug/tint/1563.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/bug/tint/1563.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/bug/tint/1573.wgsl.expected.ir.msl b/test/tint/bug/tint/1573.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5c3788e
--- /dev/null
+++ b/test/tint/bug/tint/1573.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: __atomic_compare_exchange_result_u32 = struct @align(4) {
+  old_value:u32 @offset(0)
+  exchanged:bool @offset(4)
+}
+
+%b1 = block {  # root
+  %a:ptr<storage, atomic<u32>, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(16, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %value:ptr<function, u32, read_write> = var, 42u
+    %4:u32 = load %value
+    %result:__atomic_compare_exchange_result_u32 = atomicCompareExchangeWeak %a, 0u, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1574.wgsl.expected.ir.msl b/test/tint/bug/tint/1574.wgsl.expected.ir.msl
new file mode 100644
index 0000000..20bf1cf
--- /dev/null
+++ b/test/tint/bug/tint/1574.wgsl.expected.ir.msl
@@ -0,0 +1,60 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: __atomic_compare_exchange_result_u32 = struct @align(4) {
+  old_value:u32 @offset(0)
+  exchanged:bool @offset(4)
+}
+
+__atomic_compare_exchange_result_i32 = struct @align(4) {
+  old_value:i32 @offset(0)
+  exchanged:bool @offset(4)
+}
+
+%b1 = block {  # root
+  %a_u32:ptr<storage, atomic<u32>, read_write> = var @binding_point(0, 0)
+  %a_i32:ptr<storage, atomic<i32>, read_write> = var @binding_point(0, 1)
+  %b_u32:ptr<workgroup, atomic<u32>, read_write> = var
+  %b_i32:ptr<workgroup, atomic<i32>, read_write> = var
+}
+
+%tint_symbol = @compute @workgroup_size(16, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %value:ptr<function, u32, read_write> = var, 42u
+    %7:u32 = load %value
+    %r1:__atomic_compare_exchange_result_u32 = atomicCompareExchangeWeak %a_u32, 0u, %7
+    %9:u32 = load %value
+    %r2:__atomic_compare_exchange_result_u32 = atomicCompareExchangeWeak %a_u32, 0u, %9
+    %11:u32 = load %value
+    %r3:__atomic_compare_exchange_result_u32 = atomicCompareExchangeWeak %a_u32, 0u, %11
+    %value_1:ptr<function, i32, read_write> = var, 42i  # %value_1: 'value'
+    %14:i32 = load %value_1
+    %r1_1:__atomic_compare_exchange_result_i32 = atomicCompareExchangeWeak %a_i32, 0i, %14  # %r1_1: 'r1'
+    %16:i32 = load %value_1
+    %r2_1:__atomic_compare_exchange_result_i32 = atomicCompareExchangeWeak %a_i32, 0i, %16  # %r2_1: 'r2'
+    %18:i32 = load %value_1
+    %r3_1:__atomic_compare_exchange_result_i32 = atomicCompareExchangeWeak %a_i32, 0i, %18  # %r3_1: 'r3'
+    %value_2:ptr<function, u32, read_write> = var, 42u  # %value_2: 'value'
+    %21:u32 = load %value_2
+    %r1_2:__atomic_compare_exchange_result_u32 = atomicCompareExchangeWeak %b_u32, 0u, %21  # %r1_2: 'r1'
+    %23:u32 = load %value_2
+    %r2_2:__atomic_compare_exchange_result_u32 = atomicCompareExchangeWeak %b_u32, 0u, %23  # %r2_2: 'r2'
+    %25:u32 = load %value_2
+    %r3_2:__atomic_compare_exchange_result_u32 = atomicCompareExchangeWeak %b_u32, 0u, %25  # %r3_2: 'r3'
+    %value_3:ptr<function, i32, read_write> = var, 42i  # %value_3: 'value'
+    %28:i32 = load %value_3
+    %r1_3:__atomic_compare_exchange_result_i32 = atomicCompareExchangeWeak %b_i32, 0i, %28  # %r1_3: 'r1'
+    %30:i32 = load %value_3
+    %r2_3:__atomic_compare_exchange_result_i32 = atomicCompareExchangeWeak %b_i32, 0i, %30  # %r2_3: 'r2'
+    %32:i32 = load %value_3
+    %r3_3:__atomic_compare_exchange_result_i32 = atomicCompareExchangeWeak %b_i32, 0i, %32  # %r3_3: 'r3'
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1604.wgsl.expected.ir.msl b/test/tint/bug/tint/1604.wgsl.expected.ir.msl
new file mode 100644
index 0000000..57a9550
--- /dev/null
+++ b/test/tint/bug/tint/1604.wgsl.expected.ir.msl
@@ -0,0 +1,36 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %x:ptr<uniform, i32, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:i32 = load %x
+    switch %3 [c: (0i, %b3), c: (default, %b4)] {  # switch_1
+      %b3 = block {  # case
+        loop [b: %b5, c: %b6] {  # loop_1
+          %b5 = block {  # body
+            ret
+          }
+          %b6 = block {  # continuing
+            next_iteration %b5
+          }
+        }
+        exit_switch  # switch_1
+      }
+      %b4 = block {  # case
+        exit_switch  # switch_1
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1605.wgsl.expected.ir.msl b/test/tint/bug/tint/1605.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d1a4039
--- /dev/null
+++ b/test/tint/bug/tint/1605.wgsl.expected.ir.msl
@@ -0,0 +1,76 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %b:ptr<uniform, i32, read> = var @binding_point(0, 0)
+}
+
+%func_3 = func():bool -> %b2 {
+  %b2 = block {
+    loop [i: %b3, b: %b4, c: %b5] {  # loop_1
+      %b3 = block {  # initializer
+        %i:ptr<function, i32, read_write> = var, 0i
+        next_iteration %b4
+      }
+      %b4 = block {  # body
+        %4:i32 = load %i
+        %5:i32 = load %b
+        %6:bool = lt %4, %5
+        if %6 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        loop [i: %b8, b: %b9, c: %b10] {  # loop_2
+          %b8 = block {  # initializer
+            %j:ptr<function, i32, read_write> = var, -1i
+            next_iteration %b9
+          }
+          %b9 = block {  # body
+            %8:i32 = load %j
+            %9:bool = eq %8, 1i
+            if %9 [t: %b11, f: %b12] {  # if_2
+              %b11 = block {  # true
+                exit_if  # if_2
+              }
+              %b12 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            ret false
+          }
+          %b10 = block {  # continuing
+            %10:i32 = load %j
+            %11:i32 = add %10, 1i
+            store %j, %11
+            next_iteration %b9
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %12:i32 = load %i
+        %13:i32 = add %12, 1i
+        store %i, %13
+        next_iteration %b4
+      }
+    }
+    ret false
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b13 {
+  %b13 = block {
+    %15:bool = call %func_3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1641.wgsl.expected.ir.msl b/test/tint/bug/tint/1641.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/bug/tint/1641.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/bug/tint/1653.wgsl.expected.ir.msl b/test/tint/bug/tint/1653.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/bug/tint/1653.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/bug/tint/1666.wgsl.expected.ir.msl b/test/tint/bug/tint/1666.wgsl.expected.ir.msl
new file mode 100644
index 0000000..27cbf95
--- /dev/null
+++ b/test/tint/bug/tint/1666.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %rarr:ptr<storage, array<f32>, read> = var @binding_point(0, 0)
+}
+
+%vector = func():void -> %b2 {
+  %b2 = block {
+    %idx:i32 = let 3i
+    %x:i32 = access vec2<i32>(1i, 2i), %idx
+    ret
+  }
+}
+%tint_symbol = func():void -> %b3 {
+  %b3 = block {
+    %idx_1:i32 = let 4i  # %idx_1: 'idx'
+    %x_1:vec2<f32> = access mat2x2<f32>(vec2<f32>(1.0f, 2.0f), vec2<f32>(3.0f, 4.0f)), %idx_1  # %x_1: 'x'
+    ret
+  }
+}
+%fixed_size_array = func():void -> %b4 {
+  %b4 = block {
+    %arr:array<i32, 2> = let array<i32, 2>(1i, 2i)
+    %idx_2:i32 = let 3i  # %idx_2: 'idx'
+    %x_2:i32 = access %arr, %idx_2  # %x_2: 'x'
+    ret
+  }
+}
+%runtime_size_array = func():void -> %b5 {
+  %b5 = block {
+    %idx_3:i32 = let -1i  # %idx_3: 'idx'
+    %14:ptr<storage, f32, read> = access %rarr, %idx_3
+    %x_3:f32 = load %14  # %x_3: 'x'
+    ret
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %17:void = call %vector
+    %18:void = call %tint_symbol
+    %19:void = call %fixed_size_array
+    %20:void = call %runtime_size_array
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1670.spvasm.expected.ir.msl b/test/tint/bug/tint/1670.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/bug/tint/1670.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/bug/tint/1677.wgsl.expected.ir.msl b/test/tint/bug/tint/1677.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5b31a9a
--- /dev/null
+++ b/test/tint/bug/tint/1677.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Input = struct @align(16) {
+  position:vec3<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %input:ptr<storage, Input, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%id:vec3<u32> [@global_invocation_id]):void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, vec3<i32>, read> = access %input, 0u
+    %5:vec3<i32> = load %4
+    %pos:vec3<i32> = sub %5, vec3<i32>(0i)
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1703.wgsl.expected.ir.msl b/test/tint/bug/tint/1703.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6b7f0e1
--- /dev/null
+++ b/test/tint/bug/tint/1703.wgsl.expected.ir.msl
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %my_global:ptr<private, vec4<f32>, read_write> = var
+  %my_uniform:ptr<uniform, f32, read> = var @binding_point(0, 0)
+  %my_texture:ptr<handle, texture_2d<f32>, read> = var @binding_point(0, 1)
+  %my_sampler:ptr<handle, sampler, read> = var @binding_point(0, 2)
+}
+
+%foo_member_initialize = func():void -> %b2 {
+  %b2 = block {
+    %vb2:ptr<function, vec2<bool>, read_write> = var
+    %7:f32 = load_vector_element %my_global, 2u
+    %8:bool = neq %7, 0.0f
+    store_vector_element %vb2, 0u, %8
+    %9:f32 = load %my_uniform
+    %10:bool = eq %9, -1.0f
+    store_vector_element %vb2, 0u, %10
+    %11:f32 = load %my_uniform
+    %12:bool = eq %11, -1.0f
+    %13:vec2<bool> = construct %12, false
+    store %vb2, %13
+    %14:bool = load_vector_element %vb2, 0u
+    if %14 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %15:texture_2d<f32> = load %my_texture
+        %16:sampler = load %my_sampler
+        %r:vec4<f32> = textureSampleBias %15, %16, vec2<f32>(0.0f), 0.0f
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%foo_default_initialize = func():void -> %b4 {
+  %b4 = block {
+    %vb2_1:ptr<function, vec2<bool>, read_write> = var  # %vb2_1: 'vb2'
+    %20:f32 = load_vector_element %my_global, 2u
+    %21:bool = neq %20, 0.0f
+    store_vector_element %vb2_1, 0u, %21
+    %22:f32 = load %my_uniform
+    %23:bool = eq %22, -1.0f
+    store_vector_element %vb2_1, 0u, %23
+    store %vb2_1, vec2<bool>(false)
+    %24:bool = load_vector_element %vb2_1, 0u
+    if %24 [t: %b5] {  # if_2
+      %b5 = block {  # true
+        %25:texture_2d<f32> = load %my_texture
+        %26:sampler = load %my_sampler
+        %r_1:vec4<f32> = textureSampleBias %25, %26, vec2<f32>(0.0f), 0.0f  # %r_1: 'r'
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1725.wgsl.expected.ir.msl b/test/tint/bug/tint/1725.wgsl.expected.ir.msl
new file mode 100644
index 0000000..db84ee6
--- /dev/null
+++ b/test/tint/bug/tint/1725.wgsl.expected.ir.msl
@@ -0,0 +1,24 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %tint_symbol:ptr<storage, array<u32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol_1 = @compute @workgroup_size(1, 1, 1) func(%tint_symbol_2:u32 [@local_invocation_index]):void -> %b2 {
+  %b2 = block {
+    %tint_symbol_3:i32 = let 0i
+    %tint_symbol_4:i32 = let 0i
+    %tint_symbol_5:i32 = let 0i
+    %7:ptr<storage, u32, read> = access %tint_symbol, %tint_symbol_2
+    %tint_symbol_6:u32 = load %7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1735.wgsl.expected.ir.msl b/test/tint/bug/tint/1735.wgsl.expected.ir.msl
new file mode 100644
index 0000000..095be25
--- /dev/null
+++ b/test/tint/bug/tint/1735.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  f:f32 @offset(0)
+}
+
+%b1 = block {  # root
+  %in:ptr<storage, S, read> = var @binding_point(0, 0)
+  %out:ptr<storage, S, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:S = load %in
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1737.wgsl.expected.ir.msl b/test/tint/bug/tint/1737.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/bug/tint/1737.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/bug/tint/1739.wgsl.expected.ir.msl b/test/tint/bug/tint/1739.wgsl.expected.ir.msl
new file mode 100644
index 0000000..02a26bb
--- /dev/null
+++ b/test/tint/bug/tint/1739.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:626 internal compiler error: %b1 = block {  # root
+  %t:ptr<handle, texture_external, read> = var @binding_point(0, 0)
+  %outImage:ptr<handle, texture_storage_2d<rgba8unorm, write>, read> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:texture_external = load %t
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(10i)
+    %red:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:texture_storage_2d<rgba8unorm, write> = load %outImage
+    %8:vec4<f32> = load %red
+    %9:void = textureStore %7, vec2<i32>(0i), %8
+    %10:texture_external = load %t
+    %11:vec4<f32> = textureLoad %10, vec2<i32>(70i, 118i)
+    %green:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:texture_storage_2d<rgba8unorm, write> = load %outImage
+    %14:vec4<f32> = load %green
+    %15:void = textureStore %13, vec2<i32>(1i, 0i), %14
+    ret
+  }
+}
+
+Multiplanar external texture transform was not run.
+********************************************************************
+*  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/tint/bug/tint/1764.wgsl.expected.ir.msl b/test/tint/bug/tint/1764.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/bug/tint/1764.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/bug/tint/1776.spvasm.expected.ir.msl b/test/tint/bug/tint/1776.spvasm.expected.ir.msl
new file mode 100644
index 0000000..088571d
--- /dev/null
+++ b/test/tint/bug/tint/1776.spvasm.expected.ir.msl
@@ -0,0 +1,36 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:vec4<f32> @offset(0)
+  b:i32 @offset(16)
+}
+
+sb_block = struct @align(16) {
+  inner:array<S> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb:ptr<storage, sb_block, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, S, read_write> = access %sb, 0u, 1i
+    %x_18:S = load %3
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %6:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1776.wgsl.expected.ir.msl b/test/tint/bug/tint/1776.wgsl.expected.ir.msl
new file mode 100644
index 0000000..67ceebb
--- /dev/null
+++ b/test/tint/bug/tint/1776.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:vec4<f32> @offset(0)
+  b:i32 @offset(16)
+}
+
+%b1 = block {  # root
+  %sb:ptr<storage, array<S>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, S, read> = access %sb, 1i
+    %x:S = load %3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1820.wgsl.expected.ir.msl b/test/tint/bug/tint/1820.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/bug/tint/1820.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/bug/tint/1860.wgsl.expected.ir.msl b/test/tint/bug/tint/1860.wgsl.expected.ir.msl
new file mode 100644
index 0000000..68538df
--- /dev/null
+++ b/test/tint/bug/tint/1860.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: DeclaredAfterUsage = struct @align(4) {
+  f:f32 @offset(0)
+}
+
+%b1 = block {  # root
+  %declared_after_usage:ptr<uniform, DeclaredAfterUsage, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @vertex func():vec4<f32> [@position] -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, f32, read> = access %declared_after_usage, 0u
+    %4:f32 = load %3
+    %5:vec4<f32> = construct %4
+    ret %5
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1875.wgsl.expected.ir.msl b/test/tint/bug/tint/1875.wgsl.expected.ir.msl
new file mode 100644
index 0000000..de67af0
--- /dev/null
+++ b/test/tint/bug/tint/1875.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Outputs = struct @align(4) {
+  data:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %count:ptr<private, u32, read_write> = var, 0u
+  %outputs:ptr<storage, Outputs, read_write> = var @binding_point(0, 1)
+}
+
+%push_output = func(%value:u32):void -> %b2 {
+  %b2 = block {
+    %5:u32 = load %count
+    %6:ptr<storage, u32, read_write> = access %outputs, 0u, %5
+    store %6, %value
+    %7:u32 = load %count
+    %8:u32 = add %7, 1u
+    store %count, %8
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %a:ptr<function, u32, read_write> = var, 0u
+    %b:ptr<function, u32, read_write> = var, 10u
+    %c:ptr<function, u32, read_write> = var, 4294967294u
+    %13:u32 = load %a
+    %14:u32 = add %13, 1u
+    store %a, %14
+    %15:u32 = load %b
+    %16:u32 = add %15, 1u
+    store %b, %16
+    %17:u32 = load %c
+    %18:u32 = add %17, 1u
+    store %c, %18
+    %19:u32 = load %a
+    %20:void = call %push_output, %19
+    %21:u32 = load %b
+    %22:void = call %push_output, %21
+    %23:u32 = load %c
+    %24:void = call %push_output, %23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1926.wgsl.expected.ir.msl b/test/tint/bug/tint/1926.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1ac3e37
--- /dev/null
+++ b/test/tint/bug/tint/1926.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %sh_atomic_failed:ptr<workgroup, u32, read_write> = var
+  %output:ptr<storage, u32, read_write> = var @binding_point(0, 4)
+}
+
+%tint_symbol = @compute @workgroup_size(256, 1, 1) func(%global_id:vec3<u32> [@global_invocation_id], %local_id:vec3<u32> [@local_invocation_id]):void -> %b2 {
+  %b2 = block {
+    %6:void = workgroupBarrier
+    %7:u32 = load %sh_atomic_failed
+    %8:void = workgroupBarrier
+    %9:u32 = access %local_id, 0u
+    %10:bool = eq %9, 0u
+    if %10 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        store %output, %7
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1932.spvasm.expected.ir.msl b/test/tint/bug/tint/1932.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/bug/tint/1932.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/bug/tint/1934.wgsl.expected.ir.msl b/test/tint/bug/tint/1934.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/bug/tint/1934.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/bug/tint/1961.wgsl.expected.ir.msl b/test/tint/bug/tint/1961.wgsl.expected.ir.msl
new file mode 100644
index 0000000..93ca517
--- /dev/null
+++ b/test/tint/bug/tint/1961.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:268 internal compiler error: Switch() matched no cases. Type: tint::core::ir::If
+********************************************************************
+*  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/tint/bug/tint/1963_a.wgsl.expected.ir.msl b/test/tint/bug/tint/1963_a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/bug/tint/1963_a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/bug/tint/1963_b.wgsl.expected.ir.msl b/test/tint/bug/tint/1963_b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b271fbb
--- /dev/null
+++ b/test/tint/bug/tint/1963_b.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: __atomic_compare_exchange_result_i32 = struct @align(4) {
+  old_value:i32 @offset(0)
+  exchanged:bool @offset(4)
+}
+
+%b1 = block {  # root
+  %a:ptr<storage, atomic<i32>, read_write> = var @binding_point(0, 0)
+}
+
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:__atomic_compare_exchange_result_i32 = atomicCompareExchangeWeak %a, 1i, 1i
+    %v:i32 = access %3, 0u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/1976.wgsl.expected.ir.msl b/test/tint/bug/tint/1976.wgsl.expected.ir.msl
new file mode 100644
index 0000000..165b340
--- /dev/null
+++ b/test/tint/bug/tint/1976.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Results = struct @align(4) {
+  colorSamples:array<f32, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %texture0:ptr<handle, texture_multisampled_2d<f32>, read> = var @binding_point(0, 0)
+  %results:ptr<storage, Results, read_write> = var @binding_point(0, 2)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, f32, read_write> = access %results, 0u, 0i
+    %5:texture_multisampled_2d<f32> = load %texture0
+    %6:vec4<f32> = textureLoad %5, vec2<i32>(0i), 0i
+    %7:f32 = access %6, 0u
+    store %4, %7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/2010.spvasm.expected.ir.msl b/test/tint/bug/tint/2010.spvasm.expected.ir.msl
new file mode 100644
index 0000000..8cd2d6b
--- /dev/null
+++ b/test/tint/bug/tint/2010.spvasm.expected.ir.msl
@@ -0,0 +1,218 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(8) {
+  field0:vec2<f32> @offset(0)
+  field1:u32 @offset(8)
+}
+
+S_1 = struct @align(4) {
+  field0:u32 @offset(0)
+}
+
+S_2 = struct @align(4) {
+  field0:S_1 @offset(0)
+}
+
+S_3 = struct @align(16) {
+  field0:array<vec4<f32>> @offset(0)
+}
+
+S_4 = struct @align(16) {
+  field0:array<vec4<f32>> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_28:ptr<workgroup, array<S, 4096>, read_write> = var
+  %x_34:ptr<workgroup, atomic<u32>, read_write> = var
+  %x_35:ptr<workgroup, atomic<u32>, read_write> = var
+  %x_36:ptr<workgroup, atomic<u32>, read_write> = var
+  %x_37:ptr<workgroup, atomic<u32>, read_write> = var
+  %x_3:ptr<private, vec3<u32>, read_write> = var
+  %x_6:ptr<uniform, S_2, read> = var @binding_point(0, 1)
+  %x_9:ptr<storage, S_3, read> = var @binding_point(0, 2)
+  %x_12:ptr<storage, S_4, read_write> = var @binding_point(0, 3)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_54:ptr<function, u32, read_write> = var
+    %x_58:ptr<function, u32, read_write> = var
+    %x_85:ptr<function, vec4<f32>, read_write> = var
+    %x_88:ptr<function, u32, read_write> = var
+    %x_52:u32 = load_vector_element %x_3, 0u
+    store %x_54, 0u
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_55:ptr<function, u32, read_write> = var
+        %17:ptr<uniform, u32, read> = access %x_6, 0u, 0u
+        %18:u32 = load %17
+        store %x_58, %18
+        %19:u32 = load %x_54
+        %20:u32 = load %x_58
+        %21:bool = lt %19, %20
+        if %21 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %22:u32 = load %x_54
+        %x_62:u32 = add %22, %x_52
+        %24:u32 = load %x_58
+        %25:bool = gte %x_62, %24
+        if %25 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %26:ptr<storage, vec4<f32>, read> = access %x_9, 0u, %x_62
+            %x_67:vec4<f32> = load %26
+            %28:ptr<workgroup, S, read_write> = access %x_28, %x_62
+            %29:vec2<f32> = swizzle %x_67, xy
+            %30:vec2<f32> = swizzle %x_67, zw
+            %31:vec2<f32> = add %29, %30
+            %32:vec2<f32> = mul %31, 0.5f
+            %33:S = construct %32, %x_62
+            store %28, %33
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %34:u32 = load %x_54
+        %35:u32 = add %34, 32u
+        store %x_55, %35
+        %36:u32 = load %x_55
+        store %x_54, %36
+        next_iteration %b3
+      }
+    }
+    %37:void = workgroupBarrier
+    %38:u32 = load %x_58
+    %x_74:i32 = bitcast %38
+    %40:ptr<workgroup, vec2<f32>, read_write> = access %x_28, 0i, 0u
+    %x_76:vec2<f32> = load %40
+    %42:bool = eq %x_52, 0u
+    if %42 [t: %b8] {  # if_3
+      %b8 = block {  # true
+        %x_80:vec2<u32> = bitcast %x_76
+        %x_81:u32 = access %x_80, 0u
+        %45:void = atomicStore %x_34, %x_81
+        %x_82:u32 = access %x_80, 1u
+        %47:void = atomicStore %x_35, %x_82
+        %48:void = atomicStore %x_36, %x_81
+        %49:void = atomicStore %x_37, %x_82
+        exit_if  # if_3
+      }
+    }
+    %50:vec4<f32> = swizzle %x_76, xyxy
+    store %x_85, %50
+    store %x_88, 1u
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %x_111:ptr<function, vec4<f32>, read_write> = var
+        %x_86:ptr<function, vec4<f32>, read_write> = var
+        %x_89:ptr<function, u32, read_write> = var
+        %x_90:u32 = bitcast %x_74
+        %55:u32 = load %x_88
+        %56:bool = lt %55, %x_90
+        if %56 [t: %b11, f: %b12] {  # if_4
+          %b11 = block {  # true
+            exit_if  # if_4
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %57:u32 = load %x_88
+        %x_94:u32 = add %57, %x_52
+        %59:vec4<f32> = load %x_85
+        store %x_86, %59
+        %60:bool = gte %x_94, %x_90
+        if %60 [t: %b13] {  # if_5
+          %b13 = block {  # true
+            %61:ptr<workgroup, vec2<f32>, read_write> = access %x_28, %x_94, 0u
+            %x_99:vec2<f32> = load %61
+            %63:vec4<f32> = load %x_85
+            %64:vec2<f32> = swizzle %63, xy
+            %x_101:vec2<f32> = min %64, %x_99
+            %66:vec4<f32> = load %x_85
+            %x_103_1:ptr<function, vec4<f32>, read_write> = var, %66
+            %68:f32 = access %x_101, 0u
+            store_vector_element %x_103_1, 0u, %68
+            %x_103:vec4<f32> = load %x_103_1
+            %x_105_1:ptr<function, vec4<f32>, read_write> = var, %x_103
+            %71:f32 = access %x_101, 1u
+            store_vector_element %x_105_1, 1u, %71
+            %x_105:vec4<f32> = load %x_105_1
+            %73:vec4<f32> = load %x_105_1
+            %74:vec2<f32> = swizzle %73, zw
+            %x_107:vec2<f32> = max %74, %x_99
+            %x_109_1:ptr<function, vec4<f32>, read_write> = var, %x_105
+            %77:f32 = access %x_107, 0u
+            store_vector_element %x_109_1, 2u, %77
+            %78:vec4<f32> = load %x_109_1
+            store %x_111, %78
+            %79:f32 = access %x_107, 1u
+            store_vector_element %x_111, 3u, %79
+            %80:vec4<f32> = load %x_111
+            store %x_86, %80
+            exit_if  # if_5
+          }
+        }
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        %81:u32 = load %x_88
+        %82:u32 = add %81, 32u
+        store %x_89, %82
+        %83:vec4<f32> = load %x_86
+        store %x_85, %83
+        %84:u32 = load %x_89
+        store %x_88, %84
+        next_iteration %b9
+      }
+    }
+    %85:void = workgroupBarrier
+    %86:f32 = load_vector_element %x_85, 0u
+    %87:u32 = bitcast %86
+    %x_114:u32 = atomicMin %x_34, %87
+    %89:f32 = load_vector_element %x_85, 1u
+    %90:u32 = bitcast %89
+    %x_117:u32 = atomicMin %x_35, %90
+    %92:f32 = load_vector_element %x_85, 2u
+    %93:u32 = bitcast %92
+    %x_120:u32 = atomicMax %x_36, %93
+    %95:f32 = load_vector_element %x_85, 3u
+    %96:u32 = bitcast %95
+    %x_123:u32 = atomicMax %x_37, %96
+    %98:void = workgroupBarrier
+    %99:ptr<storage, vec4<f32>, read_write> = access %x_12, 0u, 0i
+    %100:u32 = atomicLoad %x_34
+    %101:f32 = bitcast %100
+    %102:u32 = atomicLoad %x_35
+    %103:f32 = bitcast %102
+    %104:u32 = atomicLoad %x_36
+    %105:f32 = bitcast %104
+    %106:u32 = atomicLoad %x_37
+    %107:f32 = bitcast %106
+    %108:vec4<f32> = construct %101, %103, %105, %107
+    store %99, %108
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(32, 1, 1) func(%x_3_param:vec3<u32> [@local_invocation_id]):void -> %b14 {
+  %b14 = block {
+    store %x_3, %x_3_param
+    %111:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/2029.wgsl.expected.ir.msl b/test/tint/bug/tint/2029.wgsl.expected.ir.msl
new file mode 100644
index 0000000..64aab0d
--- /dev/null
+++ b/test/tint/bug/tint/2029.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %s:ptr<storage, vec3<i32>, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    store %s, vec3<i32>(1i)
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/2038.wgsl.expected.ir.msl b/test/tint/bug/tint/2038.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47702b2
--- /dev/null
+++ b/test/tint/bug/tint/2038.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %output:ptr<storage, array<u32, 2>, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    if false [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %3:ptr<storage, u32, read_write> = access %output, 0i
+        store %3, 1u
+        exit_if  # if_1
+      }
+    }
+    if false [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %4:ptr<storage, u32, read_write> = access %output, 1i
+        store %4, 1u
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/2054.wgsl.expected.ir.msl b/test/tint/bug/tint/2054.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0df05dd
--- /dev/null
+++ b/test/tint/bug/tint/2054.wgsl.expected.ir.msl
@@ -0,0 +1,42 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, f32, read_write> = var @binding_point(0, 0)
+}
+
+%bar = func(%p:ptr<function, f32, read_write>):void -> %b2 {
+  %b2 = block {
+    %a:f32 = let 1.0f
+    %b:f32 = let 2.0f
+    %6:bool = gte %a, 0.0f
+    %cond:bool = if %6 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %8:bool = gte %b, 0.0f
+        exit_if %8  # if_1
+      }
+      %b4 = block {  # false
+        exit_if false  # if_1
+      }
+    }
+    %9:f32 = select %a, %b, %cond
+    store %p, %9
+    ret
+  }
+}
+%foo = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %param:ptr<function, f32, read_write> = var
+    %12:void = call %bar, %param
+    %13:f32 = load %param
+    store %out, %13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/2059.wgsl.expected.ir.msl b/test/tint/bug/tint/2059.wgsl.expected.ir.msl
new file mode 100644
index 0000000..92a78a7
--- /dev/null
+++ b/test/tint/bug/tint/2059.wgsl.expected.ir.msl
@@ -0,0 +1,114 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  m:mat3x3<f32> @offset(0)
+}
+
+S2 = struct @align(16) {
+  m:array<mat3x3<f32>, 1> @offset(0)
+}
+
+S3 = struct @align(16) {
+  s:S @offset(0)
+}
+
+S4 = struct @align(16) {
+  s:array<S, 1> @offset(0)
+}
+
+%b1 = block {  # root
+  %buffer0:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(0, 0)
+  %buffer1:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %buffer2:ptr<storage, S2, read_write> = var @binding_point(0, 2)
+  %buffer3:ptr<storage, S3, read_write> = var @binding_point(0, 3)
+  %buffer4:ptr<storage, S4, read_write> = var @binding_point(0, 4)
+  %buffer5:ptr<storage, array<mat3x3<f32>, 1>, read_write> = var @binding_point(0, 5)
+  %buffer6:ptr<storage, array<S, 1>, read_write> = var @binding_point(0, 6)
+  %buffer7:ptr<storage, array<S2, 1>, read_write> = var @binding_point(0, 7)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat3x3<f32>, read_write> = var
+    loop [i: %b3, b: %b4, c: %b5] {  # loop_1
+      %b3 = block {  # initializer
+        %c:ptr<function, u32, read_write> = var, 0u
+        next_iteration %b4
+      }
+      %b4 = block {  # body
+        %12:u32 = load %c
+        %13:bool = lt %12, 3u
+        if %13 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %14:u32 = load %c
+        %15:ptr<function, vec3<f32>, read_write> = access %m, %14
+        %16:u32 = load %c
+        %17:u32 = mul %16, 3u
+        %18:u32 = add %17, 1u
+        %19:f32 = convert %18
+        %20:u32 = load %c
+        %21:u32 = mul %20, 3u
+        %22:u32 = add %21, 2u
+        %23:f32 = convert %22
+        %24:u32 = load %c
+        %25:u32 = mul %24, 3u
+        %26:u32 = add %25, 3u
+        %27:f32 = convert %26
+        %28:vec3<f32> = construct %19, %23, %27
+        store %15, %28
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %29:u32 = load %c
+        %30:u32 = add %29, 1u
+        store %c, %30
+        next_iteration %b4
+      }
+    }
+    %a:mat3x3<f32> = load %m
+    store %buffer0, %a
+    %32:mat3x3<f32> = load %m
+    %a_1:S = construct %32  # %a_1: 'a'
+    store %buffer1, %a_1
+    %34:mat3x3<f32> = load %m
+    %35:array<mat3x3<f32>, 1> = construct %34
+    %a_2:S2 = construct %35  # %a_2: 'a'
+    store %buffer2, %a_2
+    %37:mat3x3<f32> = load %m
+    %38:S = construct %37
+    %a_3:S3 = construct %38  # %a_3: 'a'
+    store %buffer3, %a_3
+    %40:mat3x3<f32> = load %m
+    %41:S = construct %40
+    %42:array<S, 1> = construct %41
+    %a_4:S4 = construct %42  # %a_4: 'a'
+    store %buffer4, %a_4
+    %44:mat3x3<f32> = load %m
+    %a_5:array<mat3x3<f32>, 1> = construct %44  # %a_5: 'a'
+    store %buffer5, %a_5
+    %46:mat3x3<f32> = load %m
+    %47:S = construct %46
+    %a_6:array<S, 1> = construct %47  # %a_6: 'a'
+    store %buffer6, %a_6
+    %49:mat3x3<f32> = load %m
+    %50:array<mat3x3<f32>, 1> = construct %49
+    %51:S2 = construct %50
+    %a_7:array<S2, 1> = construct %51  # %a_7: 'a'
+    store %buffer7, %a_7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/2063.wgsl.expected.ir.msl b/test/tint/bug/tint/2063.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/bug/tint/2063.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/bug/tint/2076.wgsl.expected.ir.msl b/test/tint/bug/tint/2076.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a24ece3
--- /dev/null
+++ b/test/tint/bug/tint/2076.wgsl.expected.ir.msl
@@ -0,0 +1,16 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:626 internal compiler error: %b1 = block {  # root
+  %Sampler:ptr<handle, sampler, read> = var @binding_point(0, 1)
+  %randomTexture:ptr<handle, texture_external, read> = var @binding_point(0, 1)
+  %depthTexture:ptr<handle, texture_2d<f32>, read> = var @binding_point(0, 2)
+}
+
+
+Multiplanar external texture transform was not run.
+********************************************************************
+*  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/tint/bug/tint/2100.wgsl.expected.ir.msl b/test/tint/bug/tint/2100.wgsl.expected.ir.msl
new file mode 100644
index 0000000..64cf7d9
--- /dev/null
+++ b/test/tint/bug/tint/2100.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  matrix_view:mat4x4<f32> @offset(0)
+  matrix_normal:mat3x3<f32> @offset(64)
+}
+
+%b1 = block {  # root
+  %tint_symbol:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol_1 = @vertex func():vec4<f32> [@position] -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, vec4<f32>, read> = access %tint_symbol, 0u, 0i
+    %x:f32 = load_vector_element %3, 2u
+    %5:vec4<f32> = construct %x, 0.0f, 0.0f, 1.0f
+    ret %5
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/219.spvasm.expected.ir.msl b/test/tint/bug/tint/219.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/bug/tint/219.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/bug/tint/221.wgsl.expected.ir.msl b/test/tint/bug/tint/221.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f27e367
--- /dev/null
+++ b/test/tint/bug/tint/221.wgsl.expected.ir.msl
@@ -0,0 +1,59 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Buf = struct @align(4) {
+  count:u32 @offset(0)
+  data:array<u32, 50> @offset(4)
+}
+
+%b1 = block {  # root
+  %b:ptr<storage, Buf, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, u32, read_write> = var, 0u
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %4:u32 = load %i
+        %5:ptr<storage, u32, read_write> = access %b, 0u
+        %6:u32 = load %5
+        %7:bool = gte %4, %6
+        if %7 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %8:u32 = load %i
+        %p:ptr<storage, u32, read_write> = access %b, 1u, %8
+        %10:u32 = load %i
+        %11:u32 = mod %10, 2u
+        %12:bool = eq %11, 0u
+        if %12 [t: %b6] {  # if_2
+          %b6 = block {  # true
+            continue %b4
+          }
+        }
+        store %p, 0u
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %13:u32 = load %p
+        %14:u32 = mul %13, 2u
+        store %p, %14
+        %15:u32 = load %i
+        %16:u32 = add %15, 1u
+        store %i, %16
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/292.wgsl.expected.ir.msl b/test/tint/bug/tint/292.wgsl.expected.ir.msl
new file mode 100644
index 0000000..931741e
--- /dev/null
+++ b/test/tint/bug/tint/292.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Unary
+********************************************************************
+*  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/tint/bug/tint/294.wgsl.expected.ir.msl b/test/tint/bug/tint/294.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f10fe19
--- /dev/null
+++ b/test/tint/bug/tint/294.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Light = struct @align(16) {
+  position:vec3<f32> @offset(0)
+  colour:vec3<f32> @offset(16)
+}
+
+Lights = struct @align(16) {
+  light:array<Light> @offset(0)
+}
+
+%b1 = block {  # root
+  %lights:ptr<storage, Lights, read> = var @binding_point(0, 1)
+}
+
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/369.wgsl.expected.ir.msl b/test/tint/bug/tint/369.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7bc66ac
--- /dev/null
+++ b/test/tint/bug/tint/369.wgsl.expected.ir.msl
@@ -0,0 +1,19 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(8) {
+  m:mat2x2<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %SSBO:ptr<storage, S, read> = var @binding_point(0, 0)
+  %UBO:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/403.wgsl.expected.ir.msl b/test/tint/bug/tint/403.wgsl.expected.ir.msl
new file mode 100644
index 0000000..21df4f2
--- /dev/null
+++ b/test/tint/bug/tint/403.wgsl.expected.ir.msl
@@ -0,0 +1,48 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: vertexUniformBuffer1 = struct @align(8) {
+  transform1:mat2x2<f32> @offset(0)
+}
+
+vertexUniformBuffer2 = struct @align(8) {
+  transform2:mat2x2<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_20:ptr<uniform, vertexUniformBuffer1, read> = var @binding_point(0, 0)
+  %x_26:ptr<uniform, vertexUniformBuffer2, read> = var @binding_point(1, 0)
+}
+
+%tint_symbol = @vertex func(%gl_VertexIndex:u32 [@vertex_index]):vec4<f32> [@position] -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec2<f32>, 3>, read_write> = var
+    %6:ptr<uniform, mat2x2<f32>, read> = access %x_20, 0u
+    %x_23:mat2x2<f32> = load %6
+    %8:ptr<uniform, mat2x2<f32>, read> = access %x_26, 0u
+    %x_28:mat2x2<f32> = load %8
+    %x_46:u32 = let %gl_VertexIndex
+    store %indexable, array<vec2<f32>, 3>(vec2<f32>(-1.0f, 1.0f), vec2<f32>(1.0f), vec2<f32>(-1.0f))
+    %11:ptr<function, vec2<f32>, read_write> = access %indexable, %x_46
+    %x_51:vec2<f32> = load %11
+    %13:vec2<f32> = access %x_23, 0u
+    %14:vec2<f32> = access %x_28, 0u
+    %15:vec2<f32> = add %13, %14
+    %16:vec2<f32> = access %x_23, 1u
+    %17:vec2<f32> = access %x_28, 1u
+    %18:vec2<f32> = add %16, %17
+    %19:mat2x2<f32> = construct %15, %18
+    %x_52:vec2<f32> = mul %19, %x_51
+    %21:f32 = access %x_52, 0u
+    %22:f32 = access %x_52, 1u
+    %23:vec4<f32> = construct %21, %22, 0.0f, 1.0f
+    ret %23
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/413.spvasm.expected.ir.msl b/test/tint/bug/tint/413.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/bug/tint/413.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/bug/tint/453.wgsl.expected.ir.msl b/test/tint/bug/tint/453.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/bug/tint/453.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/bug/tint/492.wgsl.expected.ir.msl b/test/tint/bug/tint/492.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e322d13
--- /dev/null
+++ b/test/tint/bug/tint/492.wgsl.expected.ir.msl
@@ -0,0 +1,25 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  a:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %buf:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p:ptr<storage, i32, read_write> = access %buf, 0u
+    store %p, 12i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/534.wgsl.expected.ir.msl b/test/tint/bug/tint/534.wgsl.expected.ir.msl
new file mode 100644
index 0000000..51f94d6
--- /dev/null
+++ b/test/tint/bug/tint/534.wgsl.expected.ir.msl
@@ -0,0 +1,140 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: OutputBuf = struct @align(4) {
+  result:array<u32> @offset(0)
+}
+
+Uniforms = struct @align(4) {
+  dstTextureFlipY:u32 @offset(0)
+  isFloat16:u32 @offset(4)
+  isRGB10A2Unorm:u32 @offset(8)
+  channelCount:u32 @offset(12)
+}
+
+%b1 = block {  # root
+  %src:ptr<handle, texture_2d<f32>, read> = var @binding_point(0, 0)
+  %dst:ptr<handle, texture_2d<f32>, read> = var @binding_point(0, 1)
+  %output:ptr<storage, OutputBuf, read_write> = var @binding_point(0, 2)
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(0, 3)
+}
+
+%ConvertToFp16FloatValue = func(%fp32:f32):u32 -> %b2 {
+  %b2 = block {
+    ret 1u
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%GlobalInvocationID:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    %9:texture_2d<f32> = load %src
+    %10:vec2<u32> = textureDimensions %9
+    %size:ptr<function, vec2<u32>, read_write> = var, %10
+    %12:vec2<u32> = swizzle %GlobalInvocationID, xy
+    %dstTexCoord:ptr<function, vec2<u32>, read_write> = var, %12
+    %14:vec2<u32> = load %dstTexCoord
+    %srcTexCoord:ptr<function, vec2<u32>, read_write> = var, %14
+    %16:ptr<uniform, u32, read> = access %uniforms, 0u
+    %17:u32 = load %16
+    %18:bool = eq %17, 1u
+    if %18 [t: %b4] {  # if_1
+      %b4 = block {  # true
+        %19:u32 = load_vector_element %size, 1u
+        %20:u32 = load_vector_element %dstTexCoord, 1u
+        %21:u32 = sub %19, %20
+        %22:u32 = sub %21, 1u
+        store_vector_element %srcTexCoord, 1u, %22
+        exit_if  # if_1
+      }
+    }
+    %23:texture_2d<f32> = load %src
+    %24:vec2<u32> = load %srcTexCoord
+    %25:vec4<f32> = textureLoad %23, %24, 0i
+    %srcColor:ptr<function, vec4<f32>, read_write> = var, %25
+    %27:texture_2d<f32> = load %dst
+    %28:vec2<u32> = load %dstTexCoord
+    %29:vec4<f32> = textureLoad %27, %28, 0i
+    %dstColor:ptr<function, vec4<f32>, read_write> = var, %29
+    %success:ptr<function, bool, read_write> = var, true
+    %srcColorBits:ptr<function, vec4<u32>, read_write> = var
+    %33:vec4<f32> = load %dstColor
+    %34:vec4<u32> = convert %33
+    %dstColorBits:ptr<function, vec4<u32>, read_write> = var, %34
+    loop [i: %b5, b: %b6, c: %b7] {  # loop_1
+      %b5 = block {  # initializer
+        %i:ptr<function, u32, read_write> = var, 0u
+        next_iteration %b6
+      }
+      %b6 = block {  # body
+        %37:u32 = load %i
+        %38:ptr<uniform, u32, read> = access %uniforms, 3u
+        %39:u32 = load %38
+        %40:bool = lt %37, %39
+        if %40 [t: %b8, f: %b9] {  # if_2
+          %b8 = block {  # true
+            exit_if  # if_2
+          }
+          %b9 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %41:u32 = load %i
+        %42:u32 = load %i
+        %43:f32 = load_vector_element %srcColor, %42
+        %44:u32 = call %ConvertToFp16FloatValue, %43
+        store_vector_element %srcColorBits, %41, %44
+        %45:bool = load %success
+        %46:bool = if %45 [t: %b10, f: %b11] {  # if_3
+          %b10 = block {  # true
+            %47:u32 = load %i
+            %48:u32 = load_vector_element %srcColorBits, %47
+            %49:u32 = load %i
+            %50:u32 = load_vector_element %dstColorBits, %49
+            %51:bool = eq %48, %50
+            exit_if %51  # if_3
+          }
+          %b11 = block {  # false
+            exit_if false  # if_3
+          }
+        }
+        store %success, %46
+        continue %b7
+      }
+      %b7 = block {  # continuing
+        %52:u32 = load %i
+        %53:u32 = add %52, 1u
+        store %i, %53
+        next_iteration %b6
+      }
+    }
+    %54:u32 = access %GlobalInvocationID, 1u
+    %55:u32 = load_vector_element %size, 0u
+    %56:u32 = construct %55
+    %57:u32 = mul %54, %56
+    %58:u32 = access %GlobalInvocationID, 0u
+    %59:u32 = add %57, %58
+    %outputIndex:ptr<function, u32, read_write> = var, %59
+    %61:bool = load %success
+    if %61 [t: %b12, f: %b13] {  # if_4
+      %b12 = block {  # true
+        %62:u32 = load %outputIndex
+        %63:ptr<storage, u32, read_write> = access %output, 0u, %62
+        store %63, 1u
+        exit_if  # if_4
+      }
+      %b13 = block {  # false
+        %64:u32 = load %outputIndex
+        %65:ptr<storage, u32, read_write> = access %output, 0u, %64
+        store %65, 0u
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/744.wgsl.expected.ir.msl b/test/tint/bug/tint/744.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2f4398f
--- /dev/null
+++ b/test/tint/bug/tint/744.wgsl.expected.ir.msl
@@ -0,0 +1,88 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Matrix = struct @align(4) {
+  numbers:array<u32> @offset(0)
+}
+
+Uniforms = struct @align(8) {
+  aShape:vec2<u32> @offset(0)
+  bShape:vec2<u32> @offset(8)
+  outShape:vec2<u32> @offset(16)
+}
+
+%b1 = block {  # root
+  %firstMatrix:ptr<storage, Matrix, read> = var @binding_point(0, 0)
+  %secondMatrix:ptr<storage, Matrix, read> = var @binding_point(0, 1)
+  %resultMatrix:ptr<storage, Matrix, read_write> = var @binding_point(0, 2)
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(0, 3)
+}
+
+%tint_symbol = @compute @workgroup_size(2, 2, 1) func(%global_id:vec3<u32> [@global_invocation_id]):void -> %b2 {
+  %b2 = block {
+    %7:u32 = access %global_id, 1u
+    %8:u32 = access %global_id, 0u
+    %resultCell:vec2<u32> = construct %7, %8
+    %10:ptr<uniform, vec2<u32>, read> = access %uniforms, 0u
+    %dimInner:u32 = load_vector_element %10, 1u
+    %12:ptr<uniform, vec2<u32>, read> = access %uniforms, 2u
+    %dimOutter:u32 = load_vector_element %12, 1u
+    %result:ptr<function, u32, read_write> = var, 0u
+    loop [i: %b3, b: %b4, c: %b5] {  # loop_1
+      %b3 = block {  # initializer
+        %i:ptr<function, u32, read_write> = var, 0u
+        next_iteration %b4
+      }
+      %b4 = block {  # body
+        %16:u32 = load %i
+        %17:bool = lt %16, %dimInner
+        if %17 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %18:u32 = load %i
+        %19:u32 = access %resultCell, 0u
+        %20:u32 = mul %19, %dimInner
+        %a:u32 = add %18, %20
+        %22:u32 = access %resultCell, 1u
+        %23:u32 = load %i
+        %24:u32 = mul %23, %dimOutter
+        %b:u32 = add %22, %24
+        %26:u32 = load %result
+        %27:ptr<storage, u32, read> = access %firstMatrix, 0u, %a
+        %28:u32 = load %27
+        %29:ptr<storage, u32, read> = access %secondMatrix, 0u, %b
+        %30:u32 = load %29
+        %31:u32 = mul %28, %30
+        %32:u32 = add %26, %31
+        store %result, %32
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %33:u32 = load %i
+        %34:u32 = add %33, 1u
+        store %i, %34
+        next_iteration %b4
+      }
+    }
+    %35:u32 = access %resultCell, 1u
+    %36:u32 = access %resultCell, 0u
+    %37:u32 = mul %36, %dimOutter
+    %index:u32 = add %35, %37
+    %39:ptr<storage, u32, read_write> = access %resultMatrix, 0u, %index
+    %40:u32 = load %result
+    store %39, %40
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/749.spvasm.expected.ir.msl b/test/tint/bug/tint/749.spvasm.expected.ir.msl
new file mode 100644
index 0000000..87b3373
--- /dev/null
+++ b/test/tint/bug/tint/749.spvasm.expected.ir.msl
@@ -0,0 +1,1497 @@
+SKIP: FAILED
+
+
+struct QuicksortObject {
+  numbers : array<i32, 10u>,
+}
+
+struct buf0 {
+  /* @offset(0) */
+  resolution : vec2f,
+}
+
+var<private> obj : QuicksortObject;
+
+var<private> gl_FragCoord : vec4f;
+
+@group(0) @binding(0) var<uniform> x_188 : buf0;
+
+var<private> x_GLF_color : vec4f;
+
+const x_199 = vec3f(1.0f, 2.0f, 3.0f);
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_932 = temp;
+  temp = 0i;
+  temp = x_932;
+  let x_523 = x_199.zyz;
+  let x_933 = *(i);
+  *(i) = 0i;
+  *(i) = x_933;
+  let x_28 = *(i);
+  let x_934 = *(j);
+  *(j) = 0i;
+  *(j) = x_934;
+  let x_524 = x_523.yxy;
+  let x_935 = temp;
+  temp = 0i;
+  temp = x_935;
+  let x_30 = &(obj.numbers[x_28]);
+  let x_936 = *(x_30);
+  *(x_30) = 0i;
+  *(x_30) = x_936;
+  let x_31 = *(x_30);
+  let x_937 = temp;
+  temp = 0i;
+  temp = x_937;
+  temp = x_31;
+  let x_938 = *(j);
+  *(j) = 0i;
+  *(j) = x_938;
+  let x_525 = vec3f(x_523.z, x_199.x, x_523.y);
+  let x_939 = *(i);
+  *(i) = 0i;
+  *(i) = x_939;
+  let x_32 = *(i);
+  let x_940 = *(x_30);
+  *(x_30) = 0i;
+  *(x_30) = x_940;
+  let x_33 = *(j);
+  let x_941 = *(i);
+  *(i) = 0i;
+  *(i) = x_941;
+  let x_526 = x_525.xzz;
+  let x_942 = *(x_30);
+  *(x_30) = 0i;
+  *(x_30) = x_942;
+  let x_34 = &(obj.numbers[x_33]);
+  let x_35 = *(x_34);
+  let x_943 = obj;
+  obj = QuicksortObject();
+  obj = x_943;
+  let x_527 = x_526.xx;
+  let x_36 = &(obj.numbers[x_32]);
+  let x_528 = x_524.xzx;
+  *(x_36) = x_35;
+  let x_944 = obj;
+  obj = QuicksortObject();
+  obj = x_944;
+  let x_529 = x_526.yzx;
+  let x_945 = *(i);
+  *(i) = 0i;
+  *(i) = x_945;
+  let x_37 = *(j);
+  let x_946 = temp;
+  temp = 0i;
+  temp = x_946;
+  let x_530 = x_529.zy;
+  let x_947 = *(x_34);
+  *(x_34) = 0i;
+  *(x_34) = x_947;
+  let x_38 = temp;
+  let x_948 = *(j);
+  *(j) = 0i;
+  *(j) = x_948;
+  let x_531 = vec3f(x_527.x, x_526.yx);
+  let x_949 = *(x_36);
+  *(x_36) = 0i;
+  *(x_36) = x_949;
+  let x_950 = obj;
+  obj = QuicksortObject();
+  obj = x_950;
+  let x_532 = x_528.xyx;
+  let x_951 = *(x_34);
+  *(x_34) = 0i;
+  *(x_34) = x_951;
+  obj.numbers[x_37] = x_38;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var param_3 : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param_2 : i32;
+  var param_1 : i32;
+  var param : i32;
+  var pivot : i32;
+  var x_537 : vec2f;
+  var x_538 : vec3f;
+  let x_952 = *(h);
+  *(h) = 0i;
+  *(h) = x_952;
+  let x_41 = *(h);
+  let x_953 = *(l);
+  *(l) = 0i;
+  *(l) = x_953;
+  let x_42 = &(obj.numbers[x_41]);
+  let x_954 = *(x_42);
+  *(x_42) = 0i;
+  *(x_42) = x_954;
+  let x_43 = *(x_42);
+  let x_955 = param_3;
+  param_3 = 0i;
+  param_3 = x_955;
+  let x_534 = x_199.zxz;
+  let x_956 = param_1;
+  param_1 = 0i;
+  param_1 = x_956;
+  pivot = x_43;
+  let x_45 = *(l);
+  let x_957 = *(h);
+  *(h) = 0i;
+  *(h) = x_957;
+  let x_958 = j_1;
+  j_1 = 0i;
+  j_1 = x_958;
+  let x_535 = x_534.yzy;
+  let x_959 = *(l);
+  *(l) = 0i;
+  *(l) = x_959;
+  i_1 = (x_45 - bitcast<i32>(1u));
+  let x_49 = *(l);
+  let x_536 = vec3f(x_534.xz, x_535.x);
+  j_1 = 10i;
+  let x_960 = obj;
+  obj = QuicksortObject();
+  obj = x_960;
+  loop {
+    var x_61 : ptr<private, i32>;
+    var x_539 : vec3f;
+    var x_541 : vec3f;
+    let x_961 = pivot;
+    pivot = 0i;
+    pivot = x_961;
+    let x_962 = param_1;
+    param_1 = 0i;
+    param_1 = x_962;
+    let x_55 = j_1;
+    let x_963 = pivot;
+    pivot = 0i;
+    pivot = x_963;
+    x_537 = x_199.yz;
+    let x_964 = obj;
+    obj = QuicksortObject();
+    obj = x_964;
+    let x_56 = *(h);
+    let x_965 = *(h);
+    *(h) = 0i;
+    *(h) = x_965;
+    let x_966 = param;
+    param = 0i;
+    param = x_966;
+    let x_967 = j_1;
+    j_1 = 0i;
+    j_1 = x_967;
+    x_538 = vec3f(x_534.x, x_537.y, x_534.z);
+    let x_968 = param;
+    param = 0i;
+    param = x_968;
+    if ((x_55 <= (x_56 - bitcast<i32>(1u)))) {
+    } else {
+      break;
+    }
+    let x_60 = j_1;
+    let x_969 = *(x_42);
+    *(x_42) = 0i;
+    *(x_42) = x_969;
+    x_61 = obj.numbers[x_60];
+    let x_970 = *(h);
+    *(h) = 0i;
+    *(h) = x_970;
+    x_539 = vec3f(x_537.x, x_535.z, x_537.x);
+    let x_971 = param_1;
+    param_1 = 0i;
+    param_1 = x_971;
+    let x_62 = x_61;
+    let x_972 = obj;
+    obj = QuicksortObject();
+    obj = x_972;
+    let x_63 = pivot;
+    let x_540 = vec2f(x_199.y, x_534.z);
+    let x_973 = i_1;
+    i_1 = 0i;
+    i_1 = x_973;
+    let x_974 = *(l);
+    *(l) = 0i;
+    *(l) = x_974;
+    x_541 = x_534.yxy;
+    let x_975 = pivot;
+    pivot = 0i;
+    pivot = x_975;
+    if ((x_62 <= x_63)) {
+      let x_542 = x_541.zxx;
+      let x_976 = param_3;
+      param_3 = 0i;
+      param_3 = x_976;
+      let x_67 = i_1;
+      let x_977 = pivot;
+      pivot = 0i;
+      pivot = x_977;
+      let x_543 = vec2f(x_539.x, x_541.y);
+      let x_978 = i_1;
+      i_1 = 0i;
+      i_1 = x_978;
+      let x_979 = param;
+      param = 0i;
+      param = x_979;
+      i_1 = (x_67 + bitcast<i32>(1u));
+      let x_980 = *(l);
+      *(l) = 0i;
+      *(l) = x_980;
+      let x_544 = vec3f(x_199.zy, x_540.x);
+      let x_70 = i_1;
+      let x_545 = vec2f(x_537.y, x_538.x);
+      let x_981 = param;
+      param = 0i;
+      param = x_981;
+      param = x_70;
+      let x_982 = param;
+      param = 0i;
+      param = x_982;
+      let x_546 = x_545.xx;
+      let x_983 = i_1;
+      i_1 = 0i;
+      i_1 = x_983;
+      let x_72 = j_1;
+      param_1 = x_72;
+      let x_984 = param_3;
+      param_3 = 0i;
+      param_3 = x_984;
+      swap_i1_i1_(&(param), &(param_1));
+      let x_985 = param_1;
+      param_1 = 0i;
+      param_1 = x_985;
+    }
+    let x_986 = obj;
+    obj = QuicksortObject();
+    obj = x_986;
+
+    continuing {
+      let x_987 = *(h);
+      *(h) = 0i;
+      *(h) = x_987;
+      let x_74 = j_1;
+      let x_988 = *(h);
+      *(h) = 0i;
+      *(h) = x_988;
+      let x_547 = vec3f(x_539.x, x_541.zz);
+      let x_989 = x_61;
+      x_61 = 0i;
+      x_61 = x_989;
+      let x_990 = param;
+      param = 0i;
+      param = x_990;
+      j_1 = (1i + x_74);
+      let x_991 = param_1;
+      param_1 = 0i;
+      param_1 = x_991;
+      let x_548 = x_541.yzx;
+      let x_992 = x_61;
+      x_61 = 0i;
+      x_61 = x_992;
+    }
+  }
+  let x_76 = i_1;
+  let x_993 = *(x_42);
+  *(x_42) = 0i;
+  *(x_42) = x_993;
+  let x_549 = x_534.xy;
+  let x_994 = obj;
+  obj = QuicksortObject();
+  obj = x_994;
+  let x_995 = *(h);
+  *(h) = 0i;
+  *(h) = x_995;
+  i_1 = (1i + x_76);
+  let x_996 = param_1;
+  param_1 = 0i;
+  param_1 = x_996;
+  let x_79 = i_1;
+  let x_997 = j_1;
+  j_1 = 0i;
+  j_1 = x_997;
+  let x_550 = x_534.xx;
+  let x_998 = param_1;
+  param_1 = 0i;
+  param_1 = x_998;
+  param_2 = x_79;
+  let x_551 = vec2f(x_534.y, x_536.x);
+  let x_999 = pivot;
+  pivot = 0i;
+  pivot = x_999;
+  let x_81 = *(h);
+  let x_552 = vec2f(x_550.x, x_549.y);
+  let x_1000 = *(h);
+  *(h) = 0i;
+  *(h) = x_1000;
+  param_3 = x_81;
+  let x_1001 = i_1;
+  i_1 = 0i;
+  i_1 = x_1001;
+  let x_553 = vec2f(x_549.y, x_552.x);
+  let x_1002 = *(h);
+  *(h) = 0i;
+  *(h) = x_1002;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_1003 = *(l);
+  *(l) = 0i;
+  *(l) = x_1003;
+  let x_554 = vec2f(x_536.z, x_199.y);
+  let x_1004 = param_1;
+  param_1 = 0i;
+  param_1 = x_1004;
+  let x_83 = i_1;
+  let x_1005 = param;
+  param = 0i;
+  param = x_1005;
+  let x_555 = x_534.yx;
+  let x_1006 = j_1;
+  j_1 = 0i;
+  j_1 = x_1006;
+  return x_83;
+}
+
+fn quicksort_() {
+  var param_4 : i32;
+  var h_1 : i32;
+  var p : i32;
+  var l_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10u>;
+  var param_5 : i32;
+  l_1 = 0i;
+  let x_1007 = param_5;
+  param_5 = 0i;
+  param_5 = x_1007;
+  h_1 = 9i;
+  let x_1008 = stack;
+  stack = array<i32, 10u>();
+  stack = x_1008;
+  let x_556 = x_199.yy;
+  let x_1009 = param_5;
+  param_5 = 0i;
+  param_5 = x_1009;
+  top = -1i;
+  let x_1010 = p;
+  p = 0i;
+  p = x_1010;
+  let x_93 = top;
+  let x_557 = x_199.xx;
+  let x_1011 = p;
+  p = 0i;
+  p = x_1011;
+  let x_94 = (x_93 + bitcast<i32>(1u));
+  let x_1012 = top;
+  top = 0i;
+  top = x_1012;
+  let x_558 = vec2f(x_556.y, x_557.y);
+  let x_1013 = param_4;
+  param_4 = 0i;
+  param_4 = x_1013;
+  top = x_94;
+  let x_1014 = h_1;
+  h_1 = 0i;
+  h_1 = x_1014;
+  let x_559 = x_557.yxx;
+  let x_1015 = param_4;
+  param_4 = 0i;
+  param_4 = x_1015;
+  let x_95 = l_1;
+  let x_1016 = obj;
+  obj = QuicksortObject();
+  obj = x_1016;
+  let x_560 = vec3f(x_559.yx, x_557.x);
+  let x_96 = &(stack[x_94]);
+  let x_1017 = stack;
+  stack = array<i32, 10u>();
+  stack = x_1017;
+  let x_561 = x_556.yyy;
+  let x_1018 = l_1;
+  l_1 = 0i;
+  l_1 = 0i;
+  *(x_96) = x_95;
+  let x_1019 = param_5;
+  param_5 = 0i;
+  param_5 = x_1019;
+  let x_97 = top;
+  let x_1020 = param_4;
+  param_4 = 0i;
+  param_4 = x_1020;
+  let x_562 = vec3f(x_199.z, x_558.y, x_199.y);
+  let x_1021 = *(x_96);
+  *(x_96) = 0i;
+  *(x_96) = x_1021;
+  let x_98 = (x_97 + 1i);
+  let x_1022 = *(x_96);
+  *(x_96) = 0i;
+  *(x_96) = x_1022;
+  let x_563 = vec3f(x_559.xz, x_556.y);
+  top = x_98;
+  let x_1023 = param_4;
+  param_4 = 0i;
+  param_4 = x_1023;
+  let x_99 = h_1;
+  let x_1024 = param_4;
+  param_4 = 0i;
+  param_4 = x_1024;
+  let x_564 = vec3f(x_558.x, x_561.x, x_558.y);
+  let x_1025 = l_1;
+  l_1 = 0i;
+  l_1 = x_1025;
+  let x_100 = &(stack[x_98]);
+  let x_1026 = param_5;
+  param_5 = 0i;
+  param_5 = x_1026;
+  let x_565 = x_564.zz;
+  let x_1027 = p;
+  p = 0i;
+  p = x_1027;
+  *(x_100) = x_99;
+  loop {
+    let x_566 = x_563.xxx;
+    let x_1028 = h_1;
+    h_1 = 0i;
+    h_1 = x_1028;
+    let x_1029 = stack;
+    stack = array<i32, 10u>();
+    stack = x_1029;
+    let x_106 = top;
+    let x_1030 = stack;
+    stack = array<i32, 10u>();
+    stack = x_1030;
+    let x_567 = vec2f(x_558.x, x_564.z);
+    let x_1031 = param_4;
+    param_4 = 0i;
+    param_4 = x_1031;
+    if ((x_106 >= bitcast<i32>(0u))) {
+    } else {
+      break;
+    }
+    let x_1032 = obj;
+    obj = QuicksortObject();
+    obj = x_1032;
+    let x_568 = vec3f(x_559.yx, x_563.y);
+    let x_1033 = param_4;
+    param_4 = 0i;
+    param_4 = x_1033;
+    let x_108 = top;
+    let x_569 = vec3f(x_565.x, x_567.y, x_565.x);
+    let x_1034 = h_1;
+    h_1 = 0i;
+    h_1 = x_1034;
+    let x_570 = x_556.xx;
+    let x_1035 = p;
+    p = 0i;
+    p = x_1035;
+    top = (x_108 - bitcast<i32>(1u));
+    let x_1036 = p;
+    p = 0i;
+    p = x_1036;
+    let x_110 = &(stack[x_108]);
+    let x_1037 = *(x_96);
+    *(x_96) = 0i;
+    *(x_96) = x_1037;
+    let x_111 = *(x_110);
+    let x_1038 = stack;
+    stack = array<i32, 10u>();
+    stack = x_1038;
+    let x_571 = vec3f(x_559.yx, x_564.y);
+    let x_1039 = l_1;
+    l_1 = 0i;
+    l_1 = x_1039;
+    h_1 = x_111;
+    let x_1040 = stack;
+    stack = array<i32, 10u>();
+    stack = x_1040;
+    let x_572 = vec2f(x_562.y, x_561.y);
+    let x_1041 = p;
+    p = 0i;
+    p = x_1041;
+    let x_112 = top;
+    let x_1042 = param_4;
+    param_4 = 0i;
+    param_4 = x_1042;
+    let x_1043 = *(x_100);
+    *(x_100) = 0i;
+    *(x_100) = x_1043;
+    let x_573 = x_199.yz;
+    top = (x_112 - 1i);
+    let x_1044 = param_5;
+    param_5 = 0i;
+    param_5 = x_1044;
+    let x_574 = vec3f(x_570.y, x_565.x, x_570.y);
+    let x_1045 = h_1;
+    h_1 = 0i;
+    h_1 = x_1045;
+    let x_114 = &(stack[x_112]);
+    let x_575 = x_564.yz;
+    let x_1046 = *(x_100);
+    *(x_100) = 0i;
+    *(x_100) = x_1046;
+    let x_115 = *(x_114);
+    let x_1047 = p;
+    p = 0i;
+    p = x_1047;
+    let x_576 = vec3f(x_573.yy, x_565.x);
+    let x_1048 = param_5;
+    param_5 = 0i;
+    param_5 = x_1048;
+    l_1 = x_115;
+    let x_1049 = top;
+    top = 0i;
+    top = x_1049;
+    let x_118 = l_1;
+    param_4 = x_118;
+    let x_1050 = *(x_110);
+    *(x_110) = 0i;
+    *(x_110) = x_1050;
+    let x_577 = x_569.yz;
+    let x_120 = h_1;
+    let x_578 = vec2f(x_558.x, x_199.y);
+    param_5 = x_120;
+    let x_1051 = *(x_100);
+    *(x_100) = 0i;
+    *(x_100) = x_1051;
+    let x_121 = performPartition_i1_i1_(&(param_4), &(param_5));
+    let x_579 = vec2f(x_567.x, x_568.x);
+    let x_1052 = param_5;
+    param_5 = 0i;
+    param_5 = x_1052;
+    p = x_121;
+    let x_1053 = param_4;
+    param_4 = 0i;
+    param_4 = x_1053;
+    let x_122 = p;
+    let x_1054 = h_1;
+    h_1 = 0i;
+    h_1 = x_1054;
+    let x_580 = x_568.yy;
+    let x_1055 = l_1;
+    l_1 = 0i;
+    l_1 = x_1055;
+    let x_1056 = h_1;
+    h_1 = 0i;
+    h_1 = x_1056;
+    let x_124 = l_1;
+    let x_1057 = *(x_110);
+    *(x_110) = 0i;
+    *(x_110) = x_1057;
+    let x_1058 = h_1;
+    h_1 = 0i;
+    h_1 = x_1058;
+    let x_582 = vec2f(x_567.y, x_573.x);
+    let x_1059 = *(x_100);
+    *(x_100) = 0i;
+    *(x_100) = x_1059;
+    if (((x_122 - bitcast<i32>(1u)) > x_124)) {
+      let x_1060 = param_4;
+      param_4 = 0i;
+      param_4 = x_1060;
+      let x_128 = top;
+      let x_583 = vec2f(x_571.y, x_556.y);
+      let x_1061 = *(x_100);
+      *(x_100) = 0i;
+      *(x_100) = x_1061;
+      let x_1062 = stack;
+      stack = array<i32, 10u>();
+      stack = x_1062;
+      let x_584 = x_569.zy;
+      let x_585 = vec3f(x_580.y, x_577.xx);
+      let x_130 = l_1;
+      let x_1063 = *(x_114);
+      *(x_114) = 0i;
+      *(x_114) = x_1063;
+      let x_586 = vec2f(x_564.x, x_585.x);
+      let x_1064 = param_5;
+      param_5 = 0i;
+      param_5 = x_1064;
+      let x_131 = &(stack[(1i + x_128)]);
+      let x_1065 = *(x_110);
+      *(x_110) = 0i;
+      *(x_110) = x_1065;
+      let x_587 = vec3f(x_566.yy, x_563.x);
+      let x_1066 = param_5;
+      param_5 = 0i;
+      param_5 = x_1066;
+      *(x_131) = x_130;
+      let x_132 = top;
+      let x_1067 = *(x_100);
+      *(x_100) = 0i;
+      *(x_100) = x_1067;
+      let x_588 = x_575.yx;
+      let x_1068 = *(x_131);
+      *(x_131) = 0i;
+      *(x_131) = x_1068;
+      let x_133 = bitcast<i32>((1u + bitcast<u32>(x_132)));
+      let x_1069 = *(x_100);
+      *(x_100) = 0i;
+      *(x_100) = x_1069;
+      let x_589 = vec3f(x_576.z, x_588.y, x_576.z);
+      let x_1070 = h_1;
+      h_1 = 0i;
+      h_1 = x_1070;
+      top = x_133;
+      let x_1071 = stack;
+      stack = array<i32, 10u>();
+      stack = x_1071;
+      let x_134 = p;
+      let x_590 = vec2f(x_576.x, x_573.y);
+      let x_1072 = *(x_114);
+      *(x_114) = 0i;
+      *(x_114) = x_1072;
+      let x_136 = &(stack[x_133]);
+      let x_1073 = *(x_114);
+      *(x_114) = 0i;
+      *(x_114) = x_1073;
+      *(x_136) = (x_134 - bitcast<i32>(1u));
+      let x_1074 = *(x_96);
+      *(x_96) = 0i;
+      *(x_96) = x_1074;
+      let x_591 = x_569.zy;
+      let x_1075 = *(x_136);
+      *(x_136) = 0i;
+      *(x_136) = x_1075;
+    }
+    let x_1076 = *(x_96);
+    *(x_96) = 0i;
+    *(x_96) = x_1076;
+    let x_592 = x_199.xy;
+    let x_1077 = obj;
+    obj = QuicksortObject();
+    obj = x_1077;
+    let x_137 = p;
+    let x_1078 = *(x_114);
+    *(x_114) = 0i;
+    *(x_114) = x_1078;
+    let x_593 = vec3f(x_571.z, x_556.xy);
+    let x_1079 = p;
+    p = 0i;
+    p = x_1079;
+    let x_594 = vec3f(x_563.zx, x_575.x);
+    let x_1080 = *(x_114);
+    *(x_114) = 0i;
+    *(x_114) = x_1080;
+    let x_139 = h_1;
+    let x_1081 = top;
+    top = 0i;
+    top = x_1081;
+    let x_595 = vec3f(x_560.z, x_568.x, x_560.x);
+    let x_1082 = *(x_100);
+    *(x_100) = 0i;
+    *(x_100) = x_1082;
+    let x_1083 = p;
+    p = 0i;
+    p = x_1083;
+    if ((bitcast<i32>((1u + bitcast<u32>(x_137))) < x_139)) {
+      let x_1084 = *(x_114);
+      *(x_114) = 0i;
+      *(x_114) = x_1084;
+      let x_596 = vec2f(x_592.y, x_582.x);
+      let x_1085 = l_1;
+      l_1 = 0i;
+      l_1 = x_1085;
+      let x_143 = top;
+      let x_1086 = *(x_114);
+      *(x_114) = 0i;
+      *(x_114) = x_1086;
+      let x_597 = vec3f(x_562.y, x_560.yy);
+      let x_144 = (x_143 + 1i);
+      let x_1087 = param_5;
+      param_5 = 0i;
+      param_5 = x_1087;
+      top = x_144;
+      let x_1088 = *(x_114);
+      *(x_114) = 0i;
+      *(x_114) = x_1088;
+      let x_145 = p;
+      let x_1089 = param_5;
+      param_5 = 0i;
+      param_5 = x_1089;
+      let x_599 = vec3f(x_560.zx, x_568.x);
+      let x_1090 = p;
+      p = 0i;
+      p = x_1090;
+      let x_600 = vec3f(x_556.x, x_580.xx);
+      let x_1091 = *(x_100);
+      *(x_100) = 0i;
+      *(x_100) = x_1091;
+      let x_147 = &(stack[x_144]);
+      let x_1092 = *(x_110);
+      *(x_110) = 0i;
+      *(x_110) = x_1092;
+      let x_601 = x_563.xy;
+      *(x_147) = bitcast<i32>((1u + bitcast<u32>(x_145)));
+      let x_1093 = stack;
+      stack = array<i32, 10u>();
+      stack = x_1093;
+      let x_148 = top;
+      let x_1094 = *(x_114);
+      *(x_114) = 0i;
+      *(x_114) = x_1094;
+      let x_602 = vec2f(x_565.y, x_599.y);
+      let x_1095 = stack;
+      stack = array<i32, 10u>();
+      stack = x_1095;
+      let x_149 = (x_148 + bitcast<i32>(1u));
+      let x_1096 = *(x_147);
+      *(x_147) = 0i;
+      *(x_147) = x_1096;
+      top = x_149;
+      let x_1097 = param_4;
+      param_4 = 0i;
+      param_4 = x_1097;
+      let x_150 = h_1;
+      let x_1098 = *(x_100);
+      *(x_100) = 0i;
+      *(x_100) = x_1098;
+      let x_1099 = *(x_96);
+      *(x_96) = 0i;
+      *(x_96) = x_1099;
+      stack[x_149] = x_150;
+      let x_1100 = *(x_114);
+      *(x_114) = 0i;
+      *(x_114) = x_1100;
+      let x_603 = vec3f(x_568.y, x_564.xx);
+      let x_1101 = l_1;
+      l_1 = 0i;
+      l_1 = x_1101;
+    }
+    let x_1102 = *(x_100);
+    *(x_100) = 0i;
+    *(x_100) = x_1102;
+
+    continuing {
+      let x_1103 = l_1;
+      l_1 = 0i;
+      l_1 = x_1103;
+      let x_604 = vec2f(x_563.z, x_564.x);
+      let x_1104 = obj;
+      obj = QuicksortObject();
+      obj = x_1104;
+    }
+  }
+  let x_1105 = h_1;
+  h_1 = 0i;
+  h_1 = x_1105;
+  return;
+}
+
+fn main_1() {
+  var color : vec3f;
+  var i_2 : i32;
+  var uv : vec2f;
+  let x_717 = uv;
+  uv = vec2f();
+  uv = x_717;
+  i_2 = 0i;
+  let x_721 = obj;
+  obj = QuicksortObject();
+  obj = x_721;
+  if (true) {
+    let x_722 = obj;
+    obj = QuicksortObject();
+    obj = x_722;
+    let x_431 = x_199.xx;
+    let x_158 = i_2;
+    let x_723 = uv;
+    uv = vec2f();
+    uv = x_723;
+    let x_725 = color;
+    color = vec3f();
+    color = x_725;
+    let x_432 = x_431.yy;
+    let x_726 = obj;
+    obj = QuicksortObject();
+    obj = x_726;
+  }
+  let x_756 = obj;
+  obj = QuicksortObject();
+  obj = x_756;
+  let x_446 = vec2f().xx;
+  let x_757 = i_2;
+  i_2 = 0i;
+  i_2 = x_757;
+  quicksort_();
+  let x_758 = obj;
+  obj = QuicksortObject();
+  obj = x_758;
+  let x_184 = gl_FragCoord;
+  let x_759 = uv;
+  uv = vec2f();
+  uv = x_759;
+  let x_447 = vec2f().yy;
+  let x_760 = uv;
+  uv = vec2f();
+  uv = x_760;
+  let x_185 = x_184.xy;
+  let x_448 = vec3f(x_185.y, x_446.yy);
+  let x_761 = obj;
+  obj = QuicksortObject();
+  obj = x_761;
+  let x_762 = uv;
+  uv = vec2f();
+  uv = x_762;
+  let x_191 = x_188.resolution;
+  let x_763 = obj;
+  obj = QuicksortObject();
+  obj = x_763;
+  let x_449 = vec3f(x_184.y, x_199.z, x_184.w);
+  let x_764 = color;
+  color = vec3f();
+  color = x_764;
+  let x_192 = (x_185 / x_191);
+  let x_765 = obj;
+  obj = QuicksortObject();
+  obj = x_765;
+  let x_450 = vec2f(x_447.x, x_185.y);
+  let x_766 = color;
+  color = vec3f();
+  let x_767 = color;
+  color = vec3f();
+  color = x_767;
+  color = x_766;
+  uv = x_192;
+  color = x_199;
+  let x_768 = color;
+  color = vec3f();
+  color = x_768;
+  let x_451 = vec3f(x_185.xy, x_446.y);
+  let x_769 = obj;
+  obj = QuicksortObject();
+  obj = x_769;
+  let x_200 = &(obj.numbers[0u]);
+  let x_770 = *(x_200);
+  *(x_200) = 0i;
+  *(x_200) = x_770;
+  let x_201 = *(x_200);
+  let x_771 = obj;
+  obj = QuicksortObject();
+  obj = x_771;
+  let x_772 = *(x_200);
+  *(x_200) = 0i;
+  *(x_200) = x_772;
+  let x_206 = color.x;
+  let x_773 = color.x;
+  color.x = 0.0f;
+  color.x = x_773;
+  let x_452 = x_199.zy;
+  let x_774 = i_2;
+  i_2 = 0i;
+  i_2 = x_774;
+  let x_775 = obj;
+  obj = QuicksortObject();
+  obj = x_775;
+  let x_453 = vec3f(x_451.x, x_450.xy);
+  color.x = (x_206 + f32(x_201));
+  let x_776 = uv;
+  uv = vec2f();
+  uv = x_776;
+  let x_777 = uv;
+  uv = vec2f();
+  uv = x_777;
+  let x_454 = x_184.yy;
+  let x_210 = uv.x;
+  let x_455 = x_192.yx;
+  let x_778 = uv.x;
+  uv.x = 0.0f;
+  uv.x = x_778;
+  let x_779 = obj;
+  obj = QuicksortObject();
+  obj = x_779;
+  if ((x_210 > 0.25f)) {
+    let x_780 = i_2;
+    i_2 = 0i;
+    i_2 = x_780;
+    let x_781 = *(x_200);
+    *(x_200) = 0i;
+    *(x_200) = x_781;
+    let x_456 = vec3f(vec2f().y, x_448.yy);
+    let x_782 = uv.x;
+    uv.x = 0.0f;
+    uv.x = x_782;
+    let x_216 = obj.numbers[1i];
+    let x_783 = obj;
+    obj = QuicksortObject();
+    obj = x_783;
+    let x_457 = x_454.xx;
+    let x_784 = uv;
+    uv = vec2f();
+    uv = x_784;
+    let x_785 = obj;
+    obj = QuicksortObject();
+    obj = x_785;
+    let x_458 = vec2f(x_199.z, vec2f().y);
+    let x_786 = i_2;
+    i_2 = 0i;
+    i_2 = x_786;
+    let x_219 = color[0i];
+    let x_787 = color[0i];
+    color[0i] = 0.0f;
+    color[0i] = x_787;
+    let x_788 = color;
+    color = vec3f();
+    color = x_788;
+    let x_789 = color;
+    color = vec3f();
+    color = x_789;
+    let x_459 = vec3f(x_454.yy, x_447.y);
+    let x_790 = color[0i];
+    color[0i] = 0.0f;
+    color[0i] = x_790;
+    color.x = (f32(x_216) + x_219);
+    let x_791 = *(x_200);
+    *(x_200) = 0i;
+    *(x_200) = x_791;
+  }
+  let x_792 = uv.x;
+  uv.x = 0.0f;
+  uv.x = x_792;
+  let x_793 = uv.x;
+  uv.x = 0.0f;
+  uv.x = x_793;
+  let x_223 = uv.x;
+  let x_794 = uv.x;
+  uv.x = 0.0f;
+  uv.x = x_794;
+  let x_460 = x_453.zyy;
+  let x_795 = uv;
+  uv = vec2f();
+  uv = x_795;
+  let x_796 = uv.x;
+  uv.x = 0.0f;
+  uv.x = x_796;
+  let x_461 = vec2f().yy;
+  let x_797 = uv.x;
+  uv.x = 0.0f;
+  uv.x = x_797;
+  if ((x_223 > 0.5f)) {
+    let x_798 = uv.x;
+    uv.x = 0.0f;
+    uv.x = x_798;
+    let x_462 = x_446.xx;
+    let x_799 = color.x;
+    color.x = 0.0f;
+    color.x = x_799;
+    let x_229 = &(obj.numbers[2u]);
+    let x_800 = color.x;
+    color.x = 0.0f;
+    color.x = x_800;
+    let x_463 = vec3f(x_453.xz, x_461.y);
+    let x_801 = color.x;
+    color.x = 0.0f;
+    color.x = x_801;
+    let x_230 = *(x_229);
+    let x_802 = uv.x;
+    uv.x = 0.0f;
+    uv.x = x_802;
+    let x_803 = color.x;
+    color.x = 0.0f;
+    color.x = x_803;
+    let x_804 = *(x_229);
+    *(x_229) = 0i;
+    *(x_229) = x_804;
+    let x_464 = vec2f(x_450.y, x_191.x);
+    let x_805 = color.y;
+    color.y = 0.0f;
+    color.y = x_805;
+    let x_234 = color.y;
+    let x_806 = *(x_229);
+    *(x_229) = 0i;
+    *(x_229) = x_806;
+    let x_465 = vec2f(x_463.x, x_185.x);
+    let x_807 = color.x;
+    color.x = 0.0f;
+    color.x = x_807;
+    let x_808 = i_2;
+    i_2 = 0i;
+    i_2 = x_808;
+    let x_466 = vec2f(x_455.y, vec2f().y);
+    let x_809 = i_2;
+    i_2 = 0i;
+    i_2 = x_809;
+    color.y = (f32(x_230) + x_234);
+    let x_810 = uv.x;
+    uv.x = 0.0f;
+    uv.x = x_810;
+  }
+  let x_811 = i_2;
+  i_2 = 0i;
+  i_2 = x_811;
+  let x_467 = x_191.xx;
+  let x_812 = uv.x;
+  uv.x = 0.0f;
+  uv.x = x_812;
+  let x_238 = uv[0i];
+  let x_813 = color;
+  color = vec3f();
+  color = x_813;
+  let x_814 = color.x;
+  color.x = 0.0f;
+  color.x = x_814;
+  if ((x_238 > 0.75f)) {
+    let x_815 = color.x;
+    color.x = 0.0f;
+    color.x = x_815;
+    let x_245 = obj.numbers[3i];
+    let x_816 = color.x;
+    color.x = 0.0f;
+    color.x = x_816;
+    let x_817 = obj;
+    obj = QuicksortObject();
+    obj = x_817;
+    let x_468 = x_467.xxx;
+    let x_818 = uv[0i];
+    uv[0i] = 0.0f;
+    uv[0i] = x_818;
+    let x_819 = uv.x;
+    uv.x = 0.0f;
+    uv.x = x_819;
+    let x_249 = color.z;
+    let x_820 = color;
+    color = vec3f();
+    color = x_820;
+    let x_469 = vec3f(x_467.x, x_191.y, x_467.y);
+    let x_821 = color.z;
+    color.z = 0.0f;
+    color.z = x_821;
+    let x_822 = *(x_200);
+    *(x_200) = 0i;
+    *(x_200) = x_822;
+    let x_470 = vec2f().xy;
+    let x_823 = color.z;
+    color.z = 0.0f;
+    color.z = x_823;
+    color.z = (x_249 + f32(x_245));
+    let x_824 = uv;
+    uv = vec2f();
+    uv = x_824;
+    let x_471 = x_470.yy;
+  }
+  let x_825 = uv[0i];
+  uv[0i] = 0.0f;
+  uv[0i] = x_825;
+  let x_472 = x_454.xyy;
+  let x_253 = &(obj.numbers[4i]);
+  let x_254 = *(x_253);
+  let x_826 = uv[0i];
+  uv[0i] = 0.0f;
+  uv[0i] = x_826;
+  let x_827 = color;
+  color = vec3f();
+  color = x_827;
+  let x_473 = vec3f(x_446.y, x_453.xx);
+  let x_828 = *(x_253);
+  *(x_253) = 0i;
+  *(x_253) = x_828;
+  let x_474 = vec2f(x_191.x, x_184.z);
+  let x_829 = uv.x;
+  uv.x = 0.0f;
+  uv.x = x_829;
+  let x_257 = color.y;
+  let x_830 = color.y;
+  color.y = 0.0f;
+  color.y = x_830;
+  let x_475 = vec2f(x_467.x, x_450.x);
+  let x_831 = uv.x;
+  uv.x = 0.0f;
+  uv.x = x_831;
+  let x_832 = color.x;
+  color.x = 0.0f;
+  color.x = x_832;
+  let x_476 = vec2f(x_451.z, x_460.y);
+  color.y = (x_257 + f32(x_254));
+  let x_477 = vec3f(vec2f().x, x_472.x, vec2f().y);
+  let x_833 = uv.x;
+  uv.x = 0.0f;
+  uv.x = x_833;
+  let x_834 = color.x;
+  color.x = 0.0f;
+  color.x = x_834;
+  let x_478 = x_472.xy;
+  let x_835 = uv.y;
+  uv.y = 0.0f;
+  uv.y = x_835;
+  let x_261 = uv.y;
+  let x_836 = i_2;
+  i_2 = 0i;
+  i_2 = x_836;
+  let x_479 = vec3f(vec2f().y, x_454.y, vec2f().x);
+  let x_837 = *(x_200);
+  *(x_200) = 0i;
+  *(x_200) = x_837;
+  let x_838 = color.y;
+  color.y = 0.0f;
+  color.y = x_838;
+  let x_480 = vec3f(x_446.xx, vec2f().y);
+  let x_839 = uv.x;
+  uv.x = 0.0f;
+  uv.x = x_839;
+  if ((x_261 > 0.25f)) {
+    let x_481 = vec2f(x_447.x, x_480.z);
+    let x_840 = color;
+    color = vec3f();
+    color = x_840;
+    let x_267 = obj.numbers[5u];
+    let x_841 = color.x;
+    color.x = 0.0f;
+    color.x = x_841;
+    let x_842 = i_2;
+    i_2 = 0i;
+    i_2 = x_842;
+    let x_843 = i_2;
+    i_2 = 0i;
+    i_2 = x_843;
+    let x_270 = color.x;
+    let x_844 = uv[0i];
+    uv[0i] = 0.0f;
+    uv[0i] = x_844;
+    let x_482 = vec3f(x_455.x, x_475.y, x_455.y);
+    let x_845 = obj;
+    obj = QuicksortObject();
+    obj = x_845;
+    let x_846 = uv.y;
+    uv.y = 0.0f;
+    uv.y = x_846;
+    let x_847 = i_2;
+    i_2 = 0i;
+    i_2 = x_847;
+    let x_483 = vec3f(x_184.ww, x_192.x);
+    let x_848 = uv.x;
+    uv.x = 0.0f;
+    uv.x = x_848;
+    color.x = (f32(x_267) + x_270);
+    let x_484 = vec3f(x_454.y, x_450.x, x_454.y);
+    let x_849 = uv.x;
+    uv.x = 0.0f;
+    uv.x = x_849;
+  }
+  let x_850 = color.x;
+  color.x = 0.0f;
+  color.x = x_850;
+  let x_485 = vec3f(x_467.x, x_450.yx);
+  let x_851 = uv.y;
+  uv.y = 0.0f;
+  uv.y = x_851;
+  let x_852 = *(x_253);
+  *(x_253) = 0i;
+  *(x_253) = x_852;
+  let x_274 = uv.y;
+  let x_853 = *(x_200);
+  *(x_200) = 0i;
+  *(x_200) = x_853;
+  if ((x_274 > 0.5f)) {
+    let x_854 = uv.x;
+    uv.x = 0.0f;
+    uv.x = x_854;
+    let x_486 = vec2f(x_480.y, x_455.y);
+    let x_279 = &(obj.numbers[6u]);
+    let x_855 = color.y;
+    color.y = 0.0f;
+    color.y = x_855;
+    let x_487 = x_449.zy;
+    let x_856 = uv.y;
+    uv.y = 0.0f;
+    uv.y = x_856;
+    let x_280 = *(x_279);
+    let x_857 = uv.y;
+    uv.y = 0.0f;
+    uv.y = x_857;
+    let x_858 = i_2;
+    i_2 = 0i;
+    i_2 = x_858;
+    let x_859 = *(x_253);
+    *(x_253) = 0i;
+    *(x_253) = x_859;
+    let x_488 = x_473.zy;
+    let x_283 = color.y;
+    let x_860 = uv;
+    uv = vec2f();
+    uv = x_860;
+    let x_861 = color.x;
+    color.x = 0.0f;
+    color.x = x_861;
+    let x_489 = x_475.yx;
+    let x_862 = *(x_279);
+    *(x_279) = 0i;
+    *(x_279) = x_862;
+    let x_863 = *(x_279);
+    *(x_279) = 0i;
+    *(x_279) = x_863;
+    let x_490 = x_480.zz;
+    let x_864 = obj;
+    obj = QuicksortObject();
+    obj = x_864;
+    color.y = (f32(x_280) + x_283);
+    let x_865 = color.x;
+    color.x = 0.0f;
+    color.x = x_865;
+    let x_491 = vec2f(x_199.y, x_454.x);
+    let x_866 = color.y;
+    color.y = 0.0f;
+    color.y = x_866;
+  }
+  let x_492 = x_455.yy;
+  let x_867 = color.x;
+  color.x = 0.0f;
+  color.x = x_867;
+  let x_287 = uv.y;
+  let x_868 = obj;
+  obj = QuicksortObject();
+  obj = x_868;
+  let x_493 = x_475.xy;
+  let x_869 = uv[0i];
+  uv[0i] = 0.0f;
+  uv[0i] = x_869;
+  let x_870 = color.y;
+  color.y = 0.0f;
+  color.y = x_870;
+  let x_494 = x_191.xyy;
+  let x_871 = *(x_253);
+  *(x_253) = 0i;
+  *(x_253) = x_871;
+  if ((x_287 > 0.75f)) {
+    let x_872 = color;
+    color = vec3f();
+    color = x_872;
+    let x_873 = color.x;
+    color.x = 0.0f;
+    color.x = x_873;
+    let x_495 = x_192.yxy;
+    let x_874 = color;
+    color = vec3f();
+    color = x_874;
+    let x_293 = obj.numbers[7i];
+    let x_875 = uv.x;
+    uv.x = 0.0f;
+    uv.x = x_875;
+    let x_496 = vec3f(x_475.x, x_467.yx);
+    let x_876 = color.y;
+    color.y = 0.0f;
+    color.y = x_876;
+    let x_497 = vec2f(x_477.x, x_461.y);
+    let x_877 = *(x_200);
+    *(x_200) = 0i;
+    *(x_200) = x_877;
+    let x_878 = color.y;
+    color.y = 0.0f;
+    color.y = x_878;
+    let x_498 = x_478.xyx;
+    let x_879 = color.x;
+    color.x = 0.0f;
+    color.x = x_879;
+    let x_296 = color.z;
+    let x_880 = uv.y;
+    uv.y = 0.0f;
+    uv.y = x_880;
+    let x_499 = x_184.xy;
+    let x_881 = uv.x;
+    uv.x = 0.0f;
+    uv.x = x_881;
+    let x_882 = uv.y;
+    uv.y = 0.0f;
+    uv.y = x_882;
+    let x_883 = uv.y;
+    uv.y = 0.0f;
+    uv.y = x_883;
+    let x_500 = vec3f(x_499.yy, x_494.z);
+    let x_884 = color.z;
+    color.z = 0.0f;
+    color.z = x_884;
+    color.z = (f32(x_293) + x_296);
+    let x_885 = color.y;
+    color.y = 0.0f;
+    color.y = x_885;
+    let x_501 = x_453.xz;
+    let x_886 = color.x;
+    color.x = 0.0f;
+    color.x = x_886;
+  }
+  let x_887 = i_2;
+  i_2 = 0i;
+  i_2 = x_887;
+  let x_502 = vec2f(x_451.y, x_192.y);
+  let x_888 = uv;
+  uv = vec2f();
+  uv = x_888;
+  let x_300 = &(obj.numbers[8i]);
+  let x_301 = *(x_300);
+  let x_889 = i_2;
+  i_2 = 0i;
+  i_2 = x_889;
+  let x_503 = vec2f(x_185.x, x_451.z);
+  let x_890 = *(x_300);
+  *(x_300) = 0i;
+  *(x_300) = x_890;
+  let x_891 = color.y;
+  color.y = 0.0f;
+  color.y = x_891;
+  let x_504 = vec2f(x_453.y, vec2f().x);
+  let x_892 = color.x;
+  color.x = 0.0f;
+  color.x = x_892;
+  let x_505 = x_504.xyx;
+  let x_893 = color.z;
+  color.z = 0.0f;
+  color.z = x_893;
+  let x_304 = color.z;
+  let x_894 = color.x;
+  color.x = 0.0f;
+  color.x = x_894;
+  let x_506 = vec2f(x_493.x, x_492.x);
+  let x_895 = *(x_253);
+  *(x_253) = 0i;
+  *(x_253) = x_895;
+  let x_896 = uv.y;
+  uv.y = 0.0f;
+  uv.y = x_896;
+  let x_507 = vec2f(x_461.x, x_447.x);
+  let x_897 = color.y;
+  color.y = 0.0f;
+  color.y = x_897;
+  color.z = (x_304 + f32(x_301));
+  let x_898 = uv;
+  uv = vec2f();
+  uv = x_898;
+  let x_899 = uv.x;
+  uv.x = 0.0f;
+  uv.x = x_899;
+  let x_508 = vec3f(x_461.yx, x_506.y);
+  let x_900 = uv.x;
+  uv.x = 0.0f;
+  uv.x = x_900;
+  let x_308 = uv.x;
+  let x_901 = color.y;
+  color.y = 0.0f;
+  color.y = x_901;
+  let x_509 = vec3f(x_503.yx, x_448.z);
+  let x_902 = uv.y;
+  uv.y = 0.0f;
+  uv.y = x_902;
+  let x_310 = uv.y;
+  let x_903 = uv.y;
+  uv.y = 0.0f;
+  uv.y = x_903;
+  let x_904 = color.z;
+  color.z = 0.0f;
+  color.z = x_904;
+  let x_510 = vec3f(x_199.y, x_485.yz);
+  let x_905 = color.z;
+  color.z = 0.0f;
+  color.z = x_905;
+  let x_906 = i_2;
+  i_2 = 0i;
+  i_2 = x_906;
+  let x_511 = x_485.zy;
+  let x_907 = color;
+  color = vec3f();
+  color = x_907;
+  let x_908 = uv.y;
+  uv.y = 0.0f;
+  uv.y = x_908;
+  let x_512 = x_455.yyy;
+  let x_909 = *(x_253);
+  *(x_253) = 0i;
+  *(x_253) = x_909;
+  if ((abs((x_308 - x_310)) < 0.25f)) {
+    let x_910 = uv.x;
+    uv.x = 0.0f;
+    uv.x = x_910;
+    let x_911 = obj;
+    obj = QuicksortObject();
+    obj = x_911;
+    let x_513 = vec3f(x_505.zx, x_448.x);
+    let x_912 = *(x_300);
+    *(x_300) = 0i;
+    *(x_300) = x_912;
+    let x_317 = obj.numbers[9u];
+    let x_514 = x_474.yyy;
+    let x_913 = uv.y;
+    uv.y = 0.0f;
+    uv.y = x_913;
+    let x_320 = color.x;
+    let x_914 = uv.y;
+    uv.y = 0.0f;
+    uv.y = x_914;
+    let x_515 = x_502.xy;
+    let x_915 = color.x;
+    color.x = 0.0f;
+    color.x = x_915;
+    let x_916 = color;
+    color = vec3f();
+    color = x_916;
+    let x_516 = x_452.xx;
+    let x_917 = uv;
+    uv = vec2f();
+    uv = x_917;
+    let x_918 = uv.x;
+    uv.x = 0.0f;
+    uv.x = x_918;
+    let x_517 = vec2f().xxy;
+    color.x = (f32(x_317) + x_320);
+    let x_919 = color.x;
+    color.x = 0.0f;
+    color.x = x_919;
+    let x_518 = vec3f(x_480.y, x_508.x, x_480.x);
+    let x_920 = color.x;
+    color.x = 0.0f;
+    color.x = x_920;
+  }
+  let x_921 = uv.y;
+  uv.y = 0.0f;
+  uv.y = x_921;
+  let x_325 = color;
+  let x_922 = uv[0i];
+  uv[0i] = 0.0f;
+  uv[0i] = x_922;
+  let x_519 = vec3f(x_447.x, x_446.xy);
+  let x_326 = normalize(x_325);
+  let x_923 = uv.x;
+  uv.x = 0.0f;
+  uv.x = x_923;
+  let x_924 = obj;
+  obj = QuicksortObject();
+  obj = x_924;
+  let x_925 = obj;
+  obj = QuicksortObject();
+  obj = x_925;
+  let x_926 = color.y;
+  color.y = 0.0f;
+  color.y = x_926;
+  let x_520 = vec2f(x_506.y, x_519.y);
+  let x_927 = color.y;
+  color.y = 0.0f;
+  color.y = x_927;
+  let x_330 = vec4f(x_326.x, x_326.y, x_326.z, 1.0f);
+  let x_928 = uv.y;
+  uv.y = 0.0f;
+  uv.y = x_928;
+  let x_521 = vec3f(x_199.yy, x_520.y);
+  let x_929 = uv.x;
+  uv.x = 0.0f;
+  uv.x = x_929;
+  x_GLF_color = x_330;
+  let x_930 = obj;
+  obj = QuicksortObject();
+  obj = x_930;
+  let x_522 = vec3f(x_330.wy, x_493.x);
+  let x_931 = color.x;
+  color.x = 0.0f;
+  color.x = x_931;
+  return;
+}
+
+struct main_out {
+  @location(0)
+  x_GLF_color_1 : vec4f,
+}
+
+@fragment
+fn main(@builtin(position) gl_FragCoord_param : vec4f) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+error: function-scope 'var' must have a constructible type
diff --git a/test/tint/bug/tint/757.wgsl.expected.ir.msl b/test/tint/bug/tint/757.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d0caa43
--- /dev/null
+++ b/test/tint/bug/tint/757.wgsl.expected.ir.msl
@@ -0,0 +1,76 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Constants = struct @align(4) {
+  level:i32 @offset(0)
+}
+
+Result = struct @align(4) {
+  values:array<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %constants:ptr<uniform, Constants, read> = var @binding_point(0, 0)
+  %myTexture:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(0, 1)
+  %result:ptr<storage, Result, read_write> = var @binding_point(0, 3)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%GlobalInvocationID:vec3<u32> [@global_invocation_id]):void -> %b2 {
+  %b2 = block {
+    %6:u32 = access %GlobalInvocationID, 2u
+    %7:u32 = mul 4u, %6
+    %8:u32 = access %GlobalInvocationID, 1u
+    %9:u32 = mul 2u, %8
+    %10:u32 = add %7, %9
+    %11:u32 = access %GlobalInvocationID, 0u
+    %12:u32 = add %10, %11
+    %flatIndex:ptr<function, u32, read_write> = var, %12
+    %14:u32 = load %flatIndex
+    %15:u32 = mul %14, 1u
+    store %flatIndex, %15
+    %16:texture_2d_array<f32> = load %myTexture
+    %17:vec2<u32> = swizzle %GlobalInvocationID, xy
+    %18:vec2<i32> = convert %17
+    %19:vec4<f32> = textureLoad %16, %18, 0i, 0i
+    %texel:ptr<function, vec4<f32>, read_write> = var, %19
+    loop [i: %b3, b: %b4, c: %b5] {  # loop_1
+      %b3 = block {  # initializer
+        %i:ptr<function, u32, read_write> = var, 0u
+        next_iteration %b4
+      }
+      %b4 = block {  # body
+        %22:u32 = load %i
+        %23:bool = lt %22, 1u
+        if %23 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %24:u32 = load %flatIndex
+        %25:u32 = load %i
+        %26:u32 = add %24, %25
+        %27:ptr<storage, f32, read_write> = access %result, 0u, %26
+        %28:f32 = load_vector_element %texel, 0u
+        store %27, %28
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %29:u32 = load %i
+        %30:u32 = add %29, 1u
+        store %i, %30
+        next_iteration %b4
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/764.wgsl.expected.ir.msl b/test/tint/bug/tint/764.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/bug/tint/764.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/bug/tint/782.wgsl.expected.ir.msl b/test/tint/bug/tint/782.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/bug/tint/782.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/bug/tint/824.wgsl.expected.ir.msl b/test/tint/bug/tint/824.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4174ae5
--- /dev/null
+++ b/test/tint/bug/tint/824.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: Output = struct @align(16) {
+  Position:vec4<f32> @offset(0), @builtin(position)
+  color:vec4<f32> @offset(16), @location(0)
+}
+
+%tint_symbol = @vertex func(%VertexIndex:u32 [@vertex_index], %InstanceIndex:u32 [@instance_index]):Output -> %b1 {
+  %b1 = block {
+    %zv:array<vec2<f32>, 4> = let array<vec2<f32>, 4>(vec2<f32>(0.20000000298023223877f), vec2<f32>(0.30000001192092895508f), vec2<f32>(-0.10000000149011611938f), vec2<f32>(1.10000002384185791016f))
+    %z:f32 = access %zv, %InstanceIndex, 0u
+    %output:ptr<function, Output, read_write> = var
+    %7:ptr<function, vec4<f32>, read_write> = access %output, 0u
+    %8:vec4<f32> = construct 0.5f, 0.5f, %z, 1.0f
+    store %7, %8
+    %colors:array<vec4<f32>, 4> = let array<vec4<f32>, 4>(vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %10:ptr<function, vec4<f32>, read_write> = access %output, 1u
+    %11:vec4<f32> = access %colors, %InstanceIndex
+    store %10, %11
+    %12:Output = load %output
+    ret %12
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/bug/tint/825.wgsl.expected.ir.msl b/test/tint/bug/tint/825.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/bug/tint/825.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/bug/tint/827.wgsl.expected.ir.msl b/test/tint/bug/tint/827.wgsl.expected.ir.msl
new file mode 100644
index 0000000..18df912
--- /dev/null
+++ b/test/tint/bug/tint/827.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Result = struct @align(4) {
+  values:array<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %tex:ptr<handle, texture_depth_2d, read> = var @binding_point(0, 0)
+  %result:ptr<storage, Result, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%GlobalInvocationId:vec3<u32> [@global_invocation_id]):void -> %b2 {
+  %b2 = block {
+    %5:u32 = access %GlobalInvocationId, 1u
+    %6:u32 = mul %5, 128u
+    %7:u32 = access %GlobalInvocationId, 0u
+    %8:u32 = add %6, %7
+    %9:ptr<storage, f32, read_write> = access %result, 0u, %8
+    %10:texture_depth_2d = load %tex
+    %11:u32 = access %GlobalInvocationId, 0u
+    %12:i32 = convert %11
+    %13:u32 = access %GlobalInvocationId, 1u
+    %14:i32 = convert %13
+    %15:vec2<i32> = construct %12, %14
+    %16:f32 = textureLoad %10, %15, 0i
+    store %9, %16
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/870.spvasm.expected.ir.msl b/test/tint/bug/tint/870.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b5ec799
--- /dev/null
+++ b/test/tint/bug/tint/870.spvasm.expected.ir.msl
@@ -0,0 +1,57 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: sspp962805860buildInformationS = struct @align(16) {
+  footprint:vec4<f32> @offset(0)
+  offset:vec4<f32> @offset(16)
+  essence:i32 @offset(32)
+  orientation:array<i32, 6> @offset(36)
+}
+
+x_B4_BuildInformation = struct @align(16) {
+  passthru:sspp962805860buildInformationS @offset(0)
+}
+
+%b1 = block {  # root
+  %sspp962805860buildInformation:ptr<storage, x_B4_BuildInformation, read> = var @binding_point(0, 2)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %orientation:ptr<function, array<i32, 6>, read_write> = var
+    %4:ptr<storage, array<i32, 6>, read> = access %sspp962805860buildInformation, 0u, 3u
+    %x_23:array<i32, 6> = load %4
+    %6:ptr<function, i32, read_write> = access %orientation, 0i
+    %7:i32 = access %x_23, 0u
+    store %6, %7
+    %8:ptr<function, i32, read_write> = access %orientation, 1i
+    %9:i32 = access %x_23, 1u
+    store %8, %9
+    %10:ptr<function, i32, read_write> = access %orientation, 2i
+    %11:i32 = access %x_23, 2u
+    store %10, %11
+    %12:ptr<function, i32, read_write> = access %orientation, 3i
+    %13:i32 = access %x_23, 3u
+    store %12, %13
+    %14:ptr<function, i32, read_write> = access %orientation, 4i
+    %15:i32 = access %x_23, 4u
+    store %14, %15
+    %16:ptr<function, i32, read_write> = access %orientation, 5i
+    %17:i32 = access %x_23, 5u
+    store %16, %17
+    ret
+  }
+}
+%tint_symbol = @fragment func():void -> %b3 {
+  %b3 = block {
+    %19:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/913.wgsl.expected.ir.msl b/test/tint/bug/tint/913.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1b0d9fb
--- /dev/null
+++ b/test/tint/bug/tint/913.wgsl.expected.ir.msl
@@ -0,0 +1,245 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: OutputBuf = struct @align(4) {
+  result:array<u32> @offset(0)
+}
+
+Uniforms = struct @align(8) {
+  dstTextureFlipY:u32 @offset(0)
+  channelCount:u32 @offset(4)
+  srcCopyOrigin:vec2<u32> @offset(8)
+  dstCopyOrigin:vec2<u32> @offset(16)
+  copySize:vec2<u32> @offset(24)
+}
+
+%b1 = block {  # root
+  %src:ptr<handle, texture_2d<f32>, read> = var @binding_point(0, 0)
+  %dst:ptr<handle, texture_2d<f32>, read> = var @binding_point(0, 1)
+  %output:ptr<storage, OutputBuf, read_write> = var @binding_point(0, 2)
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(0, 3)
+}
+
+%aboutEqual = func(%value:f32, %expect:f32):bool -> %b2 {
+  %b2 = block {
+    %8:f32 = sub %value, %expect
+    %9:f32 = abs %8
+    %10:bool = lt %9, 0.00100000004749745131f
+    ret %10
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%GlobalInvocationID:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    %13:texture_2d<f32> = load %src
+    %srcSize:vec2<u32> = textureDimensions %13
+    %15:texture_2d<f32> = load %dst
+    %dstSize:vec2<u32> = textureDimensions %15
+    %17:vec2<u32> = swizzle %GlobalInvocationID, xy
+    %dstTexCoord:vec2<u32> = construct %17
+    %nonCoveredColor:vec4<f32> = let vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f)
+    %success:ptr<function, bool, read_write> = var, true
+    %21:u32 = access %dstTexCoord, 0u
+    %22:ptr<uniform, vec2<u32>, read> = access %uniforms, 3u
+    %23:u32 = load_vector_element %22, 0u
+    %24:bool = lt %21, %23
+    %25:bool = if %24 [t: %b4, f: %b5] {  # if_1
+      %b4 = block {  # true
+        exit_if true  # if_1
+      }
+      %b5 = block {  # false
+        %26:u32 = access %dstTexCoord, 1u
+        %27:ptr<uniform, vec2<u32>, read> = access %uniforms, 3u
+        %28:u32 = load_vector_element %27, 1u
+        %29:bool = lt %26, %28
+        exit_if %29  # if_1
+      }
+    }
+    %30:bool = if %25 [t: %b6, f: %b7] {  # if_2
+      %b6 = block {  # true
+        exit_if true  # if_2
+      }
+      %b7 = block {  # false
+        %31:u32 = access %dstTexCoord, 0u
+        %32:ptr<uniform, vec2<u32>, read> = access %uniforms, 3u
+        %33:u32 = load_vector_element %32, 0u
+        %34:ptr<uniform, vec2<u32>, read> = access %uniforms, 4u
+        %35:u32 = load_vector_element %34, 0u
+        %36:u32 = add %33, %35
+        %37:bool = gte %31, %36
+        exit_if %37  # if_2
+      }
+    }
+    %38:bool = if %30 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        exit_if true  # if_3
+      }
+      %b9 = block {  # false
+        %39:u32 = access %dstTexCoord, 1u
+        %40:ptr<uniform, vec2<u32>, read> = access %uniforms, 3u
+        %41:u32 = load_vector_element %40, 1u
+        %42:ptr<uniform, vec2<u32>, read> = access %uniforms, 4u
+        %43:u32 = load_vector_element %42, 1u
+        %44:u32 = add %41, %43
+        %45:bool = gte %39, %44
+        exit_if %45  # if_3
+      }
+    }
+    if %38 [t: %b10, f: %b11] {  # if_4
+      %b10 = block {  # true
+        %46:bool = load %success
+        %47:bool = if %46 [t: %b12, f: %b13] {  # if_5
+          %b12 = block {  # true
+            %48:texture_2d<f32> = load %dst
+            %49:vec2<i32> = convert %dstTexCoord
+            %50:vec4<f32> = textureLoad %48, %49, 0i
+            %51:vec4<bool> = eq %50, %nonCoveredColor
+            %52:bool = all %51
+            exit_if %52  # if_5
+          }
+          %b13 = block {  # false
+            exit_if false  # if_5
+          }
+        }
+        store %success, %47
+        exit_if  # if_4
+      }
+      %b11 = block {  # false
+        %53:ptr<uniform, vec2<u32>, read> = access %uniforms, 3u
+        %54:vec2<u32> = load %53
+        %55:vec2<u32> = sub %dstTexCoord, %54
+        %56:ptr<uniform, vec2<u32>, read> = access %uniforms, 2u
+        %57:vec2<u32> = load %56
+        %58:vec2<u32> = add %55, %57
+        %srcTexCoord:ptr<function, vec2<u32>, read_write> = var, %58
+        %60:ptr<uniform, u32, read> = access %uniforms, 0u
+        %61:u32 = load %60
+        %62:bool = eq %61, 1u
+        if %62 [t: %b14] {  # if_6
+          %b14 = block {  # true
+            %63:u32 = access %srcSize, 1u
+            %64:u32 = load_vector_element %srcTexCoord, 1u
+            %65:u32 = sub %63, %64
+            %66:u32 = sub %65, 1u
+            store_vector_element %srcTexCoord, 1u, %66
+            exit_if  # if_6
+          }
+        }
+        %67:texture_2d<f32> = load %src
+        %68:vec2<u32> = load %srcTexCoord
+        %69:vec2<i32> = convert %68
+        %srcColor:vec4<f32> = textureLoad %67, %69, 0i
+        %71:texture_2d<f32> = load %dst
+        %72:vec2<i32> = convert %dstTexCoord
+        %dstColor:vec4<f32> = textureLoad %71, %72, 0i
+        %74:ptr<uniform, u32, read> = access %uniforms, 1u
+        %75:u32 = load %74
+        %76:bool = eq %75, 2u
+        if %76 [t: %b15, f: %b16] {  # if_7
+          %b15 = block {  # true
+            %77:bool = load %success
+            %78:bool = if %77 [t: %b17, f: %b18] {  # if_8
+              %b17 = block {  # true
+                %79:f32 = access %dstColor, 0u
+                %80:f32 = access %srcColor, 0u
+                %81:bool = call %aboutEqual, %79, %80
+                exit_if %81  # if_8
+              }
+              %b18 = block {  # false
+                exit_if false  # if_8
+              }
+            }
+            %82:bool = if %78 [t: %b19, f: %b20] {  # if_9
+              %b19 = block {  # true
+                %83:f32 = access %dstColor, 1u
+                %84:f32 = access %srcColor, 1u
+                %85:bool = call %aboutEqual, %83, %84
+                exit_if %85  # if_9
+              }
+              %b20 = block {  # false
+                exit_if false  # if_9
+              }
+            }
+            store %success, %82
+            exit_if  # if_7
+          }
+          %b16 = block {  # false
+            %86:bool = load %success
+            %87:bool = if %86 [t: %b21, f: %b22] {  # if_10
+              %b21 = block {  # true
+                %88:f32 = access %dstColor, 0u
+                %89:f32 = access %srcColor, 0u
+                %90:bool = call %aboutEqual, %88, %89
+                exit_if %90  # if_10
+              }
+              %b22 = block {  # false
+                exit_if false  # if_10
+              }
+            }
+            %91:bool = if %87 [t: %b23, f: %b24] {  # if_11
+              %b23 = block {  # true
+                %92:f32 = access %dstColor, 1u
+                %93:f32 = access %srcColor, 1u
+                %94:bool = call %aboutEqual, %92, %93
+                exit_if %94  # if_11
+              }
+              %b24 = block {  # false
+                exit_if false  # if_11
+              }
+            }
+            %95:bool = if %91 [t: %b25, f: %b26] {  # if_12
+              %b25 = block {  # true
+                %96:f32 = access %dstColor, 2u
+                %97:f32 = access %srcColor, 2u
+                %98:bool = call %aboutEqual, %96, %97
+                exit_if %98  # if_12
+              }
+              %b26 = block {  # false
+                exit_if false  # if_12
+              }
+            }
+            %99:bool = if %95 [t: %b27, f: %b28] {  # if_13
+              %b27 = block {  # true
+                %100:f32 = access %dstColor, 3u
+                %101:f32 = access %srcColor, 3u
+                %102:bool = call %aboutEqual, %100, %101
+                exit_if %102  # if_13
+              }
+              %b28 = block {  # false
+                exit_if false  # if_13
+              }
+            }
+            store %success, %99
+            exit_if  # if_7
+          }
+        }
+        exit_if  # if_4
+      }
+    }
+    %103:u32 = access %GlobalInvocationID, 1u
+    %104:u32 = access %dstSize, 0u
+    %105:u32 = mul %103, %104
+    %106:u32 = access %GlobalInvocationID, 0u
+    %outputIndex:u32 = add %105, %106
+    %108:bool = load %success
+    if %108 [t: %b29, f: %b30] {  # if_14
+      %b29 = block {  # true
+        %109:ptr<storage, u32, read_write> = access %output, 0u, %outputIndex
+        store %109, 1u
+        exit_if  # if_14
+      }
+      %b30 = block {  # false
+        %110:ptr<storage, u32, read_write> = access %output, 0u, %outputIndex
+        store %110, 0u
+        exit_if  # if_14
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/914.wgsl.expected.ir.msl b/test/tint/bug/tint/914.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f4b0d1d
--- /dev/null
+++ b/test/tint/bug/tint/914.wgsl.expected.ir.msl
@@ -0,0 +1,515 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Matrix = struct @align(4) {
+  numbers:array<f32> @offset(0)
+}
+
+Uniforms = struct @align(4) {
+  dimAOuter:u32 @offset(0)
+  dimInner:u32 @offset(4)
+  dimBOuter:u32 @offset(8)
+}
+
+%b1 = block {  # root
+  %firstMatrix:ptr<storage, Matrix, read> = var @binding_point(0, 0)
+  %secondMatrix:ptr<storage, Matrix, read> = var @binding_point(0, 1)
+  %resultMatrix:ptr<storage, Matrix, read_write> = var @binding_point(0, 2)
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(0, 3)
+  %mm_Asub:ptr<workgroup, array<array<f32, 64>, 64>, read_write> = var
+  %mm_Bsub:ptr<workgroup, array<array<f32, 64>, 64>, read_write> = var
+}
+
+%mm_readA = func(%row:u32, %col:u32):f32 -> %b2 {
+  %b2 = block {
+    %10:ptr<uniform, u32, read> = access %uniforms, 0u
+    %11:u32 = load %10
+    %12:bool = lt %row, %11
+    %13:bool = if %12 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %14:ptr<uniform, u32, read> = access %uniforms, 1u
+        %15:u32 = load %14
+        %16:bool = lt %col, %15
+        exit_if %16  # if_1
+      }
+      %b4 = block {  # false
+        exit_if false  # if_1
+      }
+    }
+    if %13 [t: %b5] {  # if_2
+      %b5 = block {  # true
+        %17:ptr<uniform, u32, read> = access %uniforms, 1u
+        %18:u32 = load %17
+        %19:u32 = mul %row, %18
+        %20:u32 = add %19, %col
+        %21:ptr<storage, f32, read> = access %firstMatrix, 0u, %20
+        %result:f32 = load %21
+        ret %result
+      }
+    }
+    ret 0.0f
+  }
+}
+%mm_readB = func(%row_1:u32, %col_1:u32):f32 -> %b6 {  # %row_1: 'row', %col_1: 'col'
+  %b6 = block {
+    %26:ptr<uniform, u32, read> = access %uniforms, 1u
+    %27:u32 = load %26
+    %28:bool = lt %row_1, %27
+    %29:bool = if %28 [t: %b7, f: %b8] {  # if_3
+      %b7 = block {  # true
+        %30:ptr<uniform, u32, read> = access %uniforms, 2u
+        %31:u32 = load %30
+        %32:bool = lt %col_1, %31
+        exit_if %32  # if_3
+      }
+      %b8 = block {  # false
+        exit_if false  # if_3
+      }
+    }
+    if %29 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        %33:ptr<uniform, u32, read> = access %uniforms, 2u
+        %34:u32 = load %33
+        %35:u32 = mul %row_1, %34
+        %36:u32 = add %35, %col_1
+        %37:ptr<storage, f32, read> = access %secondMatrix, 0u, %36
+        %result_1:f32 = load %37  # %result_1: 'result'
+        ret %result_1
+      }
+    }
+    ret 0.0f
+  }
+}
+%mm_write = func(%row_2:u32, %col_2:u32, %value:f32):void -> %b10 {  # %row_2: 'row', %col_2: 'col'
+  %b10 = block {
+    %43:ptr<uniform, u32, read> = access %uniforms, 0u
+    %44:u32 = load %43
+    %45:bool = lt %row_2, %44
+    %46:bool = if %45 [t: %b11, f: %b12] {  # if_5
+      %b11 = block {  # true
+        %47:ptr<uniform, u32, read> = access %uniforms, 2u
+        %48:u32 = load %47
+        %49:bool = lt %col_2, %48
+        exit_if %49  # if_5
+      }
+      %b12 = block {  # false
+        exit_if false  # if_5
+      }
+    }
+    if %46 [t: %b13] {  # if_6
+      %b13 = block {  # true
+        %50:ptr<uniform, u32, read> = access %uniforms, 2u
+        %51:u32 = load %50
+        %52:u32 = mul %row_2, %51
+        %index:u32 = add %col_2, %52
+        %54:ptr<storage, f32, read_write> = access %resultMatrix, 0u, %index
+        store %54, %value
+        exit_if  # if_6
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(16, 16, 1) func(%local_id:vec3<u32> [@local_invocation_id], %global_id:vec3<u32> [@global_invocation_id]):void -> %b14 {
+  %b14 = block {
+    %58:u32 = access %local_id, 1u
+    %tileRow:u32 = mul %58, 4u
+    %60:u32 = access %local_id, 0u
+    %tileCol:u32 = mul %60, 4u
+    %62:u32 = access %global_id, 1u
+    %globalRow:u32 = mul %62, 4u
+    %64:u32 = access %global_id, 0u
+    %globalCol:u32 = mul %64, 4u
+    %66:ptr<uniform, u32, read> = access %uniforms, 1u
+    %67:u32 = load %66
+    %68:u32 = sub %67, 1u
+    %69:u32 = div %68, 64u
+    %numTiles:u32 = add %69, 1u
+    %acc:ptr<function, array<f32, 16>, read_write> = var
+    %ACached:ptr<function, f32, read_write> = var
+    %BCached:ptr<function, array<f32, 4>, read_write> = var
+    loop [i: %b15, b: %b16, c: %b17] {  # loop_1
+      %b15 = block {  # initializer
+        %index_1:ptr<function, u32, read_write> = var, 0u  # %index_1: 'index'
+        next_iteration %b16
+      }
+      %b16 = block {  # body
+        %75:u32 = load %index_1
+        %76:bool = lt %75, 16u
+        if %76 [t: %b18, f: %b19] {  # if_7
+          %b18 = block {  # true
+            exit_if  # if_7
+          }
+          %b19 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %77:u32 = load %index_1
+        %78:ptr<function, f32, read_write> = access %acc, %77
+        store %78, 0.0f
+        continue %b17
+      }
+      %b17 = block {  # continuing
+        %79:u32 = load %index_1
+        %80:u32 = add %79, 1u
+        store %index_1, %80
+        next_iteration %b16
+      }
+    }
+    %ColPerThreadA:u32 = let 4u
+    %82:u32 = access %local_id, 0u
+    %tileColA:u32 = mul %82, %ColPerThreadA
+    %RowPerThreadB:u32 = let 4u
+    %85:u32 = access %local_id, 1u
+    %tileRowB:u32 = mul %85, %RowPerThreadB
+    loop [i: %b20, b: %b21, c: %b22] {  # loop_2
+      %b20 = block {  # initializer
+        %t:ptr<function, u32, read_write> = var, 0u
+        next_iteration %b21
+      }
+      %b21 = block {  # body
+        %88:u32 = load %t
+        %89:bool = lt %88, %numTiles
+        if %89 [t: %b23, f: %b24] {  # if_8
+          %b23 = block {  # true
+            exit_if  # if_8
+          }
+          %b24 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        loop [i: %b25, b: %b26, c: %b27] {  # loop_3
+          %b25 = block {  # initializer
+            %innerRow:ptr<function, u32, read_write> = var, 0u
+            next_iteration %b26
+          }
+          %b26 = block {  # body
+            %91:u32 = load %innerRow
+            %92:bool = lt %91, 4u
+            if %92 [t: %b28, f: %b29] {  # if_9
+              %b28 = block {  # true
+                exit_if  # if_9
+              }
+              %b29 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            loop [i: %b30, b: %b31, c: %b32] {  # loop_4
+              %b30 = block {  # initializer
+                %innerCol:ptr<function, u32, read_write> = var, 0u
+                next_iteration %b31
+              }
+              %b31 = block {  # body
+                %94:u32 = load %innerCol
+                %95:bool = lt %94, %ColPerThreadA
+                if %95 [t: %b33, f: %b34] {  # if_10
+                  %b33 = block {  # true
+                    exit_if  # if_10
+                  }
+                  %b34 = block {  # false
+                    exit_loop  # loop_4
+                  }
+                }
+                %96:u32 = load %innerRow
+                %inputRow:u32 = add %tileRow, %96
+                %98:u32 = load %innerCol
+                %inputCol:u32 = add %tileColA, %98
+                %100:ptr<workgroup, f32, read_write> = access %mm_Asub, %inputRow, %inputCol
+                %101:u32 = load %innerRow
+                %102:u32 = add %globalRow, %101
+                %103:u32 = load %t
+                %104:u32 = mul %103, 64u
+                %105:u32 = add %104, %inputCol
+                %106:f32 = call %mm_readA, %102, %105
+                store %100, %106
+                continue %b32
+              }
+              %b32 = block {  # continuing
+                %107:u32 = load %innerCol
+                %108:u32 = add %107, 1u
+                store %innerCol, %108
+                next_iteration %b31
+              }
+            }
+            continue %b27
+          }
+          %b27 = block {  # continuing
+            %109:u32 = load %innerRow
+            %110:u32 = add %109, 1u
+            store %innerRow, %110
+            next_iteration %b26
+          }
+        }
+        loop [i: %b35, b: %b36, c: %b37] {  # loop_5
+          %b35 = block {  # initializer
+            %innerRow_1:ptr<function, u32, read_write> = var, 0u  # %innerRow_1: 'innerRow'
+            next_iteration %b36
+          }
+          %b36 = block {  # body
+            %112:u32 = load %innerRow_1
+            %113:bool = lt %112, %RowPerThreadB
+            if %113 [t: %b38, f: %b39] {  # if_11
+              %b38 = block {  # true
+                exit_if  # if_11
+              }
+              %b39 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            loop [i: %b40, b: %b41, c: %b42] {  # loop_6
+              %b40 = block {  # initializer
+                %innerCol_1:ptr<function, u32, read_write> = var, 0u  # %innerCol_1: 'innerCol'
+                next_iteration %b41
+              }
+              %b41 = block {  # body
+                %115:u32 = load %innerCol_1
+                %116:bool = lt %115, 4u
+                if %116 [t: %b43, f: %b44] {  # if_12
+                  %b43 = block {  # true
+                    exit_if  # if_12
+                  }
+                  %b44 = block {  # false
+                    exit_loop  # loop_6
+                  }
+                }
+                %117:u32 = load %innerRow_1
+                %inputRow_1:u32 = add %tileRowB, %117  # %inputRow_1: 'inputRow'
+                %119:u32 = load %innerCol_1
+                %inputCol_1:u32 = add %tileCol, %119  # %inputCol_1: 'inputCol'
+                %121:u32 = load %innerCol_1
+                %122:ptr<workgroup, f32, read_write> = access %mm_Bsub, %121, %inputCol_1
+                %123:u32 = load %t
+                %124:u32 = mul %123, 64u
+                %125:u32 = add %124, %inputRow_1
+                %126:u32 = load %innerCol_1
+                %127:u32 = add %globalCol, %126
+                %128:f32 = call %mm_readB, %125, %127
+                store %122, %128
+                continue %b42
+              }
+              %b42 = block {  # continuing
+                %129:u32 = load %innerCol_1
+                %130:u32 = add %129, 1u
+                store %innerCol_1, %130
+                next_iteration %b41
+              }
+            }
+            continue %b37
+          }
+          %b37 = block {  # continuing
+            %131:u32 = load %innerRow_1
+            %132:u32 = add %131, 1u
+            store %innerRow_1, %132
+            next_iteration %b36
+          }
+        }
+        %133:void = workgroupBarrier
+        loop [i: %b45, b: %b46, c: %b47] {  # loop_7
+          %b45 = block {  # initializer
+            %k:ptr<function, u32, read_write> = var, 0u
+            next_iteration %b46
+          }
+          %b46 = block {  # body
+            %135:u32 = load %k
+            %136:bool = lt %135, 64u
+            if %136 [t: %b48, f: %b49] {  # if_13
+              %b48 = block {  # true
+                exit_if  # if_13
+              }
+              %b49 = block {  # false
+                exit_loop  # loop_7
+              }
+            }
+            loop [i: %b50, b: %b51, c: %b52] {  # loop_8
+              %b50 = block {  # initializer
+                %inner:ptr<function, u32, read_write> = var, 0u
+                next_iteration %b51
+              }
+              %b51 = block {  # body
+                %138:u32 = load %inner
+                %139:bool = lt %138, 4u
+                if %139 [t: %b53, f: %b54] {  # if_14
+                  %b53 = block {  # true
+                    exit_if  # if_14
+                  }
+                  %b54 = block {  # false
+                    exit_loop  # loop_8
+                  }
+                }
+                %140:u32 = load %inner
+                %141:ptr<function, f32, read_write> = access %BCached, %140
+                %142:u32 = load %k
+                %143:u32 = load %inner
+                %144:u32 = add %tileCol, %143
+                %145:ptr<workgroup, f32, read_write> = access %mm_Bsub, %142, %144
+                %146:f32 = load %145
+                store %141, %146
+                continue %b52
+              }
+              %b52 = block {  # continuing
+                %147:u32 = load %inner
+                %148:u32 = add %147, 1u
+                store %inner, %148
+                next_iteration %b51
+              }
+            }
+            loop [i: %b55, b: %b56, c: %b57] {  # loop_9
+              %b55 = block {  # initializer
+                %innerRow_2:ptr<function, u32, read_write> = var, 0u  # %innerRow_2: 'innerRow'
+                next_iteration %b56
+              }
+              %b56 = block {  # body
+                %150:u32 = load %innerRow_2
+                %151:bool = lt %150, 4u
+                if %151 [t: %b58, f: %b59] {  # if_15
+                  %b58 = block {  # true
+                    exit_if  # if_15
+                  }
+                  %b59 = block {  # false
+                    exit_loop  # loop_9
+                  }
+                }
+                %152:u32 = load %innerRow_2
+                %153:u32 = add %tileRow, %152
+                %154:u32 = load %k
+                %155:ptr<workgroup, f32, read_write> = access %mm_Asub, %153, %154
+                %156:f32 = load %155
+                store %ACached, %156
+                loop [i: %b60, b: %b61, c: %b62] {  # loop_10
+                  %b60 = block {  # initializer
+                    %innerCol_2:ptr<function, u32, read_write> = var, 0u  # %innerCol_2: 'innerCol'
+                    next_iteration %b61
+                  }
+                  %b61 = block {  # body
+                    %158:u32 = load %innerCol_2
+                    %159:bool = lt %158, 4u
+                    if %159 [t: %b63, f: %b64] {  # if_16
+                      %b63 = block {  # true
+                        exit_if  # if_16
+                      }
+                      %b64 = block {  # false
+                        exit_loop  # loop_10
+                      }
+                    }
+                    %160:u32 = load %innerRow_2
+                    %161:u32 = mul %160, 4u
+                    %162:u32 = load %innerCol_2
+                    %index_2:u32 = add %161, %162  # %index_2: 'index'
+                    %164:ptr<function, f32, read_write> = access %acc, %index_2
+                    %165:ptr<function, f32, read_write> = access %acc, %index_2
+                    %166:f32 = load %165
+                    %167:f32 = load %ACached
+                    %168:u32 = load %innerCol_2
+                    %169:ptr<function, f32, read_write> = access %BCached, %168
+                    %170:f32 = load %169
+                    %171:f32 = mul %167, %170
+                    %172:f32 = add %166, %171
+                    store %164, %172
+                    continue %b62
+                  }
+                  %b62 = block {  # continuing
+                    %173:u32 = load %innerCol_2
+                    %174:u32 = add %173, 1u
+                    store %innerCol_2, %174
+                    next_iteration %b61
+                  }
+                }
+                continue %b57
+              }
+              %b57 = block {  # continuing
+                %175:u32 = load %innerRow_2
+                %176:u32 = add %175, 1u
+                store %innerRow_2, %176
+                next_iteration %b56
+              }
+            }
+            continue %b47
+          }
+          %b47 = block {  # continuing
+            %177:u32 = load %k
+            %178:u32 = add %177, 1u
+            store %k, %178
+            next_iteration %b46
+          }
+        }
+        %179:void = workgroupBarrier
+        continue %b22
+      }
+      %b22 = block {  # continuing
+        %180:u32 = load %t
+        %181:u32 = add %180, 1u
+        store %t, %181
+        next_iteration %b21
+      }
+    }
+    loop [i: %b65, b: %b66, c: %b67] {  # loop_11
+      %b65 = block {  # initializer
+        %innerRow_3:ptr<function, u32, read_write> = var, 0u  # %innerRow_3: 'innerRow'
+        next_iteration %b66
+      }
+      %b66 = block {  # body
+        %183:u32 = load %innerRow_3
+        %184:bool = lt %183, 4u
+        if %184 [t: %b68, f: %b69] {  # if_17
+          %b68 = block {  # true
+            exit_if  # if_17
+          }
+          %b69 = block {  # false
+            exit_loop  # loop_11
+          }
+        }
+        loop [i: %b70, b: %b71, c: %b72] {  # loop_12
+          %b70 = block {  # initializer
+            %innerCol_3:ptr<function, u32, read_write> = var, 0u  # %innerCol_3: 'innerCol'
+            next_iteration %b71
+          }
+          %b71 = block {  # body
+            %186:u32 = load %innerCol_3
+            %187:bool = lt %186, 4u
+            if %187 [t: %b73, f: %b74] {  # if_18
+              %b73 = block {  # true
+                exit_if  # if_18
+              }
+              %b74 = block {  # false
+                exit_loop  # loop_12
+              }
+            }
+            %188:u32 = load %innerRow_3
+            %189:u32 = mul %188, 4u
+            %190:u32 = load %innerCol_3
+            %index_3:u32 = add %189, %190  # %index_3: 'index'
+            %192:u32 = load %innerRow_3
+            %193:u32 = add %globalRow, %192
+            %194:u32 = load %innerCol_3
+            %195:u32 = add %globalCol, %194
+            %196:ptr<function, f32, read_write> = access %acc, %index_3
+            %197:f32 = load %196
+            %198:void = call %mm_write, %193, %195, %197
+            continue %b72
+          }
+          %b72 = block {  # continuing
+            %199:u32 = load %innerCol_3
+            %200:u32 = add %199, 1u
+            store %innerCol_3, %200
+            next_iteration %b71
+          }
+        }
+        continue %b67
+      }
+      %b67 = block {  # continuing
+        %201:u32 = load %innerRow_3
+        %202:u32 = add %201, 1u
+        store %innerRow_3, %202
+        next_iteration %b66
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/922.wgsl.expected.ir.msl b/test/tint/bug/tint/922.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1ab7829
--- /dev/null
+++ b/test/tint/bug/tint/922.wgsl.expected.ir.msl
@@ -0,0 +1,395 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Mat4x4_ = struct @align(16) {
+  mx:vec4<f32> @offset(0)
+  my:vec4<f32> @offset(16)
+  mz:vec4<f32> @offset(32)
+  mw:vec4<f32> @offset(48)
+}
+
+ub_SceneParams = struct @align(16) {
+  u_Projection:Mat4x4_ @offset(0)
+}
+
+Mat4x2_ = struct @align(16) {
+  mx:vec4<f32> @offset(0)
+  my:vec4<f32> @offset(16)
+}
+
+ub_MaterialParams = struct @align(16) {
+  u_TexMtx:array<Mat4x2_, 1> @offset(0)
+  u_Misc0_:vec4<f32> @offset(32)
+}
+
+Mat4x3_ = struct @align(16) {
+  mx:vec4<f32> @offset(0)
+  my:vec4<f32> @offset(16)
+  mz:vec4<f32> @offset(32)
+}
+
+ub_PacketParams = struct @align(16) {
+  u_PosMtx:array<Mat4x3_, 32> @offset(0)
+}
+
+VertexOutput = struct @align(16) {
+  v_Color:vec4<f32> @offset(0), @location(0)
+  v_TexCoord:vec2<f32> @offset(16), @location(1)
+  member:vec4<f32> @offset(32), @builtin(position)
+}
+
+%b1 = block {  # root
+  %global:ptr<uniform, ub_SceneParams, read> = var @binding_point(0, 0)
+  %global1:ptr<uniform, ub_MaterialParams, read> = var @binding_point(0, 1)
+  %global2:ptr<uniform, ub_PacketParams, read> = var @binding_point(0, 2)
+  %a_Position1:ptr<private, vec3<f32>, read_write> = var
+  %a_UV1:ptr<private, vec2<f32>, read_write> = var
+  %a_Color1:ptr<private, vec4<f32>, read_write> = var
+  %a_Normal1:ptr<private, vec3<f32>, read_write> = var
+  %a_PosMtxIdx1:ptr<private, f32, read_write> = var
+  %v_Color:ptr<private, vec4<f32>, read_write> = var
+  %v_TexCoord:ptr<private, vec2<f32>, read_write> = var
+  %gl_Position:ptr<private, vec4<f32>, read_write> = var
+}
+
+%Mat4x3GetCol0_ = func(%m:Mat4x3_):vec3<f32> -> %b2 {
+  %b2 = block {
+    %m1:ptr<function, Mat4x3_, read_write> = var
+    store %m1, %m
+    %x_e2:Mat4x3_ = load %m1
+    %x_e5:Mat4x3_ = load %m1
+    %x_e8:Mat4x3_ = load %m1
+    %18:f32 = access %x_e2, 0u, 0u
+    %19:f32 = access %x_e5, 1u, 0u
+    %20:f32 = access %x_e8, 2u, 0u
+    %21:vec3<f32> = construct %18, %19, %20
+    ret %21
+  }
+}
+%Mat4x3GetCol1_ = func(%m2:Mat4x3_):vec3<f32> -> %b3 {
+  %b3 = block {
+    %m3:ptr<function, Mat4x3_, read_write> = var
+    store %m3, %m2
+    %x_e2_1:Mat4x3_ = load %m3  # %x_e2_1: 'x_e2'
+    %x_e5_1:Mat4x3_ = load %m3  # %x_e5_1: 'x_e5'
+    %x_e8_1:Mat4x3_ = load %m3  # %x_e8_1: 'x_e8'
+    %28:f32 = access %x_e2_1, 0u, 1u
+    %29:f32 = access %x_e5_1, 1u, 1u
+    %30:f32 = access %x_e8_1, 2u, 1u
+    %31:vec3<f32> = construct %28, %29, %30
+    ret %31
+  }
+}
+%Mat4x3GetCol2_ = func(%m4:Mat4x3_):vec3<f32> -> %b4 {
+  %b4 = block {
+    %m5:ptr<function, Mat4x3_, read_write> = var
+    store %m5, %m4
+    %x_e2_2:Mat4x3_ = load %m5  # %x_e2_2: 'x_e2'
+    %x_e5_2:Mat4x3_ = load %m5  # %x_e5_2: 'x_e5'
+    %x_e8_2:Mat4x3_ = load %m5  # %x_e8_2: 'x_e8'
+    %38:f32 = access %x_e2_2, 0u, 2u
+    %39:f32 = access %x_e5_2, 1u, 2u
+    %40:f32 = access %x_e8_2, 2u, 2u
+    %41:vec3<f32> = construct %38, %39, %40
+    ret %41
+  }
+}
+%Mat4x3GetCol3_ = func(%m6:Mat4x3_):vec3<f32> -> %b5 {
+  %b5 = block {
+    %m7:ptr<function, Mat4x3_, read_write> = var
+    store %m7, %m6
+    %x_e2_3:Mat4x3_ = load %m7  # %x_e2_3: 'x_e2'
+    %x_e5_3:Mat4x3_ = load %m7  # %x_e5_3: 'x_e5'
+    %x_e8_3:Mat4x3_ = load %m7  # %x_e8_3: 'x_e8'
+    %48:f32 = access %x_e2_3, 0u, 3u
+    %49:f32 = access %x_e5_3, 1u, 3u
+    %50:f32 = access %x_e8_3, 2u, 3u
+    %51:vec3<f32> = construct %48, %49, %50
+    ret %51
+  }
+}
+%Mul = func(%m8:Mat4x4_, %v:vec4<f32>):vec4<f32> -> %b6 {
+  %b6 = block {
+    %m9:ptr<function, Mat4x4_, read_write> = var
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    store %m9, %m8
+    store %v1, %v
+    %x_e4:Mat4x4_ = load %m9
+    %x_e6:vec4<f32> = load %v1
+    %x_e8_4:Mat4x4_ = load %m9  # %x_e8_4: 'x_e8'
+    %x_e10:vec4<f32> = load %v1
+    %x_e12:Mat4x4_ = load %m9
+    %x_e14:vec4<f32> = load %v1
+    %x_e16:Mat4x4_ = load %m9
+    %x_e18:vec4<f32> = load %v1
+    %65:vec4<f32> = access %x_e4, 0u
+    %66:f32 = dot %65, %x_e6
+    %67:vec4<f32> = access %x_e8_4, 1u
+    %68:f32 = dot %67, %x_e10
+    %69:vec4<f32> = access %x_e12, 2u
+    %70:f32 = dot %69, %x_e14
+    %71:vec4<f32> = access %x_e16, 3u
+    %72:f32 = dot %71, %x_e18
+    %73:vec4<f32> = construct %66, %68, %70, %72
+    ret %73
+  }
+}
+%Mul1 = func(%m10:Mat4x3_, %v2:vec4<f32>):vec3<f32> -> %b7 {
+  %b7 = block {
+    %m11:ptr<function, Mat4x3_, read_write> = var
+    %v3:ptr<function, vec4<f32>, read_write> = var
+    store %m11, %m10
+    store %v3, %v2
+    %x_e4_1:Mat4x3_ = load %m11  # %x_e4_1: 'x_e4'
+    %x_e6_1:vec4<f32> = load %v3  # %x_e6_1: 'x_e6'
+    %x_e8_5:Mat4x3_ = load %m11  # %x_e8_5: 'x_e8'
+    %x_e10_1:vec4<f32> = load %v3  # %x_e10_1: 'x_e10'
+    %x_e12_1:Mat4x3_ = load %m11  # %x_e12_1: 'x_e12'
+    %x_e14_1:vec4<f32> = load %v3  # %x_e14_1: 'x_e14'
+    %85:vec4<f32> = access %x_e4_1, 0u
+    %86:f32 = dot %85, %x_e6_1
+    %87:vec4<f32> = access %x_e8_5, 1u
+    %88:f32 = dot %87, %x_e10_1
+    %89:vec4<f32> = access %x_e12_1, 2u
+    %90:f32 = dot %89, %x_e14_1
+    %91:vec3<f32> = construct %86, %88, %90
+    ret %91
+  }
+}
+%Mul2 = func(%m12:Mat4x2_, %v4:vec4<f32>):vec2<f32> -> %b8 {
+  %b8 = block {
+    %m13:ptr<function, Mat4x2_, read_write> = var
+    %v5:ptr<function, vec4<f32>, read_write> = var
+    store %m13, %m12
+    store %v5, %v4
+    %x_e4_2:Mat4x2_ = load %m13  # %x_e4_2: 'x_e4'
+    %x_e6_2:vec4<f32> = load %v5  # %x_e6_2: 'x_e6'
+    %x_e8_6:Mat4x2_ = load %m13  # %x_e8_6: 'x_e8'
+    %x_e10_2:vec4<f32> = load %v5  # %x_e10_2: 'x_e10'
+    %101:vec4<f32> = access %x_e4_2, 0u
+    %102:f32 = dot %101, %x_e6_2
+    %103:vec4<f32> = access %x_e8_6, 1u
+    %104:f32 = dot %103, %x_e10_2
+    %105:vec2<f32> = construct %102, %104
+    ret %105
+  }
+}
+%Mul3 = func(%v6:vec3<f32>, %m14:Mat4x3_):vec4<f32> -> %b9 {
+  %b9 = block {
+    %v7:ptr<function, vec3<f32>, read_write> = var
+    %m15:ptr<function, Mat4x3_, read_write> = var
+    store %v7, %v6
+    store %m15, %m14
+    %x_e5_4:Mat4x3_ = load %m15  # %x_e5_4: 'x_e5'
+    %x_e6_3:vec3<f32> = call %Mat4x3GetCol0_, %x_e5_4  # %x_e6_3: 'x_e6'
+    %x_e7:vec3<f32> = load %v7
+    %x_e10_3:Mat4x3_ = load %m15  # %x_e10_3: 'x_e10'
+    %x_e11:vec3<f32> = call %Mat4x3GetCol1_, %x_e10_3
+    %x_e12_2:vec3<f32> = load %v7  # %x_e12_2: 'x_e12'
+    %x_e15:Mat4x3_ = load %m15
+    %x_e16_1:vec3<f32> = call %Mat4x3GetCol2_, %x_e15  # %x_e16_1: 'x_e16'
+    %x_e17:vec3<f32> = load %v7
+    %x_e20:Mat4x3_ = load %m15
+    %x_e21:vec3<f32> = call %Mat4x3GetCol3_, %x_e20
+    %x_e22:vec3<f32> = load %v7
+    %123:f32 = dot %x_e6_3, %x_e7
+    %124:f32 = dot %x_e11, %x_e12_2
+    %125:f32 = dot %x_e16_1, %x_e17
+    %126:f32 = dot %x_e21, %x_e22
+    %127:vec4<f32> = construct %123, %124, %125, %126
+    ret %127
+  }
+}
+%x_Mat4x4_ = func(%n:f32):Mat4x4_ -> %b10 {
+  %b10 = block {
+    %n1:ptr<function, f32, read_write> = var
+    %o:ptr<function, Mat4x4_, read_write> = var
+    store %n1, %n
+    %x_e4_3:f32 = load %n1  # %x_e4_3: 'x_e4'
+    %133:ptr<function, vec4<f32>, read_write> = access %o, 0u
+    %134:vec4<f32> = construct %x_e4_3, 0.0f, 0.0f, 0.0f
+    store %133, %134
+    %x_e11_1:f32 = load %n1  # %x_e11_1: 'x_e11'
+    %136:ptr<function, vec4<f32>, read_write> = access %o, 1u
+    %137:vec4<f32> = construct 0.0f, %x_e11_1, 0.0f, 0.0f
+    store %136, %137
+    %x_e18_1:f32 = load %n1  # %x_e18_1: 'x_e18'
+    %139:ptr<function, vec4<f32>, read_write> = access %o, 2u
+    %140:vec4<f32> = construct 0.0f, 0.0f, %x_e18_1, 0.0f
+    store %139, %140
+    %x_e25:f32 = load %n1
+    %142:ptr<function, vec4<f32>, read_write> = access %o, 3u
+    %143:vec4<f32> = construct 0.0f, 0.0f, 0.0f, %x_e25
+    store %142, %143
+    %x_e27:Mat4x4_ = load %o
+    ret %x_e27
+  }
+}
+%x_Mat4x4_1 = func(%m16:Mat4x3_):Mat4x4_ -> %b11 {
+  %b11 = block {
+    %m17:ptr<function, Mat4x3_, read_write> = var
+    %o1:ptr<function, Mat4x4_, read_write> = var
+    store %m17, %m16
+    %x_e4_4:Mat4x4_ = call %x_Mat4x4_, 1.0f  # %x_e4_4: 'x_e4'
+    store %o1, %x_e4_4
+    %x_e7_1:Mat4x3_ = load %m17  # %x_e7_1: 'x_e7'
+    %151:ptr<function, vec4<f32>, read_write> = access %o1, 0u
+    %152:vec4<f32> = access %x_e7_1, 0u
+    store %151, %152
+    %x_e10_4:Mat4x3_ = load %m17  # %x_e10_4: 'x_e10'
+    %154:ptr<function, vec4<f32>, read_write> = access %o1, 1u
+    %155:vec4<f32> = access %x_e10_4, 1u
+    store %154, %155
+    %x_e13:Mat4x3_ = load %m17
+    %157:ptr<function, vec4<f32>, read_write> = access %o1, 2u
+    %158:vec4<f32> = access %x_e13, 2u
+    store %157, %158
+    %x_e15_1:Mat4x4_ = load %o1  # %x_e15_1: 'x_e15'
+    ret %x_e15_1
+  }
+}
+%x_Mat4x4_2 = func(%m18:Mat4x2_):Mat4x4_ -> %b12 {
+  %b12 = block {
+    %m19:ptr<function, Mat4x2_, read_write> = var
+    %o2:ptr<function, Mat4x4_, read_write> = var
+    store %m19, %m18
+    %x_e4_5:Mat4x4_ = call %x_Mat4x4_, 1.0f  # %x_e4_5: 'x_e4'
+    store %o2, %x_e4_5
+    %x_e7_2:Mat4x2_ = load %m19  # %x_e7_2: 'x_e7'
+    %166:ptr<function, vec4<f32>, read_write> = access %o2, 0u
+    %167:vec4<f32> = access %x_e7_2, 0u
+    store %166, %167
+    %x_e10_5:Mat4x2_ = load %m19  # %x_e10_5: 'x_e10'
+    %169:ptr<function, vec4<f32>, read_write> = access %o2, 1u
+    %170:vec4<f32> = access %x_e10_5, 1u
+    store %169, %170
+    %x_e12_3:Mat4x4_ = load %o2  # %x_e12_3: 'x_e12'
+    ret %x_e12_3
+  }
+}
+%x_Mat4x3_ = func(%n2:f32):Mat4x3_ -> %b13 {
+  %b13 = block {
+    %n3:ptr<function, f32, read_write> = var
+    %o3:ptr<function, Mat4x3_, read_write> = var
+    store %n3, %n2
+    %x_e4_6:f32 = load %n3  # %x_e4_6: 'x_e4'
+    %177:ptr<function, vec4<f32>, read_write> = access %o3, 0u
+    %178:vec4<f32> = construct %x_e4_6, 0.0f, 0.0f, 0.0f
+    store %177, %178
+    %x_e11_2:f32 = load %n3  # %x_e11_2: 'x_e11'
+    %180:ptr<function, vec4<f32>, read_write> = access %o3, 1u
+    %181:vec4<f32> = construct 0.0f, %x_e11_2, 0.0f, 0.0f
+    store %180, %181
+    %x_e18_2:f32 = load %n3  # %x_e18_2: 'x_e18'
+    %183:ptr<function, vec4<f32>, read_write> = access %o3, 2u
+    %184:vec4<f32> = construct 0.0f, 0.0f, %x_e18_2, 0.0f
+    store %183, %184
+    %x_e21_1:Mat4x3_ = load %o3  # %x_e21_1: 'x_e21'
+    ret %x_e21_1
+  }
+}
+%x_Mat4x3_1 = func(%m20:Mat4x4_):Mat4x3_ -> %b14 {
+  %b14 = block {
+    %m21:ptr<function, Mat4x4_, read_write> = var
+    %o4:ptr<function, Mat4x3_, read_write> = var
+    store %m21, %m20
+    %x_e4_7:Mat4x4_ = load %m21  # %x_e4_7: 'x_e4'
+    %191:ptr<function, vec4<f32>, read_write> = access %o4, 0u
+    %192:vec4<f32> = access %x_e4_7, 0u
+    store %191, %192
+    %x_e7_3:Mat4x4_ = load %m21  # %x_e7_3: 'x_e7'
+    %194:ptr<function, vec4<f32>, read_write> = access %o4, 1u
+    %195:vec4<f32> = access %x_e7_3, 1u
+    store %194, %195
+    %x_e10_6:Mat4x4_ = load %m21  # %x_e10_6: 'x_e10'
+    %197:ptr<function, vec4<f32>, read_write> = access %o4, 2u
+    %198:vec4<f32> = access %x_e10_6, 2u
+    store %197, %198
+    %x_e12_4:Mat4x3_ = load %o4  # %x_e12_4: 'x_e12'
+    ret %x_e12_4
+  }
+}
+%main1 = func():void -> %b15 {
+  %b15 = block {
+    %t_PosMtx:ptr<function, Mat4x3_, read_write> = var
+    %t_TexSpaceCoord:ptr<function, vec2<f32>, read_write> = var
+    %x_e15_2:f32 = load %a_PosMtxIdx1  # %x_e15_2: 'x_e15'
+    %204:i32 = convert %x_e15_2
+    %205:ptr<uniform, Mat4x3_, read> = access %global2, 0u, %204
+    %x_e18_3:Mat4x3_ = load %205  # %x_e18_3: 'x_e18'
+    store %t_PosMtx, %x_e18_3
+    %x_e23:Mat4x3_ = load %t_PosMtx
+    %x_e24:Mat4x4_ = call %x_Mat4x4_1, %x_e23
+    %x_e25_1:vec3<f32> = load %a_Position1  # %x_e25_1: 'x_e25'
+    %x_e29:Mat4x3_ = load %t_PosMtx
+    %x_e30:Mat4x4_ = call %x_Mat4x4_1, %x_e29
+    %x_e31:vec3<f32> = load %a_Position1
+    %213:vec4<f32> = construct %x_e31, 1.0f
+    %x_e34:vec4<f32> = call %Mul, %x_e30, %213
+    %215:ptr<uniform, Mat4x4_, read> = access %global, 0u
+    %x_e35:Mat4x4_ = load %215
+    %x_e37:Mat4x3_ = load %t_PosMtx
+    %x_e38:Mat4x4_ = call %x_Mat4x4_1, %x_e37
+    %x_e39:vec3<f32> = load %a_Position1
+    %x_e43:Mat4x3_ = load %t_PosMtx
+    %x_e44:Mat4x4_ = call %x_Mat4x4_1, %x_e43
+    %x_e45:vec3<f32> = load %a_Position1
+    %223:vec4<f32> = construct %x_e45, 1.0f
+    %x_e48:vec4<f32> = call %Mul, %x_e44, %223
+    %x_e49:vec4<f32> = call %Mul, %x_e35, %x_e48
+    store %gl_Position, %x_e49
+    %x_e50:vec4<f32> = load %a_Color1
+    store %v_Color, %x_e50
+    %227:ptr<uniform, vec4<f32>, read> = access %global1, 1u
+    %x_e52:vec4<f32> = load %227
+    %229:f32 = access %x_e52, 0u
+    %230:bool = eq %229, 2.0f
+    if %230 [t: %b16, f: %b17] {  # if_1
+      %b16 = block {  # true
+        %x_e59:vec3<f32> = load %a_Normal1
+        %232:ptr<uniform, Mat4x2_, read> = access %global1, 0u, 0i
+        %x_e64:Mat4x2_ = load %232
+        %x_e65:vec3<f32> = load %a_Normal1
+        %235:vec4<f32> = construct %x_e65, 1.0f
+        %x_e68:vec2<f32> = call %Mul2, %x_e64, %235
+        %237:vec2<f32> = swizzle %x_e68, xy
+        store %v_TexCoord, %237
+        ret
+      }
+      %b17 = block {  # false
+        %x_e73:vec2<f32> = load %a_UV1
+        %239:ptr<uniform, Mat4x2_, read> = access %global1, 0u, 0i
+        %x_e79:Mat4x2_ = load %239
+        %x_e80:vec2<f32> = load %a_UV1
+        %242:vec4<f32> = construct %x_e80, 1.0f, 1.0f
+        %x_e84:vec2<f32> = call %Mul2, %x_e79, %242
+        %244:vec2<f32> = swizzle %x_e84, xy
+        store %v_TexCoord, %244
+        ret
+      }
+    }
+    unreachable
+  }
+}
+%tint_symbol = @vertex func(%a_Position:vec3<f32> [@location(0)], %a_UV:vec2<f32> [@location(1)], %a_Color:vec4<f32> [@location(2)], %a_Normal:vec3<f32> [@location(3)], %a_PosMtxIdx:f32 [@location(4)]):VertexOutput -> %b18 {
+  %b18 = block {
+    store %a_Position1, %a_Position
+    store %a_UV1, %a_UV
+    store %a_Color1, %a_Color
+    store %a_Normal1, %a_Normal
+    store %a_PosMtxIdx1, %a_PosMtxIdx
+    %251:void = call %main1
+    %x_e11_3:vec4<f32> = load %v_Color  # %x_e11_3: 'x_e11'
+    %x_e13_1:vec2<f32> = load %v_TexCoord  # %x_e13_1: 'x_e13'
+    %x_e15_3:vec4<f32> = load %gl_Position  # %x_e15_3: 'x_e15'
+    %255:VertexOutput = construct %x_e11_3, %x_e13_1, %x_e15_3
+    ret %255
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/926.wgsl.expected.ir.msl b/test/tint/bug/tint/926.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2a8cef0
--- /dev/null
+++ b/test/tint/bug/tint/926.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: DrawIndirectArgs = struct @align(4) {
+  vertexCount:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %drawOut:ptr<storage, DrawIndirectArgs, read_write> = var @binding_point(0, 5)
+  %cubeVerts:ptr<private, u32, read_write> = var, 0u
+}
+
+%computeMain = @compute @workgroup_size(1, 1, 1) func(%global_id:vec3<u32> [@global_invocation_id]):void -> %b2 {
+  %b2 = block {
+    %5:ptr<storage, atomic<u32>, read_write> = access %drawOut, 0u
+    %6:u32 = load %cubeVerts
+    %firstVertex:u32 = atomicAdd %5, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/942.wgsl.expected.ir.msl b/test/tint/bug/tint/942.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3dad2ff
--- /dev/null
+++ b/test/tint/bug/tint/942.wgsl.expected.ir.msl
@@ -0,0 +1,278 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Params = struct @align(4) {
+  filterDim:u32 @offset(0)
+  blockDim:u32 @offset(4)
+}
+
+Flip = struct @align(4) {
+  value:u32 @offset(0)
+}
+
+%b1 = block {  # root
+  %samp:ptr<handle, sampler, read> = var @binding_point(0, 0)
+  %params:ptr<uniform, Params, read> = var @binding_point(0, 1)
+  %inputTex:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 1)
+  %outputTex:ptr<handle, texture_storage_2d<rgba8unorm, write>, read> = var @binding_point(1, 2)
+  %flip:ptr<uniform, Flip, read> = var @binding_point(1, 3)
+  %tile:ptr<workgroup, array<array<vec3<f32>, 256>, 4>, read_write> = var
+}
+
+%tint_symbol = @compute @workgroup_size(64, 1, 1) func(%WorkGroupID:vec3<u32> [@workgroup_id], %LocalInvocationID:vec3<u32> [@local_invocation_id]):void -> %b2 {
+  %b2 = block {
+    %10:ptr<uniform, u32, read> = access %params, 0u
+    %11:u32 = load %10
+    %12:u32 = sub %11, 1u
+    %filterOffset:u32 = div %12, 2u
+    %14:texture_2d<f32> = load %inputTex
+    %dims:vec2<u32> = textureDimensions %14, 0i
+    %16:vec2<u32> = swizzle %WorkGroupID, xy
+    %17:ptr<uniform, u32, read> = access %params, 1u
+    %18:u32 = load %17
+    %19:vec2<u32> = construct %18, 4u
+    %20:vec2<u32> = mul %16, %19
+    %21:vec2<u32> = swizzle %LocalInvocationID, xy
+    %22:vec2<u32> = mul %21, vec2<u32>(4u, 1u)
+    %23:vec2<u32> = add %20, %22
+    %24:vec2<u32> = construct %filterOffset, 0u
+    %baseIndex:vec2<u32> = sub %23, %24
+    loop [i: %b3, b: %b4, c: %b5] {  # loop_1
+      %b3 = block {  # initializer
+        %r:ptr<function, u32, read_write> = var, 0u
+        next_iteration %b4
+      }
+      %b4 = block {  # body
+        %27:u32 = load %r
+        %28:bool = lt %27, 4u
+        if %28 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        loop [i: %b8, b: %b9, c: %b10] {  # loop_2
+          %b8 = block {  # initializer
+            %c:ptr<function, u32, read_write> = var, 0u
+            next_iteration %b9
+          }
+          %b9 = block {  # body
+            %30:u32 = load %c
+            %31:bool = lt %30, 4u
+            if %31 [t: %b11, f: %b12] {  # if_2
+              %b11 = block {  # true
+                exit_if  # if_2
+              }
+              %b12 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %32:u32 = load %c
+            %33:u32 = load %r
+            %34:vec2<u32> = construct %32, %33
+            %35:vec2<u32> = add %baseIndex, %34
+            %loadIndex:ptr<function, vec2<u32>, read_write> = var, %35
+            %37:ptr<uniform, u32, read> = access %flip, 0u
+            %38:u32 = load %37
+            %39:bool = neq %38, 0u
+            if %39 [t: %b13] {  # if_3
+              %b13 = block {  # true
+                %40:vec2<u32> = load %loadIndex
+                %41:vec2<u32> = swizzle %40, yx
+                store %loadIndex, %41
+                exit_if  # if_3
+              }
+            }
+            %42:u32 = load %r
+            %43:u32 = access %LocalInvocationID, 0u
+            %44:u32 = mul 4u, %43
+            %45:u32 = load %c
+            %46:u32 = add %44, %45
+            %47:ptr<workgroup, vec3<f32>, read_write> = access %tile, %42, %46
+            %48:texture_2d<f32> = load %inputTex
+            %49:sampler = load %samp
+            %50:vec2<u32> = load %loadIndex
+            %51:vec2<f32> = convert %50
+            %52:vec2<f32> = add %51, vec2<f32>(0.25f)
+            %53:vec2<f32> = convert %dims
+            %54:vec2<f32> = div %52, %53
+            %55:vec4<f32> = textureSampleLevel %48, %49, %54, 0.0f
+            %56:vec3<f32> = swizzle %55, xyz
+            store %47, %56
+            continue %b10
+          }
+          %b10 = block {  # continuing
+            %57:u32 = load %c
+            %58:u32 = add %57, 1u
+            store %c, %58
+            next_iteration %b9
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %59:u32 = load %r
+        %60:u32 = add %59, 1u
+        store %r, %60
+        next_iteration %b4
+      }
+    }
+    %61:void = workgroupBarrier
+    loop [i: %b14, b: %b15, c: %b16] {  # loop_3
+      %b14 = block {  # initializer
+        %r_1:ptr<function, u32, read_write> = var, 0u  # %r_1: 'r'
+        next_iteration %b15
+      }
+      %b15 = block {  # body
+        %63:u32 = load %r_1
+        %64:bool = lt %63, 4u
+        if %64 [t: %b17, f: %b18] {  # if_4
+          %b17 = block {  # true
+            exit_if  # if_4
+          }
+          %b18 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        loop [i: %b19, b: %b20, c: %b21] {  # loop_4
+          %b19 = block {  # initializer
+            %c_1:ptr<function, u32, read_write> = var, 0u  # %c_1: 'c'
+            next_iteration %b20
+          }
+          %b20 = block {  # body
+            %66:u32 = load %c_1
+            %67:bool = lt %66, 4u
+            if %67 [t: %b22, f: %b23] {  # if_5
+              %b22 = block {  # true
+                exit_if  # if_5
+              }
+              %b23 = block {  # false
+                exit_loop  # loop_4
+              }
+            }
+            %68:u32 = load %c_1
+            %69:u32 = load %r_1
+            %70:vec2<u32> = construct %68, %69
+            %71:vec2<u32> = add %baseIndex, %70
+            %writeIndex:ptr<function, vec2<u32>, read_write> = var, %71
+            %73:ptr<uniform, u32, read> = access %flip, 0u
+            %74:u32 = load %73
+            %75:bool = neq %74, 0u
+            if %75 [t: %b24] {  # if_6
+              %b24 = block {  # true
+                %76:vec2<u32> = load %writeIndex
+                %77:vec2<u32> = swizzle %76, yx
+                store %writeIndex, %77
+                exit_if  # if_6
+              }
+            }
+            %78:u32 = access %LocalInvocationID, 0u
+            %79:u32 = mul 4u, %78
+            %80:u32 = load %c_1
+            %center:u32 = add %79, %80
+            %82:bool = gte %center, %filterOffset
+            %83:bool = if %82 [t: %b25, f: %b26] {  # if_7
+              %b25 = block {  # true
+                %84:u32 = sub 256u, %filterOffset
+                %85:bool = lt %center, %84
+                exit_if %85  # if_7
+              }
+              %b26 = block {  # false
+                exit_if false  # if_7
+              }
+            }
+            %86:bool = if %83 [t: %b27, f: %b28] {  # if_8
+              %b27 = block {  # true
+                %87:vec2<u32> = load %writeIndex
+                %88:vec2<bool> = lt %87, %dims
+                %89:bool = all %88
+                exit_if %89  # if_8
+              }
+              %b28 = block {  # false
+                exit_if false  # if_8
+              }
+            }
+            if %86 [t: %b29] {  # if_9
+              %b29 = block {  # true
+                %acc:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.0f)
+                loop [i: %b30, b: %b31, c: %b32] {  # loop_5
+                  %b30 = block {  # initializer
+                    %f:ptr<function, u32, read_write> = var, 0u
+                    next_iteration %b31
+                  }
+                  %b31 = block {  # body
+                    %92:u32 = load %f
+                    %93:ptr<uniform, u32, read> = access %params, 0u
+                    %94:u32 = load %93
+                    %95:bool = lt %92, %94
+                    if %95 [t: %b33, f: %b34] {  # if_10
+                      %b33 = block {  # true
+                        exit_if  # if_10
+                      }
+                      %b34 = block {  # false
+                        exit_loop  # loop_5
+                      }
+                    }
+                    %96:u32 = load %f
+                    %97:u32 = add %center, %96
+                    %98:u32 = sub %97, %filterOffset
+                    %i:ptr<function, u32, read_write> = var, %98
+                    %100:vec3<f32> = load %acc
+                    %101:ptr<uniform, u32, read> = access %params, 0u
+                    %102:u32 = load %101
+                    %103:f32 = convert %102
+                    %104:f32 = div 1.0f, %103
+                    %105:u32 = load %r_1
+                    %106:u32 = load %i
+                    %107:ptr<workgroup, vec3<f32>, read_write> = access %tile, %105, %106
+                    %108:vec3<f32> = load %107
+                    %109:vec3<f32> = mul %104, %108
+                    %110:vec3<f32> = add %100, %109
+                    store %acc, %110
+                    continue %b32
+                  }
+                  %b32 = block {  # continuing
+                    %111:u32 = load %f
+                    %112:u32 = add %111, 1u
+                    store %f, %112
+                    next_iteration %b31
+                  }
+                }
+                %113:texture_storage_2d<rgba8unorm, write> = load %outputTex
+                %114:vec2<u32> = load %writeIndex
+                %115:vec3<f32> = load %acc
+                %116:vec4<f32> = construct %115, 1.0f
+                %117:void = textureStore %113, %114, %116
+                exit_if  # if_9
+              }
+            }
+            continue %b21
+          }
+          %b21 = block {  # continuing
+            %118:u32 = load %c_1
+            %119:u32 = add %118, 1u
+            store %c_1, %119
+            next_iteration %b20
+          }
+        }
+        continue %b16
+      }
+      %b16 = block {  # continuing
+        %120:u32 = load %r_1
+        %121:u32 = add %120, 1u
+        store %r_1, %121
+        next_iteration %b15
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/948.wgsl.expected.ir.msl b/test/tint/bug/tint/948.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d3af39e
--- /dev/null
+++ b/test/tint/bug/tint/948.wgsl.expected.ir.msl
@@ -0,0 +1,381 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: LeftOver = struct @align(16) {
+  time:f32 @offset(0)
+  padding:u32 @offset(4)
+  worldViewProjection:mat4x4<f32> @offset(16)
+  outputSize:vec2<f32> @offset(80)
+  stageSize:vec2<f32> @offset(88)
+  spriteMapSize:vec2<f32> @offset(96)
+  stageScale:f32 @offset(104)
+  spriteCount:f32 @offset(108)
+  colorMul:vec3<f32> @offset(112)
+}
+
+main_out = struct @align(16) {
+  glFragColor_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_20:ptr<uniform, LeftOver, read> = var @binding_point(2, 9)
+  %frameMapTexture:ptr<handle, texture_2d<f32>, read> = var @binding_point(2, 3)
+  %frameMapSampler:ptr<handle, sampler, read> = var @binding_point(2, 2)
+  %tUV:ptr<private, vec2<f32>, read_write> = var
+  %tileMapsTexture0:ptr<handle, texture_2d<f32>, read> = var @binding_point(2, 5)
+  %tileMapsSampler:ptr<handle, sampler, read> = var @binding_point(2, 4)
+  %tileMapsTexture1:ptr<handle, texture_2d<f32>, read> = var @binding_point(2, 6)
+  %animationMapTexture:ptr<handle, texture_2d<f32>, read> = var @binding_point(2, 8)
+  %animationMapSampler:ptr<handle, sampler, read> = var @binding_point(2, 7)
+  %mt:ptr<private, f32, read_write> = var
+  %spriteSheetTexture:ptr<handle, texture_2d<f32>, read> = var @binding_point(2, 1)
+  %spriteSheetSampler:ptr<handle, sampler, read> = var @binding_point(2, 0)
+  %glFragColor:ptr<private, vec4<f32>, read_write> = var
+  %tileID_1:ptr<private, vec2<f32>, read_write> = var
+  %levelUnits:ptr<private, vec2<f32>, read_write> = var
+  %stageUnits_1:ptr<private, vec2<f32>, read_write> = var
+  %vPosition:ptr<private, vec3<f32>, read_write> = var
+  %vUV:ptr<private, vec2<f32>, read_write> = var
+}
+
+%getFrameData_f1_ = func(%frameID:ptr<function, f32, read_write>):mat4x4<f32> -> %b2 {
+  %b2 = block {
+    %fX:ptr<function, f32, read_write> = var
+    %x_15:f32 = load %frameID
+    %23:ptr<uniform, f32, read> = access %x_20, 7u
+    %x_25:f32 = load %23
+    %25:f32 = div %x_15, %x_25
+    store %fX, %25
+    %x_37:f32 = load %fX
+    %27:texture_2d<f32> = load %frameMapTexture
+    %28:sampler = load %frameMapSampler
+    %29:vec2<f32> = construct %x_37, 0.0f
+    %x_40:vec4<f32> = textureSampleBias %27, %28, %29, 0.0f
+    %x_44:f32 = load %fX
+    %32:texture_2d<f32> = load %frameMapTexture
+    %33:sampler = load %frameMapSampler
+    %34:vec2<f32> = construct %x_44, 0.25f
+    %x_47:vec4<f32> = textureSampleBias %32, %33, %34, 0.0f
+    %x_51:f32 = load %fX
+    %37:texture_2d<f32> = load %frameMapTexture
+    %38:sampler = load %frameMapSampler
+    %39:vec2<f32> = construct %x_51, 0.5f
+    %x_54:vec4<f32> = textureSampleBias %37, %38, %39, 0.0f
+    %41:f32 = access %x_40, 0u
+    %42:f32 = access %x_40, 1u
+    %43:f32 = access %x_40, 2u
+    %44:f32 = access %x_40, 3u
+    %45:vec4<f32> = construct %41, %42, %43, %44
+    %46:f32 = access %x_47, 0u
+    %47:f32 = access %x_47, 1u
+    %48:f32 = access %x_47, 2u
+    %49:f32 = access %x_47, 3u
+    %50:vec4<f32> = construct %46, %47, %48, %49
+    %51:f32 = access %x_54, 0u
+    %52:f32 = access %x_54, 1u
+    %53:f32 = access %x_54, 2u
+    %54:f32 = access %x_54, 3u
+    %55:vec4<f32> = construct %51, %52, %53, %54
+    %56:mat4x4<f32> = construct %45, %50, %55, vec4<f32>(0.0f)
+    ret %56
+  }
+}
+%main_1 = func():void -> %b3 {
+  %b3 = block {
+    %color:ptr<function, vec4<f32>, read_write> = var
+    %tileUV:ptr<function, vec2<f32>, read_write> = var
+    %tileID:ptr<function, vec2<f32>, read_write> = var
+    %sheetUnits:ptr<function, vec2<f32>, read_write> = var
+    %spriteUnits:ptr<function, f32, read_write> = var
+    %stageUnits:ptr<function, vec2<f32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %frameID_1:ptr<function, f32, read_write> = var
+    %animationData:ptr<function, vec4<f32>, read_write> = var
+    %f:ptr<function, f32, read_write> = var
+    %frameData:ptr<function, mat4x4<f32>, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %frameSize:ptr<function, vec2<f32>, read_write> = var
+    %offset_1:ptr<function, vec2<f32>, read_write> = var
+    %ratio:ptr<function, vec2<f32>, read_write> = var
+    %nc:ptr<function, vec4<f32>, read_write> = var
+    %alpha:ptr<function, f32, read_write> = var
+    %mixed:ptr<function, vec3<f32>, read_write> = var
+    store %color, vec4<f32>(0.0f)
+    %x_86:vec2<f32> = load %tUV
+    %77:vec2<f32> = fract %x_86
+    store %tileUV, %77
+    %x_91:f32 = load_vector_element %tileUV, 1u
+    %79:f32 = sub 1.0f, %x_91
+    store_vector_element %tileUV, 1u, %79
+    %x_95:vec2<f32> = load %tUV
+    %81:vec2<f32> = floor %x_95
+    store %tileID, %81
+    %82:ptr<uniform, vec2<f32>, read> = access %x_20, 5u
+    %x_101:vec2<f32> = load %82
+    %84:vec2<f32> = div vec2<f32>(1.0f), %x_101
+    store %sheetUnits, %84
+    %85:ptr<uniform, f32, read> = access %x_20, 7u
+    %x_106:f32 = load %85
+    %87:f32 = div 1.0f, %x_106
+    store %spriteUnits, %87
+    %88:ptr<uniform, vec2<f32>, read> = access %x_20, 4u
+    %x_111:vec2<f32> = load %88
+    %90:vec2<f32> = div vec2<f32>(1.0f), %x_111
+    store %stageUnits, %90
+    store %i, 0i
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %x_122:i32 = load %i
+        %92:bool = lt %x_122, 2i
+        if %92 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_126:i32 = load %i
+        switch %x_126 [c: (1i, %b8), c: (0i, %b9), c: (default, %b10)] {  # switch_1
+          %b8 = block {  # case
+            %x_150:vec2<f32> = load %tileID
+            %95:ptr<uniform, vec2<f32>, read> = access %x_20, 4u
+            %x_154:vec2<f32> = load %95
+            %97:texture_2d<f32> = load %tileMapsTexture1
+            %98:sampler = load %tileMapsSampler
+            %99:vec2<f32> = add %x_150, vec2<f32>(0.5f)
+            %100:vec2<f32> = div %99, %x_154
+            %x_156:vec4<f32> = textureSampleBias %97, %98, %100, 0.0f
+            %102:f32 = access %x_156, 0u
+            store %frameID_1, %102
+            exit_switch  # switch_1
+          }
+          %b9 = block {  # case
+            %x_136:vec2<f32> = load %tileID
+            %104:ptr<uniform, vec2<f32>, read> = access %x_20, 4u
+            %x_140:vec2<f32> = load %104
+            %106:texture_2d<f32> = load %tileMapsTexture0
+            %107:sampler = load %tileMapsSampler
+            %108:vec2<f32> = add %x_136, vec2<f32>(0.5f)
+            %109:vec2<f32> = div %108, %x_140
+            %x_142:vec4<f32> = textureSampleBias %106, %107, %109, 0.0f
+            %111:f32 = access %x_142, 0u
+            store %frameID_1, %111
+            exit_switch  # switch_1
+          }
+          %b10 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %x_166:f32 = load %frameID_1
+        %113:ptr<uniform, f32, read> = access %x_20, 7u
+        %x_169:f32 = load %113
+        %115:texture_2d<f32> = load %animationMapTexture
+        %116:sampler = load %animationMapSampler
+        %117:f32 = add %x_166, 0.5f
+        %118:f32 = div %117, %x_169
+        %119:vec2<f32> = construct %118, 0.0f
+        %x_172:vec4<f32> = textureSampleBias %115, %116, %119, 0.0f
+        store %animationData, %x_172
+        %x_174:f32 = load_vector_element %animationData, 1u
+        %122:bool = gt %x_174, 0.0f
+        if %122 [t: %b11] {  # if_2
+          %b11 = block {  # true
+            %123:ptr<uniform, f32, read> = access %x_20, 0u
+            %x_181:f32 = load %123
+            %x_184:f32 = load_vector_element %animationData, 2u
+            %126:f32 = mul %x_181, %x_184
+            %127:f32 = mod %126, 1.0f
+            store %mt, %127
+            store %f, 0.0f
+            loop [b: %b12, c: %b13] {  # loop_2
+              %b12 = block {  # body
+                %x_193:f32 = load %f
+                %129:bool = lt %x_193, 8.0f
+                if %129 [t: %b14, f: %b15] {  # if_3
+                  %b14 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b15 = block {  # false
+                    exit_loop  # loop_2
+                  }
+                }
+                %x_197:f32 = load_vector_element %animationData, 1u
+                %x_198:f32 = load %mt
+                %132:bool = gt %x_197, %x_198
+                if %132 [t: %b16] {  # if_4
+                  %b16 = block {  # true
+                    %x_203:f32 = load_vector_element %animationData, 0u
+                    store %frameID_1, %x_203
+                    exit_loop  # loop_2
+                  }
+                }
+                %x_208:f32 = load %frameID_1
+                %135:ptr<uniform, f32, read> = access %x_20, 7u
+                %x_211:f32 = load %135
+                %x_214:f32 = load %f
+                %x_217:vec4<f32> = let vec4<f32>(0.0f)
+                store %animationData, %x_217
+                continue %b13
+              }
+              %b13 = block {  # continuing
+                %x_218:f32 = load %f
+                %140:f32 = add %x_218, 1.0f
+                store %f, %140
+                next_iteration %b12
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        %x_222:f32 = load %frameID_1
+        %142:f32 = add %x_222, 0.5f
+        store %param, %142
+        %x_225:mat4x4<f32> = call %getFrameData_f1_, %param
+        store %frameData, %x_225
+        %144:ptr<function, vec4<f32>, read_write> = access %frameData, 0i
+        %x_228:vec4<f32> = load %144
+        %146:ptr<uniform, vec2<f32>, read> = access %x_20, 5u
+        %x_231:vec2<f32> = load %146
+        %148:f32 = access %x_228, 3u
+        %149:f32 = access %x_228, 2u
+        %150:vec2<f32> = construct %148, %149
+        %151:vec2<f32> = div %150, %x_231
+        store %frameSize, %151
+        %152:ptr<function, vec4<f32>, read_write> = access %frameData, 0i
+        %x_235:vec4<f32> = load %152
+        %x_237:vec2<f32> = load %sheetUnits
+        %155:f32 = access %x_235, 0u
+        %156:f32 = access %x_235, 1u
+        %157:vec2<f32> = construct %155, %156
+        %158:vec2<f32> = mul %157, %x_237
+        store %offset_1, %158
+        %159:ptr<function, vec4<f32>, read_write> = access %frameData, 2i
+        %x_241:vec4<f32> = load %159
+        %161:ptr<function, vec4<f32>, read_write> = access %frameData, 0i
+        %x_244:vec4<f32> = load %161
+        %163:f32 = access %x_241, 0u
+        %164:f32 = access %x_241, 1u
+        %165:vec2<f32> = construct %163, %164
+        %166:f32 = access %x_244, 3u
+        %167:f32 = access %x_244, 2u
+        %168:vec2<f32> = construct %166, %167
+        %169:vec2<f32> = div %165, %168
+        store %ratio, %169
+        %170:ptr<function, vec4<f32>, read_write> = access %frameData, 2i
+        %x_248:f32 = load_vector_element %170, 2u
+        %172:bool = eq %x_248, 1.0f
+        if %172 [t: %b17] {  # if_5
+          %b17 = block {  # true
+            %x_252:vec2<f32> = load %tileUV
+            %174:f32 = access %x_252, 1u
+            %175:f32 = access %x_252, 0u
+            %176:vec2<f32> = construct %174, %175
+            store %tileUV, %176
+            exit_if  # if_5
+          }
+        }
+        %x_254:i32 = load %i
+        %178:bool = eq %x_254, 0i
+        if %178 [t: %b18, f: %b19] {  # if_6
+          %b18 = block {  # true
+            %x_263:vec2<f32> = load %tileUV
+            %x_264:vec2<f32> = load %frameSize
+            %x_266:vec2<f32> = load %offset_1
+            %182:texture_2d<f32> = load %spriteSheetTexture
+            %183:sampler = load %spriteSheetSampler
+            %184:vec2<f32> = mul %x_263, %x_264
+            %185:vec2<f32> = add %184, %x_266
+            %x_268:vec4<f32> = textureSample %182, %183, %185
+            store %color, %x_268
+            exit_if  # if_6
+          }
+          %b19 = block {  # false
+            %x_274:vec2<f32> = load %tileUV
+            %x_275:vec2<f32> = load %frameSize
+            %x_277:vec2<f32> = load %offset_1
+            %190:texture_2d<f32> = load %spriteSheetTexture
+            %191:sampler = load %spriteSheetSampler
+            %192:vec2<f32> = mul %x_274, %x_275
+            %193:vec2<f32> = add %192, %x_277
+            %x_279:vec4<f32> = textureSample %190, %191, %193
+            store %nc, %x_279
+            %x_283:f32 = load_vector_element %color, 3u
+            %x_285:f32 = load_vector_element %nc, 3u
+            %197:f32 = add %x_283, %x_285
+            %198:f32 = min %197, 1.0f
+            store %alpha, %198
+            %x_290:vec4<f32> = load %color
+            %x_292:vec4<f32> = load %nc
+            %x_295:f32 = load_vector_element %nc, 3u
+            %202:f32 = access %x_290, 0u
+            %203:f32 = access %x_290, 1u
+            %204:f32 = access %x_290, 2u
+            %205:vec3<f32> = construct %202, %203, %204
+            %206:f32 = access %x_292, 0u
+            %207:f32 = access %x_292, 1u
+            %208:f32 = access %x_292, 2u
+            %209:vec3<f32> = construct %206, %207, %208
+            %210:vec3<f32> = construct %x_295, %x_295, %x_295
+            %211:vec3<f32> = mix %205, %209, %210
+            store %mixed, %211
+            %x_298:vec3<f32> = load %mixed
+            %x_299:f32 = load %alpha
+            %214:f32 = access %x_298, 0u
+            %215:f32 = access %x_298, 1u
+            %216:f32 = access %x_298, 2u
+            %217:vec4<f32> = construct %214, %215, %216, %x_299
+            store %color, %217
+            exit_if  # if_6
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %x_304:i32 = load %i
+        %219:i32 = add %x_304, 1i
+        store %i, %219
+        next_iteration %b4
+      }
+    }
+    %220:ptr<uniform, vec3<f32>, read> = access %x_20, 8u
+    %x_310:vec3<f32> = load %220
+    %x_311:vec4<f32> = load %color
+    %223:f32 = access %x_311, 0u
+    %224:f32 = access %x_311, 1u
+    %225:f32 = access %x_311, 2u
+    %226:vec3<f32> = construct %223, %224, %225
+    %x_313:vec3<f32> = mul %226, %x_310
+    %x_314:vec4<f32> = load %color
+    %229:f32 = access %x_313, 0u
+    %230:f32 = access %x_313, 1u
+    %231:f32 = access %x_313, 2u
+    %232:f32 = access %x_314, 3u
+    %233:vec4<f32> = construct %229, %230, %231, %232
+    store %color, %233
+    %x_318:vec4<f32> = load %color
+    store %glFragColor, %x_318
+    ret
+  }
+}
+%tint_symbol = @fragment func(%tUV_param:vec2<f32> [@location(2)], %tileID_1_param:vec2<f32> [@location(5)], %levelUnits_param:vec2<f32> [@location(4)], %stageUnits_1_param:vec2<f32> [@location(3)], %vPosition_param:vec3<f32> [@location(0)], %vUV_param:vec2<f32> [@location(1)]):main_out -> %b20 {
+  %b20 = block {
+    store %tUV, %tUV_param
+    store %tileID_1, %tileID_1_param
+    store %levelUnits, %levelUnits_param
+    store %stageUnits_1, %stageUnits_1_param
+    store %vPosition, %vPosition_param
+    store %vUV, %vUV_param
+    %242:void = call %main_1
+    %243:vec4<f32> = load %glFragColor
+    %244:main_out = construct %243
+    ret %244
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/949.wgsl.expected.ir.msl b/test/tint/bug/tint/949.wgsl.expected.ir.msl
new file mode 100644
index 0000000..84c7e57
--- /dev/null
+++ b/test/tint/bug/tint/949.wgsl.expected.ir.msl
@@ -0,0 +1,673 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: LeftOver = struct @align(16) {
+  u_World:mat4x4<f32> @offset(0)
+  u_ViewProjection:mat4x4<f32> @offset(64)
+  u_bumpStrength:f32 @offset(128)
+  padding:u32 @offset(132)
+  u_cameraPosition:vec3<f32> @offset(144)
+  u_parallaxScale:f32 @offset(156)
+  textureInfoName:f32 @offset(160)
+  padding_1:u32 @offset(164)
+  tangentSpaceParameter0:vec2<f32> @offset(168)
+}
+
+Light0 = struct @align(16) {
+  vLightData:vec4<f32> @offset(0)
+  vLightDiffuse:vec4<f32> @offset(16)
+  vLightSpecular:vec4<f32> @offset(32)
+  vLightGround:vec3<f32> @offset(48)
+  padding_2:u32 @offset(60)
+  shadowsInfo:vec4<f32> @offset(64)
+  depthValues:vec2<f32> @offset(80)
+}
+
+lightingInfo = struct @align(16) {
+  diffuse:vec3<f32> @offset(0)
+  specular:vec3<f32> @offset(16)
+}
+
+main_out = struct @align(16) {
+  glFragColor_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %u_Float:ptr<private, f32, read_write> = var
+  %u_Color:ptr<private, vec3<f32>, read_write> = var
+  %TextureSamplerTexture:ptr<handle, texture_2d<f32>, read> = var @binding_point(2, 1)
+  %TextureSamplerSampler:ptr<handle, sampler, read> = var @binding_point(2, 0)
+  %vMainuv:ptr<private, vec2<f32>, read_write> = var
+  %x_269:ptr<uniform, LeftOver, read> = var @binding_point(2, 6)
+  %v_output1:ptr<private, vec4<f32>, read_write> = var
+  %gl_FrontFacing:ptr<private, bool, read_write> = var
+  %v_uv:ptr<private, vec2<f32>, read_write> = var
+  %v_output2:ptr<private, vec4<f32>, read_write> = var
+  %TextureSampler1Texture:ptr<handle, texture_2d<f32>, read> = var @binding_point(2, 3)
+  %TextureSampler1Sampler:ptr<handle, sampler, read> = var @binding_point(2, 2)
+  %light0:ptr<uniform, Light0, read> = var @binding_point(0, 5)
+  %glFragColor:ptr<private, vec4<f32>, read_write> = var
+  %bumpSamplerSampler:ptr<handle, sampler, read> = var @binding_point(2, 4)
+  %bumpSamplerTexture:ptr<handle, texture_2d<f32>, read> = var @binding_point(2, 5)
+}
+
+%cotangent_frame_vf3_vf3_vf2_vf2_ = func(%normal_1:ptr<function, vec3<f32>, read_write>, %p:ptr<function, vec3<f32>, read_write>, %uv:ptr<function, vec2<f32>, read_write>, %tangentSpaceParams:ptr<function, vec2<f32>, read_write>):mat3x3<f32> -> %b2 {
+  %b2 = block {
+    %dp1:ptr<function, vec3<f32>, read_write> = var
+    %dp2:ptr<function, vec3<f32>, read_write> = var
+    %duv1:ptr<function, vec2<f32>, read_write> = var
+    %duv2:ptr<function, vec2<f32>, read_write> = var
+    %dp2perp:ptr<function, vec3<f32>, read_write> = var
+    %dp1perp:ptr<function, vec3<f32>, read_write> = var
+    %tangent:ptr<function, vec3<f32>, read_write> = var
+    %bitangent:ptr<function, vec3<f32>, read_write> = var
+    %invmax:ptr<function, f32, read_write> = var
+    %x_133:vec3<f32> = load %p
+    %32:vec3<f32> = dpdx %x_133
+    store %dp1, %32
+    %x_136:vec3<f32> = load %p
+    %34:vec3<f32> = dpdy %x_136
+    store %dp2, %34
+    %x_139:vec2<f32> = load %uv
+    %36:vec2<f32> = dpdx %x_139
+    store %duv1, %36
+    %x_142:vec2<f32> = load %uv
+    %38:vec2<f32> = dpdy %x_142
+    store %duv2, %38
+    %x_145:vec3<f32> = load %dp2
+    %x_146:vec3<f32> = load %normal_1
+    %41:vec3<f32> = cross %x_145, %x_146
+    store %dp2perp, %41
+    %x_149:vec3<f32> = load %normal_1
+    %x_150:vec3<f32> = load %dp1
+    %44:vec3<f32> = cross %x_149, %x_150
+    store %dp1perp, %44
+    %x_153:vec3<f32> = load %dp2perp
+    %x_155:f32 = load_vector_element %duv1, 0u
+    %x_157:vec3<f32> = load %dp1perp
+    %x_159:f32 = load_vector_element %duv2, 0u
+    %49:vec3<f32> = mul %x_153, %x_155
+    %50:vec3<f32> = mul %x_157, %x_159
+    %51:vec3<f32> = add %49, %50
+    store %tangent, %51
+    %x_163:vec3<f32> = load %dp2perp
+    %x_165:f32 = load_vector_element %duv1, 1u
+    %x_167:vec3<f32> = load %dp1perp
+    %x_169:f32 = load_vector_element %duv2, 1u
+    %56:vec3<f32> = mul %x_163, %x_165
+    %57:vec3<f32> = mul %x_167, %x_169
+    %58:vec3<f32> = add %56, %57
+    store %bitangent, %58
+    %x_173:f32 = load_vector_element %tangentSpaceParams, 0u
+    %x_174:vec3<f32> = load %tangent
+    %61:vec3<f32> = mul %x_174, %x_173
+    store %tangent, %61
+    %x_177:f32 = load_vector_element %tangentSpaceParams, 1u
+    %x_178:vec3<f32> = load %bitangent
+    %64:vec3<f32> = mul %x_178, %x_177
+    store %bitangent, %64
+    %x_181:vec3<f32> = load %tangent
+    %x_182:vec3<f32> = load %tangent
+    %x_184:vec3<f32> = load %bitangent
+    %x_185:vec3<f32> = load %bitangent
+    %69:f32 = dot %x_181, %x_182
+    %70:f32 = dot %x_184, %x_185
+    %71:f32 = max %69, %70
+    %72:f32 = inverseSqrt %71
+    store %invmax, %72
+    %x_189:vec3<f32> = load %tangent
+    %x_190:f32 = load %invmax
+    %x_191:vec3<f32> = mul %x_189, %x_190
+    %x_192:vec3<f32> = load %bitangent
+    %x_193:f32 = load %invmax
+    %x_194:vec3<f32> = mul %x_192, %x_193
+    %x_195:vec3<f32> = load %normal_1
+    %80:f32 = access %x_191, 0u
+    %81:f32 = access %x_191, 1u
+    %82:f32 = access %x_191, 2u
+    %83:vec3<f32> = construct %80, %81, %82
+    %84:f32 = access %x_194, 0u
+    %85:f32 = access %x_194, 1u
+    %86:f32 = access %x_194, 2u
+    %87:vec3<f32> = construct %84, %85, %86
+    %88:f32 = access %x_195, 0u
+    %89:f32 = access %x_195, 1u
+    %90:f32 = access %x_195, 2u
+    %91:vec3<f32> = construct %88, %89, %90
+    %92:mat3x3<f32> = construct %83, %87, %91
+    ret %92
+  }
+}
+%transposeMat3_mf33_ = func(%inMatrix:ptr<function, mat3x3<f32>, read_write>):mat3x3<f32> -> %b3 {
+  %b3 = block {
+    %i0:ptr<function, vec3<f32>, read_write> = var
+    %i1:ptr<function, vec3<f32>, read_write> = var
+    %i2:ptr<function, vec3<f32>, read_write> = var
+    %outMatrix:ptr<function, mat3x3<f32>, read_write> = var
+    %99:ptr<function, vec3<f32>, read_write> = access %inMatrix, 0i
+    %x_60:vec3<f32> = load %99
+    store %i0, %x_60
+    %101:ptr<function, vec3<f32>, read_write> = access %inMatrix, 1i
+    %x_64:vec3<f32> = load %101
+    store %i1, %x_64
+    %103:ptr<function, vec3<f32>, read_write> = access %inMatrix, 2i
+    %x_68:vec3<f32> = load %103
+    store %i2, %x_68
+    %x_73:f32 = load_vector_element %i0, 0u
+    %x_75:f32 = load_vector_element %i1, 0u
+    %x_77:f32 = load_vector_element %i2, 0u
+    %x_78:vec3<f32> = construct %x_73, %x_75, %x_77
+    %x_81:f32 = load_vector_element %i0, 1u
+    %x_83:f32 = load_vector_element %i1, 1u
+    %x_85:f32 = load_vector_element %i2, 1u
+    %x_86:vec3<f32> = construct %x_81, %x_83, %x_85
+    %x_89:f32 = load_vector_element %i0, 2u
+    %x_91:f32 = load_vector_element %i1, 2u
+    %x_93:f32 = load_vector_element %i2, 2u
+    %x_94:vec3<f32> = construct %x_89, %x_91, %x_93
+    %117:f32 = access %x_78, 0u
+    %118:f32 = access %x_78, 1u
+    %119:f32 = access %x_78, 2u
+    %120:vec3<f32> = construct %117, %118, %119
+    %121:f32 = access %x_86, 0u
+    %122:f32 = access %x_86, 1u
+    %123:f32 = access %x_86, 2u
+    %124:vec3<f32> = construct %121, %122, %123
+    %125:f32 = access %x_94, 0u
+    %126:f32 = access %x_94, 1u
+    %127:f32 = access %x_94, 2u
+    %128:vec3<f32> = construct %125, %126, %127
+    %129:mat3x3<f32> = construct %120, %124, %128
+    store %outMatrix, %129
+    %x_110:mat3x3<f32> = load %outMatrix
+    ret %x_110
+  }
+}
+%perturbNormalBase_mf33_vf3_f1_ = func(%cotangentFrame:ptr<function, mat3x3<f32>, read_write>, %normal:ptr<function, vec3<f32>, read_write>, %scale:ptr<function, f32, read_write>):vec3<f32> -> %b4 {
+  %b4 = block {
+    %x_113:mat3x3<f32> = load %cotangentFrame
+    %x_114:vec3<f32> = load %normal
+    %137:vec3<f32> = mul %x_113, %x_114
+    %138:vec3<f32> = normalize %137
+    ret %138
+  }
+}
+%perturbNormal_mf33_vf3_f1_ = func(%cotangentFrame_1:ptr<function, mat3x3<f32>, read_write>, %textureSample:ptr<function, vec3<f32>, read_write>, %scale_1:ptr<function, f32, read_write>):vec3<f32> -> %b5 {
+  %b5 = block {
+    %param:ptr<function, mat3x3<f32>, read_write> = var
+    %param_1:ptr<function, vec3<f32>, read_write> = var
+    %param_2:ptr<function, f32, read_write> = var
+    %x_119:vec3<f32> = load %textureSample
+    %x_125:mat3x3<f32> = load %cotangentFrame_1
+    store %param, %x_125
+    %148:vec3<f32> = mul %x_119, 2.0f
+    %149:vec3<f32> = sub %148, vec3<f32>(1.0f)
+    store %param_1, %149
+    %x_128:f32 = load %scale_1
+    store %param_2, %x_128
+    %x_129:vec3<f32> = call %perturbNormalBase_mf33_vf3_f1_, %param, %param_1, %param_2
+    ret %x_129
+  }
+}
+%computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_ = func(%viewDirectionW:ptr<function, vec3<f32>, read_write>, %vNormal:ptr<function, vec3<f32>, read_write>, %lightData:ptr<function, vec4<f32>, read_write>, %diffuseColor:ptr<function, vec3<f32>, read_write>, %specularColor:ptr<function, vec3<f32>, read_write>, %groundColor:ptr<function, vec3<f32>, read_write>, %glossiness:ptr<function, f32, read_write>):lightingInfo -> %b6 {
+  %b6 = block {
+    %ndl:ptr<function, f32, read_write> = var
+    %result:ptr<function, lightingInfo, read_write> = var
+    %angleW:ptr<function, vec3<f32>, read_write> = var
+    %specComp:ptr<function, f32, read_write> = var
+    %x_212:vec3<f32> = load %vNormal
+    %x_213:vec4<f32> = load %lightData
+    %166:f32 = access %x_213, 0u
+    %167:f32 = access %x_213, 1u
+    %168:f32 = access %x_213, 2u
+    %169:vec3<f32> = construct %166, %167, %168
+    %170:f32 = dot %x_212, %169
+    %171:f32 = mul %170, 0.5f
+    %172:f32 = add %171, 0.5f
+    store %ndl, %172
+    %x_220:vec3<f32> = load %groundColor
+    %x_221:vec3<f32> = load %diffuseColor
+    %x_222:f32 = load %ndl
+    %176:ptr<function, vec3<f32>, read_write> = access %result, 0u
+    %177:vec3<f32> = construct %x_222, %x_222, %x_222
+    %178:vec3<f32> = mix %x_220, %x_221, %177
+    store %176, %178
+    %x_227:vec3<f32> = load %viewDirectionW
+    %x_228:vec4<f32> = load %lightData
+    %181:f32 = access %x_228, 0u
+    %182:f32 = access %x_228, 1u
+    %183:f32 = access %x_228, 2u
+    %184:vec3<f32> = construct %181, %182, %183
+    %185:vec3<f32> = add %x_227, %184
+    %186:vec3<f32> = normalize %185
+    store %angleW, %186
+    %x_233:vec3<f32> = load %vNormal
+    %x_234:vec3<f32> = load %angleW
+    %189:f32 = dot %x_233, %x_234
+    %190:f32 = max 0.0f, %189
+    store %specComp, %190
+    %x_237:f32 = load %specComp
+    %x_238:f32 = load %glossiness
+    %193:f32 = max 1.0f, %x_238
+    %194:f32 = pow %x_237, %193
+    store %specComp, %194
+    %x_241:f32 = load %specComp
+    %x_242:vec3<f32> = load %specularColor
+    %197:ptr<function, vec3<f32>, read_write> = access %result, 1u
+    %198:vec3<f32> = mul %x_242, %x_241
+    store %197, %198
+    %x_245:lightingInfo = load %result
+    ret %x_245
+  }
+}
+%main_1 = func():void -> %b7 {
+  %b7 = block {
+    %tempTextureRead:ptr<function, vec4<f32>, read_write> = var
+    %rgb:ptr<function, vec3<f32>, read_write> = var
+    %output5:ptr<function, vec3<f32>, read_write> = var
+    %output4:ptr<function, vec4<f32>, read_write> = var
+    %uvOffset:ptr<function, vec2<f32>, read_write> = var
+    %normalScale:ptr<function, f32, read_write> = var
+    %TBNUV:ptr<function, vec2<f32>, read_write> = var
+    %x_299:ptr<function, vec2<f32>, read_write> = var
+    %TBN:ptr<function, mat3x3<f32>, read_write> = var
+    %param_3:ptr<function, vec3<f32>, read_write> = var
+    %param_4:ptr<function, vec3<f32>, read_write> = var
+    %param_5:ptr<function, vec2<f32>, read_write> = var
+    %param_6:ptr<function, vec2<f32>, read_write> = var
+    %invTBN:ptr<function, mat3x3<f32>, read_write> = var
+    %param_7:ptr<function, mat3x3<f32>, read_write> = var
+    %parallaxLimit:ptr<function, f32, read_write> = var
+    %vOffsetDir:ptr<function, vec2<f32>, read_write> = var
+    %vMaxOffset:ptr<function, vec2<f32>, read_write> = var
+    %numSamples:ptr<function, f32, read_write> = var
+    %stepSize:ptr<function, f32, read_write> = var
+    %currRayHeight:ptr<function, f32, read_write> = var
+    %vCurrOffset:ptr<function, vec2<f32>, read_write> = var
+    %vLastOffset:ptr<function, vec2<f32>, read_write> = var
+    %lastSampledHeight:ptr<function, f32, read_write> = var
+    %currSampledHeight:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %delta1:ptr<function, f32, read_write> = var
+    %delta2:ptr<function, f32, read_write> = var
+    %ratio:ptr<function, f32, read_write> = var
+    %parallaxOcclusion_0:ptr<function, vec2<f32>, read_write> = var
+    %param_8:ptr<function, mat3x3<f32>, read_write> = var
+    %param_9:ptr<function, vec3<f32>, read_write> = var
+    %param_10:ptr<function, f32, read_write> = var
+    %output6:ptr<function, vec2<f32>, read_write> = var
+    %tempTextureRead1:ptr<function, vec4<f32>, read_write> = var
+    %rgb1:ptr<function, vec3<f32>, read_write> = var
+    %viewDirectionW_1:ptr<function, vec3<f32>, read_write> = var
+    %shadow:ptr<function, f32, read_write> = var
+    %glossiness_1:ptr<function, f32, read_write> = var
+    %diffuseBase:ptr<function, vec3<f32>, read_write> = var
+    %specularBase:ptr<function, vec3<f32>, read_write> = var
+    %normalW:ptr<function, vec3<f32>, read_write> = var
+    %info:ptr<function, lightingInfo, read_write> = var
+    %param_11:ptr<function, vec3<f32>, read_write> = var
+    %param_12:ptr<function, vec3<f32>, read_write> = var
+    %param_13:ptr<function, vec4<f32>, read_write> = var
+    %param_14:ptr<function, vec3<f32>, read_write> = var
+    %param_15:ptr<function, vec3<f32>, read_write> = var
+    %param_16:ptr<function, vec3<f32>, read_write> = var
+    %param_17:ptr<function, f32, read_write> = var
+    %diffuseOutput:ptr<function, vec3<f32>, read_write> = var
+    %specularOutput:ptr<function, vec3<f32>, read_write> = var
+    %output3:ptr<function, vec3<f32>, read_write> = var
+    store %u_Float, 100.0f
+    store %u_Color, vec3<f32>(0.5f)
+    %x_261:vec2<f32> = load %vMainuv
+    %255:texture_2d<f32> = load %TextureSamplerTexture
+    %256:sampler = load %TextureSamplerSampler
+    %x_262:vec4<f32> = textureSample %255, %256, %x_261
+    store %tempTextureRead, %x_262
+    %x_264:vec4<f32> = load %tempTextureRead
+    %259:ptr<uniform, f32, read> = access %x_269, 6u
+    %x_273:f32 = load %259
+    %261:f32 = access %x_264, 0u
+    %262:f32 = access %x_264, 1u
+    %263:f32 = access %x_264, 2u
+    %264:vec3<f32> = construct %261, %262, %263
+    %265:vec3<f32> = mul %264, %x_273
+    store %rgb, %265
+    %266:ptr<uniform, vec3<f32>, read> = access %x_269, 4u
+    %x_279:vec3<f32> = load %266
+    %x_282:vec4<f32> = load %v_output1
+    %269:f32 = access %x_282, 0u
+    %270:f32 = access %x_282, 1u
+    %271:f32 = access %x_282, 2u
+    %272:vec3<f32> = construct %269, %270, %271
+    %273:vec3<f32> = sub %x_279, %272
+    %274:vec3<f32> = normalize %273
+    store %output5, %274
+    store %output4, vec4<f32>(0.0f)
+    store %uvOffset, vec2<f32>(0.0f)
+    %275:ptr<uniform, f32, read> = access %x_269, 2u
+    %x_292:f32 = load %275
+    %277:f32 = div 1.0f, %x_292
+    store %normalScale, %277
+    %x_298:bool = load %gl_FrontFacing
+    if %x_298 [t: %b8, f: %b9] {  # if_1
+      %b8 = block {  # true
+        %x_303:vec2<f32> = load %v_uv
+        store %x_299, %x_303
+        exit_if  # if_1
+      }
+      %b9 = block {  # false
+        %x_305:vec2<f32> = load %v_uv
+        %281:vec2<f32> = negation %x_305
+        store %x_299, %281
+        exit_if  # if_1
+      }
+    }
+    %x_307:vec2<f32> = load %x_299
+    store %TBNUV, %x_307
+    %x_310:vec4<f32> = load %v_output2
+    %x_312:f32 = load %normalScale
+    %285:f32 = access %x_310, 0u
+    %286:f32 = access %x_310, 1u
+    %287:f32 = access %x_310, 2u
+    %288:vec3<f32> = construct %285, %286, %287
+    %289:vec3<f32> = mul %288, %x_312
+    store %param_3, %289
+    %x_317:vec4<f32> = load %v_output1
+    %291:f32 = access %x_317, 0u
+    %292:f32 = access %x_317, 1u
+    %293:f32 = access %x_317, 2u
+    %294:vec3<f32> = construct %291, %292, %293
+    store %param_4, %294
+    %x_320:vec2<f32> = load %TBNUV
+    store %param_5, %x_320
+    %296:ptr<uniform, vec2<f32>, read> = access %x_269, 8u
+    %x_324:vec2<f32> = load %296
+    store %param_6, %x_324
+    %x_325:mat3x3<f32> = call %cotangent_frame_vf3_vf3_vf2_vf2_, %param_3, %param_4, %param_5, %param_6
+    store %TBN, %x_325
+    %x_328:mat3x3<f32> = load %TBN
+    store %param_7, %x_328
+    %x_329:mat3x3<f32> = call %transposeMat3_mf33_, %param_7
+    store %invTBN, %x_329
+    %x_331:mat3x3<f32> = load %invTBN
+    %x_332:vec3<f32> = load %output5
+    %303:vec3<f32> = negation %x_332
+    %x_334:vec3<f32> = mul %x_331, %303
+    %x_337:mat3x3<f32> = load %invTBN
+    %x_338:vec3<f32> = load %output5
+    %307:f32 = access %x_334, 0u
+    %308:f32 = access %x_334, 1u
+    %309:vec2<f32> = construct %307, %308
+    %310:f32 = length %309
+    %311:vec3<f32> = negation %x_338
+    %312:vec3<f32> = mul %x_337, %311
+    %313:f32 = access %312, 2u
+    %314:f32 = div %310, %313
+    store %parallaxLimit, %314
+    %315:ptr<uniform, f32, read> = access %x_269, 5u
+    %x_345:f32 = load %315
+    %x_346:f32 = load %parallaxLimit
+    %318:f32 = mul %x_346, %x_345
+    store %parallaxLimit, %318
+    %x_349:mat3x3<f32> = load %invTBN
+    %x_350:vec3<f32> = load %output5
+    %321:vec3<f32> = negation %x_350
+    %x_352:vec3<f32> = mul %x_349, %321
+    %323:f32 = access %x_352, 0u
+    %324:f32 = access %x_352, 1u
+    %325:vec2<f32> = construct %323, %324
+    %326:vec2<f32> = normalize %325
+    store %vOffsetDir, %326
+    %x_356:vec2<f32> = load %vOffsetDir
+    %x_357:f32 = load %parallaxLimit
+    %329:vec2<f32> = mul %x_356, %x_357
+    store %vMaxOffset, %329
+    %x_361:mat3x3<f32> = load %invTBN
+    %x_362:vec3<f32> = load %output5
+    %x_365:mat3x3<f32> = load %invTBN
+    %x_366:vec4<f32> = load %v_output2
+    %334:vec3<f32> = negation %x_362
+    %335:vec3<f32> = mul %x_361, %334
+    %336:f32 = access %x_366, 0u
+    %337:f32 = access %x_366, 1u
+    %338:f32 = access %x_366, 2u
+    %339:vec3<f32> = construct %336, %337, %338
+    %340:vec3<f32> = mul %x_365, %339
+    %341:f32 = dot %335, %340
+    %342:f32 = mul %341, -11.0f
+    %343:f32 = add 15.0f, %342
+    store %numSamples, %343
+    %x_374:f32 = load %numSamples
+    %345:f32 = div 1.0f, %x_374
+    store %stepSize, %345
+    store %currRayHeight, 1.0f
+    store %vCurrOffset, vec2<f32>(0.0f)
+    store %vLastOffset, vec2<f32>(0.0f)
+    store %lastSampledHeight, 1.0f
+    store %currSampledHeight, 1.0f
+    store %i, 0i
+    loop [b: %b10, c: %b11] {  # loop_1
+      %b10 = block {  # body
+        %x_388:i32 = load %i
+        %347:bool = lt %x_388, 15i
+        if %347 [t: %b12, f: %b13] {  # if_2
+          %b12 = block {  # true
+            exit_if  # if_2
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_394:vec2<f32> = load %v_uv
+        %x_395:vec2<f32> = load %vCurrOffset
+        %x_397:vec4<f32> = let vec4<f32>(0.0f)
+        %351:f32 = access %x_397, 3u
+        store %currSampledHeight, %351
+        %x_400:f32 = load %currSampledHeight
+        %x_401:f32 = load %currRayHeight
+        %354:bool = gt %x_400, %x_401
+        if %354 [t: %b14, f: %b15] {  # if_3
+          %b14 = block {  # true
+            %x_406:f32 = load %currSampledHeight
+            %x_407:f32 = load %currRayHeight
+            %357:f32 = sub %x_406, %x_407
+            store %delta1, %357
+            %x_410:f32 = load %currRayHeight
+            %x_411:f32 = load %stepSize
+            %x_413:f32 = load %lastSampledHeight
+            %361:f32 = add %x_410, %x_411
+            %362:f32 = sub %361, %x_413
+            store %delta2, %362
+            %x_416:f32 = load %delta1
+            %x_417:f32 = load %delta1
+            %x_418:f32 = load %delta2
+            %366:f32 = add %x_417, %x_418
+            %367:f32 = div %x_416, %366
+            store %ratio, %367
+            %x_421:f32 = load %ratio
+            %x_422:vec2<f32> = load %vLastOffset
+            %x_424:f32 = load %ratio
+            %x_426:vec2<f32> = load %vCurrOffset
+            %372:vec2<f32> = mul %x_422, %x_421
+            %373:f32 = sub 1.0f, %x_424
+            %374:vec2<f32> = mul %x_426, %373
+            %375:vec2<f32> = add %372, %374
+            store %vCurrOffset, %375
+            exit_loop  # loop_1
+          }
+          %b15 = block {  # false
+            %x_431:f32 = load %stepSize
+            %x_432:f32 = load %currRayHeight
+            %378:f32 = sub %x_432, %x_431
+            store %currRayHeight, %378
+            %x_434:vec2<f32> = load %vCurrOffset
+            store %vLastOffset, %x_434
+            %x_435:f32 = load %stepSize
+            %x_436:vec2<f32> = load %vMaxOffset
+            %x_438:vec2<f32> = load %vCurrOffset
+            %383:vec2<f32> = mul %x_436, %x_435
+            %384:vec2<f32> = add %x_438, %383
+            store %vCurrOffset, %384
+            %x_440:f32 = load %currSampledHeight
+            store %lastSampledHeight, %x_440
+            exit_if  # if_3
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        %x_441:i32 = load %i
+        %387:i32 = add %x_441, 1i
+        store %i, %387
+        next_iteration %b10
+      }
+    }
+    %x_444:vec2<f32> = load %vCurrOffset
+    store %parallaxOcclusion_0, %x_444
+    %x_445:vec2<f32> = load %parallaxOcclusion_0
+    store %uvOffset, %x_445
+    %x_449:vec2<f32> = load %v_uv
+    %x_450:vec2<f32> = load %uvOffset
+    %392:texture_2d<f32> = load %TextureSamplerTexture
+    %393:sampler = load %TextureSamplerSampler
+    %394:vec2<f32> = add %x_449, %x_450
+    %x_452:vec4<f32> = textureSample %392, %393, %394
+    %396:ptr<uniform, f32, read> = access %x_269, 2u
+    %x_454:f32 = load %396
+    %x_457:mat3x3<f32> = load %TBN
+    store %param_8, %x_457
+    %399:f32 = access %x_452, 0u
+    %400:f32 = access %x_452, 1u
+    %401:f32 = access %x_452, 2u
+    %402:vec3<f32> = construct %399, %400, %401
+    store %param_9, %402
+    %403:f32 = div 1.0f, %x_454
+    store %param_10, %403
+    %x_461:vec3<f32> = call %perturbNormal_mf33_vf3_f1_, %param_8, %param_9, %param_10
+    %x_462:vec4<f32> = load %output4
+    %406:f32 = access %x_461, 0u
+    %407:f32 = access %x_461, 1u
+    %408:f32 = access %x_461, 2u
+    %409:f32 = access %x_462, 3u
+    %410:vec4<f32> = construct %406, %407, %408, %409
+    store %output4, %410
+    %x_465:vec2<f32> = load %v_uv
+    %x_466:vec2<f32> = load %uvOffset
+    %413:vec2<f32> = add %x_465, %x_466
+    store %output6, %413
+    %x_474:vec2<f32> = load %output6
+    %415:texture_2d<f32> = load %TextureSampler1Texture
+    %416:sampler = load %TextureSampler1Sampler
+    %x_475:vec4<f32> = textureSample %415, %416, %x_474
+    store %tempTextureRead1, %x_475
+    %x_477:vec4<f32> = load %tempTextureRead1
+    %419:f32 = access %x_477, 0u
+    %420:f32 = access %x_477, 1u
+    %421:f32 = access %x_477, 2u
+    %422:vec3<f32> = construct %419, %420, %421
+    store %rgb1, %422
+    %423:ptr<uniform, vec3<f32>, read> = access %x_269, 4u
+    %x_481:vec3<f32> = load %423
+    %x_482:vec4<f32> = load %v_output1
+    %426:f32 = access %x_482, 0u
+    %427:f32 = access %x_482, 1u
+    %428:f32 = access %x_482, 2u
+    %429:vec3<f32> = construct %426, %427, %428
+    %430:vec3<f32> = sub %x_481, %429
+    %431:vec3<f32> = normalize %430
+    store %viewDirectionW_1, %431
+    store %shadow, 1.0f
+    %x_488:f32 = load %u_Float
+    %433:f32 = mul 1.0f, %x_488
+    store %glossiness_1, %433
+    store %diffuseBase, vec3<f32>(0.0f)
+    store %specularBase, vec3<f32>(0.0f)
+    %x_494:vec4<f32> = load %output4
+    %435:f32 = access %x_494, 0u
+    %436:f32 = access %x_494, 1u
+    %437:f32 = access %x_494, 2u
+    %438:vec3<f32> = construct %435, %436, %437
+    store %normalW, %438
+    %x_501:vec3<f32> = load %viewDirectionW_1
+    store %param_11, %x_501
+    %x_503:vec3<f32> = load %normalW
+    store %param_12, %x_503
+    %441:ptr<uniform, vec4<f32>, read> = access %light0, 0u
+    %x_507:vec4<f32> = load %441
+    store %param_13, %x_507
+    %443:ptr<uniform, vec4<f32>, read> = access %light0, 1u
+    %x_510:vec4<f32> = load %443
+    %445:f32 = access %x_510, 0u
+    %446:f32 = access %x_510, 1u
+    %447:f32 = access %x_510, 2u
+    %448:vec3<f32> = construct %445, %446, %447
+    store %param_14, %448
+    %449:ptr<uniform, vec4<f32>, read> = access %light0, 2u
+    %x_514:vec4<f32> = load %449
+    %451:f32 = access %x_514, 0u
+    %452:f32 = access %x_514, 1u
+    %453:f32 = access %x_514, 2u
+    %454:vec3<f32> = construct %451, %452, %453
+    store %param_15, %454
+    %455:ptr<uniform, vec3<f32>, read> = access %light0, 3u
+    %x_518:vec3<f32> = load %455
+    store %param_16, %x_518
+    %x_520:f32 = load %glossiness_1
+    store %param_17, %x_520
+    %x_521:lightingInfo = call %computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_, %param_11, %param_12, %param_13, %param_14, %param_15, %param_16, %param_17
+    store %info, %x_521
+    store %shadow, 1.0f
+    %459:ptr<function, vec3<f32>, read_write> = access %info, 0u
+    %x_523:vec3<f32> = load %459
+    %x_524:f32 = load %shadow
+    %x_526:vec3<f32> = load %diffuseBase
+    %463:vec3<f32> = mul %x_523, %x_524
+    %464:vec3<f32> = add %x_526, %463
+    store %diffuseBase, %464
+    %465:ptr<function, vec3<f32>, read_write> = access %info, 1u
+    %x_529:vec3<f32> = load %465
+    %x_530:f32 = load %shadow
+    %x_532:vec3<f32> = load %specularBase
+    %469:vec3<f32> = mul %x_529, %x_530
+    %470:vec3<f32> = add %x_532, %469
+    store %specularBase, %470
+    %x_535:vec3<f32> = load %diffuseBase
+    %x_536:vec3<f32> = load %rgb1
+    %473:vec3<f32> = mul %x_535, %x_536
+    store %diffuseOutput, %473
+    %x_539:vec3<f32> = load %specularBase
+    %x_540:vec3<f32> = load %u_Color
+    %476:vec3<f32> = mul %x_539, %x_540
+    store %specularOutput, %476
+    %x_543:vec3<f32> = load %diffuseOutput
+    %x_544:vec3<f32> = load %specularOutput
+    %479:vec3<f32> = add %x_543, %x_544
+    store %output3, %479
+    %x_548:vec3<f32> = load %output3
+    %481:f32 = access %x_548, 0u
+    %482:f32 = access %x_548, 1u
+    %483:f32 = access %x_548, 2u
+    %484:vec4<f32> = construct %481, %482, %483, 1.0f
+    store %glFragColor, %484
+    ret
+  }
+}
+%tint_symbol = @fragment func(%vMainuv_param:vec2<f32> [@location(1)], %v_output1_param:vec4<f32> [@location(0)], %gl_FrontFacing_param:bool [@front_facing], %v_uv_param:vec2<f32> [@location(3)], %v_output2_param:vec4<f32> [@location(2)]):main_out -> %b16 {
+  %b16 = block {
+    store %vMainuv, %vMainuv_param
+    store %v_output1, %v_output1_param
+    store %gl_FrontFacing, %gl_FrontFacing_param
+    store %v_uv, %v_uv_param
+    store %v_output2, %v_output2_param
+    %491:void = call %main_1
+    %492:vec4<f32> = load %glFragColor
+    %493:main_out = construct %492
+    ret %493
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/959.wgsl.expected.ir.msl b/test/tint/bug/tint/959.wgsl.expected.ir.msl
new file mode 100644
index 0000000..45866e5
--- /dev/null
+++ b/test/tint/bug/tint/959.wgsl.expected.ir.msl
@@ -0,0 +1,118 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  a:f32 @offset(0)
+}
+
+%b1 = block {  # root
+  %b0:ptr<storage, S, read> = var @binding_point(0, 0)
+  %b1:ptr<storage, S, read> = var @binding_point(1, 0)
+  %b2:ptr<storage, S, read> = var @binding_point(2, 0)
+  %b3:ptr<storage, S, read> = var @binding_point(3, 0)
+  %b4:ptr<storage, S, read> = var @binding_point(4, 0)
+  %b5:ptr<storage, S, read> = var @binding_point(5, 0)
+  %b6:ptr<storage, S, read> = var @binding_point(6, 0)
+  %b7:ptr<storage, S, read> = var @binding_point(7, 0)
+  %b8:ptr<uniform, S, read> = var @binding_point(9, 1)
+  %b9:ptr<uniform, S, read> = var @binding_point(8, 1)
+  %b10:ptr<uniform, S, read> = var @binding_point(10, 1)
+  %b11:ptr<uniform, S, read> = var @binding_point(11, 1)
+  %b12:ptr<uniform, S, read> = var @binding_point(12, 1)
+  %b13:ptr<uniform, S, read> = var @binding_point(13, 1)
+  %b14:ptr<uniform, S, read> = var @binding_point(14, 1)
+  %b15:ptr<uniform, S, read> = var @binding_point(15, 1)
+  %t0:ptr<handle, texture_2d<f32>, read> = var @binding_point(0, 1)
+  %t1:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 1)
+  %t2:ptr<handle, texture_2d<f32>, read> = var @binding_point(2, 1)
+  %t3:ptr<handle, texture_2d<f32>, read> = var @binding_point(3, 1)
+  %t4:ptr<handle, texture_2d<f32>, read> = var @binding_point(4, 1)
+  %t5:ptr<handle, texture_2d<f32>, read> = var @binding_point(5, 1)
+  %t6:ptr<handle, texture_2d<f32>, read> = var @binding_point(6, 1)
+  %t7:ptr<handle, texture_2d<f32>, read> = var @binding_point(7, 1)
+  %t8:ptr<handle, texture_depth_2d, read> = var @binding_point(8, 200)
+  %t9:ptr<handle, texture_depth_2d, read> = var @binding_point(9, 200)
+  %t10:ptr<handle, texture_depth_2d, read> = var @binding_point(10, 200)
+  %t11:ptr<handle, texture_depth_2d, read> = var @binding_point(11, 200)
+  %t12:ptr<handle, texture_depth_2d, read> = var @binding_point(12, 200)
+  %t13:ptr<handle, texture_depth_2d, read> = var @binding_point(13, 200)
+  %t14:ptr<handle, texture_depth_2d, read> = var @binding_point(14, 200)
+  %t15:ptr<handle, texture_depth_2d, read> = var @binding_point(15, 200)
+  %s0:ptr<handle, sampler, read> = var @binding_point(0, 200)
+  %s1:ptr<handle, sampler, read> = var @binding_point(1, 200)
+  %s2:ptr<handle, sampler, read> = var @binding_point(2, 200)
+  %s3:ptr<handle, sampler, read> = var @binding_point(3, 200)
+  %s4:ptr<handle, sampler, read> = var @binding_point(4, 200)
+  %s5:ptr<handle, sampler, read> = var @binding_point(5, 200)
+  %s6:ptr<handle, sampler, read> = var @binding_point(6, 200)
+  %s7:ptr<handle, sampler, read> = var @binding_point(7, 200)
+  %s8:ptr<handle, sampler_comparison, read> = var @binding_point(8, 300)
+  %s9:ptr<handle, sampler_comparison, read> = var @binding_point(9, 300)
+  %s10:ptr<handle, sampler_comparison, read> = var @binding_point(10, 300)
+  %s11:ptr<handle, sampler_comparison, read> = var @binding_point(11, 300)
+  %s12:ptr<handle, sampler_comparison, read> = var @binding_point(12, 300)
+  %s13:ptr<handle, sampler_comparison, read> = var @binding_point(13, 300)
+  %s14:ptr<handle, sampler_comparison, read> = var @binding_point(14, 300)
+  %s15:ptr<handle, sampler_comparison, read> = var @binding_point(15, 300)
+}
+
+%tint_symbol = @fragment func():void -> %b2 {
+  %b2 = block {
+    %50:S = load %b0
+    %51:S = load %b1
+    %52:S = load %b2
+    %53:S = load %b3
+    %54:S = load %b4
+    %55:S = load %b5
+    %56:S = load %b6
+    %57:S = load %b7
+    %58:S = load %b8
+    %59:S = load %b9
+    %60:S = load %b10
+    %61:S = load %b11
+    %62:S = load %b12
+    %63:S = load %b13
+    %64:S = load %b14
+    %65:S = load %b15
+    %66:texture_2d<f32> = load %t0
+    %67:texture_2d<f32> = load %t1
+    %68:texture_2d<f32> = load %t2
+    %69:texture_2d<f32> = load %t3
+    %70:texture_2d<f32> = load %t4
+    %71:texture_2d<f32> = load %t5
+    %72:texture_2d<f32> = load %t6
+    %73:texture_2d<f32> = load %t7
+    %74:texture_depth_2d = load %t8
+    %75:texture_depth_2d = load %t9
+    %76:texture_depth_2d = load %t10
+    %77:texture_depth_2d = load %t11
+    %78:texture_depth_2d = load %t12
+    %79:texture_depth_2d = load %t13
+    %80:texture_depth_2d = load %t14
+    %81:texture_depth_2d = load %t15
+    %82:sampler = load %s0
+    %83:sampler = load %s1
+    %84:sampler = load %s2
+    %85:sampler = load %s3
+    %86:sampler = load %s4
+    %87:sampler = load %s5
+    %88:sampler = load %s6
+    %89:sampler = load %s7
+    %90:sampler_comparison = load %s8
+    %91:sampler_comparison = load %s9
+    %92:sampler_comparison = load %s10
+    %93:sampler_comparison = load %s11
+    %94:sampler_comparison = load %s12
+    %95:sampler_comparison = load %s13
+    %96:sampler_comparison = load %s14
+    %97:sampler_comparison = load %s15
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/977.spvasm.expected.ir.msl b/test/tint/bug/tint/977.spvasm.expected.ir.msl
new file mode 100644
index 0000000..dd8e150
--- /dev/null
+++ b/test/tint/bug/tint/977.spvasm.expected.ir.msl
@@ -0,0 +1,105 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: ResultMatrix = struct @align(4) {
+  numbers:array<f32> @offset(0)
+}
+
+FirstMatrix = struct @align(4) {
+  numbers:array<f32> @offset(0)
+}
+
+SecondMatrix = struct @align(4) {
+  numbers:array<f32> @offset(0)
+}
+
+Uniforms = struct @align(4) {
+  tint_symbol:f32 @offset(0)
+  sizeA:i32 @offset(4)
+  sizeB:i32 @offset(8)
+}
+
+%b1 = block {  # root
+  %gl_GlobalInvocationID:ptr<private, vec3<u32>, read_write> = var
+  %resultMatrix:ptr<storage, ResultMatrix, read_write> = var @binding_point(0, 2)
+  %firstMatrix:ptr<storage, FirstMatrix, read> = var @binding_point(0, 0)
+  %secondMatrix:ptr<storage, SecondMatrix, read> = var @binding_point(0, 1)
+  %x_46:ptr<uniform, Uniforms, read> = var @binding_point(0, 3)
+}
+
+%binaryOperation_f1_f1_ = func(%a:ptr<function, f32, read_write>, %b:ptr<function, f32, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %x_26:ptr<function, f32, read_write> = var
+    %10:f32 = load %b
+    %11:bool = eq %10, 0.0f
+    if %11 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret 1.0f
+      }
+    }
+    %x_21:f32 = load %b
+    %13:f32 = div %x_21, 2.0f
+    %14:f32 = floor %13
+    %15:f32 = mul 2.0f, %14
+    %16:f32 = sub %x_21, %15
+    %17:f32 = round %16
+    %18:bool = eq %17, 1.0f
+    %19:bool = eq %18, false
+    if %19 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %20:f32 = load %a
+        %21:f32 = abs %20
+        %22:f32 = load %b
+        %23:f32 = pow %21, %22
+        store %x_26, %23
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %24:f32 = load %a
+        %25:f32 = sign %24
+        %26:f32 = load %a
+        %27:f32 = abs %26
+        %28:f32 = load %b
+        %29:f32 = pow %27, %28
+        %30:f32 = mul %25, %29
+        store %x_26, %30
+        exit_if  # if_2
+      }
+    }
+    %x_41:f32 = load %x_26
+    ret %x_41
+  }
+}
+%main_1 = func():void -> %b6 {
+  %b6 = block {
+    %index:ptr<function, i32, read_write> = var
+    %a_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %param_1:ptr<function, f32, read_write> = var
+    %37:u32 = load_vector_element %gl_GlobalInvocationID, 0u
+    %38:i32 = bitcast %37
+    store %index, %38
+    store %a_1, -10i
+    %x_63:i32 = load %index
+    store %param, -4.0f
+    store %param_1, -3.0f
+    %x_68:f32 = call %binaryOperation_f1_f1_, %param, %param_1
+    %41:ptr<storage, f32, read_write> = access %resultMatrix, 0u, %x_63
+    store %41, %x_68
+    ret
+  }
+}
+%tint_symbol_1 = @compute @workgroup_size(1, 1, 1) func(%gl_GlobalInvocationID_param:vec3<u32> [@global_invocation_id]):void -> %b7 {
+  %b7 = block {
+    store %gl_GlobalInvocationID, %gl_GlobalInvocationID_param
+    %44:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/978.wgsl.expected.ir.msl b/test/tint/bug/tint/978.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c87dbdf
--- /dev/null
+++ b/test/tint/bug/tint/978.wgsl.expected.ir.msl
@@ -0,0 +1,38 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: FragmentOutput = struct @align(16) {
+  color:vec4<f32> @offset(0), @location(0)
+}
+
+FragmentInput = struct @align(8) {
+  vUv:vec2<f32> @offset(0), @location(2)
+}
+
+%b1 = block {  # root
+  %depthMap:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 5)
+  %texSampler:ptr<handle, sampler, read> = var @binding_point(1, 3)
+}
+
+%tint_symbol = @fragment func(%fIn:FragmentInput):FragmentOutput -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d = load %depthMap
+    %6:sampler = load %texSampler
+    %7:vec2<f32> = access %fIn, 0u
+    %sample:f32 = textureSample %5, %6, %7
+    %color:vec3<f32> = construct %sample, %sample, %sample
+    %fOut:ptr<function, FragmentOutput, read_write> = var
+    %11:ptr<function, vec4<f32>, read_write> = access %fOut, 0u
+    %12:vec4<f32> = construct %color, 1.0f
+    store %11, %12
+    %13:FragmentOutput = load %fOut
+    ret %13
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/bug/tint/980.wgsl.expected.ir.msl b/test/tint/bug/tint/980.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7539644
--- /dev/null
+++ b/test/tint/bug/tint/980.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  v:vec3<f32> @offset(0)
+  i:u32 @offset(12)
+}
+
+%b1 = block {  # root
+  %io:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%Bad = func(%index:u32, %rd:vec3<f32>):vec3<f32> -> %b2 {
+  %b2 = block {
+    %normal:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.0f)
+    %6:f32 = access %rd, %index
+    %7:f32 = sign %6
+    %8:f32 = negation %7
+    store_vector_element %normal, %index, %8
+    %9:vec3<f32> = load %normal
+    %10:vec3<f32> = normalize %9
+    ret %10
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%idx:u32 [@local_invocation_index]):void -> %b3 {
+  %b3 = block {
+    %13:ptr<storage, vec3<f32>, read_write> = access %io, 0u
+    %14:ptr<storage, u32, read_write> = access %io, 1u
+    %15:u32 = load %14
+    %16:ptr<storage, vec3<f32>, read_write> = access %io, 0u
+    %17:vec3<f32> = load %16
+    %18:vec3<f32> = call %Bad, %15, %17
+    store %13, %18
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/990.wgsl.expected.ir.msl b/test/tint/bug/tint/990.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/bug/tint/990.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/bug/tint/993.wgsl.expected.ir.msl b/test/tint/bug/tint/993.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a0b521d
--- /dev/null
+++ b/test/tint/bug/tint/993.wgsl.expected.ir.msl
@@ -0,0 +1,48 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Constants = struct @align(4) {
+  zero:u32 @offset(0)
+}
+
+Result = struct @align(4) {
+  value:u32 @offset(0)
+}
+
+TestData = struct @align(4) {
+  data:array<atomic<i32>, 3> @offset(0)
+}
+
+%b1 = block {  # root
+  %constants:ptr<uniform, Constants, read> = var @binding_point(1, 0)
+  %result:ptr<storage, Result, read_write> = var @binding_point(1, 1)
+  %s:ptr<storage, TestData, read_write> = var @binding_point(0, 0)
+}
+
+%runTest = func():i32 -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, u32, read> = access %constants, 0u
+    %6:u32 = load %5
+    %7:u32 = construct %6
+    %8:u32 = add 0u, %7
+    %9:ptr<storage, atomic<i32>, read_write> = access %s, 0u, %8
+    %10:i32 = atomicLoad %9
+    ret %10
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %12:ptr<storage, u32, read_write> = access %result, 0u
+    %13:i32 = call %runTest
+    %14:u32 = convert %13
+    store %12, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/bug/tint/998.wgsl.expected.ir.msl b/test/tint/bug/tint/998.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2ca622c
--- /dev/null
+++ b/test/tint/bug/tint/998.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Constants = struct @align(4) {
+  zero:u32 @offset(0)
+}
+
+Result = struct @align(4) {
+  value:u32 @offset(0)
+}
+
+S = struct @align(4) {
+  data:array<u32, 3> @offset(0)
+}
+
+%b1 = block {  # root
+  %constants:ptr<uniform, Constants, read> = var @binding_point(1, 0)
+  %result:ptr<storage, Result, read_write> = var @binding_point(1, 1)
+  %s:ptr<private, S, read_write> = var
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, u32, read> = access %constants, 0u
+    %6:u32 = load %5
+    %7:ptr<private, u32, read_write> = access %s, 0u, %6
+    store %7, 0u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/arrayLength/complex_via_let.wgsl.expected.ir.msl b/test/tint/builtins/arrayLength/complex_via_let.wgsl.expected.ir.msl
new file mode 100644
index 0000000..46e1f9f
--- /dev/null
+++ b/test/tint/builtins/arrayLength/complex_via_let.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  a:array<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %G:ptr<storage, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p:ptr<storage, S, read> = let %G
+    %p2:ptr<storage, array<i32>, read> = access %p, 0u
+    %l1:u32 = arrayLength %p2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/arrayLength/complex_via_let_no_struct.wgsl.expected.ir.msl b/test/tint/builtins/arrayLength/complex_via_let_no_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6673cef
--- /dev/null
+++ b/test/tint/builtins/arrayLength/complex_via_let_no_struct.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %G:ptr<storage, array<i32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p:ptr<storage, array<i32>, read> = let %G
+    %p2:ptr<storage, array<i32>, read> = let %p
+    %l1:u32 = arrayLength %p2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/arrayLength/deprecated.wgsl.expected.ir.msl b/test/tint/builtins/arrayLength/deprecated.wgsl.expected.ir.msl
new file mode 100644
index 0000000..68cbfb4
--- /dev/null
+++ b/test/tint/builtins/arrayLength/deprecated.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  a:array<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %G:ptr<storage, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, array<i32>, read> = access %G, 0u
+    %l1:u32 = arrayLength %3
+    %p:ptr<storage, array<i32>, read> = access %G, 0u
+    %l2:u32 = arrayLength %p
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/arrayLength/simple.wgsl.expected.ir.msl b/test/tint/builtins/arrayLength/simple.wgsl.expected.ir.msl
new file mode 100644
index 0000000..595c512
--- /dev/null
+++ b/test/tint/builtins/arrayLength/simple.wgsl.expected.ir.msl
@@ -0,0 +1,25 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  a:array<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %G:ptr<storage, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, array<i32>, read> = access %G, 0u
+    %l1:u32 = arrayLength %3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/arrayLength/simple_no_struct.wgsl.expected.ir.msl b/test/tint/builtins/arrayLength/simple_no_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bf426f6
--- /dev/null
+++ b/test/tint/builtins/arrayLength/simple_no_struct.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %G:ptr<storage, array<i32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %l1:u32 = arrayLength %G
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/arrayLength/via_let.wgsl.expected.ir.msl b/test/tint/builtins/arrayLength/via_let.wgsl.expected.ir.msl
new file mode 100644
index 0000000..03669bf
--- /dev/null
+++ b/test/tint/builtins/arrayLength/via_let.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  a:array<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %G:ptr<storage, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p:ptr<storage, array<i32>, read> = access %G, 0u
+    %p2:ptr<storage, array<i32>, read> = let %p
+    %l1:u32 = arrayLength %p2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/arrayLength/via_let_complex.wgsl.expected.ir.msl b/test/tint/builtins/arrayLength/via_let_complex.wgsl.expected.ir.msl
new file mode 100644
index 0000000..810e81f
--- /dev/null
+++ b/test/tint/builtins/arrayLength/via_let_complex.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  a:array<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %G:ptr<storage, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p:ptr<storage, S, read> = let %G
+    %p2:ptr<storage, S, read> = let %p
+    %p3:ptr<storage, array<i32>, read> = access %p, 0u
+    %l1:u32 = arrayLength %p3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/arrayLength/via_let_complex_no_struct.wgsl.expected.ir.msl b/test/tint/builtins/arrayLength/via_let_complex_no_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2778569
--- /dev/null
+++ b/test/tint/builtins/arrayLength/via_let_complex_no_struct.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %G:ptr<storage, array<i32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p:ptr<storage, array<i32>, read> = let %G
+    %p2:ptr<storage, array<i32>, read> = let %p
+    %p3:ptr<storage, array<i32>, read> = let %p
+    %l1:u32 = arrayLength %p3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/arrayLength/via_let_no_struct.wgsl.expected.ir.msl b/test/tint/builtins/arrayLength/via_let_no_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6673cef
--- /dev/null
+++ b/test/tint/builtins/arrayLength/via_let_no_struct.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %G:ptr<storage, array<i32>, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p:ptr<storage, array<i32>, read> = let %G
+    %p2:ptr<storage, array<i32>, read> = let %p
+    %l1:u32 = arrayLength %p2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomicStore/array/aliased_arrays.spvasm.expected.ir.msl b/test/tint/builtins/atomicStore/array/aliased_arrays.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomicStore/array/aliased_arrays.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomicStore/array/aliased_arrays.wgsl.expected.ir.msl b/test/tint/builtins/atomicStore/array/aliased_arrays.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/builtins/atomicStore/array/aliased_arrays.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/builtins/atomicStore/array/array.spvasm.expected.ir.msl b/test/tint/builtins/atomicStore/array/array.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomicStore/array/array.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomicStore/array/array.wgsl.expected.ir.msl b/test/tint/builtins/atomicStore/array/array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/builtins/atomicStore/array/array.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/builtins/atomicStore/array/arrays.spvasm.expected.ir.msl b/test/tint/builtins/atomicStore/array/arrays.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomicStore/array/arrays.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomicStore/array/arrays.wgsl.expected.ir.msl b/test/tint/builtins/atomicStore/array/arrays.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/builtins/atomicStore/array/arrays.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/builtins/atomicStore/struct/array_of_struct.spvasm.expected.ir.msl b/test/tint/builtins/atomicStore/struct/array_of_struct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomicStore/struct/array_of_struct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomicStore/struct/array_of_struct.wgsl.expected.ir.msl b/test/tint/builtins/atomicStore/struct/array_of_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/builtins/atomicStore/struct/array_of_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/builtins/atomicStore/struct/flat_multiple_atomics.spvasm.expected.ir.msl b/test/tint/builtins/atomicStore/struct/flat_multiple_atomics.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/builtins/atomicStore/struct/flat_multiple_atomics.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/builtins/atomicStore/struct/flat_multiple_atomics.wgsl.expected.ir.msl b/test/tint/builtins/atomicStore/struct/flat_multiple_atomics.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/builtins/atomicStore/struct/flat_multiple_atomics.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/builtins/atomicStore/struct/flat_single_atomic.spvasm.expected.ir.msl b/test/tint/builtins/atomicStore/struct/flat_single_atomic.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/builtins/atomicStore/struct/flat_single_atomic.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/builtins/atomicStore/struct/flat_single_atomic.wgsl.expected.ir.msl b/test/tint/builtins/atomicStore/struct/flat_single_atomic.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/builtins/atomicStore/struct/flat_single_atomic.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/builtins/atomicStore/struct/nested.spvasm.expected.ir.msl b/test/tint/builtins/atomicStore/struct/nested.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/builtins/atomicStore/struct/nested.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/builtins/atomicStore/struct/nested.wgsl.expected.ir.msl b/test/tint/builtins/atomicStore/struct/nested.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/builtins/atomicStore/struct/nested.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/builtins/atomicStore/struct/struct_of_array.spvasm.expected.ir.msl b/test/tint/builtins/atomicStore/struct/struct_of_array.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/builtins/atomicStore/struct/struct_of_array.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/builtins/atomicStore/struct/struct_of_array.wgsl.expected.ir.msl b/test/tint/builtins/atomicStore/struct/struct_of_array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/builtins/atomicStore/struct/struct_of_array.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/builtins/atomicStore/struct/via_ptr_let.spvasm.expected.ir.msl b/test/tint/builtins/atomicStore/struct/via_ptr_let.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/builtins/atomicStore/struct/via_ptr_let.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/builtins/atomicStore/struct/via_ptr_let.wgsl.expected.ir.msl b/test/tint/builtins/atomicStore/struct/via_ptr_let.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/builtins/atomicStore/struct/via_ptr_let.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicAdd/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicAdd/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..018333f
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicAdd/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicAdd_d32fe4 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 0i
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_9:i32 = atomicAdd %4, 1i
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicAdd_d32fe4
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicAdd_d32fe4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicAdd/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicAdd/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..6095252
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicAdd/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicAdd_8a199a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 0u
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_9:u32 = atomicAdd %4, 1u
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicAdd_8a199a
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicAdd_8a199a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicAdd/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicAdd/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicAdd/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicAdd/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicAdd/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicAdd/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicAnd/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicAnd/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..43b4644
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicAnd/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicAnd_152966 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 0i
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_9:i32 = atomicAnd %4, 1i
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicAnd_152966
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicAnd_152966
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicAnd/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicAnd/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..a07401c
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicAnd/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicAnd_85a8d9 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 0u
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_9:u32 = atomicAnd %4, 1u
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicAnd_85a8d9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicAnd_85a8d9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicAnd/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicAnd/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicAnd/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicAnd/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicAnd/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicAnd/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..6a2b56c
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,65 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+x__atomic_compare_exchange_resulti32 = struct @align(4) {
+  old_value:i32 @offset(0)
+  exchanged:bool @offset(4)
+}
+
+__atomic_compare_exchange_result_i32 = struct @align(4) {
+  old_value:i32 @offset(0)
+  exchanged:bool @offset(4)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicCompareExchangeWeak_1bd40a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, x__atomic_compare_exchange_resulti32, read_write> = var, x__atomic_compare_exchange_resulti32(0i, false)
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %5:__atomic_compare_exchange_result_i32 = atomicCompareExchangeWeak %4, 1i, 1i
+    %old_value_1:i32 = access %5, 0u
+    %x_19:i32 = let %old_value_1
+    %8:bool = eq %x_19, 1i
+    %9:x__atomic_compare_exchange_resulti32 = construct %x_19, %8
+    store %res, %9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicCompareExchangeWeak_1bd40a
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %atomicCompareExchangeWeak_1bd40a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %17:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..3a51a5b
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,65 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+x__atomic_compare_exchange_resultu32 = struct @align(4) {
+  old_value:u32 @offset(0)
+  exchanged:bool @offset(4)
+}
+
+__atomic_compare_exchange_result_u32 = struct @align(4) {
+  old_value:u32 @offset(0)
+  exchanged:bool @offset(4)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicCompareExchangeWeak_63d8e6 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, x__atomic_compare_exchange_resultu32, read_write> = var, x__atomic_compare_exchange_resultu32(0u, false)
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %5:__atomic_compare_exchange_result_u32 = atomicCompareExchangeWeak %4, 1u, 1u
+    %old_value_1:u32 = access %5, 0u
+    %x_17:u32 = let %old_value_1
+    %8:bool = eq %x_17, 1u
+    %9:x__atomic_compare_exchange_resultu32 = construct %x_17, %8
+    store %res, %9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicCompareExchangeWeak_63d8e6
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %atomicCompareExchangeWeak_63d8e6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %17:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicExchange/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicExchange/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..e4cf48a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicExchange/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicExchange_f2e22f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 0i
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_9:i32 = atomicExchange %4, 1i
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicExchange_f2e22f
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicExchange_f2e22f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicExchange/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicExchange/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f846387
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicExchange/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicExchange_d59712 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 0u
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_9:u32 = atomicExchange %4, 1u
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicExchange_d59712
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicExchange_d59712
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicExchange/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicExchange/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicExchange/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicExchange/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicExchange/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicExchange/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicLoad/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicLoad/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1b06340
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicLoad/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicLoad_0806ad = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 0i
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_9:i32 = atomicLoad %4
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicLoad_0806ad
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicLoad_0806ad
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicLoad/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicLoad/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..ccc1975
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicLoad/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicLoad_fe6cc3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 0u
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_9:u32 = atomicLoad %4
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicLoad_fe6cc3
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicLoad_fe6cc3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicLoad/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicLoad/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicLoad/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicLoad/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicLoad/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicLoad/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicMax/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicMax/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f08f451
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicMax/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicMax_92aa72 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 0i
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_9:i32 = atomicMax %4, 1i
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicMax_92aa72
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicMax_92aa72
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicMax/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicMax/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..12d1369
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicMax/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicMax_51b9be = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 0u
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_9:u32 = atomicMax %4, 1u
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicMax_51b9be
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicMax_51b9be
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicMax/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicMax/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicMax/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicMax/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicMax/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicMax/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicMin/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicMin/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..e32fea2
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicMin/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicMin_8e38dc = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 0i
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_9:i32 = atomicMin %4, 1i
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicMin_8e38dc
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicMin_8e38dc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicMin/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicMin/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..be3e8a5
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicMin/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicMin_c67a74 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 0u
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_9:u32 = atomicMin %4, 1u
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicMin_c67a74
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicMin_c67a74
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicMin/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicMin/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicMin/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicMin/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicMin/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicMin/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicOr/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicOr/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f22f193
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicOr/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicOr_8d96a0 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 0i
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_9:i32 = atomicOr %4, 1i
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicOr_8d96a0
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicOr_8d96a0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicOr/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicOr/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..62dc841
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicOr/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicOr_5e95d4 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 0u
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_9:u32 = atomicOr %4, 1u
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicOr_5e95d4
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicOr_5e95d4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicOr/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicOr/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicOr/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicOr/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicOr/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicOr/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicStore/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicStore/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e9e333
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicStore/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicStore_d1e9a6 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %4:void = atomicStore %3, 1i
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %6:void = call %atomicStore_d1e9a6
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atomicStore_d1e9a6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %12:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicStore/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicStore/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..a300b03
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicStore/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicStore_cdc29e = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %4:void = atomicStore %3, 1u
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %6:void = call %atomicStore_cdc29e
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atomicStore_cdc29e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %12:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicStore/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicStore/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicStore/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicStore/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicStore/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicStore/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicSub/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicSub/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b5e3378
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicSub/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicSub_051100 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 0i
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_9:i32 = atomicSub %4, 1i
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicSub_051100
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicSub_051100
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicSub/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicSub/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..feb29d3
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicSub/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicSub_15bfc9 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 0u
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_9:u32 = atomicSub %4, 1u
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicSub_15bfc9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicSub_15bfc9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicSub/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicSub/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicSub/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicSub/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicSub/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicSub/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicXor/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicXor/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..e90e590
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicXor/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicXor_c1b78c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 0i
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_9:i32 = atomicXor %4, 1i
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicXor_c1b78c
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicXor_c1b78c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicXor/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicXor/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1cd1de9
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicXor/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicXor_54510e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 0u
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_9:u32 = atomicXor %4, 1u
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicXor_54510e
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicXor_54510e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicXor/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicXor/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicXor/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/atomicXor/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/atomicXor/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/atomicXor/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..3f05aba
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicAdd_d32fe4 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 0i
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_9:i32 = atomicSub %4, 1i
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicAdd_d32fe4
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicAdd_d32fe4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..8d9784d
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicAdd_8a199a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 0u
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_9:u32 = atomicSub %4, 1u
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicAdd_8a199a
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicAdd_8a199a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..018333f
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicAdd_d32fe4 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 0i
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_9:i32 = atomicAdd %4, 1i
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicAdd_d32fe4
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicAdd_d32fe4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..6095252
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicAdd_8a199a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 0u
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_9:u32 = atomicAdd %4, 1u
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicAdd_8a199a
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicAdd_8a199a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicAdd/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicAdd/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..a04380b
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicAdd/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicAdd_d32fe4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 0i
+    %res:ptr<function, i32, read_write> = var, 0i
+    store %arg_1, 1i
+    %x_20:i32 = load %arg_1
+    %6:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_13:i32 = atomicAdd %6, %x_20
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicAdd_d32fe4
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atomicAdd_d32fe4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %15:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicAdd/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicAdd/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..40b4d94
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicAdd/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicAdd_8a199a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 0u
+    %res:ptr<function, u32, read_write> = var, 0u
+    store %arg_1, 1u
+    %x_18:u32 = load %arg_1
+    %6:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_13:u32 = atomicAdd %6, %x_18
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicAdd_8a199a
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atomicAdd_8a199a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %15:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicAdd/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicAdd/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicAdd/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicAdd/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicAdd/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicAdd/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicAnd/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicAnd/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94d34de
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicAnd/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicAnd_152966 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 0i
+    %res:ptr<function, i32, read_write> = var, 0i
+    store %arg_1, 1i
+    %x_20:i32 = load %arg_1
+    %6:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_13:i32 = atomicAnd %6, %x_20
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicAnd_152966
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atomicAnd_152966
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %15:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicAnd/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicAnd/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..40af166
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicAnd/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicAnd_85a8d9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 0u
+    %res:ptr<function, u32, read_write> = var, 0u
+    store %arg_1, 1u
+    %x_18:u32 = load %arg_1
+    %6:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_13:u32 = atomicAnd %6, %x_18
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicAnd_85a8d9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atomicAnd_85a8d9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %15:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicAnd/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicAnd/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicAnd/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicAnd/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicAnd/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicAnd/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..6a438d5
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,71 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+x__atomic_compare_exchange_resulti32 = struct @align(4) {
+  old_value:i32 @offset(0)
+  exchanged:bool @offset(4)
+}
+
+__atomic_compare_exchange_result_i32 = struct @align(4) {
+  old_value:i32 @offset(0)
+  exchanged:bool @offset(4)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicCompareExchangeWeak_1bd40a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 0i
+    %arg_2:ptr<function, i32, read_write> = var, 0i
+    %res:ptr<function, x__atomic_compare_exchange_resulti32, read_write> = var, x__atomic_compare_exchange_resulti32(0i, false)
+    store %arg_1, 1i
+    store %arg_2, 1i
+    %x_23:i32 = load %arg_2
+    %x_24:i32 = load %arg_1
+    %8:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %9:__atomic_compare_exchange_result_i32 = atomicCompareExchangeWeak %8, %x_24, %x_23
+    %old_value_1:i32 = access %9, 0u
+    %x_25:i32 = let %old_value_1
+    %12:bool = eq %x_25, %x_23
+    %13:x__atomic_compare_exchange_resulti32 = construct %x_25, %12
+    store %res, %13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %atomicCompareExchangeWeak_1bd40a
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %atomicCompareExchangeWeak_1bd40a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %21:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..683fd25
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,71 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+x__atomic_compare_exchange_resultu32 = struct @align(4) {
+  old_value:u32 @offset(0)
+  exchanged:bool @offset(4)
+}
+
+__atomic_compare_exchange_result_u32 = struct @align(4) {
+  old_value:u32 @offset(0)
+  exchanged:bool @offset(4)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicCompareExchangeWeak_63d8e6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 0u
+    %arg_2:ptr<function, u32, read_write> = var, 0u
+    %res:ptr<function, x__atomic_compare_exchange_resultu32, read_write> = var, x__atomic_compare_exchange_resultu32(0u, false)
+    store %arg_1, 1u
+    store %arg_2, 1u
+    %x_21:u32 = load %arg_2
+    %x_22:u32 = load %arg_1
+    %8:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %9:__atomic_compare_exchange_result_u32 = atomicCompareExchangeWeak %8, %x_22, %x_21
+    %old_value_1:u32 = access %9, 0u
+    %x_23:u32 = let %old_value_1
+    %12:bool = eq %x_23, %x_21
+    %13:x__atomic_compare_exchange_resultu32 = construct %x_23, %12
+    store %res, %13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %atomicCompareExchangeWeak_63d8e6
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %atomicCompareExchangeWeak_63d8e6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %21:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicExchange/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicExchange/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..341f200
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicExchange/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicExchange_f2e22f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 0i
+    %res:ptr<function, i32, read_write> = var, 0i
+    store %arg_1, 1i
+    %x_20:i32 = load %arg_1
+    %6:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_13:i32 = atomicExchange %6, %x_20
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicExchange_f2e22f
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atomicExchange_f2e22f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %15:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicExchange/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicExchange/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..ab62a1c
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicExchange/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicExchange_d59712 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 0u
+    %res:ptr<function, u32, read_write> = var, 0u
+    store %arg_1, 1u
+    %x_18:u32 = load %arg_1
+    %6:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_13:u32 = atomicExchange %6, %x_18
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicExchange_d59712
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atomicExchange_d59712
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %15:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicExchange/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicExchange/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicExchange/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicExchange/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicExchange/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicExchange/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicLoad/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicLoad/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1b06340
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicLoad/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicLoad_0806ad = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 0i
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_9:i32 = atomicLoad %4
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicLoad_0806ad
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicLoad_0806ad
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicLoad/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicLoad/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..ccc1975
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicLoad/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicLoad_fe6cc3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 0u
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_9:u32 = atomicLoad %4
+    store %res, %x_9
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicLoad_fe6cc3
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %atomicLoad_fe6cc3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicLoad/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicLoad/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicLoad/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicLoad/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicLoad/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicLoad/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicMax/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicMax/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..4bc5073
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicMax/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicMax_92aa72 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 0i
+    %res:ptr<function, i32, read_write> = var, 0i
+    store %arg_1, 1i
+    %x_20:i32 = load %arg_1
+    %6:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_13:i32 = atomicMax %6, %x_20
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicMax_92aa72
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atomicMax_92aa72
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %15:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicMax/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicMax/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..08e74b0
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicMax/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicMax_51b9be = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 0u
+    %res:ptr<function, u32, read_write> = var, 0u
+    store %arg_1, 1u
+    %x_18:u32 = load %arg_1
+    %6:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_13:u32 = atomicMax %6, %x_18
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicMax_51b9be
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atomicMax_51b9be
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %15:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicMax/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicMax/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicMax/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicMax/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicMax/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicMax/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicMin/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicMin/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..097fac5
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicMin/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicMin_8e38dc = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 0i
+    %res:ptr<function, i32, read_write> = var, 0i
+    store %arg_1, 1i
+    %x_20:i32 = load %arg_1
+    %6:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_13:i32 = atomicMin %6, %x_20
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicMin_8e38dc
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atomicMin_8e38dc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %15:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicMin/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicMin/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..d305f8b
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicMin/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicMin_c67a74 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 0u
+    %res:ptr<function, u32, read_write> = var, 0u
+    store %arg_1, 1u
+    %x_18:u32 = load %arg_1
+    %6:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_13:u32 = atomicMin %6, %x_18
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicMin_c67a74
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atomicMin_c67a74
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %15:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicMin/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicMin/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicMin/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicMin/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicMin/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicMin/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicOr/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicOr/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1d8a5c3
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicOr/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicOr_8d96a0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 0i
+    %res:ptr<function, i32, read_write> = var, 0i
+    store %arg_1, 1i
+    %x_20:i32 = load %arg_1
+    %6:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_13:i32 = atomicOr %6, %x_20
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicOr_8d96a0
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atomicOr_8d96a0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %15:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicOr/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicOr/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..c77e311
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicOr/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicOr_5e95d4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 0u
+    %res:ptr<function, u32, read_write> = var, 0u
+    store %arg_1, 1u
+    %x_18:u32 = load %arg_1
+    %6:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_13:u32 = atomicOr %6, %x_18
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicOr_5e95d4
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atomicOr_5e95d4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %15:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicOr/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicOr/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicOr/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicOr/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicOr/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicOr/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicStore/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicStore/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f05836b
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicStore/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,52 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicStore_d1e9a6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 0i
+    store %arg_1, 1i
+    %x_20:i32 = load %arg_1
+    %5:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %6:void = atomicStore %5, %x_20
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicStore_d1e9a6
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %10:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %12:void = call %atomicStore_d1e9a6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %14:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicStore/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicStore/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..30878b8
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicStore/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,52 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicStore_cdc29e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 0u
+    store %arg_1, 1u
+    %x_18:u32 = load %arg_1
+    %5:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %6:void = atomicStore %5, %x_18
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicStore_cdc29e
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %10:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %12:void = call %atomicStore_cdc29e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %14:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicStore/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicStore/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicStore/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicStore/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicStore/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicStore/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicSub/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicSub/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..ab63ae0
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicSub/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicSub_051100 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 0i
+    %res:ptr<function, i32, read_write> = var, 0i
+    store %arg_1, 1i
+    %x_20:i32 = load %arg_1
+    %6:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_13:i32 = atomicSub %6, %x_20
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicSub_051100
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atomicSub_051100
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %15:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicSub/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicSub/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..90257fb
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicSub/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicSub_15bfc9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 0u
+    %res:ptr<function, u32, read_write> = var, 0u
+    store %arg_1, 1u
+    %x_18:u32 = load %arg_1
+    %6:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_13:u32 = atomicSub %6, %x_18
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicSub_15bfc9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atomicSub_15bfc9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %15:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicSub/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicSub/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicSub/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicSub/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicSub/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicSub/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicXor/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicXor/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..c42ec40
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicXor/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicXor_c1b78c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 0i
+    %res:ptr<function, i32, read_write> = var, 0i
+    store %arg_1, 1i
+    %x_20:i32 = load %arg_1
+    %6:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_13:i32 = atomicXor %6, %x_20
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicXor_c1b78c
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atomicXor_c1b78c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %15:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicXor/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicXor/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7301d13
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicXor/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicXor_54510e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 0u
+    %res:ptr<function, u32, read_write> = var, 0u
+    store %arg_1, 1u
+    %x_18:u32 = load %arg_1
+    %6:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_13:u32 = atomicXor %6, %x_18
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicXor_54510e
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atomicXor_54510e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %15:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicXor/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicXor/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicXor/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/atomicXor/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/atomicXor/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/atomicXor/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..20cca2d
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicAdd_d32fe4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 0i
+    %res:ptr<function, i32, read_write> = var, 0i
+    store %arg_1, 1i
+    %5:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_13:i32 = atomicSub %5, 1i
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicAdd_d32fe4
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %10:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %12:void = call %atomicAdd_d32fe4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %14:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..840a5b4
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicAdd_8a199a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 0u
+    %res:ptr<function, u32, read_write> = var, 0u
+    store %arg_1, 1u
+    %5:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_13:u32 = atomicSub %5, 1u
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicAdd_8a199a
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %10:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %12:void = call %atomicAdd_8a199a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %14:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/storage_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/storage_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..4066047
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/storage_i32.spvasm.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicAdd_d32fe4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 0i
+    %res:ptr<function, i32, read_write> = var, 0i
+    store %arg_1, 1i
+    %5:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %x_13:i32 = atomicAdd %5, 1i
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicAdd_d32fe4
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %10:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %12:void = call %atomicAdd_d32fe4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %14:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/storage_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/storage_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..d6b86ec
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/storage_u32.spvasm.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW_atomic = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
+}
+
+%atomicAdd_8a199a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 0u
+    %res:ptr<function, u32, read_write> = var, 0u
+    store %arg_1, 1u
+    %5:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %x_13:u32 = atomicAdd %5, 1u
+    store %res, %x_13
+    ret
+  }
+}
+%fragment_main_1 = func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicAdd_8a199a
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %10:void = call %fragment_main_1
+    ret
+  }
+}
+%compute_main_1 = func():void -> %b5 {
+  %b5 = block {
+    %12:void = call %atomicAdd_8a199a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %14:void = call %compute_main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/workgroup_i32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/workgroup_i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/workgroup_i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/workgroup_u32.spvasm.expected.ir.msl b/test/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/workgroup_u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/workgroup_u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/degrees.spvasm.expected.ir.msl b/test/tint/builtins/degrees.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/degrees.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/extractBits/scalar/i32.spvasm.expected.ir.msl b/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/extractBits/scalar/u32.spvasm.expected.ir.msl b/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/extractBits/vec3/i32.spvasm.expected.ir.msl b/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/extractBits/vec3/u32.spvasm.expected.ir.msl b/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/frexp.wgsl.expected.ir.msl b/test/tint/builtins/frexp.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/builtins/frexp.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/builtins/frexp/scalar/const.wgsl.expected.ir.msl b/test/tint/builtins/frexp/scalar/const.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/builtins/frexp/scalar/const.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/builtins/frexp/scalar/mixed.wgsl.expected.ir.msl b/test/tint/builtins/frexp/scalar/mixed.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/frexp/scalar/mixed.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/frexp/scalar/runtime.wgsl.expected.ir.msl b/test/tint/builtins/frexp/scalar/runtime.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/frexp/scalar/runtime.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/frexp/vector/const.wgsl.expected.ir.msl b/test/tint/builtins/frexp/vector/const.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/builtins/frexp/vector/const.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/builtins/frexp/vector/mixed.wgsl.expected.ir.msl b/test/tint/builtins/frexp/vector/mixed.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/frexp/vector/mixed.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/frexp/vector/runtime.wgsl.expected.ir.msl b/test/tint/builtins/frexp/vector/runtime.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/frexp/vector/runtime.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/002533.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/002533.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ec338d0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/002533.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_002533 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %abs_002533
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %abs_002533
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %abs_002533
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/005174.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/005174.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6fc86e8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/005174.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_005174 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %abs_005174
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %abs_005174
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %abs_005174
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/1ce782.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/1ce782.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fd0c621
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/1ce782.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_1ce782 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %4:vec4<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %abs_1ce782
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %abs_1ce782
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %abs_1ce782
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/1e9d53.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/1e9d53.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9808fd9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/1e9d53.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_1e9d53 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %abs_1e9d53
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %abs_1e9d53
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %abs_1e9d53
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ec8ed03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_421ca3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %abs_421ca3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %abs_421ca3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %abs_421ca3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/467cd1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/467cd1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5027b8d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/467cd1.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%abs_467cd1 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 1u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %abs_467cd1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %abs_467cd1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %abs_467cd1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/4ad288.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/4ad288.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ccd091d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/4ad288.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%abs_4ad288 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 1i
+    %4:i32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %abs_4ad288
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %abs_4ad288
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %abs_4ad288
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/538d29.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5ff5427
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_538d29 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %abs_538d29
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %abs_538d29
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %abs_538d29
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/5ad50a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/5ad50a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1b22400
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/5ad50a.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_5ad50a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %4:vec3<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %abs_5ad50a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %abs_5ad50a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %abs_5ad50a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fe609ce
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_5ae4fe = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %abs_5ae4fe
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %abs_5ae4fe
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %abs_5ae4fe
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/7326de.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/7326de.wgsl.expected.ir.msl
new file mode 100644
index 0000000..941e66f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/7326de.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_7326de = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %4:vec3<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %abs_7326de
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %abs_7326de
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %abs_7326de
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/7f28e6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/7f28e6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2247281
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/7f28e6.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_7f28e6 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %4:vec2<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %abs_7f28e6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %abs_7f28e6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %abs_7f28e6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/7faa9e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/7faa9e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..abbe401
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/7faa9e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_7faa9e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %4:vec2<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %abs_7faa9e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %abs_7faa9e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %abs_7faa9e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/9c80a6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/9c80a6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f3edd6d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/9c80a6.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_9c80a6 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %4:vec4<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %abs_9c80a6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %abs_9c80a6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %abs_9c80a6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/b96037.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/b96037.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e2cca09
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/b96037.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%abs_b96037 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %abs_b96037
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %abs_b96037
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %abs_b96037
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/e28785.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5ed399c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%abs_fd247f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %abs_fd247f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %abs_fd247f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %abs_fd247f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/acos/004aff.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.ir.msl
new file mode 100644
index 0000000..243d25c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%acos_004aff = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.25048828125h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %acos_004aff
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %acos_004aff
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %acos_004aff
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/acos/069188.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acos/069188.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acos/069188.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/acos/15d35b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acos/15d35b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acos/15d35b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/acos/203628.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.ir.msl
new file mode 100644
index 0000000..41b93a5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%acos_203628 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.25048828125h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %acos_203628
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %acos_203628
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %acos_203628
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d47451e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%acos_303e3d = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.25048828125h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %acos_303e3d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %acos_303e3d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %acos_303e3d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/acos/489247.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acos/489247.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1d290b9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acos/489247.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%acos_489247 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.25f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %acos_489247
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %acos_489247
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %acos_489247
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/acos/4dac75.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acos/4dac75.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acos/4dac75.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/acos/5e9ad2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acos/5e9ad2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acos/5e9ad2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/acos/8e2acf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acos/8e2acf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..09a3cf4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acos/8e2acf.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%acos_8e2acf = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.25f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %acos_8e2acf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %acos_8e2acf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %acos_8e2acf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/acos/a610c4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acos/a610c4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fd57b75
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acos/a610c4.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%acos_a610c4 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.25f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %acos_a610c4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %acos_a610c4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %acos_a610c4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/acos/dfc915.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acos/dfc915.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b1efb0b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acos/dfc915.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%acos_dfc915 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.25f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %acos_dfc915
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %acos_dfc915
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %acos_dfc915
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/acos/f47057.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f97b195
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%acos_f47057 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.25048828125h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %acos_f47057
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %acos_f47057
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %acos_f47057
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b5257a3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%acosh_5f49d8 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.99951171875h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %acosh_5f49d8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %acosh_5f49d8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %acosh_5f49d8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/acosh/640883.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fec6197
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%acosh_640883 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %acosh_640883
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %acosh_640883
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %acosh_640883
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1ae9000
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%acosh_a37dfe = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.99951171875h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %acosh_a37dfe
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %acosh_a37dfe
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %acosh_a37dfe
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..29b6128
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%acosh_d51ccb = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %acosh_d51ccb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %acosh_d51ccb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %acosh_d51ccb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3980064
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%acosh_de60d8 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.99951171875h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %acosh_de60d8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %acosh_de60d8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %acosh_de60d8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f2e3959
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%acosh_e38f5c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %acosh_e38f5c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %acosh_e38f5c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %acosh_e38f5c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..13c8aae
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%acosh_ecf2d1 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %acosh_ecf2d1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %acosh_ecf2d1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %acosh_ecf2d1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.ir.msl
new file mode 100644
index 0000000..38734d1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%acosh_f56574 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.99951171875h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %acosh_f56574
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %acosh_f56574
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %acosh_f56574
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/all/353d6a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..03499e84
--- /dev/null
+++ b/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%all_353d6a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, bool, read_write> = var, true
+    %4:bool = load %res
+    %5:bool = eq %4, false
+    %6:bool = all %5
+    %7:i32 = select 0i, 1i, %6
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %all_353d6a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %all_353d6a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %all_353d6a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/all/986c7b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..70b2ec1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%all_986c7b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, bool, read_write> = var, true
+    %4:bool = load %res
+    %5:bool = eq %4, false
+    %6:bool = all %5
+    %7:i32 = select 0i, 1i, %6
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %all_986c7b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %all_986c7b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %all_986c7b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e86a366
--- /dev/null
+++ b/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%all_bd2dba = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, bool, read_write> = var, true
+    %4:bool = load %res
+    %5:bool = eq %4, false
+    %6:bool = all %5
+    %7:i32 = select 0i, 1i, %6
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %all_bd2dba
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %all_bd2dba
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %all_bd2dba
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/all/f46790.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.ir.msl
new file mode 100644
index 0000000..21c45e0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%all_f46790 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, bool, read_write> = var, true
+    %4:bool = load %res
+    %5:bool = eq %4, false
+    %6:bool = all %5
+    %7:i32 = select 0i, 1i, %6
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %all_f46790
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %all_f46790
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %all_f46790
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/any/083428.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/any/083428.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1b379f5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/any/083428.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%any_083428 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, bool, read_write> = var, true
+    %4:bool = load %res
+    %5:bool = eq %4, false
+    %6:bool = all %5
+    %7:i32 = select 0i, 1i, %6
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %any_083428
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %any_083428
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %any_083428
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/any/0e3e58.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/any/0e3e58.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f6e3780
--- /dev/null
+++ b/test/tint/builtins/gen/literal/any/0e3e58.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%any_0e3e58 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, bool, read_write> = var, true
+    %4:bool = load %res
+    %5:bool = eq %4, false
+    %6:bool = all %5
+    %7:i32 = select 0i, 1i, %6
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %any_0e3e58
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %any_0e3e58
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %any_0e3e58
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/any/2ab91a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/any/2ab91a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4020e58
--- /dev/null
+++ b/test/tint/builtins/gen/literal/any/2ab91a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%any_2ab91a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, bool, read_write> = var, true
+    %4:bool = load %res
+    %5:bool = eq %4, false
+    %6:bool = all %5
+    %7:i32 = select 0i, 1i, %6
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %any_2ab91a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %any_2ab91a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %any_2ab91a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/any/e755c1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/any/e755c1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..339d225
--- /dev/null
+++ b/test/tint/builtins/gen/literal/any/e755c1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%any_e755c1 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, bool, read_write> = var, true
+    %4:bool = load %res
+    %5:bool = eq %4, false
+    %6:bool = all %5
+    %7:i32 = select 0i, 1i, %6
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %any_e755c1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %any_e755c1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %any_e755c1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/arrayLength/1588cd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/arrayLength/1588cd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7cb8118
--- /dev/null
+++ b/test/tint/builtins/gen/literal/arrayLength/1588cd.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RO = struct @align(4) {
+  arg_0:array<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_ro:ptr<storage, SB_RO, read> = var @binding_point(0, 1)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%arrayLength_1588cd = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, array<i32>, read> = access %sb_ro, 0u
+    %5:u32 = arrayLength %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %arrayLength_1588cd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %arrayLength_1588cd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %arrayLength_1588cd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/arrayLength/61b1c7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/arrayLength/61b1c7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b3f8345
--- /dev/null
+++ b/test/tint/builtins/gen/literal/arrayLength/61b1c7.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:array<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%arrayLength_61b1c7 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, array<i32>, read_write> = access %sb_rw, 0u
+    %5:u32 = arrayLength %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %arrayLength_61b1c7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %arrayLength_61b1c7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %arrayLength_61b1c7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7f0f1fb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RO = struct @align(2) {
+  arg_0:array<f16> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_ro:ptr<storage, SB_RO, read> = var @binding_point(0, 1)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%arrayLength_8421b9 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, array<f16>, read> = access %sb_ro, 0u
+    %5:u32 = arrayLength %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %arrayLength_8421b9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %arrayLength_8421b9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %arrayLength_8421b9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/arrayLength/a0f5ca.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/arrayLength/a0f5ca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fa401db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/arrayLength/a0f5ca.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RO = struct @align(4) {
+  arg_0:array<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_ro:ptr<storage, SB_RO, read> = var @binding_point(0, 1)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%arrayLength_a0f5ca = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, array<f32>, read> = access %sb_ro, 0u
+    %5:u32 = arrayLength %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %arrayLength_a0f5ca
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %arrayLength_a0f5ca
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %arrayLength_a0f5ca
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b5bbeb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(2) {
+  arg_0:array<f16> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%arrayLength_cbd6b5 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, array<f16>, read_write> = access %sb_rw, 0u
+    %5:u32 = arrayLength %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %arrayLength_cbd6b5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %arrayLength_cbd6b5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %arrayLength_cbd6b5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/arrayLength/cdd123.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/arrayLength/cdd123.wgsl.expected.ir.msl
new file mode 100644
index 0000000..acc165e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/arrayLength/cdd123.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:array<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%arrayLength_cdd123 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, array<f32>, read_write> = access %sb_rw, 0u
+    %5:u32 = arrayLength %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %arrayLength_cdd123
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %arrayLength_cdd123
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %arrayLength_cdd123
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/arrayLength/cfca0a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/arrayLength/cfca0a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2b35883
--- /dev/null
+++ b/test/tint/builtins/gen/literal/arrayLength/cfca0a.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RO = struct @align(4) {
+  arg_0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_ro:ptr<storage, SB_RO, read> = var @binding_point(0, 1)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%arrayLength_cfca0a = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, array<u32>, read> = access %sb_ro, 0u
+    %5:u32 = arrayLength %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %arrayLength_cfca0a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %arrayLength_cfca0a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %arrayLength_cfca0a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/arrayLength/eb510f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/arrayLength/eb510f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f924728
--- /dev/null
+++ b/test/tint/builtins/gen/literal/arrayLength/eb510f.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%arrayLength_eb510f = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, array<u32>, read_write> = access %sb_rw, 0u
+    %5:u32 = arrayLength %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %arrayLength_eb510f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %arrayLength_eb510f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %arrayLength_eb510f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/asin/064953.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asin/064953.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c2e9bc6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asin/064953.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%asin_064953 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.5f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %asin_064953
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %asin_064953
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %asin_064953
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/asin/0bac07.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asin/0bac07.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asin/0bac07.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.ir.msl
new file mode 100644
index 0000000..84d239c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%asin_11dfda = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.499755859375h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %asin_11dfda
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %asin_11dfda
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %asin_11dfda
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f20c21c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%asin_2d8e29 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.499755859375h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %asin_2d8e29
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %asin_2d8e29
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %asin_2d8e29
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1869aab
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%asin_3cfbd4 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.499755859375h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %asin_3cfbd4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %asin_3cfbd4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %asin_3cfbd4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/asin/64bb1f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asin/64bb1f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asin/64bb1f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/asin/7b6a44.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asin/7b6a44.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4ad7aba
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asin/7b6a44.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%asin_7b6a44 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.5f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %asin_7b6a44
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %asin_7b6a44
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %asin_7b6a44
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/asin/8cd9c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asin/8cd9c9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bac72d7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asin/8cd9c9.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%asin_8cd9c9 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.5f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %asin_8cd9c9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %asin_8cd9c9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %asin_8cd9c9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/asin/a5dd88.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asin/a5dd88.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asin/a5dd88.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/asin/a6d73a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asin/a6d73a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asin/a6d73a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1874dad
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%asin_b4aced = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.499755859375h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %asin_b4aced
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %asin_b4aced
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %asin_b4aced
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/asin/c0c272.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asin/c0c272.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a20255b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asin/c0c272.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%asin_c0c272 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.5f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %asin_c0c272
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %asin_c0c272
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %asin_c0c272
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/asinh/157447.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.ir.msl
new file mode 100644
index 0000000..33457e8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%asinh_157447 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.88137358427047729492f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %asinh_157447
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %asinh_157447
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %asinh_157447
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/asinh/180015.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e4330cd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%asinh_2265ee = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.88137358427047729492f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %asinh_2265ee
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %asinh_2265ee
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %asinh_2265ee
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.ir.msl
new file mode 100644
index 0000000..479a961
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%asinh_468a48 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.88134765625h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %asinh_468a48
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %asinh_468a48
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %asinh_468a48
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.ir.msl
new file mode 100644
index 0000000..686d7c1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%asinh_4a2226 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.88137358427047729492f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %asinh_4a2226
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %asinh_4a2226
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %asinh_4a2226
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d01e68f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%asinh_8d2e51 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.88137358427047729492f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %asinh_8d2e51
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %asinh_8d2e51
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %asinh_8d2e51
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..884a047
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%asinh_95ab2b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.88134765625h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %asinh_95ab2b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %asinh_95ab2b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %asinh_95ab2b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..94ac1a9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%asinh_ad8f8b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.88134765625h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %asinh_ad8f8b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %asinh_ad8f8b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %asinh_ad8f8b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1e9624f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%asinh_fb5e8c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.88134765625h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %asinh_fb5e8c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %asinh_fb5e8c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %asinh_fb5e8c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atan/02979a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9439b7d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%atan_02979a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.78539818525314331055f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atan_02979a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atan_02979a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atan_02979a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atan/19faea.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.ir.msl
new file mode 100644
index 0000000..79d337b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%atan_19faea = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.78515625h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atan_19faea
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atan_19faea
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atan_19faea
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.ir.msl
new file mode 100644
index 0000000..789b373
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%atan_1e1764 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.78515625h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atan_1e1764
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atan_1e1764
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atan_1e1764
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9fa811b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%atan_331e6d = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.78539818525314331055f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atan_331e6d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atan_331e6d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atan_331e6d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.ir.msl
new file mode 100644
index 0000000..459437e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%atan_a5f421 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.78515625h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atan_a5f421
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atan_a5f421
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atan_a5f421
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e49efea
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%atan_a7ba61 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.78515625h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atan_a7ba61
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atan_a7ba61
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atan_a7ba61
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1c8f977
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%atan_a8b696 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.78539818525314331055f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atan_a8b696
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atan_a8b696
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atan_a8b696
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..451aad5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%atan_ad96e4 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.78539818525314331055f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atan_ad96e4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atan_ad96e4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atan_ad96e4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.ir.msl
new file mode 100644
index 0000000..95393aa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%atan2_21dfea = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.78515625h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atan2_21dfea
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atan2_21dfea
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atan2_21dfea
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6bb0e65
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%atan2_57fb13 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.78539818525314331055f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atan2_57fb13
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atan2_57fb13
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atan2_57fb13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1a1b900
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%atan2_93febc = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.78515625h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atan2_93febc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atan2_93febc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atan2_93febc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..186c6f2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%atan2_96057c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.78539818525314331055f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atan2_96057c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atan2_96057c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atan2_96057c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9b97efd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%atan2_a70d0d = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.78539818525314331055f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atan2_a70d0d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atan2_a70d0d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atan2_a70d0d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8793019
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%atan2_ae713e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.78539818525314331055f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atan2_ae713e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atan2_ae713e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atan2_ae713e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d918b5d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%atan2_ca698e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.78515625h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atan2_ca698e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atan2_ca698e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atan2_ca698e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cf62436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%atan2_d983ab = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.78515625h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atan2_d983ab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atan2_d983ab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atan2_d983ab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..780b9a3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%atanh_440cca = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.54930615425109863281f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atanh_440cca
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atanh_440cca
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atanh_440cca
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bdfb1ca
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%atanh_5bf88d = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.548828125h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atanh_5bf88d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atanh_5bf88d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atanh_5bf88d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..24e16c4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%atanh_7997d8 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.54930615425109863281f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atanh_7997d8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atanh_7997d8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atanh_7997d8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.ir.msl
new file mode 100644
index 0000000..012e337
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%atanh_c0e634 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.54930615425109863281f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atanh_c0e634
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atanh_c0e634
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atanh_c0e634
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3eccfe3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%atanh_d2d8cd = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.548828125h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atanh_d2d8cd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atanh_d2d8cd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atanh_d2d8cd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2442e30
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%atanh_e3b450 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.548828125h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atanh_e3b450
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atanh_e3b450
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atanh_e3b450
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.ir.msl
new file mode 100644
index 0000000..55f4bc7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%atanh_ec4b06 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.548828125h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atanh_ec4b06
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atanh_ec4b06
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atanh_ec4b06
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..616badd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%atanh_f3e01b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.54930615425109863281f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %atanh_f3e01b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atanh_f3e01b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %atanh_f3e01b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicAdd/794055.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicAdd/794055.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5427bb7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicAdd/794055.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<i32>, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicAdd_794055 = func():void -> %b2 {
+  %b2 = block {
+    %4:i32 = atomicAdd %arg_0, 1i
+    %res:ptr<function, i32, read_write> = var, %4
+    %6:i32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicAdd_794055
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicAdd/8a199a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicAdd/8a199a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4b5ecb7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicAdd/8a199a.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicAdd_8a199a = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %5:u32 = atomicAdd %4, 1u
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicAdd_8a199a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicAdd_8a199a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicAdd/d32fe4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicAdd/d32fe4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c4bc367
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicAdd/d32fe4.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicAdd_d32fe4 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %5:i32 = atomicAdd %4, 1i
+    %res:ptr<function, i32, read_write> = var, %5
+    %7:i32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicAdd_d32fe4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicAdd_d32fe4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicAdd/d5db1d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicAdd/d5db1d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a2fd53c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicAdd/d5db1d.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<u32>, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicAdd_d5db1d = func():void -> %b2 {
+  %b2 = block {
+    %4:u32 = atomicAdd %arg_0, 1u
+    %res:ptr<function, u32, read_write> = var, %4
+    %6:u32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicAdd_d5db1d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicAnd/152966.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicAnd/152966.wgsl.expected.ir.msl
new file mode 100644
index 0000000..207d538
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicAnd/152966.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicAnd_152966 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %5:i32 = atomicAnd %4, 1i
+    %res:ptr<function, i32, read_write> = var, %5
+    %7:i32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicAnd_152966
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicAnd_152966
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicAnd/34edd3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicAnd/34edd3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..94be877
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicAnd/34edd3.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<u32>, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicAnd_34edd3 = func():void -> %b2 {
+  %b2 = block {
+    %4:u32 = atomicAnd %arg_0, 1u
+    %res:ptr<function, u32, read_write> = var, %4
+    %6:u32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicAnd_34edd3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicAnd/45a819.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicAnd/45a819.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5e828e9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicAnd/45a819.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<i32>, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicAnd_45a819 = func():void -> %b2 {
+  %b2 = block {
+    %4:i32 = atomicAnd %arg_0, 1i
+    %res:ptr<function, i32, read_write> = var, %4
+    %6:i32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicAnd_45a819
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicAnd/85a8d9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicAnd/85a8d9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2197441
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicAnd/85a8d9.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicAnd_85a8d9 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %5:u32 = atomicAnd %4, 1u
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicAnd_85a8d9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicAnd_85a8d9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicCompareExchangeWeak/1bd40a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/1bd40a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..748cf1e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/1bd40a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+__atomic_compare_exchange_result_i32 = struct @align(4) {
+  old_value:i32 @offset(0)
+  exchanged:bool @offset(4)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+}
+
+%atomicCompareExchangeWeak_1bd40a = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %4:__atomic_compare_exchange_result_i32 = atomicCompareExchangeWeak %3, 1i, 1i
+    %res:ptr<function, __atomic_compare_exchange_result_i32, read_write> = var, %4
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicCompareExchangeWeak_1bd40a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %atomicCompareExchangeWeak_1bd40a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicCompareExchangeWeak/63d8e6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/63d8e6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..556702a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/63d8e6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+__atomic_compare_exchange_result_u32 = struct @align(4) {
+  old_value:u32 @offset(0)
+  exchanged:bool @offset(4)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+}
+
+%atomicCompareExchangeWeak_63d8e6 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %4:__atomic_compare_exchange_result_u32 = atomicCompareExchangeWeak %3, 1u, 1u
+    %res:ptr<function, __atomic_compare_exchange_result_u32, read_write> = var, %4
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %atomicCompareExchangeWeak_63d8e6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %atomicCompareExchangeWeak_63d8e6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicCompareExchangeWeak/83580d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/83580d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/83580d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicCompareExchangeWeak/e88938.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/e88938.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/e88938.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicExchange/0a5dca.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicExchange/0a5dca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..684846f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicExchange/0a5dca.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<u32>, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicExchange_0a5dca = func():void -> %b2 {
+  %b2 = block {
+    %4:u32 = atomicExchange %arg_0, 1u
+    %res:ptr<function, u32, read_write> = var, %4
+    %6:u32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicExchange_0a5dca
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicExchange/d59712.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicExchange/d59712.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e709187
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicExchange/d59712.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicExchange_d59712 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %5:u32 = atomicExchange %4, 1u
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicExchange_d59712
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicExchange_d59712
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicExchange/e114ba.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicExchange/e114ba.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7a36def
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicExchange/e114ba.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<i32>, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicExchange_e114ba = func():void -> %b2 {
+  %b2 = block {
+    %4:i32 = atomicExchange %arg_0, 1i
+    %res:ptr<function, i32, read_write> = var, %4
+    %6:i32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicExchange_e114ba
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicExchange/f2e22f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicExchange/f2e22f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..94453c1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicExchange/f2e22f.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicExchange_f2e22f = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %5:i32 = atomicExchange %4, 1i
+    %res:ptr<function, i32, read_write> = var, %5
+    %7:i32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicExchange_f2e22f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicExchange_f2e22f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicLoad/0806ad.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicLoad/0806ad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..df14b13
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicLoad/0806ad.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicLoad_0806ad = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %5:i32 = atomicLoad %4
+    %res:ptr<function, i32, read_write> = var, %5
+    %7:i32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicLoad_0806ad
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicLoad_0806ad
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicLoad/361bf1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicLoad/361bf1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c9e32cc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicLoad/361bf1.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<u32>, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicLoad_361bf1 = func():void -> %b2 {
+  %b2 = block {
+    %4:u32 = atomicLoad %arg_0
+    %res:ptr<function, u32, read_write> = var, %4
+    %6:u32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicLoad_361bf1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicLoad/afcc03.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicLoad/afcc03.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f1ff708
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicLoad/afcc03.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<i32>, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicLoad_afcc03 = func():void -> %b2 {
+  %b2 = block {
+    %4:i32 = atomicLoad %arg_0
+    %res:ptr<function, i32, read_write> = var, %4
+    %6:i32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicLoad_afcc03
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicLoad/fe6cc3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicLoad/fe6cc3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8a6db9b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicLoad/fe6cc3.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicLoad_fe6cc3 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %5:u32 = atomicLoad %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicLoad_fe6cc3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicLoad_fe6cc3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicMax/51b9be.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicMax/51b9be.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2365678
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicMax/51b9be.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicMax_51b9be = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %5:u32 = atomicMax %4, 1u
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicMax_51b9be
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicMax_51b9be
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicMax/92aa72.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicMax/92aa72.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3ce0e87
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicMax/92aa72.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicMax_92aa72 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %5:i32 = atomicMax %4, 1i
+    %res:ptr<function, i32, read_write> = var, %5
+    %7:i32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicMax_92aa72
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicMax_92aa72
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicMax/a89cc3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicMax/a89cc3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6e395c2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicMax/a89cc3.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<i32>, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicMax_a89cc3 = func():void -> %b2 {
+  %b2 = block {
+    %4:i32 = atomicMax %arg_0, 1i
+    %res:ptr<function, i32, read_write> = var, %4
+    %6:i32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicMax_a89cc3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicMax/beccfc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicMax/beccfc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2692c8b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicMax/beccfc.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<u32>, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicMax_beccfc = func():void -> %b2 {
+  %b2 = block {
+    %4:u32 = atomicMax %arg_0, 1u
+    %res:ptr<function, u32, read_write> = var, %4
+    %6:u32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicMax_beccfc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicMin/278235.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicMin/278235.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4c19be3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicMin/278235.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<i32>, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicMin_278235 = func():void -> %b2 {
+  %b2 = block {
+    %4:i32 = atomicMin %arg_0, 1i
+    %res:ptr<function, i32, read_write> = var, %4
+    %6:i32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicMin_278235
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicMin/69d383.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicMin/69d383.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5471e99
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicMin/69d383.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<u32>, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicMin_69d383 = func():void -> %b2 {
+  %b2 = block {
+    %4:u32 = atomicMin %arg_0, 1u
+    %res:ptr<function, u32, read_write> = var, %4
+    %6:u32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicMin_69d383
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicMin/8e38dc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicMin/8e38dc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cf36b6d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicMin/8e38dc.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicMin_8e38dc = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %5:i32 = atomicMin %4, 1i
+    %res:ptr<function, i32, read_write> = var, %5
+    %7:i32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicMin_8e38dc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicMin_8e38dc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicMin/c67a74.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicMin/c67a74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c3eb497
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicMin/c67a74.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicMin_c67a74 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %5:u32 = atomicMin %4, 1u
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicMin_c67a74
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicMin_c67a74
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicOr/5e3d61.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicOr/5e3d61.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f5fbbce
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicOr/5e3d61.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<u32>, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicOr_5e3d61 = func():void -> %b2 {
+  %b2 = block {
+    %4:u32 = atomicOr %arg_0, 1u
+    %res:ptr<function, u32, read_write> = var, %4
+    %6:u32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicOr_5e3d61
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicOr/5e95d4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicOr/5e95d4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..66fd48d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicOr/5e95d4.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicOr_5e95d4 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %5:u32 = atomicOr %4, 1u
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicOr_5e95d4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicOr_5e95d4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicOr/8d96a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicOr/8d96a0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d51d623
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicOr/8d96a0.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicOr_8d96a0 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %5:i32 = atomicOr %4, 1i
+    %res:ptr<function, i32, read_write> = var, %5
+    %7:i32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicOr_8d96a0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicOr_8d96a0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicOr/d09248.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicOr/d09248.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7beda39
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicOr/d09248.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<i32>, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicOr_d09248 = func():void -> %b2 {
+  %b2 = block {
+    %4:i32 = atomicOr %arg_0, 1i
+    %res:ptr<function, i32, read_write> = var, %4
+    %6:i32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicOr_d09248
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicStore/726882.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicStore/726882.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicStore/726882.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicStore/8bea94.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicStore/8bea94.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicStore/8bea94.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicStore/cdc29e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicStore/cdc29e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..70a997b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicStore/cdc29e.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+}
+
+%atomicStore_cdc29e = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %4:void = atomicStore %3, 1u
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %6:void = call %atomicStore_cdc29e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atomicStore_cdc29e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicStore/d1e9a6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicStore/d1e9a6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..95a7778
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicStore/d1e9a6.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+}
+
+%atomicStore_d1e9a6 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %4:void = atomicStore %3, 1i
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %6:void = call %atomicStore_d1e9a6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %atomicStore_d1e9a6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicSub/051100.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicSub/051100.wgsl.expected.ir.msl
new file mode 100644
index 0000000..de67fb7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicSub/051100.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicSub_051100 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %5:i32 = atomicSub %4, 1i
+    %res:ptr<function, i32, read_write> = var, %5
+    %7:i32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicSub_051100
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicSub_051100
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicSub/0d26c2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicSub/0d26c2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ac454d2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicSub/0d26c2.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<u32>, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicSub_0d26c2 = func():void -> %b2 {
+  %b2 = block {
+    %4:u32 = atomicSub %arg_0, 1u
+    %res:ptr<function, u32, read_write> = var, %4
+    %6:u32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicSub_0d26c2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicSub/15bfc9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicSub/15bfc9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..49d5953
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicSub/15bfc9.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicSub_15bfc9 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %5:u32 = atomicSub %4, 1u
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicSub_15bfc9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicSub_15bfc9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicSub/77883a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicSub/77883a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7c37905
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicSub/77883a.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<i32>, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicSub_77883a = func():void -> %b2 {
+  %b2 = block {
+    %4:i32 = atomicSub %arg_0, 1i
+    %res:ptr<function, i32, read_write> = var, %4
+    %6:i32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicSub_77883a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicXor/54510e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicXor/54510e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1c08fe3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicXor/54510e.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicXor_54510e = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %5:u32 = atomicXor %4, 1u
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicXor_54510e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicXor_54510e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicXor/75dc95.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicXor/75dc95.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d071478
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicXor/75dc95.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<i32>, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicXor_75dc95 = func():void -> %b2 {
+  %b2 = block {
+    %4:i32 = atomicXor %arg_0, 1i
+    %res:ptr<function, i32, read_write> = var, %4
+    %6:i32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicXor_75dc95
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicXor/c1b78c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicXor/c1b78c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..979e345
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicXor/c1b78c.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicXor_c1b78c = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %5:i32 = atomicXor %4, 1i
+    %res:ptr<function, i32, read_write> = var, %5
+    %7:i32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicXor_c1b78c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicXor_c1b78c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/atomicXor/c8e6be.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/atomicXor/c8e6be.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1790d2f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atomicXor/c8e6be.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<u32>, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicXor_c8e6be = func():void -> %b2 {
+  %b2 = block {
+    %4:u32 = atomicXor %arg_0, 1u
+    %res:ptr<function, u32, read_write> = var, %4
+    %6:u32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicXor_c8e6be
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2231942
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%ceil_09bf52 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(2.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ceil_09bf52
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ceil_09bf52
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ceil_09bf52
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ceil/11b1dc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ceil/11b1dc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ceil/11b1dc.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9b886a5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%ceil_18c240 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(2.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ceil_18c240
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ceil_18c240
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ceil_18c240
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ceil/32c946.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ceil/32c946.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ceil/32c946.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/ceil/34064b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ceil/34064b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..be74abe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ceil/34064b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%ceil_34064b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(2.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ceil_34064b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ceil_34064b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ceil_34064b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0e93ba4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%ceil_4bca2a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(2.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ceil_4bca2a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ceil_4bca2a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ceil_4bca2a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ceil/678655.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ceil/678655.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f15df3a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ceil/678655.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%ceil_678655 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 2.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ceil_678655
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ceil_678655
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ceil_678655
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ceil/96f597.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ceil/96f597.wgsl.expected.ir.msl
new file mode 100644
index 0000000..57dc103
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ceil/96f597.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%ceil_96f597 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(2.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ceil_96f597
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ceil_96f597
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ceil_96f597
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ceil/b74c16.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ceil/b74c16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e94cc7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ceil/b74c16.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%ceil_b74c16 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(2.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ceil_b74c16
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ceil_b74c16
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ceil_b74c16
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ceil/bb2ca2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ceil/bb2ca2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ceil/bb2ca2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/ceil/e0b70a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ceil/e0b70a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ceil/e0b70a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8a71edc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%ceil_f3f889 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 2.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ceil_f3f889
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ceil_f3f889
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ceil_f3f889
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/0acf8f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/0acf8f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ed490e8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/0acf8f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_0acf8f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %clamp_0acf8f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %clamp_0acf8f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %clamp_0acf8f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/177548.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/1a32e3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/1a32e3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..df99b01
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/1a32e3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_1a32e3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %4:vec4<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %clamp_1a32e3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %clamp_1a32e3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %clamp_1a32e3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2277830
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_235b29 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %clamp_235b29
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %clamp_235b29
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %clamp_235b29
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/2bd567.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/2bd567.wgsl.expected.ir.msl
new file mode 100644
index 0000000..26cbc58
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/2bd567.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_2bd567 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %clamp_2bd567
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %clamp_2bd567
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %clamp_2bd567
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/2bde41.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/2bde41.wgsl.expected.ir.msl
new file mode 100644
index 0000000..052b2c4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/2bde41.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_2bde41 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %clamp_2bde41
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %clamp_2bde41
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %clamp_2bde41
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f32ce07
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_2c251b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %clamp_2c251b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %clamp_2c251b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %clamp_2c251b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/548fc7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/548fc7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d1ab855
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/548fc7.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_548fc7 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %4:vec3<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %clamp_548fc7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %clamp_548fc7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %clamp_548fc7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4effa2c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_553ffb = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %clamp_553ffb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %clamp_553ffb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %clamp_553ffb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/5f0819.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/5f0819.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ff5ec43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/5f0819.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_5f0819 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %4:vec3<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %clamp_5f0819
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %clamp_5f0819
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %clamp_5f0819
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/6c1749.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/6c1749.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e880db4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/6c1749.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_6c1749 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %4:vec2<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %clamp_6c1749
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %clamp_6c1749
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %clamp_6c1749
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/7706d7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/7706d7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c7a8dfd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/7706d7.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_7706d7 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %4:vec2<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %clamp_7706d7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %clamp_7706d7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %clamp_7706d7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/867397.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/867397.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a6cb807
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/867397.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_867397 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %clamp_867397
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %clamp_867397
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %clamp_867397
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/a2de25.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/a2de25.wgsl.expected.ir.msl
new file mode 100644
index 0000000..13eacce
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/a2de25.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_a2de25 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 1u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %clamp_a2de25
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %clamp_a2de25
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %clamp_a2de25
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/b07c65.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/b07c65.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c0c47be
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/b07c65.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_b07c65 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 1i
+    %4:i32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %clamp_b07c65
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %clamp_b07c65
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %clamp_b07c65
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6f9eae9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_b195eb = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %clamp_b195eb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %clamp_b195eb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %clamp_b195eb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/bd43ce.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/bd43ce.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c4d2fe2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/bd43ce.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_bd43ce = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %4:vec4<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %clamp_bd43ce
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %clamp_bd43ce
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %clamp_bd43ce
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eea52ee
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%cos_0835a8 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %cos_0835a8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %cos_0835a8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %cos_0835a8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..56f644e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%cos_0a89f7 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %cos_0a89f7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %cos_0a89f7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %cos_0a89f7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/cos/16dc15.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cos/16dc15.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fa217de
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cos/16dc15.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%cos_16dc15 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %cos_16dc15
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %cos_16dc15
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %cos_16dc15
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/cos/29d66d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cos/29d66d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..49efca2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cos/29d66d.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%cos_29d66d = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %cos_29d66d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %cos_29d66d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %cos_29d66d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/cos/47d768.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cos/47d768.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cos/47d768.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9d1eb1f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%cos_5bc2c6 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %cos_5bc2c6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %cos_5bc2c6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %cos_5bc2c6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/cos/6b1fdf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cos/6b1fdf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cos/6b1fdf.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/cos/a297d4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cos/a297d4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cos/a297d4.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/cos/af7447.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cos/af7447.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cos/af7447.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/cos/c3b486.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cos/c3b486.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c78cf61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cos/c3b486.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%cos_c3b486 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %cos_c3b486
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %cos_c3b486
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %cos_c3b486
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/cos/c5c28e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cos/c5c28e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..781f14e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cos/c5c28e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%cos_c5c28e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %cos_c5c28e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %cos_c5c28e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %cos_c5c28e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8d567bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%cos_fc047d = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %cos_fc047d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %cos_fc047d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %cos_fc047d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8d31223
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%cosh_2ed778 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %cosh_2ed778
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %cosh_2ed778
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %cosh_2ed778
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/cosh/377652.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cosh/377652.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9d50650
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cosh/377652.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%cosh_377652 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %cosh_377652
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %cosh_377652
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %cosh_377652
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5641ca5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%cosh_3b7bbf = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %cosh_3b7bbf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %cosh_3b7bbf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %cosh_3b7bbf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/cosh/432645.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cosh/432645.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cosh/432645.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e357e5c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%cosh_43b672 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %cosh_43b672
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %cosh_43b672
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %cosh_43b672
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1251149
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%cosh_b1b8a0 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %cosh_b1b8a0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %cosh_b1b8a0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %cosh_b1b8a0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/cosh/c13756.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cosh/c13756.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ec3b1cd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cosh/c13756.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%cosh_c13756 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %cosh_c13756
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %cosh_c13756
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %cosh_c13756
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/cosh/c892bb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cosh/c892bb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cosh/c892bb.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/cosh/d8dee7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cosh/d8dee7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cosh/d8dee7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/cosh/da92dd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cosh/da92dd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..85919a9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cosh/da92dd.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%cosh_da92dd = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %cosh_da92dd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %cosh_da92dd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %cosh_da92dd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/cosh/e0c1de.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cosh/e0c1de.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d7e3c36
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cosh/e0c1de.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%cosh_e0c1de = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %cosh_e0c1de
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %cosh_e0c1de
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %cosh_e0c1de
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/cosh/f67ff1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cosh/f67ff1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cosh/f67ff1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/countLeadingZeros/208d46.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countLeadingZeros/208d46.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5c38b27
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/208d46.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%countLeadingZeros_208d46 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 31u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countLeadingZeros_208d46
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countLeadingZeros_208d46
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countLeadingZeros_208d46
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countLeadingZeros/6d4656.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countLeadingZeros/6d4656.wgsl.expected.ir.msl
new file mode 100644
index 0000000..82cc4cd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/6d4656.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%countLeadingZeros_6d4656 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 31i
+    %4:i32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countLeadingZeros_6d4656
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countLeadingZeros_6d4656
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countLeadingZeros_6d4656
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countLeadingZeros/70783f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countLeadingZeros/70783f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d211a03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/70783f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%countLeadingZeros_70783f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(31u)
+    %4:vec2<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countLeadingZeros_70783f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countLeadingZeros_70783f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countLeadingZeros_70783f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countLeadingZeros/7c38a6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countLeadingZeros/7c38a6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..491754e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/7c38a6.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%countLeadingZeros_7c38a6 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(31i)
+    %4:vec3<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countLeadingZeros_7c38a6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countLeadingZeros_7c38a6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countLeadingZeros_7c38a6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countLeadingZeros/858d40.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countLeadingZeros/858d40.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b10e344
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/858d40.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%countLeadingZeros_858d40 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(31i)
+    %4:vec2<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countLeadingZeros_858d40
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countLeadingZeros_858d40
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countLeadingZeros_858d40
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countLeadingZeros/ab6345.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countLeadingZeros/ab6345.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cbbfd77
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/ab6345.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%countLeadingZeros_ab6345 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(31u)
+    %4:vec3<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countLeadingZeros_ab6345
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countLeadingZeros_ab6345
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countLeadingZeros_ab6345
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countLeadingZeros/eab32b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countLeadingZeros/eab32b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e6e7e75
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/eab32b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%countLeadingZeros_eab32b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(31i)
+    %4:vec4<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countLeadingZeros_eab32b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countLeadingZeros_eab32b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countLeadingZeros_eab32b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countLeadingZeros/f70103.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countLeadingZeros/f70103.wgsl.expected.ir.msl
new file mode 100644
index 0000000..66eadf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/f70103.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%countLeadingZeros_f70103 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(31u)
+    %4:vec4<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countLeadingZeros_f70103
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countLeadingZeros_f70103
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countLeadingZeros_f70103
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countOneBits/0d0e46.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countOneBits/0d0e46.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e3d64f4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countOneBits/0d0e46.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%countOneBits_0d0e46 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %4:vec4<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countOneBits_0d0e46
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countOneBits_0d0e46
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countOneBits_0d0e46
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countOneBits/0f7980.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countOneBits/0f7980.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c0644d7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countOneBits/0f7980.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%countOneBits_0f7980 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %4:vec4<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countOneBits_0f7980
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countOneBits_0f7980
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countOneBits_0f7980
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countOneBits/65d2ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countOneBits/65d2ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2daf368
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countOneBits/65d2ae.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%countOneBits_65d2ae = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %4:vec3<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countOneBits_65d2ae
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countOneBits_65d2ae
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countOneBits_65d2ae
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countOneBits/690cfc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countOneBits/690cfc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a9f8a04
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countOneBits/690cfc.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%countOneBits_690cfc = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %4:vec3<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countOneBits_690cfc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countOneBits_690cfc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countOneBits_690cfc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countOneBits/94fd81.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countOneBits/94fd81.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cd8cb7e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countOneBits/94fd81.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%countOneBits_94fd81 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %4:vec2<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countOneBits_94fd81
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countOneBits_94fd81
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countOneBits_94fd81
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countOneBits/ae44f9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countOneBits/ae44f9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5ee82f6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countOneBits/ae44f9.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%countOneBits_ae44f9 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 1u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countOneBits_ae44f9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countOneBits_ae44f9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countOneBits_ae44f9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countOneBits/af90e2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countOneBits/af90e2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bd5af1a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countOneBits/af90e2.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%countOneBits_af90e2 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %4:vec2<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countOneBits_af90e2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countOneBits_af90e2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countOneBits_af90e2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countOneBits/fd88b2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countOneBits/fd88b2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0a1d9339
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countOneBits/fd88b2.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%countOneBits_fd88b2 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 1i
+    %4:i32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countOneBits_fd88b2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countOneBits_fd88b2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countOneBits_fd88b2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countTrailingZeros/1ad138.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countTrailingZeros/1ad138.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cec1dae
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/1ad138.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%countTrailingZeros_1ad138 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(0u)
+    %4:vec2<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countTrailingZeros_1ad138
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countTrailingZeros_1ad138
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countTrailingZeros_1ad138
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countTrailingZeros/1dc84a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countTrailingZeros/1dc84a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0c1893f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/1dc84a.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%countTrailingZeros_1dc84a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(0i)
+    %4:vec4<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countTrailingZeros_1dc84a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countTrailingZeros_1dc84a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countTrailingZeros_1dc84a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countTrailingZeros/21e394.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countTrailingZeros/21e394.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0f71133
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/21e394.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%countTrailingZeros_21e394 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 0u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countTrailingZeros_21e394
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countTrailingZeros_21e394
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countTrailingZeros_21e394
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countTrailingZeros/327c37.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countTrailingZeros/327c37.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6eb10d6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/327c37.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%countTrailingZeros_327c37 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(0i)
+    %4:vec2<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countTrailingZeros_327c37
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countTrailingZeros_327c37
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countTrailingZeros_327c37
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countTrailingZeros/42fed6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countTrailingZeros/42fed6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9f4a394
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/42fed6.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%countTrailingZeros_42fed6 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 0i
+    %4:i32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countTrailingZeros_42fed6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countTrailingZeros_42fed6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countTrailingZeros_42fed6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countTrailingZeros/8ed26f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countTrailingZeros/8ed26f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fa6ce18
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/8ed26f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%countTrailingZeros_8ed26f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(0u)
+    %4:vec3<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countTrailingZeros_8ed26f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countTrailingZeros_8ed26f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countTrailingZeros_8ed26f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countTrailingZeros/acfacb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countTrailingZeros/acfacb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..92e06c3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/acfacb.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%countTrailingZeros_acfacb = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(0i)
+    %4:vec3<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countTrailingZeros_acfacb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countTrailingZeros_acfacb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countTrailingZeros_acfacb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/countTrailingZeros/d2b4a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/countTrailingZeros/d2b4a0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8fcc00f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/d2b4a0.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%countTrailingZeros_d2b4a0 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(0u)
+    %4:vec4<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %countTrailingZeros_d2b4a0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %countTrailingZeros_d2b4a0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %countTrailingZeros_d2b4a0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/cross/041cb0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cross/041cb0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c542b73
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cross/041cb0.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%cross_041cb0 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %cross_041cb0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %cross_041cb0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %cross_041cb0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/cross/1d7933.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cross/1d7933.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cross/1d7933.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/cross/9857cb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/cross/9857cb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..037e7f7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/cross/9857cb.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%cross_9857cb = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %cross_9857cb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %cross_9857cb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %cross_9857cb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3729a11
--- /dev/null
+++ b/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%degrees_0d170c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(57.2957763671875f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %degrees_0d170c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %degrees_0d170c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %degrees_0d170c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e615ff8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%degrees_1ad5df = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(57.2957763671875f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %degrees_1ad5df
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %degrees_1ad5df
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %degrees_1ad5df
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4679e0e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%degrees_2af623 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(57.2957763671875f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %degrees_2af623
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %degrees_2af623
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %degrees_2af623
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3ddd002
--- /dev/null
+++ b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%degrees_3055d3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(57.3125h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %degrees_3055d3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %degrees_3055d3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %degrees_3055d3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fb2e303
--- /dev/null
+++ b/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%degrees_51f705 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 57.2957763671875f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %degrees_51f705
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %degrees_51f705
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %degrees_51f705
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9e50b9d61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%degrees_5e9805 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 57.3125h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %degrees_5e9805
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %degrees_5e9805
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %degrees_5e9805
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/degrees/810467.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bedf60b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%degrees_dfe8f4 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(57.3125h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %degrees_dfe8f4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %degrees_dfe8f4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %degrees_dfe8f4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eacbfe3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%degrees_f59715 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(57.3125h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %degrees_f59715
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %degrees_f59715
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %degrees_f59715
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/determinant/1bf6e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/determinant/1bf6e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/determinant/1bf6e7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/determinant/2b62ba.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/determinant/2b62ba.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0d7fd6b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/determinant/2b62ba.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%determinant_2b62ba = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %determinant_2b62ba
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %determinant_2b62ba
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %determinant_2b62ba
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b652b34
--- /dev/null
+++ b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%determinant_32bfde = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %determinant_32bfde
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %determinant_32bfde
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %determinant_32bfde
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/determinant/a0a87c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/determinant/a0a87c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fecf5a2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/determinant/a0a87c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%determinant_a0a87c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %determinant_a0a87c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %determinant_a0a87c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %determinant_a0a87c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/determinant/c8251d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/determinant/c8251d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/determinant/c8251d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/determinant/cefdf3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/determinant/cefdf3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/determinant/cefdf3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2258fa0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%determinant_d7c86f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %determinant_d7c86f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %determinant_d7c86f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %determinant_d7c86f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/determinant/e19305.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/determinant/e19305.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9110482
--- /dev/null
+++ b/test/tint/builtins/gen/literal/determinant/e19305.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%determinant_e19305 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %determinant_e19305
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %determinant_e19305
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %determinant_e19305
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b8bebc9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%determinant_fc12a5 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %determinant_fc12a5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %determinant_fc12a5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %determinant_fc12a5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/distance/0657d4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/distance/0657d4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c51c69a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/distance/0657d4.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%distance_0657d4 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %distance_0657d4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %distance_0657d4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %distance_0657d4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/distance/3a175a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/distance/3a175a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/distance/3a175a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ef28eed
--- /dev/null
+++ b/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%distance_7272f3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %distance_7272f3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %distance_7272f3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %distance_7272f3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0208e9f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%distance_7d201f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %distance_7d201f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %distance_7d201f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %distance_7d201f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/distance/83911f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/distance/83911f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/distance/83911f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1e1eea2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%distance_892a5d = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %distance_892a5d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %distance_892a5d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %distance_892a5d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f96aa9a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%distance_928fa0 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %distance_928fa0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %distance_928fa0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %distance_928fa0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/distance/9646ea.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/distance/9646ea.wgsl.expected.ir.msl
new file mode 100644
index 0000000..da10b28
--- /dev/null
+++ b/test/tint/builtins/gen/literal/distance/9646ea.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%distance_9646ea = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %distance_9646ea
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %distance_9646ea
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %distance_9646ea
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/distance/aa4055.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/distance/aa4055.wgsl.expected.ir.msl
new file mode 100644
index 0000000..79e743c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/distance/aa4055.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%distance_aa4055 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %distance_aa4055
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %distance_aa4055
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %distance_aa4055
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/distance/ac5535.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/distance/ac5535.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/distance/ac5535.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/distance/cfed73.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/distance/cfed73.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ae7135c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/distance/cfed73.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%distance_cfed73 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %distance_cfed73
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %distance_cfed73
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %distance_cfed73
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/distance/f9c9ee.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/distance/f9c9ee.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/distance/f9c9ee.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/dot/08eb56.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot/08eb56.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot/08eb56.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/dot/0c577b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot/0c577b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fffda1d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot/0c577b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%dot_0c577b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 4.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %dot_0c577b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %dot_0c577b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %dot_0c577b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dot/0d2c2e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot/0d2c2e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot/0d2c2e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/dot/14bc63.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot/14bc63.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot/14bc63.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/dot/5a4c8f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot/5a4c8f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot/5a4c8f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/dot/7548a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot/7548a0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9bae90e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot/7548a0.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%dot_7548a0 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 3u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %dot_7548a0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %dot_7548a0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %dot_7548a0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dot/883f0e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot/883f0e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d2b1036
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot/883f0e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%dot_883f0e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 2.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %dot_883f0e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %dot_883f0e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %dot_883f0e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c1d7113
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%dot_8e40f1 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 3.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %dot_8e40f1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %dot_8e40f1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %dot_8e40f1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dot/97c7ee.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot/97c7ee.wgsl.expected.ir.msl
new file mode 100644
index 0000000..13c0306
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot/97c7ee.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%dot_97c7ee = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 2u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %dot_97c7ee
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %dot_97c7ee
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %dot_97c7ee
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dot/ba4246.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot/ba4246.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0edfdd1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot/ba4246.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%dot_ba4246 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 3.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %dot_ba4246
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %dot_ba4246
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %dot_ba4246
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dot/c11efe.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot/c11efe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot/c11efe.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3c7ea1f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%dot_cd5a04 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 2.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %dot_cd5a04
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %dot_cd5a04
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %dot_cd5a04
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0a244ec
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%dot_d0d179 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 4.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %dot_d0d179
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %dot_d0d179
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %dot_d0d179
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dot/e994c7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot/e994c7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f2b4515
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot/e994c7.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%dot_e994c7 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 4u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %dot_e994c7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %dot_e994c7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %dot_e994c7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dot/eb9fbf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot/eb9fbf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot/eb9fbf.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/dot/ef6b1d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot/ef6b1d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..78a0d47
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot/ef6b1d.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%dot_ef6b1d = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 4i
+    %4:i32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %dot_ef6b1d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %dot_ef6b1d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %dot_ef6b1d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dot/f1312c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot/f1312c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a533c6b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot/f1312c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%dot_f1312c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 3i
+    %4:i32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %dot_f1312c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %dot_f1312c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %dot_f1312c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dot/fc5f7c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot/fc5f7c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8ad47da
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot/fc5f7c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%dot_fc5f7c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 2i
+    %4:i32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %dot_fc5f7c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %dot_fc5f7c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %dot_fc5f7c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dot4I8Packed/881e62.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot4I8Packed/881e62.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4a45ec5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot4I8Packed/881e62.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%dot4I8Packed_881e62 = func():void -> %b2 {
+  %b2 = block {
+    %3:i32 = dot4I8Packed 1u, 1u
+    %res:ptr<function, i32, read_write> = var, %3
+    %5:i32 = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %7:void = call %dot4I8Packed_881e62
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %dot4I8Packed_881e62
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %dot4I8Packed_881e62
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dot4U8Packed/fbed7b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dot4U8Packed/fbed7b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..453d015
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dot4U8Packed/fbed7b.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%dot4U8Packed_fbed7b = func():void -> %b2 {
+  %b2 = block {
+    %3:u32 = dot4U8Packed 1u, 1u
+    %res:ptr<function, u32, read_write> = var, %3
+    %5:u32 = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %7:void = call %dot4U8Packed_fbed7b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %9:void = call %dot4U8Packed_fbed7b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %dot4U8Packed_fbed7b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdx/0763f7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdx/0763f7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2cb5cb5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdx/0763f7.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdx_0763f7 = func():void -> %b2 {
+  %b2 = block {
+    %3:vec3<f32> = dpdx vec3<f32>(1.0f)
+    %res:ptr<function, vec3<f32>, read_write> = var, %3
+    %5:vec3<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdx_0763f7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdx/99edb1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdx/99edb1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4259399
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdx/99edb1.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdx_99edb1 = func():void -> %b2 {
+  %b2 = block {
+    %3:vec2<f32> = dpdx vec2<f32>(1.0f)
+    %res:ptr<function, vec2<f32>, read_write> = var, %3
+    %5:vec2<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdx_99edb1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdx/c487fa.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdx/c487fa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9fe7ac2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdx/c487fa.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdx_c487fa = func():void -> %b2 {
+  %b2 = block {
+    %3:vec4<f32> = dpdx vec4<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %3
+    %5:vec4<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdx_c487fa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdx/e263de.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdx/e263de.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b7dbc7e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdx/e263de.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%dpdx_e263de = func():void -> %b2 {
+  %b2 = block {
+    %3:f32 = dpdx 1.0f
+    %res:ptr<function, f32, read_write> = var, %3
+    %5:f32 = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdx_e263de
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdxCoarse/029152.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdxCoarse/029152.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e2f215f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdxCoarse/029152.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%dpdxCoarse_029152 = func():void -> %b2 {
+  %b2 = block {
+    %3:f32 = dpdxCoarse 1.0f
+    %res:ptr<function, f32, read_write> = var, %3
+    %5:f32 = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdxCoarse_029152
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdxCoarse/9581cf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdxCoarse/9581cf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dc04b14
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdxCoarse/9581cf.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdxCoarse_9581cf = func():void -> %b2 {
+  %b2 = block {
+    %3:vec2<f32> = dpdxCoarse vec2<f32>(1.0f)
+    %res:ptr<function, vec2<f32>, read_write> = var, %3
+    %5:vec2<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdxCoarse_9581cf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdxCoarse/c28641.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdxCoarse/c28641.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6c39104
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdxCoarse/c28641.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdxCoarse_c28641 = func():void -> %b2 {
+  %b2 = block {
+    %3:vec4<f32> = dpdxCoarse vec4<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %3
+    %5:vec4<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdxCoarse_c28641
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdxCoarse/f64d7b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdxCoarse/f64d7b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eddc72a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdxCoarse/f64d7b.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdxCoarse_f64d7b = func():void -> %b2 {
+  %b2 = block {
+    %3:vec3<f32> = dpdxCoarse vec3<f32>(1.0f)
+    %res:ptr<function, vec3<f32>, read_write> = var, %3
+    %5:vec3<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdxCoarse_f64d7b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdxFine/8c5069.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdxFine/8c5069.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a0b5358
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdxFine/8c5069.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdxFine_8c5069 = func():void -> %b2 {
+  %b2 = block {
+    %3:vec4<f32> = dpdxFine vec4<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %3
+    %5:vec4<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdxFine_8c5069
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdxFine/9631de.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdxFine/9631de.wgsl.expected.ir.msl
new file mode 100644
index 0000000..33050f5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdxFine/9631de.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdxFine_9631de = func():void -> %b2 {
+  %b2 = block {
+    %3:vec2<f32> = dpdxFine vec2<f32>(1.0f)
+    %res:ptr<function, vec2<f32>, read_write> = var, %3
+    %5:vec2<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdxFine_9631de
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdxFine/f401a2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdxFine/f401a2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0315624
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdxFine/f401a2.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%dpdxFine_f401a2 = func():void -> %b2 {
+  %b2 = block {
+    %3:f32 = dpdxFine 1.0f
+    %res:ptr<function, f32, read_write> = var, %3
+    %5:f32 = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdxFine_f401a2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdxFine/f92fb6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdxFine/f92fb6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5502400
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdxFine/f92fb6.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdxFine_f92fb6 = func():void -> %b2 {
+  %b2 = block {
+    %3:vec3<f32> = dpdxFine vec3<f32>(1.0f)
+    %res:ptr<function, vec3<f32>, read_write> = var, %3
+    %5:vec3<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdxFine_f92fb6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdy/699a05.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdy/699a05.wgsl.expected.ir.msl
new file mode 100644
index 0000000..572b4d4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdy/699a05.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdy_699a05 = func():void -> %b2 {
+  %b2 = block {
+    %3:vec4<f32> = dpdy vec4<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %3
+    %5:vec4<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdy_699a05
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdy/7f8d84.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdy/7f8d84.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c86951f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdy/7f8d84.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%dpdy_7f8d84 = func():void -> %b2 {
+  %b2 = block {
+    %3:f32 = dpdy 1.0f
+    %res:ptr<function, f32, read_write> = var, %3
+    %5:f32 = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdy_7f8d84
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdy/a8b56e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdy/a8b56e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aa77f52
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdy/a8b56e.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdy_a8b56e = func():void -> %b2 {
+  %b2 = block {
+    %3:vec2<f32> = dpdy vec2<f32>(1.0f)
+    %res:ptr<function, vec2<f32>, read_write> = var, %3
+    %5:vec2<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdy_a8b56e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdy/feb40f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdy/feb40f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..312fa68
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdy/feb40f.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdy_feb40f = func():void -> %b2 {
+  %b2 = block {
+    %3:vec3<f32> = dpdy vec3<f32>(1.0f)
+    %res:ptr<function, vec3<f32>, read_write> = var, %3
+    %5:vec3<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdy_feb40f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdyCoarse/3e1ab4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdyCoarse/3e1ab4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..98d5ae0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdyCoarse/3e1ab4.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdyCoarse_3e1ab4 = func():void -> %b2 {
+  %b2 = block {
+    %3:vec2<f32> = dpdyCoarse vec2<f32>(1.0f)
+    %res:ptr<function, vec2<f32>, read_write> = var, %3
+    %5:vec2<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdyCoarse_3e1ab4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdyCoarse/445d24.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdyCoarse/445d24.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c732bf3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdyCoarse/445d24.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdyCoarse_445d24 = func():void -> %b2 {
+  %b2 = block {
+    %3:vec4<f32> = dpdyCoarse vec4<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %3
+    %5:vec4<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdyCoarse_445d24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdyCoarse/870a7e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdyCoarse/870a7e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5269dc2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdyCoarse/870a7e.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%dpdyCoarse_870a7e = func():void -> %b2 {
+  %b2 = block {
+    %3:f32 = dpdyCoarse 1.0f
+    %res:ptr<function, f32, read_write> = var, %3
+    %5:f32 = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdyCoarse_870a7e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdyCoarse/ae1873.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdyCoarse/ae1873.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dc4eded
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdyCoarse/ae1873.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdyCoarse_ae1873 = func():void -> %b2 {
+  %b2 = block {
+    %3:vec3<f32> = dpdyCoarse vec3<f32>(1.0f)
+    %res:ptr<function, vec3<f32>, read_write> = var, %3
+    %5:vec3<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdyCoarse_ae1873
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdyFine/1fb7ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdyFine/1fb7ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e24fb9c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdyFine/1fb7ab.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdyFine_1fb7ab = func():void -> %b2 {
+  %b2 = block {
+    %3:vec3<f32> = dpdyFine vec3<f32>(1.0f)
+    %res:ptr<function, vec3<f32>, read_write> = var, %3
+    %5:vec3<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdyFine_1fb7ab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdyFine/6eb673.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdyFine/6eb673.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a59eb2b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdyFine/6eb673.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%dpdyFine_6eb673 = func():void -> %b2 {
+  %b2 = block {
+    %3:f32 = dpdyFine 1.0f
+    %res:ptr<function, f32, read_write> = var, %3
+    %5:f32 = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdyFine_6eb673
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdyFine/d0a648.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdyFine/d0a648.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ff95a62
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdyFine/d0a648.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdyFine_d0a648 = func():void -> %b2 {
+  %b2 = block {
+    %3:vec4<f32> = dpdyFine vec4<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %3
+    %5:vec4<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdyFine_d0a648
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/dpdyFine/df33aa.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/dpdyFine/df33aa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3ee93bc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/dpdyFine/df33aa.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdyFine_df33aa = func():void -> %b2 {
+  %b2 = block {
+    %3:vec2<f32> = dpdyFine vec2<f32>(1.0f)
+    %res:ptr<function, vec2<f32>, read_write> = var, %3
+    %5:vec2<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %dpdyFine_df33aa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..df9853c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%exp_0f70eb = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(2.71828174591064453125f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %exp_0f70eb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %exp_0f70eb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %exp_0f70eb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/exp/13806d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ab1d5f9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%exp_13806d = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(2.716796875h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %exp_13806d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %exp_13806d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %exp_13806d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d13e3d4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%exp_1951e7 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(2.71828174591064453125f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %exp_1951e7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %exp_1951e7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %exp_1951e7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..71f7491
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%exp_2e08e2 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(2.716796875h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %exp_2e08e2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %exp_2e08e2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %exp_2e08e2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/exp/611a87.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.ir.msl
new file mode 100644
index 0000000..26c7ea1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%exp_611a87 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(2.716796875h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %exp_611a87
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %exp_611a87
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %exp_611a87
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/exp/699629.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..27b1e7a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%exp_771fd2 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 2.71828174591064453125f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %exp_771fd2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %exp_771fd2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %exp_771fd2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ef92a41
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%exp_c18fe9 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 2.716796875h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %exp_c18fe9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %exp_c18fe9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %exp_c18fe9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/exp/d98450.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.ir.msl
new file mode 100644
index 0000000..668cf8e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%exp_d98450 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(2.71828174591064453125f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %exp_d98450
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %exp_d98450
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %exp_d98450
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/exp/dad791.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8a12a73
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%exp2_151a4c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(2.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %exp2_151a4c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %exp2_151a4c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %exp2_151a4c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/exp2/18aa76.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp2/18aa76.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp2/18aa76.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/exp2/1f8680.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp2/1f8680.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0e4b761
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp2/1f8680.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%exp2_1f8680 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(2.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %exp2_1f8680
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %exp2_1f8680
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %exp2_1f8680
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/exp2/303753.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp2/303753.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp2/303753.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/exp2/751377.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2930a9a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%exp2_751377 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(2.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %exp2_751377
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %exp2_751377
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %exp2_751377
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/exp2/8bd72d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp2/8bd72d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp2/8bd72d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/exp2/a9d0a7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp2/a9d0a7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6bc7b2f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp2/a9d0a7.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%exp2_a9d0a7 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(2.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %exp2_a9d0a7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %exp2_a9d0a7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %exp2_a9d0a7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e934c74
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%exp2_b408e4 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 2.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %exp2_b408e4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %exp2_b408e4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %exp2_b408e4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/exp2/d6777c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp2/d6777c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9f6fcc1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp2/d6777c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%exp2_d6777c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(2.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %exp2_d6777c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %exp2_d6777c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %exp2_d6777c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/exp2/dea523.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp2/dea523.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eeb8d92
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp2/dea523.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%exp2_dea523 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 2.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %exp2_dea523
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %exp2_dea523
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %exp2_dea523
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/exp2/f4f0f1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp2/f4f0f1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp2/f4f0f1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bb92619
--- /dev/null
+++ b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%exp2_ffa827 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(2.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %exp2_ffa827
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %exp2_ffa827
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %exp2_ffa827
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/extractBits/12b197.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/extractBits/12b197.wgsl.expected.ir.msl
new file mode 100644
index 0000000..488affd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/extractBits/12b197.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%extractBits_12b197 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(0u)
+    %4:vec3<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %extractBits_12b197
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %extractBits_12b197
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %extractBits_12b197
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/extractBits/249874.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/extractBits/249874.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7ad18a4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/extractBits/249874.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%extractBits_249874 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 0i
+    %4:i32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %extractBits_249874
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %extractBits_249874
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %extractBits_249874
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/extractBits/631377.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/extractBits/631377.wgsl.expected.ir.msl
new file mode 100644
index 0000000..38fb48f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/extractBits/631377.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%extractBits_631377 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(0u)
+    %4:vec4<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %extractBits_631377
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %extractBits_631377
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %extractBits_631377
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/extractBits/a99a8d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/extractBits/a99a8d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cb6fb9f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/extractBits/a99a8d.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%extractBits_a99a8d = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(0i)
+    %4:vec2<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %extractBits_a99a8d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %extractBits_a99a8d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %extractBits_a99a8d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/extractBits/ce81f8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/extractBits/ce81f8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..935a997
--- /dev/null
+++ b/test/tint/builtins/gen/literal/extractBits/ce81f8.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%extractBits_ce81f8 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 0u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %extractBits_ce81f8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %extractBits_ce81f8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %extractBits_ce81f8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/extractBits/e04f5d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/extractBits/e04f5d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d59f44b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/extractBits/e04f5d.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%extractBits_e04f5d = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(0i)
+    %4:vec3<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %extractBits_e04f5d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %extractBits_e04f5d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %extractBits_e04f5d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/extractBits/f28f69.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/extractBits/f28f69.wgsl.expected.ir.msl
new file mode 100644
index 0000000..da6cab3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/extractBits/f28f69.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%extractBits_f28f69 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(0u)
+    %4:vec2<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %extractBits_f28f69
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %extractBits_f28f69
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %extractBits_f28f69
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/extractBits/fb850f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/extractBits/fb850f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bc9f7d4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/extractBits/fb850f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%extractBits_fb850f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(0i)
+    %4:vec4<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %extractBits_fb850f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %extractBits_fb850f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %extractBits_fb850f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/faceForward/2c4d14.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/faceForward/2c4d14.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/faceForward/2c4d14.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a7d95d2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%faceForward_524986 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(-1.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %faceForward_524986
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %faceForward_524986
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %faceForward_524986
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/faceForward/5afbd5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/faceForward/5afbd5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..101c573
--- /dev/null
+++ b/test/tint/builtins/gen/literal/faceForward/5afbd5.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%faceForward_5afbd5 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(-1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %faceForward_5afbd5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %faceForward_5afbd5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %faceForward_5afbd5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/faceForward/b316e5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/faceForward/b316e5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1ba2faa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/faceForward/b316e5.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%faceForward_b316e5 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(-1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %faceForward_b316e5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %faceForward_b316e5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %faceForward_b316e5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/faceForward/b42ef3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/faceForward/b42ef3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/faceForward/b42ef3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..561ae5c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%faceForward_cc63dc = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(-1.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %faceForward_cc63dc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %faceForward_cc63dc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %faceForward_cc63dc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/faceForward/e6908b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/faceForward/e6908b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..74e6a22
--- /dev/null
+++ b/test/tint/builtins/gen/literal/faceForward/e6908b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%faceForward_e6908b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(-1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %faceForward_e6908b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %faceForward_e6908b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %faceForward_e6908b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..13c9223
--- /dev/null
+++ b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%faceForward_fb0f2e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(-1.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %faceForward_fb0f2e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %faceForward_fb0f2e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %faceForward_fb0f2e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/faceForward/fe522b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/faceForward/fe522b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/faceForward/fe522b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/firstLeadingBit/000ff3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/firstLeadingBit/000ff3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dc9d350
--- /dev/null
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/000ff3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstLeadingBit_000ff3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(0u)
+    %4:vec4<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %firstLeadingBit_000ff3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %firstLeadingBit_000ff3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %firstLeadingBit_000ff3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/firstLeadingBit/35053e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/firstLeadingBit/35053e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bab5387
--- /dev/null
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/35053e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstLeadingBit_35053e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(0i)
+    %4:vec3<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %firstLeadingBit_35053e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %firstLeadingBit_35053e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %firstLeadingBit_35053e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/firstLeadingBit/3fd7d0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/firstLeadingBit/3fd7d0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d1dbdcf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/3fd7d0.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstLeadingBit_3fd7d0 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(0u)
+    %4:vec3<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %firstLeadingBit_3fd7d0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %firstLeadingBit_3fd7d0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %firstLeadingBit_3fd7d0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/firstLeadingBit/57a1a3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/firstLeadingBit/57a1a3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ed178f8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/57a1a3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%firstLeadingBit_57a1a3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 0i
+    %4:i32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %firstLeadingBit_57a1a3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %firstLeadingBit_57a1a3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %firstLeadingBit_57a1a3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/firstLeadingBit/6fe804.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/firstLeadingBit/6fe804.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1af9e45
--- /dev/null
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/6fe804.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstLeadingBit_6fe804 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(0u)
+    %4:vec2<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %firstLeadingBit_6fe804
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %firstLeadingBit_6fe804
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %firstLeadingBit_6fe804
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/firstLeadingBit/a622c2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/firstLeadingBit/a622c2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3da8e16
--- /dev/null
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/a622c2.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstLeadingBit_a622c2 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(0i)
+    %4:vec2<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %firstLeadingBit_a622c2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %firstLeadingBit_a622c2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %firstLeadingBit_a622c2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/firstLeadingBit/c1f940.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/firstLeadingBit/c1f940.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d7ed188
--- /dev/null
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/c1f940.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstLeadingBit_c1f940 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(0i)
+    %4:vec4<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %firstLeadingBit_c1f940
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %firstLeadingBit_c1f940
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %firstLeadingBit_c1f940
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/firstLeadingBit/f0779d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/firstLeadingBit/f0779d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a1af685
--- /dev/null
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/f0779d.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%firstLeadingBit_f0779d = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 0u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %firstLeadingBit_f0779d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %firstLeadingBit_f0779d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %firstLeadingBit_f0779d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/firstTrailingBit/110f2c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/firstTrailingBit/110f2c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5cf748c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/110f2c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstTrailingBit_110f2c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(0u)
+    %4:vec4<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %firstTrailingBit_110f2c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %firstTrailingBit_110f2c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %firstTrailingBit_110f2c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/firstTrailingBit/3a2acc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/firstTrailingBit/3a2acc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..40f422f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/3a2acc.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%firstTrailingBit_3a2acc = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 0i
+    %4:i32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %firstTrailingBit_3a2acc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %firstTrailingBit_3a2acc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %firstTrailingBit_3a2acc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/firstTrailingBit/45eb10.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/firstTrailingBit/45eb10.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b2c4a4f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/45eb10.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstTrailingBit_45eb10 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(0u)
+    %4:vec2<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %firstTrailingBit_45eb10
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %firstTrailingBit_45eb10
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %firstTrailingBit_45eb10
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/firstTrailingBit/47d475.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/firstTrailingBit/47d475.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dc2d311
--- /dev/null
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/47d475.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%firstTrailingBit_47d475 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 0u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %firstTrailingBit_47d475
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %firstTrailingBit_47d475
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %firstTrailingBit_47d475
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/firstTrailingBit/50c072.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/firstTrailingBit/50c072.wgsl.expected.ir.msl
new file mode 100644
index 0000000..99012a4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/50c072.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstTrailingBit_50c072 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(0i)
+    %4:vec2<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %firstTrailingBit_50c072
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %firstTrailingBit_50c072
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %firstTrailingBit_50c072
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/firstTrailingBit/7496d6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/firstTrailingBit/7496d6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8054884
--- /dev/null
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/7496d6.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstTrailingBit_7496d6 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(0i)
+    %4:vec3<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %firstTrailingBit_7496d6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %firstTrailingBit_7496d6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %firstTrailingBit_7496d6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/firstTrailingBit/86551b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/firstTrailingBit/86551b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1664234
--- /dev/null
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/86551b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstTrailingBit_86551b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(0i)
+    %4:vec4<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %firstTrailingBit_86551b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %firstTrailingBit_86551b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %firstTrailingBit_86551b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/firstTrailingBit/cb51ce.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/firstTrailingBit/cb51ce.wgsl.expected.ir.msl
new file mode 100644
index 0000000..19067fc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/cb51ce.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstTrailingBit_cb51ce = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(0u)
+    %4:vec3<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %firstTrailingBit_cb51ce
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %firstTrailingBit_cb51ce
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %firstTrailingBit_cb51ce
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/floor/218952.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/floor/218952.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/floor/218952.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9208e31
--- /dev/null
+++ b/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%floor_3802c0 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %floor_3802c0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %floor_3802c0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %floor_3802c0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/floor/3bccc4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/floor/3bccc4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..87c537e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/floor/3bccc4.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%floor_3bccc4 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %floor_3bccc4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %floor_3bccc4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %floor_3bccc4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/floor/5fc9ac.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/floor/5fc9ac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..199b370
--- /dev/null
+++ b/test/tint/builtins/gen/literal/floor/5fc9ac.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%floor_5fc9ac = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %floor_5fc9ac
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %floor_5fc9ac
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %floor_5fc9ac
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/floor/60d7ea.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/floor/60d7ea.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d3345e6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/floor/60d7ea.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%floor_60d7ea = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %floor_60d7ea
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %floor_60d7ea
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %floor_60d7ea
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/floor/66f154.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/floor/66f154.wgsl.expected.ir.msl
new file mode 100644
index 0000000..811da8a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/floor/66f154.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%floor_66f154 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %floor_66f154
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %floor_66f154
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %floor_66f154
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/floor/84658c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..44f7319
--- /dev/null
+++ b/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%floor_84658c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %floor_84658c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %floor_84658c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %floor_84658c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/floor/953774.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/floor/953774.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/floor/953774.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cb68bb7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%floor_a2d31b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %floor_a2d31b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %floor_a2d31b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %floor_a2d31b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..74d5a56
--- /dev/null
+++ b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%floor_b6e09c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %floor_b6e09c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %floor_b6e09c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %floor_b6e09c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/floor/dcd5a2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/floor/dcd5a2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/floor/dcd5a2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/floor/e585ef.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/floor/e585ef.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/floor/e585ef.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/fma/143d5d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fma/143d5d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fma/143d5d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/fma/1f5084.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fma/1f5084.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fma/1f5084.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/fma/26a7a9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fma/26a7a9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f12d380
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fma/26a7a9.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fma_26a7a9 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(2.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %fma_26a7a9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %fma_26a7a9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %fma_26a7a9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fma/466442.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fma/466442.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fma/466442.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/fma/6a3283.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fma/6a3283.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a5fdcf6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fma/6a3283.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fma_6a3283 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(2.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %fma_6a3283
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %fma_6a3283
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %fma_6a3283
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d8330bb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%fma_ab7818 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(2.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %fma_ab7818
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %fma_ab7818
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %fma_ab7818
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9102dc5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%fma_bf21b6 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(2.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %fma_bf21b6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %fma_bf21b6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %fma_bf21b6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fma/c10ba3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fma/c10ba3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..afe7691
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fma/c10ba3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%fma_c10ba3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 2.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %fma_c10ba3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %fma_c10ba3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %fma_c10ba3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fdccaee
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%fma_c8abb3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 2.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %fma_c8abb3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %fma_c8abb3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %fma_c8abb3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fma/e17c5c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fma/e17c5c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..deecbc8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fma/e17c5c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fma_e17c5c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(2.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %fma_e17c5c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %fma_e17c5c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %fma_e17c5c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b5b959b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%fma_e7abdc = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(2.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %fma_e7abdc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %fma_e7abdc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %fma_e7abdc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fma/eb25d7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fma/eb25d7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fma/eb25d7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b06c4d4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%fract_181aa9 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.25h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %fract_181aa9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %fract_181aa9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %fract_181aa9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fract/2eddfe.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fract/2eddfe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fract/2eddfe.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/fract/498c77.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f6142ea
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%fract_498c77 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.25h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %fract_498c77
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %fract_498c77
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %fract_498c77
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fract/7e3f2d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fract/7e3f2d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fract/7e3f2d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/fract/8bc1e9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fract/8bc1e9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..501a08a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fract/8bc1e9.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fract_8bc1e9 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.25f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %fract_8bc1e9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %fract_8bc1e9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %fract_8bc1e9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fract/943cb1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fract/943cb1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..31337e4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fract/943cb1.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fract_943cb1 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.25f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %fract_943cb1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %fract_943cb1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %fract_943cb1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a247493
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%fract_958a1d = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.25h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %fract_958a1d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %fract_958a1d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %fract_958a1d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fract/a49758.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fract/a49758.wgsl.expected.ir.msl
new file mode 100644
index 0000000..52fbef6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fract/a49758.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fract_a49758 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.25f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %fract_a49758
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %fract_a49758
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %fract_a49758
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0892f8c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%fract_eb38ce = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.25h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %fract_eb38ce
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %fract_eb38ce
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %fract_eb38ce
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fract/ed00ca.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fract/ed00ca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fract/ed00ca.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/fract/ed2f79.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fract/ed2f79.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fract/ed2f79.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/fract/fa5c71.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fract/fa5c71.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6b9901a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fract/fa5c71.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%fract_fa5c71 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.25f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %fract_fa5c71
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %fract_fa5c71
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %fract_fa5c71
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/frexp/34bbfb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/frexp/34bbfb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/frexp/34bbfb.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/frexp/4b2200.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/frexp/4b2200.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/frexp/4b2200.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/frexp/6fb3ad.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/frexp/6fb3ad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/frexp/6fb3ad.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/frexp/77af93.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/frexp/77af93.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/frexp/77af93.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/frexp/979800.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/frexp/979800.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/frexp/979800.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/frexp/bee870.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/frexp/bee870.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/frexp/bee870.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/frexp/bf45ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/frexp/bf45ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/frexp/bf45ae.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/frexp/eb2421.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/frexp/eb2421.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/frexp/eb2421.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/fwidth/5d1b39.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fwidth/5d1b39.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aabe87a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fwidth/5d1b39.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fwidth_5d1b39 = func():void -> %b2 {
+  %b2 = block {
+    %3:vec3<f32> = fwidth vec3<f32>(1.0f)
+    %res:ptr<function, vec3<f32>, read_write> = var, %3
+    %5:vec3<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %fwidth_5d1b39
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fwidth/b83ebb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fwidth/b83ebb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2469418
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fwidth/b83ebb.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fwidth_b83ebb = func():void -> %b2 {
+  %b2 = block {
+    %3:vec2<f32> = fwidth vec2<f32>(1.0f)
+    %res:ptr<function, vec2<f32>, read_write> = var, %3
+    %5:vec2<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %fwidth_b83ebb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fwidth/d2ab9a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fwidth/d2ab9a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..762715b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fwidth/d2ab9a.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fwidth_d2ab9a = func():void -> %b2 {
+  %b2 = block {
+    %3:vec4<f32> = fwidth vec4<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %3
+    %5:vec4<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %fwidth_d2ab9a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fwidth/df38ef.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fwidth/df38ef.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d5c6373
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fwidth/df38ef.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%fwidth_df38ef = func():void -> %b2 {
+  %b2 = block {
+    %3:f32 = fwidth 1.0f
+    %res:ptr<function, f32, read_write> = var, %3
+    %5:f32 = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %fwidth_df38ef
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fwidthCoarse/159c8a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fwidthCoarse/159c8a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f6d59c7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fwidthCoarse/159c8a.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%fwidthCoarse_159c8a = func():void -> %b2 {
+  %b2 = block {
+    %3:f32 = fwidthCoarse 1.0f
+    %res:ptr<function, f32, read_write> = var, %3
+    %5:f32 = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %fwidthCoarse_159c8a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fwidthCoarse/1e59d9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fwidthCoarse/1e59d9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bcc78c5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fwidthCoarse/1e59d9.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fwidthCoarse_1e59d9 = func():void -> %b2 {
+  %b2 = block {
+    %3:vec3<f32> = fwidthCoarse vec3<f32>(1.0f)
+    %res:ptr<function, vec3<f32>, read_write> = var, %3
+    %5:vec3<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %fwidthCoarse_1e59d9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fwidthCoarse/4e4fc4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fwidthCoarse/4e4fc4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e493972
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fwidthCoarse/4e4fc4.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fwidthCoarse_4e4fc4 = func():void -> %b2 {
+  %b2 = block {
+    %3:vec4<f32> = fwidthCoarse vec4<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %3
+    %5:vec4<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %fwidthCoarse_4e4fc4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fwidthCoarse/e653f7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fwidthCoarse/e653f7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..260946e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fwidthCoarse/e653f7.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fwidthCoarse_e653f7 = func():void -> %b2 {
+  %b2 = block {
+    %3:vec2<f32> = fwidthCoarse vec2<f32>(1.0f)
+    %res:ptr<function, vec2<f32>, read_write> = var, %3
+    %5:vec2<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %fwidthCoarse_e653f7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fwidthFine/523fdc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fwidthFine/523fdc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f747cae
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fwidthFine/523fdc.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fwidthFine_523fdc = func():void -> %b2 {
+  %b2 = block {
+    %3:vec3<f32> = fwidthFine vec3<f32>(1.0f)
+    %res:ptr<function, vec3<f32>, read_write> = var, %3
+    %5:vec3<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %fwidthFine_523fdc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fwidthFine/68f4ef.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fwidthFine/68f4ef.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f5135a4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fwidthFine/68f4ef.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fwidthFine_68f4ef = func():void -> %b2 {
+  %b2 = block {
+    %3:vec4<f32> = fwidthFine vec4<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %3
+    %5:vec4<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %fwidthFine_68f4ef
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fwidthFine/f1742d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fwidthFine/f1742d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c28eb02
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fwidthFine/f1742d.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%fwidthFine_f1742d = func():void -> %b2 {
+  %b2 = block {
+    %3:f32 = fwidthFine 1.0f
+    %res:ptr<function, f32, read_write> = var, %3
+    %5:f32 = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %fwidthFine_f1742d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/fwidthFine/ff6aa0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/fwidthFine/ff6aa0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..25f0eea
--- /dev/null
+++ b/test/tint/builtins/gen/literal/fwidthFine/ff6aa0.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fwidthFine_ff6aa0 = func():void -> %b2 {
+  %b2 = block {
+    %3:vec2<f32> = fwidthFine vec2<f32>(1.0f)
+    %res:ptr<function, vec2<f32>, read_write> = var, %3
+    %5:vec2<f32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %fwidthFine_ff6aa0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/insertBits/3c7ba5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/insertBits/3c7ba5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2ac535b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/insertBits/3c7ba5.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%insertBits_3c7ba5 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(3u)
+    %4:vec2<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %insertBits_3c7ba5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %insertBits_3c7ba5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %insertBits_3c7ba5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/insertBits/428b0b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/insertBits/428b0b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0d7051d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/insertBits/428b0b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%insertBits_428b0b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(3i)
+    %4:vec3<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %insertBits_428b0b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %insertBits_428b0b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %insertBits_428b0b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/insertBits/51ede1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/insertBits/51ede1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e419584
--- /dev/null
+++ b/test/tint/builtins/gen/literal/insertBits/51ede1.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%insertBits_51ede1 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(3u)
+    %4:vec4<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %insertBits_51ede1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %insertBits_51ede1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %insertBits_51ede1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/insertBits/65468b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/insertBits/65468b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f0a8483
--- /dev/null
+++ b/test/tint/builtins/gen/literal/insertBits/65468b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%insertBits_65468b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 3i
+    %4:i32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %insertBits_65468b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %insertBits_65468b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %insertBits_65468b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/insertBits/87826b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/insertBits/87826b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8438a9a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/insertBits/87826b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%insertBits_87826b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(3u)
+    %4:vec3<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %insertBits_87826b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %insertBits_87826b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %insertBits_87826b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/insertBits/d86978.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/insertBits/d86978.wgsl.expected.ir.msl
new file mode 100644
index 0000000..062aed0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/insertBits/d86978.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%insertBits_d86978 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(3i)
+    %4:vec4<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %insertBits_d86978
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %insertBits_d86978
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %insertBits_d86978
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/insertBits/e3e3a2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/insertBits/e3e3a2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aab67b2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/insertBits/e3e3a2.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%insertBits_e3e3a2 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 3u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %insertBits_e3e3a2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %insertBits_e3e3a2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %insertBits_e3e3a2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/insertBits/fe6ba6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/insertBits/fe6ba6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f3c6441
--- /dev/null
+++ b/test/tint/builtins/gen/literal/insertBits/fe6ba6.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%insertBits_fe6ba6 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(3i)
+    %4:vec2<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %insertBits_fe6ba6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %insertBits_fe6ba6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %insertBits_fe6ba6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/inverseSqrt/07a6fe.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/inverseSqrt/07a6fe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/inverseSqrt/07a6fe.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6886f04
--- /dev/null
+++ b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%inverseSqrt_440300 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %inverseSqrt_440300
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %inverseSqrt_440300
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %inverseSqrt_440300
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/inverseSqrt/4ca6d6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/inverseSqrt/4ca6d6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/inverseSqrt/4ca6d6.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b6024fb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%inverseSqrt_5f51f8 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %inverseSqrt_5f51f8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %inverseSqrt_5f51f8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %inverseSqrt_5f51f8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/inverseSqrt/6d0783.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/inverseSqrt/6d0783.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/inverseSqrt/6d0783.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/inverseSqrt/84407e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/inverseSqrt/84407e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8903d29
--- /dev/null
+++ b/test/tint/builtins/gen/literal/inverseSqrt/84407e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%inverseSqrt_84407e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %inverseSqrt_84407e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %inverseSqrt_84407e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %inverseSqrt_84407e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/inverseSqrt/8f2bd2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/inverseSqrt/8f2bd2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b790d84
--- /dev/null
+++ b/test/tint/builtins/gen/literal/inverseSqrt/8f2bd2.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%inverseSqrt_8f2bd2 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %inverseSqrt_8f2bd2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %inverseSqrt_8f2bd2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %inverseSqrt_8f2bd2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/inverseSqrt/b197b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/inverseSqrt/b197b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5d5874c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/inverseSqrt/b197b1.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%inverseSqrt_b197b1 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %inverseSqrt_b197b1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %inverseSqrt_b197b1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %inverseSqrt_b197b1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..83b3fbc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%inverseSqrt_b85ebd = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %inverseSqrt_b85ebd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %inverseSqrt_b85ebd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %inverseSqrt_b85ebd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/inverseSqrt/c22347.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/inverseSqrt/c22347.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e73de2d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/inverseSqrt/c22347.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%inverseSqrt_c22347 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %inverseSqrt_c22347
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %inverseSqrt_c22347
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %inverseSqrt_c22347
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c521626
--- /dev/null
+++ b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%inverseSqrt_cbdc70 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %inverseSqrt_cbdc70
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %inverseSqrt_cbdc70
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %inverseSqrt_cbdc70
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/inverseSqrt/f60c1c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/inverseSqrt/f60c1c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/inverseSqrt/f60c1c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/082c1f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/082c1f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..af69ec7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/082c1f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_082c1f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 2.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ldexp_082c1f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ldexp_082c1f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ldexp_082c1f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/217a31.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/217a31.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2ae9147
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/217a31.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_217a31 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(2.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ldexp_217a31
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ldexp_217a31
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ldexp_217a31
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/2bfc68.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/2bfc68.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/2bfc68.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/2c6370.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/2c6370.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/2c6370.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/376938.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/376938.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/376938.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..72e9311
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_3d90b4 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(2.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ldexp_3d90b4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ldexp_3d90b4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ldexp_3d90b4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/4a3ad9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/4a3ad9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/4a3ad9.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/593ff3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/593ff3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..be65e0d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/593ff3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_593ff3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(2.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ldexp_593ff3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ldexp_593ff3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ldexp_593ff3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4b53878
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_624e0c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 2.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ldexp_624e0c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ldexp_624e0c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ldexp_624e0c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/65a7bd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/65a7bd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8882969
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/65a7bd.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_65a7bd = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(2.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ldexp_65a7bd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ldexp_65a7bd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ldexp_65a7bd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/71ebe3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/71ebe3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/71ebe3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.ir.msl
new file mode 100644
index 0000000..52e1fb2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_7485ce = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(2.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ldexp_7485ce
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ldexp_7485ce
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ldexp_7485ce
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b129da6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_7fa13c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(2.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ldexp_7fa13c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ldexp_7fa13c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ldexp_7fa13c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/8a0c2f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/8a0c2f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..db8a6a9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/8a0c2f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_8a0c2f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(2.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ldexp_8a0c2f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ldexp_8a0c2f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ldexp_8a0c2f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/8e43e9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/8e43e9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4aefe8d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/8e43e9.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_8e43e9 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(2.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ldexp_8e43e9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ldexp_8e43e9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ldexp_8e43e9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/a22679.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/a22679.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b30bdd9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/a22679.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_a22679 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(2.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ldexp_a22679
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ldexp_a22679
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ldexp_a22679
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/a31cdc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/a31cdc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eb148d4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/a31cdc.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_a31cdc = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(2.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ldexp_a31cdc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ldexp_a31cdc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ldexp_a31cdc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/a6126e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/a6126e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/a6126e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/abd718.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/abd718.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eafda3d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/abd718.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_abd718 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(2.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ldexp_abd718
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ldexp_abd718
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ldexp_abd718
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/c9d0b7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/c9d0b7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ea97cb9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/c9d0b7.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_c9d0b7 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 2.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ldexp_c9d0b7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ldexp_c9d0b7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ldexp_c9d0b7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/cb0faf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/cb0faf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/cb0faf.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/cc9cde.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/cc9cde.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ae59169
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/cc9cde.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_cc9cde = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(2.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ldexp_cc9cde
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ldexp_cc9cde
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ldexp_cc9cde
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/db8b49.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/db8b49.wgsl.expected.ir.msl
new file mode 100644
index 0000000..13ae4cf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/db8b49.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_db8b49 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 2.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %ldexp_db8b49
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %ldexp_db8b49
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %ldexp_db8b49
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/ldexp/fdbc7b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/ldexp/fdbc7b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/ldexp/fdbc7b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/length/056071.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/length/056071.wgsl.expected.ir.msl
new file mode 100644
index 0000000..81795df
--- /dev/null
+++ b/test/tint/builtins/gen/literal/length/056071.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%length_056071 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %length_056071
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %length_056071
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %length_056071
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b3bf1ff
--- /dev/null
+++ b/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%length_3f0e13 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %length_3f0e13
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %length_3f0e13
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %length_3f0e13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/length/555aba.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/length/555aba.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/length/555aba.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..72e5554
--- /dev/null
+++ b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%length_5b1a9b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %length_5b1a9b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %length_5b1a9b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %length_5b1a9b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/length/602a17.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/length/602a17.wgsl.expected.ir.msl
new file mode 100644
index 0000000..562d7c2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/length/602a17.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%length_602a17 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %length_602a17
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %length_602a17
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %length_602a17
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/length/7b4741.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/length/7b4741.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/length/7b4741.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/length/936ad5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/length/936ad5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/length/936ad5.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/length/afde8b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/length/afde8b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..68ee9be
--- /dev/null
+++ b/test/tint/builtins/gen/literal/length/afde8b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%length_afde8b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %length_afde8b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %length_afde8b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %length_afde8b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8fb3a55
--- /dev/null
+++ b/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%length_ba16d6 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %length_ba16d6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %length_ba16d6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %length_ba16d6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/length/becebf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/length/becebf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..609f803
--- /dev/null
+++ b/test/tint/builtins/gen/literal/length/becebf.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%length_becebf = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %length_becebf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %length_becebf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %length_becebf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/length/c158da.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f8a61a6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%length_c158da = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %length_c158da
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %length_c158da
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %length_c158da
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/length/c2c544.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/length/c2c544.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/length/c2c544.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/log/3da25a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log/3da25a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7641958
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log/3da25a.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%log_3da25a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %log_3da25a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %log_3da25a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %log_3da25a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/log/655989.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log/655989.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log/655989.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/log/697e1d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log/697e1d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log/697e1d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..18e2505
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%log_6ff86f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %log_6ff86f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %log_6ff86f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %log_6ff86f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/log/7114a6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log/7114a6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7fe5e88
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log/7114a6.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%log_7114a6 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %log_7114a6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %log_7114a6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %log_7114a6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d4c97fb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%log_8f0e32 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %log_8f0e32
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %log_8f0e32
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %log_8f0e32
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/log/b2ce28.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log/b2ce28.wgsl.expected.ir.msl
new file mode 100644
index 0000000..478de02
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log/b2ce28.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%log_b2ce28 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %log_b2ce28
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %log_b2ce28
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %log_b2ce28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/log/b8088d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log/b8088d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log/b8088d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/log/c9f489.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c9f65f7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%log_c9f489 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %log_c9f489
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %log_c9f489
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %log_c9f489
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..70c6296
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%log_cdbdc1 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %log_cdbdc1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %log_cdbdc1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %log_cdbdc1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/log/f4c570.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log/f4c570.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e28f2fe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log/f4c570.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%log_f4c570 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %log_f4c570
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %log_f4c570
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %log_f4c570
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/log/f60cc7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log/f60cc7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log/f60cc7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/log2/0fbd39.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log2/0fbd39.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log2/0fbd39.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/log2/38b478.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1843eb5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%log2_38b478 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %log2_38b478
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %log2_38b478
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %log2_38b478
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/log2/4036ed.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log2/4036ed.wgsl.expected.ir.msl
new file mode 100644
index 0000000..008a5ba
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log2/4036ed.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%log2_4036ed = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %log2_4036ed
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %log2_4036ed
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %log2_4036ed
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/log2/5b464b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log2/5b464b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log2/5b464b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/log2/6b8954.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log2/6b8954.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log2/6b8954.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/log2/776088.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d4f8912
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%log2_776088 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %log2_776088
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %log2_776088
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %log2_776088
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0eed55b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%log2_8c10b3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %log2_8c10b3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %log2_8c10b3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %log2_8c10b3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/log2/902988.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log2/902988.wgsl.expected.ir.msl
new file mode 100644
index 0000000..82b5595
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log2/902988.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%log2_902988 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %log2_902988
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %log2_902988
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %log2_902988
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/log2/a52bbb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log2/a52bbb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log2/a52bbb.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/log2/adb233.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log2/adb233.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6a9679a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log2/adb233.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%log2_adb233 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %log2_adb233
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %log2_adb233
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %log2_adb233
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/log2/aea659.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log2/aea659.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3194b45
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log2/aea659.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%log2_aea659 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %log2_aea659
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %log2_aea659
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %log2_aea659
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0a1f2ca
--- /dev/null
+++ b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%log2_fb9f0b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %log2_fb9f0b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %log2_fb9f0b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %log2_fb9f0b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/max/067f3a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/067f3a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/067f3a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/max/0c0aae.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/0c0aae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..87e6fe0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/0c0aae.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%max_0c0aae = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 1u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %max_0c0aae
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %max_0c0aae
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %max_0c0aae
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/max/111ac0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c00c700
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%max_111ac0 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %max_111ac0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %max_111ac0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %max_111ac0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/max/19070a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/19070a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/19070a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/max/25eafe.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/25eafe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8464743
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/25eafe.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%max_25eafe = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %4:vec3<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %max_25eafe
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %max_25eafe
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %max_25eafe
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/max/320815.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/320815.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8b6c226
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/320815.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%max_320815 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %4:vec2<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %max_320815
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %max_320815
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %max_320815
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/max/34956e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..94a35ae
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%max_34956e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %max_34956e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %max_34956e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %max_34956e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/max/445169.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/445169.wgsl.expected.ir.msl
new file mode 100644
index 0000000..21f5400
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/445169.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%max_445169 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %max_445169
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %max_445169
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %max_445169
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/max/44a39d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/44a39d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..63eb350
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/44a39d.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%max_44a39d = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %max_44a39d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %max_44a39d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %max_44a39d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/max/453e04.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/453e04.wgsl.expected.ir.msl
new file mode 100644
index 0000000..03721fd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/453e04.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%max_453e04 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %4:vec4<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %max_453e04
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %max_453e04
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %max_453e04
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/max/462050.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/462050.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e959868
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/462050.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%max_462050 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %max_462050
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %max_462050
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %max_462050
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/max/482d23.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/482d23.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/482d23.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/max/4883ac.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/4883ac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b1f64d6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/4883ac.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%max_4883ac = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %max_4883ac
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %max_4883ac
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %max_4883ac
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/max/4bbff2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/4bbff2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/4bbff2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/max/85e6bc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/85e6bc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0f4e33f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/85e6bc.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%max_85e6bc = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %4:vec4<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %max_85e6bc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %max_85e6bc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %max_85e6bc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/max/a1b196.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/a1b196.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/a1b196.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/max/a93419.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/a93419.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b97b148
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/a93419.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%max_a93419 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %max_a93419
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %max_a93419
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %max_a93419
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/max/b1b73a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/b1b73a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..934f022
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/b1b73a.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%max_b1b73a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %4:vec3<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %max_b1b73a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %max_b1b73a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %max_b1b73a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/max/c023dd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/c023dd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/c023dd.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/max/caa3d7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/caa3d7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/caa3d7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/max/ce7c30.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/ce7c30.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7f648d9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/ce7c30.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%max_ce7c30 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 1i
+    %4:i32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %max_ce7c30
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %max_ce7c30
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %max_ce7c30
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/max/de6b87.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/de6b87.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/de6b87.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..25e6a30
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%max_e14f2b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %max_e14f2b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %max_e14f2b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %max_e14f2b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/max/e8192f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/max/e8192f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..41b7c19
--- /dev/null
+++ b/test/tint/builtins/gen/literal/max/e8192f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%max_e8192f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %4:vec2<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %max_e8192f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %max_e8192f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %max_e8192f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/min/03c7e3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/03c7e3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aea9e02
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/03c7e3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%min_03c7e3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %4:vec2<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %min_03c7e3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %min_03c7e3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %min_03c7e3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/min/0dc614.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/0dc614.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f0ae94b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/0dc614.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%min_0dc614 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %4:vec4<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %min_0dc614
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %min_0dc614
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %min_0dc614
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/min/364910.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/364910.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/364910.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/min/371bd6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/371bd6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/371bd6.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/min/3941e1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/3941e1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3a4fbd6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/3941e1.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%min_3941e1 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %4:vec4<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %min_3941e1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %min_3941e1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %min_3941e1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/min/46c5d3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/46c5d3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6594556
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/46c5d3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%min_46c5d3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 1u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %min_46c5d3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %min_46c5d3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %min_46c5d3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/min/527b79.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/527b79.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/527b79.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/min/717257.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/717257.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/717257.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/min/794711.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/794711.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/794711.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/min/7c710a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f72d4ee
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%min_7c710a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %min_7c710a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %min_7c710a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %min_7c710a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/min/82b28f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/82b28f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..63ef028
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/82b28f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%min_82b28f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %4:vec2<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %min_82b28f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %min_82b28f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %min_82b28f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/min/84c9fe.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/84c9fe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/84c9fe.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/min/93cfc4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/93cfc4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a4ec352
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/93cfc4.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%min_93cfc4 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %min_93cfc4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %min_93cfc4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %min_93cfc4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/min/98e797.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/98e797.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/98e797.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/min/a45171.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/a45171.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c7af7b6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/a45171.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%min_a45171 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %4:vec3<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %min_a45171
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %min_a45171
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %min_a45171
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/min/aa28ad.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/aa28ad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dbb7409
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/aa28ad.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%min_aa28ad = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %min_aa28ad
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %min_aa28ad
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %min_aa28ad
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dff6ef3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%min_ab0acd = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %min_ab0acd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %min_ab0acd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %min_ab0acd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..10a69d4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%min_ac84d6 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %min_ac84d6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %min_ac84d6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %min_ac84d6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/min/af326d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/af326d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bfa4504
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/af326d.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%min_af326d = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %min_af326d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %min_af326d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %min_af326d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/min/af364e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/af364e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/af364e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/min/c70bb7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/c70bb7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e5316ea
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/c70bb7.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%min_c70bb7 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %4:vec3<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %min_c70bb7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %min_c70bb7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %min_c70bb7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/min/c73147.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/c73147.wgsl.expected.ir.msl
new file mode 100644
index 0000000..82bc01a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/c73147.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%min_c73147 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 1i
+    %4:i32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %min_c73147
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %min_c73147
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %min_c73147
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/min/c76fa6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/c76fa6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e413555
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/c76fa6.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%min_c76fa6 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %min_c76fa6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %min_c76fa6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %min_c76fa6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/min/e780f9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eb92bf8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%min_e780f9 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %min_e780f9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %min_e780f9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %min_e780f9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/0c8c33.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/0c8c33.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3b1c5c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/0c8c33.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_0c8c33 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %mix_0c8c33
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %mix_0c8c33
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %mix_0c8c33
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/1faeb1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/1faeb1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a2c7386
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/1faeb1.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_1faeb1 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %mix_1faeb1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %mix_1faeb1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %mix_1faeb1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/275cac.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/275cac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/275cac.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/2fadab.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/2fadab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fd5fb62
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/2fadab.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_2fadab = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %mix_2fadab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %mix_2fadab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %mix_2fadab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/30de36.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/30de36.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/30de36.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/315264.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/315264.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7f8b5b6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/315264.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_315264 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %mix_315264
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %mix_315264
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %mix_315264
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/343c49.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/343c49.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/343c49.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0e0d7f6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%mix_38cbbb = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %mix_38cbbb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %mix_38cbbb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %mix_38cbbb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/42d11d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/42d11d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/42d11d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/4f0b5e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/4f0b5e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e860fc4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/4f0b5e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%mix_4f0b5e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %mix_4f0b5e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %mix_4f0b5e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %mix_4f0b5e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..54abfe7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_63f2fd = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %mix_63f2fd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %mix_63f2fd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %mix_63f2fd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/6f8adc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/6f8adc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f896c16
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/6f8adc.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_6f8adc = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %mix_6f8adc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %mix_6f8adc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %mix_6f8adc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/98007a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/98007a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/98007a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..400bcf3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_98ee3e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %mix_98ee3e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %mix_98ee3e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %mix_98ee3e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/9c2681.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/9c2681.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/9c2681.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e9e2527
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_c1aec6 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %mix_c1aec6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %mix_c1aec6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %mix_c1aec6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/c37ede.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/c37ede.wgsl.expected.ir.msl
new file mode 100644
index 0000000..94dd2ad
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/c37ede.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_c37ede = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %mix_c37ede
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %mix_c37ede
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %mix_c37ede
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1acd890
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_e46a83 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %mix_e46a83
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %mix_e46a83
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %mix_e46a83
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e1fa62c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_ee2468 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %mix_ee2468
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %mix_ee2468
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %mix_ee2468
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/ef3575.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/ef3575.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/ef3575.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cd98373
--- /dev/null
+++ b/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_f1a543 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %mix_f1a543
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %mix_f1a543
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %mix_f1a543
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/modf/2d50da.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/modf/2d50da.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/modf/2d50da.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/modf/45005f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/modf/4bfced.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/modf/4bfced.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/modf/4bfced.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/modf/5ea256.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/modf/5ea256.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/modf/5ea256.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/modf/68d8ee.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/modf/68d8ee.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/modf/68d8ee.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/modf/732aa6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/modf/732aa6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/modf/732aa6.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/modf/995934.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/modf/bbf7f7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/modf/bbf7f7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/modf/bbf7f7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/modf/c15f48.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/modf/c15f48.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/modf/c15f48.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/modf/f3d1f9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/modf/f3d1f9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/modf/f3d1f9.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.ir.msl
new file mode 100644
index 0000000..70c006f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%normalize_39d5ec = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.5771484375h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %normalize_39d5ec
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %normalize_39d5ec
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %normalize_39d5ec
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/normalize/4eaf61.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/normalize/4eaf61.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/normalize/4eaf61.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..30da2c1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%normalize_64d8c0 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.57735025882720947266f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %normalize_64d8c0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %normalize_64d8c0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %normalize_64d8c0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dcea6af
--- /dev/null
+++ b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%normalize_7990f3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.70703125h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %normalize_7990f3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %normalize_7990f3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %normalize_7990f3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/normalize/9a0aab.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/normalize/9a0aab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5b61979
--- /dev/null
+++ b/test/tint/builtins/gen/literal/normalize/9a0aab.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%normalize_9a0aab = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.5f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %normalize_9a0aab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %normalize_9a0aab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %normalize_9a0aab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4261df7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%normalize_b8cb8d = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.5h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %normalize_b8cb8d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %normalize_b8cb8d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %normalize_b8cb8d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0331b51
--- /dev/null
+++ b/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%normalize_fc2ef1 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.70710676908493041992f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %normalize_fc2ef1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %normalize_fc2ef1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %normalize_fc2ef1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/pack2x16float/0e97b3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/pack2x16float/0e97b3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..39f35e0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pack2x16float/0e97b3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%pack2x16float_0e97b3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 1006648320u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %pack2x16float_0e97b3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %pack2x16float_0e97b3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %pack2x16float_0e97b3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/pack2x16snorm/6c169b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/pack2x16snorm/6c169b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fec5659
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pack2x16snorm/6c169b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%pack2x16snorm_6c169b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 2147450879u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %pack2x16snorm_6c169b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %pack2x16snorm_6c169b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %pack2x16snorm_6c169b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/pack2x16unorm/0f08e4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/pack2x16unorm/0f08e4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3c0e88d1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pack2x16unorm/0f08e4.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%pack2x16unorm_0f08e4 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 4294967295u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %pack2x16unorm_0f08e4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %pack2x16unorm_0f08e4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %pack2x16unorm_0f08e4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/pack4x8snorm/4d22e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/pack4x8snorm/4d22e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d49e9ce
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pack4x8snorm/4d22e7.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%pack4x8snorm_4d22e7 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 2139062143u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %pack4x8snorm_4d22e7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %pack4x8snorm_4d22e7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %pack4x8snorm_4d22e7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/pack4x8unorm/95c456.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/pack4x8unorm/95c456.wgsl.expected.ir.msl
new file mode 100644
index 0000000..52a111f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pack4x8unorm/95c456.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%pack4x8unorm_95c456 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 4294967295u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %pack4x8unorm_95c456
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %pack4x8unorm_95c456
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %pack4x8unorm_95c456
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/pow/04a908.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/pow/04a908.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f08af10
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pow/04a908.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%pow_04a908 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %pow_04a908
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %pow_04a908
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %pow_04a908
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/pow/46e029.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/pow/46e029.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e5ed890
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pow/46e029.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%pow_46e029 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %pow_46e029
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %pow_46e029
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %pow_46e029
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/pow/4a46c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/pow/4a46c9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d0c8af9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pow/4a46c9.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%pow_4a46c9 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %pow_4a46c9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %pow_4a46c9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %pow_4a46c9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e31b68
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%pow_4f33b2 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %pow_4f33b2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %pow_4f33b2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %pow_4f33b2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/pow/749c42.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/pow/749c42.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pow/749c42.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/pow/a8f6b2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/pow/a8f6b2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pow/a8f6b2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/pow/bc91ed.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/pow/bc91ed.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pow/bc91ed.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dcb2eca
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%pow_ce9ef5 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %pow_ce9ef5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %pow_ce9ef5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %pow_ce9ef5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/pow/e42f20.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/pow/e42f20.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pow/e42f20.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/pow/e60ea5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/pow/e60ea5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9a06b3f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pow/e60ea5.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%pow_e60ea5 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %pow_e60ea5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %pow_e60ea5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %pow_e60ea5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0d86295
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%pow_f37b25 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %pow_f37b25
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %pow_f37b25
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %pow_f37b25
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f9fbd29
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%pow_fa5429 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %pow_fa5429
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %pow_fa5429
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %pow_fa5429
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/quantizeToF16/12e50e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/quantizeToF16/12e50e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fd0fa1d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/quantizeToF16/12e50e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%quantizeToF16_12e50e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %quantizeToF16_12e50e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %quantizeToF16_12e50e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %quantizeToF16_12e50e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/quantizeToF16/2cddf3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/quantizeToF16/2cddf3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8582e9b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/quantizeToF16/2cddf3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%quantizeToF16_2cddf3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %quantizeToF16_2cddf3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %quantizeToF16_2cddf3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %quantizeToF16_2cddf3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/quantizeToF16/cba294.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/quantizeToF16/cba294.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f79ed61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/quantizeToF16/cba294.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%quantizeToF16_cba294 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %quantizeToF16_cba294
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %quantizeToF16_cba294
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %quantizeToF16_cba294
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/quantizeToF16/e8fd14.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/quantizeToF16/e8fd14.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6e58b71
--- /dev/null
+++ b/test/tint/builtins/gen/literal/quantizeToF16/e8fd14.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%quantizeToF16_e8fd14 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %quantizeToF16_e8fd14
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %quantizeToF16_e8fd14
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %quantizeToF16_e8fd14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..172a54b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%radians_09b7fc = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.01745329238474369049f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %radians_09b7fc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %radians_09b7fc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %radians_09b7fc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f3a2b73
--- /dev/null
+++ b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%radians_208fd9 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.0174407958984375h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %radians_208fd9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %radians_208fd9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %radians_208fd9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/radians/379214.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1c9797b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%radians_44f20b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.0174407958984375h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %radians_44f20b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %radians_44f20b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %radians_44f20b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/radians/524a91.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/radians/61687a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a4b50ab
--- /dev/null
+++ b/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%radians_61687a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.01745329238474369049f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %radians_61687a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %radians_61687a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %radians_61687a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..63a94e4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%radians_6b0ff2 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.01745329238474369049f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %radians_6b0ff2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %radians_6b0ff2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %radians_6b0ff2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d1380cf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%radians_7ea4c7 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.0174407958984375h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %radians_7ea4c7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %radians_7ea4c7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %radians_7ea4c7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/radians/bff231.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/radians/f96258.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d336465
--- /dev/null
+++ b/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%radians_f96258 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.01745329238474369049f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %radians_f96258
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %radians_f96258
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %radians_f96258
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6f6824e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%radians_fbacf0 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.0174407958984375h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %radians_fbacf0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %radians_fbacf0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %radians_fbacf0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/reflect/05357e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/reflect/05357e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fe9b6d5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/reflect/05357e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%reflect_05357e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(-7.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %reflect_05357e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %reflect_05357e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %reflect_05357e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..63e7ca2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%reflect_310de5 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(-7.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %reflect_310de5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %reflect_310de5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %reflect_310de5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b68ca11
--- /dev/null
+++ b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%reflect_61ca21 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(-5.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %reflect_61ca21
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %reflect_61ca21
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %reflect_61ca21
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/reflect/a8baf2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/reflect/a8baf2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/reflect/a8baf2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/reflect/b61e10.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/reflect/b61e10.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d6a552f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/reflect/b61e10.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%reflect_b61e10 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(-3.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %reflect_b61e10
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %reflect_b61e10
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %reflect_b61e10
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1c6eef7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%reflect_bb15ac = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(-3.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %reflect_bb15ac
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %reflect_bb15ac
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %reflect_bb15ac
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/reflect/bba2d0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/reflect/bba2d0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/reflect/bba2d0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/reflect/d7e210.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/reflect/d7e210.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/reflect/d7e210.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/reflect/f47fdb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/reflect/f47fdb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7fe72e9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/reflect/f47fdb.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%reflect_f47fdb = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(-5.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %reflect_f47fdb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %reflect_f47fdb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %reflect_f47fdb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9560048
--- /dev/null
+++ b/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%refract_0594ba = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(-7.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %refract_0594ba
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %refract_0594ba
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %refract_0594ba
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..19ac7ef
--- /dev/null
+++ b/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%refract_570cb3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(-3.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %refract_570cb3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %refract_570cb3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %refract_570cb3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/refract/7e02e6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/refract/7e02e6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..473f458
--- /dev/null
+++ b/test/tint/builtins/gen/literal/refract/7e02e6.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%refract_7e02e6 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(-7.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %refract_7e02e6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %refract_7e02e6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %refract_7e02e6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/refract/8984af.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6b7f761
--- /dev/null
+++ b/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%refract_8984af = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(-5.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %refract_8984af
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %refract_8984af
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %refract_8984af
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/refract/8c192a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/refract/8c192a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/refract/8c192a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/refract/cbc1d2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/refract/cbc1d2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..da261f4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/refract/cbc1d2.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%refract_cbc1d2 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(-5.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %refract_cbc1d2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %refract_cbc1d2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %refract_cbc1d2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/refract/cd905f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/refract/cd905f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..67c86ba
--- /dev/null
+++ b/test/tint/builtins/gen/literal/refract/cd905f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%refract_cd905f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(-3.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %refract_cd905f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %refract_cd905f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %refract_cd905f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/refract/cf1629.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/refract/cf1629.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/refract/cf1629.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/refract/d7569b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/refract/d7569b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/refract/d7569b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/reverseBits/222177.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/reverseBits/222177.wgsl.expected.ir.msl
new file mode 100644
index 0000000..65a3d1a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/reverseBits/222177.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%reverseBits_222177 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(-2147483648i)
+    %4:vec2<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %reverseBits_222177
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %reverseBits_222177
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %reverseBits_222177
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/reverseBits/35fea9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/reverseBits/35fea9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..12b04cd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/reverseBits/35fea9.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%reverseBits_35fea9 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(2147483648u)
+    %4:vec4<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %reverseBits_35fea9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %reverseBits_35fea9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %reverseBits_35fea9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/reverseBits/4dbd6f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/reverseBits/4dbd6f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a4b1768
--- /dev/null
+++ b/test/tint/builtins/gen/literal/reverseBits/4dbd6f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%reverseBits_4dbd6f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(-2147483648i)
+    %4:vec4<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %reverseBits_4dbd6f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %reverseBits_4dbd6f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %reverseBits_4dbd6f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/reverseBits/7c4269.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/reverseBits/7c4269.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7cf70cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/reverseBits/7c4269.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%reverseBits_7c4269 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, -2147483648i
+    %4:i32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %reverseBits_7c4269
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %reverseBits_7c4269
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %reverseBits_7c4269
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/reverseBits/a6ccd4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/reverseBits/a6ccd4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4008eb9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/reverseBits/a6ccd4.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%reverseBits_a6ccd4 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(2147483648u)
+    %4:vec3<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %reverseBits_a6ccd4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %reverseBits_a6ccd4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %reverseBits_a6ccd4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/reverseBits/c21bc1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/reverseBits/c21bc1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..00c1faf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/reverseBits/c21bc1.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%reverseBits_c21bc1 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(-2147483648i)
+    %4:vec3<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %reverseBits_c21bc1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %reverseBits_c21bc1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %reverseBits_c21bc1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/reverseBits/e1f4c1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/reverseBits/e1f4c1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7436b95
--- /dev/null
+++ b/test/tint/builtins/gen/literal/reverseBits/e1f4c1.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%reverseBits_e1f4c1 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(2147483648u)
+    %4:vec2<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %reverseBits_e1f4c1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %reverseBits_e1f4c1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %reverseBits_e1f4c1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/reverseBits/e31adf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/reverseBits/e31adf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b60f770
--- /dev/null
+++ b/test/tint/builtins/gen/literal/reverseBits/e31adf.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%reverseBits_e31adf = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 2147483648u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %reverseBits_e31adf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %reverseBits_e31adf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %reverseBits_e31adf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/round/106c0b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5cdda20
--- /dev/null
+++ b/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%round_106c0b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(4.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %round_106c0b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %round_106c0b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %round_106c0b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/round/184d5a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/round/1c7897.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8e86712
--- /dev/null
+++ b/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%round_1c7897 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(4.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %round_1c7897
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %round_1c7897
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %round_1c7897
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/round/52c84d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f3a8a27
--- /dev/null
+++ b/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%round_52c84d = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(4.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %round_52c84d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %round_52c84d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %round_52c84d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/round/773a8f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/round/9078ef.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0619c45
--- /dev/null
+++ b/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%round_9078ef = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 4.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %round_9078ef
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %round_9078ef
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %round_9078ef
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/round/9edc38.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1f834d9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%round_9edc38 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 4.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %round_9edc38
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %round_9edc38
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %round_9edc38
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/round/a1673d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/round/d87e84.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7a4ddc4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%round_d87e84 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(4.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %round_d87e84
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %round_d87e84
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %round_d87e84
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..67bdd68
--- /dev/null
+++ b/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%round_e1bba2 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(4.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %round_e1bba2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %round_e1bba2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %round_e1bba2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/round/f665b5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f88e7f2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%round_f665b5 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(4.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %round_f665b5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %round_f665b5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %round_f665b5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/saturate/270da5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/saturate/270da5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8e5495c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/saturate/270da5.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%saturate_270da5 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %saturate_270da5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %saturate_270da5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %saturate_270da5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/saturate/462535.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5b29bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%saturate_462535 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %saturate_462535
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %saturate_462535
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %saturate_462535
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/saturate/4ed8d7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/saturate/4ed8d7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/saturate/4ed8d7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/saturate/51567f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/saturate/51567f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4b6b7bf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/saturate/51567f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%saturate_51567f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %saturate_51567f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %saturate_51567f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %saturate_51567f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/saturate/6bcddf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/saturate/6bcddf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fd9444b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/saturate/6bcddf.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%saturate_6bcddf = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %saturate_6bcddf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %saturate_6bcddf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %saturate_6bcddf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/saturate/78b37c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/saturate/78b37c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/saturate/78b37c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/saturate/a5b571.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/saturate/a5b571.wgsl.expected.ir.msl
new file mode 100644
index 0000000..921fed1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/saturate/a5b571.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%saturate_a5b571 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %saturate_a5b571
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %saturate_a5b571
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %saturate_a5b571
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6f98c0c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%saturate_cd2028 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %saturate_cd2028
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %saturate_cd2028
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %saturate_cd2028
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/saturate/d55822.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/saturate/d55822.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/saturate/d55822.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8be0d03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%saturate_dcde71 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %saturate_dcde71
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %saturate_dcde71
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %saturate_dcde71
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/saturate/e40fb6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/saturate/e40fb6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/saturate/e40fb6.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0d83010
--- /dev/null
+++ b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%saturate_e8df56 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %saturate_e8df56
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %saturate_e8df56
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %saturate_e8df56
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/00b848.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/00b848.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2697c10
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/00b848.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_00b848 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %4:vec2<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_00b848
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_00b848
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_00b848
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/01e2cd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/01e2cd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..100963a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/01e2cd.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_01e2cd = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %4:vec3<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_01e2cd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_01e2cd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_01e2cd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/087ea4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/087ea4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d6b3441
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/087ea4.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_087ea4 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %4:vec4<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_087ea4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_087ea4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_087ea4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/089657.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/089657.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/089657.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/select/10e73b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e933a97
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%select_10e73b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_10e73b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_10e73b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_10e73b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/17441a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7af5ece
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%select_1ada2a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_1ada2a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_1ada2a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_1ada2a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/1e960b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/1e960b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..693fae3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/1e960b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_1e960b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %4:vec2<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_1e960b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_1e960b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_1e960b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/select/266aff.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/266aff.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9697455
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/266aff.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_266aff = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_266aff
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_266aff
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_266aff
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/28a27e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/28a27e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5d69cab
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/28a27e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_28a27e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %4:vec3<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_28a27e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_28a27e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_28a27e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/select/3a14be.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/select/3c25ce.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/3c25ce.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2840044
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/3c25ce.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%select_3c25ce = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<bool>, read_write> = var, vec3<bool>(true)
+    %4:vec3<bool> = load %res
+    %5:vec3<bool> = eq %4, vec3<bool>(false)
+    %6:bool = all %5
+    %7:i32 = select 0i, 1i, %6
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %select_3c25ce
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %select_3c25ce
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %select_3c25ce
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/416e14.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/416e14.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b376030
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/416e14.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%select_416e14 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_416e14
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_416e14
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_416e14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/431dfb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/select/43741e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/select/494051.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/494051.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/494051.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/select/4c4738.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/select/4e60da.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/select/51b047.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/51b047.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ff5f795
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/51b047.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_51b047 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %4:vec2<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_51b047
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_51b047
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_51b047
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/53d518.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d128e158
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%select_53d518 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_53d518
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_53d518
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_53d518
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/713567.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/713567.wgsl.expected.ir.msl
new file mode 100644
index 0000000..871b424
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/713567.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_713567 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_713567
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_713567
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_713567
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/78be5f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/78be5f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0a3c879
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/78be5f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_78be5f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_78be5f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_78be5f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_78be5f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/80a9a9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/80a9a9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f99bd9e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/80a9a9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%select_80a9a9 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<bool>, read_write> = var, vec3<bool>(true)
+    %4:vec3<bool> = load %res
+    %5:vec3<bool> = eq %4, vec3<bool>(false)
+    %6:bool = all %5
+    %7:i32 = select 0i, 1i, %6
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %select_80a9a9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %select_80a9a9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %select_80a9a9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/830dd9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..82edc27
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%select_830dd9 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_830dd9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_830dd9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_830dd9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e08fcc8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%select_86f9bd = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_86f9bd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_86f9bd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_86f9bd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/8fa62c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/8fa62c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3d0895e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/8fa62c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_8fa62c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %4:vec3<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_8fa62c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_8fa62c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_8fa62c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/99f883.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/99f883.wgsl.expected.ir.msl
new file mode 100644
index 0000000..634b52a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/99f883.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%select_99f883 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, u32, read_write> = var, 1u
+    %4:u32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_99f883
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_99f883
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_99f883
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/9b478d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/select/a081f1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cab78c3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%select_a081f1 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_a081f1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_a081f1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_a081f1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/a2860e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/a2860e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..be5f8d0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/a2860e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_a2860e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %4:vec4<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_a2860e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_a2860e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_a2860e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/ab069f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/ab069f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1345733
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/ab069f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_ab069f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %4:vec4<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_ab069f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_ab069f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_ab069f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/b04721.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/b04721.wgsl.expected.ir.msl
new file mode 100644
index 0000000..50a8d7e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/b04721.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_b04721 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %4:vec3<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_b04721
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_b04721
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_b04721
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/b93806.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/select/bb447f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/bb447f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..363798f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/bb447f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_bb447f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %4:vec2<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_bb447f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_bb447f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_bb447f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/bb8aae.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/bb8aae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2c73908
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/bb8aae.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_bb8aae = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_bb8aae
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_bb8aae
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_bb8aae
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/bf3d29.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/bf3d29.wgsl.expected.ir.msl
new file mode 100644
index 0000000..08de5e7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/bf3d29.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_bf3d29 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_bf3d29
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_bf3d29
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_bf3d29
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/c31f9e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/c31f9e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c89b0cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/c31f9e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%select_c31f9e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, bool, read_write> = var, true
+    %4:bool = load %res
+    %5:bool = eq %4, false
+    %6:bool = all %5
+    %7:i32 = select 0i, 1i, %6
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %select_c31f9e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %select_c31f9e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %select_c31f9e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/c41bd1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/c41bd1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7d30606
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/c41bd1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%select_c41bd1 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<bool>, read_write> = var, vec4<bool>(true)
+    %4:vec4<bool> = load %res
+    %5:vec4<bool> = eq %4, vec4<bool>(false)
+    %6:bool = all %5
+    %7:i32 = select 0i, 1i, %6
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %select_c41bd1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %select_c41bd1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %select_c41bd1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/c4a4ef.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/c4a4ef.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8eb4e02
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/c4a4ef.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_c4a4ef = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %4:vec4<u32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_c4a4ef
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_c4a4ef
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_c4a4ef
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/cb9301.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/cb9301.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9f88e89
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/cb9301.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%select_cb9301 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<bool>, read_write> = var, vec2<bool>(true)
+    %4:vec2<bool> = load %res
+    %5:vec2<bool> = eq %4, vec2<bool>(false)
+    %6:bool = all %5
+    %7:i32 = select 0i, 1i, %6
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %select_cb9301
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %select_cb9301
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %select_cb9301
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/select/e381c3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/select/e3e028.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/e3e028.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d00495f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/e3e028.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%select_e3e028 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<bool>, read_write> = var, vec4<bool>(true)
+    %4:vec4<bool> = load %res
+    %5:vec4<bool> = eq %4, vec4<bool>(false)
+    %6:bool = all %5
+    %7:i32 = select 0i, 1i, %6
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %select_e3e028
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %select_e3e028
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %select_e3e028
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/ebfea2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/ebfea2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..87593d6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/ebfea2.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_ebfea2 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_ebfea2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_ebfea2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_ebfea2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.ir.msl
new file mode 100644
index 0000000..70fe353
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%select_ed7c13 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_ed7c13
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_ed7c13
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_ed7c13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/ed8a15.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/ed8a15.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8117f40
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/ed8a15.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%select_ed8a15 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 1i
+    %4:i32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %select_ed8a15
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %select_ed8a15
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %select_ed8a15
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/select/fb7e53.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/select/fb7e53.wgsl.expected.ir.msl
new file mode 100644
index 0000000..63a1302
--- /dev/null
+++ b/test/tint/builtins/gen/literal/select/fb7e53.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%select_fb7e53 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<bool>, read_write> = var, vec2<bool>(true)
+    %4:vec2<bool> = load %res
+    %5:vec2<bool> = eq %4, vec2<bool>(false)
+    %6:bool = all %5
+    %7:i32 = select 0i, 1i, %6
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %select_fb7e53
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %select_fb7e53
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %select_fb7e53
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/0799fd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/0799fd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/0799fd.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/159665.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/159665.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c555b1a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/159665.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sign_159665 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sign_159665
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sign_159665
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sign_159665
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/160933.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aa1ae96
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sign_160933 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sign_160933
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sign_160933
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sign_160933
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/3233fa.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/3233fa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8bbf0c6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/3233fa.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%sign_3233fa = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, i32, read_write> = var, 1i
+    %4:i32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sign_3233fa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sign_3233fa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sign_3233fa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/3a39ac.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/3a39ac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/3a39ac.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/3bdab6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/3bdab6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/3bdab6.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/55339e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/55339e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/55339e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/58d779.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/58d779.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3ca71c2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/58d779.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%sign_58d779 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %4:vec4<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sign_58d779
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sign_58d779
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sign_58d779
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6694d29
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sign_5d283a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sign_5d283a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sign_5d283a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sign_5d283a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a61c1eb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%sign_7c85ea = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sign_7c85ea
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sign_7c85ea
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sign_7c85ea
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/926015.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/926015.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b049006
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/926015.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%sign_926015 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %4:vec2<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sign_926015
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sign_926015
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sign_926015
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/943b2e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/943b2e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/943b2e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/9603b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/9603b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8ca3ce6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/9603b1.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%sign_9603b1 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %4:vec3<i32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sign_9603b1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sign_9603b1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sign_9603b1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/ab6301.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/ab6301.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/ab6301.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/b8f634.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/b8f634.wgsl.expected.ir.msl
new file mode 100644
index 0000000..faca32a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/b8f634.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sign_b8f634 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sign_b8f634
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sign_b8f634
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sign_b8f634
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/c8289c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/c8289c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/c8289c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3d75707
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sign_ccdb3c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sign_ccdb3c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sign_ccdb3c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sign_ccdb3c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/d065d8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/d065d8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d88908c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/d065d8.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sign_d065d8 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sign_d065d8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sign_d065d8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sign_d065d8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/dd790e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/dd790e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c33b5f6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/dd790e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%sign_dd790e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sign_dd790e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sign_dd790e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sign_dd790e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sign/f5da6a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sign/f5da6a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sign/f5da6a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sin/01f241.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sin/01f241.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4bde070
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sin/01f241.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sin_01f241 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sin_01f241
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sin_01f241
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sin_01f241
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sin/15b2c6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sin/15b2c6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sin/15b2c6.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8580fcb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sin_2c903b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.99951171875h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sin_2c903b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sin_2c903b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sin_2c903b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.ir.msl
new file mode 100644
index 0000000..610f3f1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sin_3cca11 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.99951171875h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sin_3cca11
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sin_3cca11
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sin_3cca11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sin/4e3979.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sin/4e3979.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fadf78b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sin/4e3979.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sin_4e3979 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sin_4e3979
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sin_4e3979
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sin_4e3979
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ce6cce7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sin_5c0712 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.99951171875h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sin_5c0712
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sin_5c0712
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sin_5c0712
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..14659cf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%sin_66a59f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.99951171875h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sin_66a59f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sin_66a59f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sin_66a59f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sin/67b03c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sin/67b03c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sin/67b03c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sin/68d3ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sin/68d3ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sin/68d3ab.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sin/a9ab19.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sin/a9ab19.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sin/a9ab19.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sin/b78c91.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sin/b78c91.wgsl.expected.ir.msl
new file mode 100644
index 0000000..50cee1a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sin/b78c91.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%sin_b78c91 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sin_b78c91
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sin_b78c91
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sin_b78c91
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sin/fc8bc4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sin/fc8bc4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c26bcd4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sin/fc8bc4.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sin_fc8bc4 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sin_fc8bc4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sin_fc8bc4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sin_fc8bc4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..46a4f6d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sinh_0908c1 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.1748046875h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sinh_0908c1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sinh_0908c1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sinh_0908c1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5b2bd31
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sinh_445e33 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.17520117759704589844f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sinh_445e33
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sinh_445e33
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sinh_445e33
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7a25040
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%sinh_69cce2 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 1.1748046875h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sinh_69cce2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sinh_69cce2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sinh_69cce2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.ir.msl
new file mode 100644
index 0000000..509fa94
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%sinh_7bb598 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.17520117759704589844f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sinh_7bb598
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sinh_7bb598
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sinh_7bb598
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.ir.msl
new file mode 100644
index 0000000..505cf14
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sinh_924f19 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.1748046875h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sinh_924f19
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sinh_924f19
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sinh_924f19
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8ee1d38
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sinh_b9860e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.17520117759704589844f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sinh_b9860e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sinh_b9860e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sinh_b9860e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1498d05
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sinh_ba7e25 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.1748046875h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sinh_ba7e25
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sinh_ba7e25
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sinh_ba7e25
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c6fcbf2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sinh_c9a5eb = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.17520117759704589844f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sinh_c9a5eb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sinh_c9a5eb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sinh_c9a5eb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/smoothstep/0c481b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/smoothstep/0c481b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/smoothstep/0c481b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/smoothstep/0c4ffc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/smoothstep/0c4ffc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/smoothstep/0c4ffc.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3cc81fc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%smoothstep_12c031 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.5h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %smoothstep_12c031
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %smoothstep_12c031
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %smoothstep_12c031
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/smoothstep/392c19.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/smoothstep/392c19.wgsl.expected.ir.msl
new file mode 100644
index 0000000..05ce805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/smoothstep/392c19.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%smoothstep_392c19 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.5f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %smoothstep_392c19
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %smoothstep_392c19
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %smoothstep_392c19
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/smoothstep/40864c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/smoothstep/40864c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5f28d4a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/smoothstep/40864c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%smoothstep_40864c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.5f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %smoothstep_40864c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %smoothstep_40864c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %smoothstep_40864c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d69e18b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%smoothstep_586e12 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.5h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %smoothstep_586e12
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %smoothstep_586e12
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %smoothstep_586e12
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/smoothstep/66e4bd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/smoothstep/66e4bd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/smoothstep/66e4bd.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/smoothstep/6c4975.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/smoothstep/6c4975.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4068a45
--- /dev/null
+++ b/test/tint/builtins/gen/literal/smoothstep/6c4975.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%smoothstep_6c4975 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.5f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %smoothstep_6c4975
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %smoothstep_6c4975
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %smoothstep_6c4975
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..90ca756
--- /dev/null
+++ b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%smoothstep_6e7a74 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.5h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %smoothstep_6e7a74
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %smoothstep_6e7a74
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %smoothstep_6e7a74
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/smoothstep/a80fff.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/smoothstep/a80fff.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/smoothstep/a80fff.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/smoothstep/aad1db.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/smoothstep/aad1db.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6388285
--- /dev/null
+++ b/test/tint/builtins/gen/literal/smoothstep/aad1db.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%smoothstep_aad1db = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.5f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %smoothstep_aad1db
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %smoothstep_aad1db
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %smoothstep_aad1db
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..647cc8b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%smoothstep_c43ebd = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.5h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %smoothstep_c43ebd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %smoothstep_c43ebd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %smoothstep_c43ebd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sqrt/072192.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sqrt/072192.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sqrt/072192.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sqrt/20c74e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sqrt/20c74e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..09ca039
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sqrt/20c74e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%sqrt_20c74e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sqrt_20c74e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sqrt_20c74e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sqrt_20c74e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sqrt/4ac2c5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sqrt/4ac2c5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sqrt/4ac2c5.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9283e34
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sqrt_803d1c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sqrt_803d1c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sqrt_803d1c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sqrt_803d1c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..02c6447
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sqrt_895a0c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sqrt_895a0c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sqrt_895a0c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sqrt_895a0c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sqrt/8c7024.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sqrt/8c7024.wgsl.expected.ir.msl
new file mode 100644
index 0000000..38d6afa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sqrt/8c7024.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sqrt_8c7024 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sqrt_8c7024
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sqrt_8c7024
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sqrt_8c7024
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sqrt/8da177.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sqrt/8da177.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sqrt/8da177.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sqrt/9c5cbe.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sqrt/9c5cbe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sqrt/9c5cbe.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/sqrt/aa0d7a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sqrt/aa0d7a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4a40ed5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sqrt/aa0d7a.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sqrt_aa0d7a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sqrt_aa0d7a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sqrt_aa0d7a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sqrt_aa0d7a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d06f8e9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sqrt_d9ab4d = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sqrt_d9ab4d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sqrt_d9ab4d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sqrt_d9ab4d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..57687a0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%sqrt_ec33e9 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sqrt_ec33e9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sqrt_ec33e9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sqrt_ec33e9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/sqrt/f8c59a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/sqrt/f8c59a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cba7865
--- /dev/null
+++ b/test/tint/builtins/gen/literal/sqrt/f8c59a.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sqrt_f8c59a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %sqrt_f8c59a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %sqrt_f8c59a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %sqrt_f8c59a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/step/07cb06.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/step/07cb06.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e767576
--- /dev/null
+++ b/test/tint/builtins/gen/literal/step/07cb06.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%step_07cb06 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %step_07cb06
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %step_07cb06
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %step_07cb06
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/step/0b073b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/step/0b073b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b238ad1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/step/0b073b.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%step_0b073b = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %step_0b073b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %step_0b073b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %step_0b073b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/step/19accd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/step/19accd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bcfefd9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/step/19accd.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%step_19accd = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %step_19accd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %step_19accd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %step_19accd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/step/334303.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/step/334303.wgsl.expected.ir.msl
new file mode 100644
index 0000000..52797d2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/step/334303.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%step_334303 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %step_334303
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %step_334303
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %step_334303
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/step/38cd79.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/step/38cd79.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/step/38cd79.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/step/415879.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/step/415879.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/step/415879.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/step/630d07.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/step/630d07.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d399c96
--- /dev/null
+++ b/test/tint/builtins/gen/literal/step/630d07.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%step_630d07 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %step_630d07
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %step_630d07
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %step_630d07
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/step/7c7e5c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/step/7c7e5c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/step/7c7e5c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/step/baa320.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/step/baa320.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c1a53da
--- /dev/null
+++ b/test/tint/builtins/gen/literal/step/baa320.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%step_baa320 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %step_baa320
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %step_baa320
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %step_baa320
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/step/cc6b61.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/step/cc6b61.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8e063ec
--- /dev/null
+++ b/test/tint/builtins/gen/literal/step/cc6b61.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%step_cc6b61 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %step_cc6b61
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %step_cc6b61
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %step_cc6b61
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/step/e2b337.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/step/e2b337.wgsl.expected.ir.msl
new file mode 100644
index 0000000..89c7b28
--- /dev/null
+++ b/test/tint/builtins/gen/literal/step/e2b337.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%step_e2b337 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %step_e2b337
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %step_e2b337
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %step_e2b337
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/step/f9b70c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/step/f9b70c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/step/f9b70c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/storageBarrier/d87211.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/storageBarrier/d87211.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/storageBarrier/d87211.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/subgroupBallot/7e6d0e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupBallot/7e6d0e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..417d78c8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBallot/7e6d0e.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%subgroupBallot_7e6d0e = func():void -> %b2 {
+  %b2 = block {
+    %3:vec4<u32> = subgroupBallot
+    %res:ptr<function, vec4<u32>, read_write> = var, %3
+    %5:vec4<u32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %subgroupBallot_7e6d0e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dec41c4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%subgroupBroadcast_08beca = func():void -> %b2 {
+  %b2 = block {
+    %3:f32 = subgroupBroadcast 1.0f, 1u
+    %res:ptr<function, f32, read_write> = var, %3
+    %5:f32 = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %subgroupBroadcast_08beca
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5cb0a86
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%subgroupBroadcast_1d79c7 = func():void -> %b2 {
+  %b2 = block {
+    %3:i32 = subgroupBroadcast 1i, 1u
+    %res:ptr<function, i32, read_write> = var, %3
+    %5:i32 = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %subgroupBroadcast_1d79c7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d1da946
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%subgroupBroadcast_c36fe1 = func():void -> %b2 {
+  %b2 = block {
+    %3:u32 = subgroupBroadcast 1u, 1u
+    %res:ptr<function, u32, read_write> = var, %3
+    %5:u32 = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %subgroupBroadcast_c36fe1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ee6ce4a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%tan_244e2a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.55740773677825927734f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %tan_244e2a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %tan_244e2a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %tan_244e2a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2281e91
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%tan_2f030e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.55740773677825927734f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %tan_2f030e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %tan_2f030e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %tan_2f030e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/tan/311400.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/tan/539e54.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ae36752
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%tan_539e54 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.556640625h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %tan_539e54
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %tan_539e54
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %tan_539e54
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/tan/7be368.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8be24ef
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%tan_7ea104 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.55740773677825927734f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %tan_7ea104
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %tan_7ea104
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %tan_7ea104
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3c3e579
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%tan_8ce3e9 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.55740773677825927734f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %tan_8ce3e9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %tan_8ce3e9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %tan_8ce3e9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b6ffc49
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%tan_9f7c9c = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.556640625h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %tan_9f7c9c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %tan_9f7c9c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %tan_9f7c9c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.ir.msl
new file mode 100644
index 0000000..895856e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%tan_d4d491 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 1.556640625h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %tan_d4d491
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %tan_d4d491
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %tan_d4d491
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/tan/db0456.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.ir.msl
new file mode 100644
index 0000000..77eaa73
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%tan_db0456 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.556640625h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %tan_db0456
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %tan_db0456
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %tan_db0456
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a4984c3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%tanh_06a4fe = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.76123046875h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %tanh_06a4fe
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %tanh_06a4fe
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %tanh_06a4fe
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1b5de82
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%tanh_5663c5 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.76159417629241943359f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %tanh_5663c5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %tanh_5663c5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %tanh_5663c5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b3dc121
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%tanh_5724b3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.76159417629241943359f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %tanh_5724b3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %tanh_5724b3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %tanh_5724b3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a5edad9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%tanh_5b19af = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 0.76123046875h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %tanh_5b19af
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %tanh_5b19af
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %tanh_5b19af
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e90a5b9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%tanh_6d105a = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.76123046875h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %tanh_6d105a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %tanh_6d105a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %tanh_6d105a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..42002cf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%tanh_9f9fb9 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.76159417629241943359f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %tanh_9f9fb9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %tanh_9f9fb9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %tanh_9f9fb9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..18b58c2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%tanh_c15fdb = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 0.76159417629241943359f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %tanh_c15fdb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %tanh_c15fdb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %tanh_c15fdb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b1460e7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%tanh_e8efb3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.76123046875h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %tanh_e8efb3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %tanh_e8efb3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %tanh_e8efb3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/00348c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/00348c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0c7e03e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/00348c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_00348c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<i32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_00348c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_00348c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_00348c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/01e21e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/01e21e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3d6213a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/01e21e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_01e21e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32uint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_01e21e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_01e21e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_01e21e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/01edb1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/01edb1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1613b80
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/01edb1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_01edb1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8uint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_01edb1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_01edb1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_01edb1
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/022903.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/022903.wgsl.expected.ir.msl
new file mode 100644
index 0000000..663d020a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/022903.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_022903 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<i32> = load %arg_0
+    %5:u32 = textureDimensions %4, 1u
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_022903
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_022903
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_022903
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/0276ec.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/0276ec.wgsl.expected.ir.msl
new file mode 100644
index 0000000..38c1a30
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/0276ec.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_0276ec = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16uint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_0276ec
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_0276ec
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_0276ec
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/029589.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/029589.wgsl.expected.ir.msl
new file mode 100644
index 0000000..925e89e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/029589.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_029589 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_029589
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_029589
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_029589
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/0329b0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/0329b0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..533bc3e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/0329b0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_0329b0 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16sint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_0329b0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_0329b0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_0329b0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/033195.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/033195.wgsl.expected.ir.msl
new file mode 100644
index 0000000..395def0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/033195.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_033195 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16float, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_033195
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_033195
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_033195
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/033ea7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/033ea7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..70b1052
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/033ea7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_033ea7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8unorm, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_033ea7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_033ea7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_033ea7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/038847.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/038847.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3acb5bb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/038847.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_038847 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8sint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_038847
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_038847
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_038847
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/03f81e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/03f81e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4df50ff
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/03f81e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_03f81e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8snorm, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_03f81e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_03f81e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_03f81e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/07f1ba.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/07f1ba.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3f00be3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/07f1ba.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_07f1ba = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16float, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_07f1ba
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_07f1ba
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_07f1ba
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/088918.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/088918.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e239cd5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/088918.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_088918 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8unorm, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_088918
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_088918
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_088918
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/0890c6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/0890c6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4e75218
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/0890c6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_0890c6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<f32> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4, 1u
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_0890c6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_0890c6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_0890c6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/08e371.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/08e371.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f2c7f0d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/08e371.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_08e371 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_08e371
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_08e371
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_08e371
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/09140b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/09140b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9df585c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/09140b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_09140b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32uint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_09140b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_09140b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_09140b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/0973c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/0973c9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8f3d6e7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/0973c9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_0973c9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_0973c9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_0973c9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_0973c9
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/0baa0d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/0baa0d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..99d2672
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/0baa0d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_0baa0d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32float, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_0baa0d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_0baa0d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_0baa0d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/0c0b0c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/0c0b0c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..791b5e1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/0c0b0c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_0c0b0c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16float, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_0c0b0c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_0c0b0c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_0c0b0c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/0d4a7c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/0d4a7c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f1f5aa7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/0d4a7c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_0d4a7c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_0d4a7c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_0d4a7c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_0d4a7c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/0de70c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/0de70c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d9da2b5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/0de70c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_0de70c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8unorm, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_0de70c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_0de70c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_0de70c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/0ff9a4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/0ff9a4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ed5a1d7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/0ff9a4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_0ff9a4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_cube_array = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1i
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_0ff9a4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_0ff9a4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_0ff9a4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/135176.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/135176.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2ac8564
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/135176.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_135176 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_135176
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_135176
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_135176
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/13f8db.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/13f8db.wgsl.expected.ir.msl
new file mode 100644
index 0000000..05ece5f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/13f8db.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_13f8db = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<f32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1u
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_13f8db
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_13f8db
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_13f8db
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/1417dd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/1417dd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c1d4923
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/1417dd.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_1417dd = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_1417dd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_1417dd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_1417dd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/15aa17.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/15aa17.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5520728
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/15aa17.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_15aa17 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32sint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_15aa17
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_15aa17
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_15aa17
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/15b577.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/15b577.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2de97fc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/15b577.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_15b577 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<u32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1i
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_15b577
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_15b577
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_15b577
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/1a2be7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/1a2be7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..540b2ed
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/1a2be7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_1a2be7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<i32> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_1a2be7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_1a2be7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_1a2be7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/1b720f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/1b720f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ce4354b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/1b720f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_1b720f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16sint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_1b720f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_1b720f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_1b720f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/1bc428.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/1bc428.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ff8aa37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/1bc428.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_1bc428 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<f32> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4, 1i
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_1bc428
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_1bc428
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_1bc428
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/1bd78c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/1bd78c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b536c94
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/1bd78c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_1bd78c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<f32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1i
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_1bd78c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_1bd78c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_1bd78c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/1e4024.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/1e4024.wgsl.expected.ir.msl
new file mode 100644
index 0000000..89d2f1c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/1e4024.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_1e4024 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32float, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_1e4024
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_1e4024
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_1e4024
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/20eaad.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/20eaad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2d62641
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/20eaad.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_20eaad = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16sint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_20eaad
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_20eaad
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_20eaad
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/20ecef.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/20ecef.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8660b9c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/20ecef.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_20ecef = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32float, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_20ecef
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_20ecef
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_20ecef
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/212362.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/212362.wgsl.expected.ir.msl
new file mode 100644
index 0000000..337d1f8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/212362.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_212362 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32float, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_212362
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_212362
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_212362
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/224113.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/224113.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bb22616
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/224113.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_224113 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8unorm, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_224113
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_224113
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_224113
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/22b5b6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/22b5b6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9f730c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/22b5b6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_22b5b6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<u32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1i
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_22b5b6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_22b5b6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_22b5b6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/24db07.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/24db07.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9672aab
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/24db07.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_24db07 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<f32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_24db07
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_24db07
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_24db07
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/2674d8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/2674d8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..90f4848
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/2674d8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_2674d8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_2674d8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_2674d8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_2674d8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/268ddb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/268ddb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f5d558b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/268ddb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_268ddb = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32uint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_268ddb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_268ddb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_268ddb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/26d6bf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/26d6bf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b2d616a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/26d6bf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_26d6bf = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<f32> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_26d6bf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_26d6bf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_26d6bf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/283b58.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/283b58.wgsl.expected.ir.msl
new file mode 100644
index 0000000..43d62ac
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/283b58.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_283b58 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32float, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_283b58
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_283b58
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_283b58
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/284c27.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/284c27.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3ca5940
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/284c27.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_284c27 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32float, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_284c27
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_284c27
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_284c27
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/2a58b7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/2a58b7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b4c5ce2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/2a58b7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_2a58b7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_2a58b7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_2a58b7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_2a58b7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/2bafdf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/2bafdf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d1d90f4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/2bafdf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_2bafdf = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<bgra8unorm, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_2bafdf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_2bafdf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_2bafdf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/2dc5c5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/2dc5c5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fbb18b1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/2dc5c5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_2dc5c5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8uint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_2dc5c5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_2dc5c5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_2dc5c5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/2e443d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/2e443d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..54b353f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/2e443d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_2e443d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<i32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1i
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_2e443d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_2e443d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_2e443d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/2fd2a4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/2fd2a4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e64f398
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/2fd2a4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_2fd2a4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<f32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1i
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_2fd2a4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_2fd2a4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_2fd2a4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/2ff32a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/2ff32a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6553bc1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/2ff32a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_2ff32a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32float, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_2ff32a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_2ff32a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_2ff32a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/305dd5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/305dd5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cad56e3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/305dd5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_305dd5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_305dd5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_305dd5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_305dd5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/31799c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/31799c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cb24ca4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/31799c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_31799c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32uint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_31799c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_31799c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_31799c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/31d00d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/31d00d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..809ceb3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/31d00d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_31d00d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32uint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_31d00d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_31d00d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_31d00d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/325338.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/325338.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c5313d9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/325338.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_325338 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_325338
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_325338
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_325338
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/346fee.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/346fee.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4cf2132
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/346fee.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_346fee = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<u32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1u
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_346fee
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_346fee
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_346fee
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/35a7e5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/35a7e5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..68c9ebc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/35a7e5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_35a7e5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16uint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_35a7e5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_35a7e5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_35a7e5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/35ee69.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/35ee69.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ad28676
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/35ee69.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_35ee69 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32uint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_35ee69
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_35ee69
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_35ee69
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/36eeb7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/36eeb7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..77c37ed
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/36eeb7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_36eeb7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_36eeb7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_36eeb7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_36eeb7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/378a65.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/378a65.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2f12d51
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/378a65.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_378a65 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_378a65
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_378a65
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_378a65
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/382b16.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/382b16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2b3d493
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/382b16.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_382b16 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube<f32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1u
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_382b16
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_382b16
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_382b16
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/3834f8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/3834f8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1151498
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/3834f8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3834f8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3834f8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3834f8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3834f8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/38c9ca.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/38c9ca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dd78a43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/38c9ca.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_38c9ca = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_38c9ca
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_38c9ca
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_38c9ca
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/3963d0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/3963d0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5ee5060
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/3963d0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3963d0 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<i32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1u
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3963d0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3963d0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3963d0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/397dab.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/397dab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..67386b2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/397dab.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_397dab = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_397dab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_397dab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_397dab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/3a5bb1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/3a5bb1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4778968
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/3a5bb1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3a5bb1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32float, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3a5bb1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3a5bb1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3a5bb1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/3a7b69.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/3a7b69.wgsl.expected.ir.msl
new file mode 100644
index 0000000..783a7cf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/3a7b69.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3a7b69 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3a7b69
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3a7b69
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3a7b69
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/3af3e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/3af3e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6b8c935
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/3af3e7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3af3e7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8unorm, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3af3e7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3af3e7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3af3e7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/3b38f6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/3b38f6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3a8dc54
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/3b38f6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3b38f6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3b38f6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3b38f6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3b38f6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/3baab5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/3baab5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..00b6676
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/3baab5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3baab5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3baab5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3baab5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3baab5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/3bf12a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/3bf12a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bd37561
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/3bf12a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3bf12a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3bf12a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3bf12a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3bf12a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/3c66f0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/3c66f0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..427b636
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/3c66f0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3c66f0 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<i32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1i
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3c66f0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3c66f0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3c66f0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/3f3474.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/3f3474.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0f80283
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/3f3474.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3f3474 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<f32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3f3474
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3f3474
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3f3474
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/3fc3dc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/3fc3dc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..df6c5e5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/3fc3dc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3fc3dc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<f32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1u
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3fc3dc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3fc3dc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3fc3dc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/3ff0a5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/3ff0a5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a1b17ce
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/3ff0a5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3ff0a5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3ff0a5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3ff0a5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3ff0a5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/40c671.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/40c671.wgsl.expected.ir.msl
new file mode 100644
index 0000000..58c933e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/40c671.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_40c671 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8sint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_40c671
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_40c671
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_40c671
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/40ecf4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/40ecf4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..df7abfb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/40ecf4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_40ecf4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_40ecf4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_40ecf4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_40ecf4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/41545f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/41545f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2be0132
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/41545f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_41545f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_41545f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_41545f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_41545f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/423519.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/423519.wgsl.expected.ir.msl
new file mode 100644
index 0000000..976fcee
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/423519.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_423519 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32uint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_423519
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_423519
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_423519
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/427f92.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/427f92.wgsl.expected.ir.msl
new file mode 100644
index 0000000..74ca2f2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/427f92.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_427f92 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_427f92
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_427f92
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_427f92
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/439651.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/439651.wgsl.expected.ir.msl
new file mode 100644
index 0000000..87f8f75
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/439651.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_439651 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_439651
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_439651
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_439651
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/445376.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/445376.wgsl.expected.ir.msl
new file mode 100644
index 0000000..79e94b9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/445376.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_445376 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<u32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_445376
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_445376
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_445376
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/44b358.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/44b358.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7801093
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/44b358.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_44b358 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32uint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_44b358
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_44b358
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_44b358
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/452fc1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/452fc1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a097e86
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/452fc1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_452fc1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_452fc1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_452fc1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_452fc1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/46f0fc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/46f0fc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..94edec8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/46f0fc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_46f0fc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<f32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_46f0fc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_46f0fc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_46f0fc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/4716a4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/4716a4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fab0404
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/4716a4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_4716a4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_4716a4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_4716a4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_4716a4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/475c10.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/475c10.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3b7f000
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/475c10.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_475c10 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8uint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_475c10
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_475c10
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_475c10
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/49a067.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/49a067.wgsl.expected.ir.msl
new file mode 100644
index 0000000..23fa5a7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/49a067.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_49a067 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube<f32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1i
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_49a067
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_49a067
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_49a067
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/4acec7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/4acec7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b204664
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/4acec7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_4acec7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_4acec7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_4acec7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_4acec7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/4b26ef.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/4b26ef.wgsl.expected.ir.msl
new file mode 100644
index 0000000..12e5394
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/4b26ef.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_4b26ef = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8unorm, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_4b26ef
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_4b26ef
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_4b26ef
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/4be71b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/4be71b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..be6b386
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/4be71b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_4be71b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<u32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_4be71b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_4be71b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_4be71b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/4d1f71.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/4d1f71.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d430fdd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/4d1f71.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_4d1f71 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_4d1f71
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_4d1f71
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_4d1f71
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/4d27b3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/4d27b3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d7fb249
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/4d27b3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_4d27b3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32sint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_4d27b3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_4d27b3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_4d27b3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/4df14c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/4df14c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9815e47
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/4df14c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_4df14c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32uint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_4df14c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_4df14c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_4df14c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/4e540a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/4e540a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28d77f4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/4e540a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_4e540a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32sint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_4e540a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_4e540a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_4e540a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/528c0e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/528c0e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9ebb787
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/528c0e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_528c0e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<u32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1u
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_528c0e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_528c0e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_528c0e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/52cf60.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/52cf60.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4ddb4f1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/52cf60.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_52cf60 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32float, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_52cf60
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_52cf60
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_52cf60
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/534ef8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/534ef8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..83aa738
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/534ef8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_534ef8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_534ef8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_534ef8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_534ef8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/55fdeb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/55fdeb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..04fe015
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/55fdeb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_55fdeb = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<bgra8unorm, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_55fdeb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_55fdeb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_55fdeb
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/5703b3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/5703b3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0d6aa84
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/5703b3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_5703b3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<bgra8unorm, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_5703b3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_5703b3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_5703b3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/579eee.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/579eee.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4a8115d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/579eee.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_579eee = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_579eee
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_579eee
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_579eee
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/58a82d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/58a82d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4b46aa8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/58a82d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_58a82d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16uint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_58a82d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_58a82d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_58a82d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/591981.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/591981.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c1347f4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/591981.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_591981 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16sint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_591981
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_591981
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_591981
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/599ab5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/599ab5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f005736
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/599ab5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_599ab5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16float, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_599ab5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_599ab5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_599ab5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/5b4b10.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/5b4b10.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4ab2044
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/5b4b10.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<bgra8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_5b4b10 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<bgra8unorm, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_5b4b10
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_5b4b10
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_5b4b10
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/5df042.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/5df042.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b5d0295
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/5df042.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_5df042 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<i32> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_5df042
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_5df042
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_5df042
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/607979.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/607979.wgsl.expected.ir.msl
new file mode 100644
index 0000000..72d662c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/607979.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_607979 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32sint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_607979
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_607979
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_607979
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/609d34.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/609d34.wgsl.expected.ir.msl
new file mode 100644
index 0000000..815d261
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/609d34.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_609d34 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_609d34
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_609d34
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_609d34
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/617dc8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/617dc8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dd1fe8d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/617dc8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_617dc8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32float, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_617dc8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_617dc8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_617dc8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/62cb5a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/62cb5a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fad2853
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/62cb5a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_62cb5a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<i32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_62cb5a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_62cb5a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_62cb5a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/62e7ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/62e7ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3736c4a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/62e7ae.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_62e7ae = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_62e7ae
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_62e7ae
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_62e7ae
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/64dc74.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/64dc74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9e4e0c6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/64dc74.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_64dc74 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube<i32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1u
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_64dc74
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_64dc74
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_64dc74
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/674058.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/674058.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d0113bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/674058.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_674058 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_674058
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_674058
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_674058
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/6dae40.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/6dae40.wgsl.expected.ir.msl
new file mode 100644
index 0000000..14d5150
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/6dae40.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_6dae40 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32float, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_6dae40
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_6dae40
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_6dae40
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/6dbef4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/6dbef4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e05051e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/6dbef4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_6dbef4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32sint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_6dbef4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_6dbef4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_6dbef4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/6e6c7a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/6e6c7a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..492ef7d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/6e6c7a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_6e6c7a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<u32> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4, 1u
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_6e6c7a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_6e6c7a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_6e6c7a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/6e72c5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/6e72c5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..acd94bb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/6e72c5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_6e72c5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32float, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_6e72c5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_6e72c5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_6e72c5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/6f1b5d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/6f1b5d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e12c896
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/6f1b5d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_6f1b5d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1i
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_6f1b5d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_6f1b5d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_6f1b5d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/709357.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/709357.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5cec4e5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/709357.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_709357 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16uint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_709357
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_709357
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_709357
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/70dd33.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/70dd33.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e4a3430
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/70dd33.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_70dd33 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32sint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_70dd33
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_70dd33
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_70dd33
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/715917.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/715917.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d605f15
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/715917.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_715917 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_715917
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_715917
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_715917
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/7228de.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/7228de.wgsl.expected.ir.msl
new file mode 100644
index 0000000..65eea71
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/7228de.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_7228de = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32uint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_7228de
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_7228de
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_7228de
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/7327fa.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/7327fa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b28a659
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/7327fa.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_7327fa = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8snorm, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_7327fa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_7327fa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_7327fa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/740e7c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/740e7c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5c9c45a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/740e7c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_740e7c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32sint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_740e7c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_740e7c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_740e7c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/756031.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/756031.wgsl.expected.ir.msl
new file mode 100644
index 0000000..975f324
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/756031.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_756031 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<i32> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4, 1i
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_756031
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_756031
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_756031
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/756304.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/756304.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3a70931
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/756304.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_756304 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_756304
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_756304
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_756304
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/790e57.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/790e57.wgsl.expected.ir.msl
new file mode 100644
index 0000000..44dcc1d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/790e57.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_790e57 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8sint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_790e57
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_790e57
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_790e57
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/795fbb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/795fbb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c6bb41a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/795fbb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_795fbb = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_795fbb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_795fbb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_795fbb
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/797c30.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/797c30.wgsl.expected.ir.msl
new file mode 100644
index 0000000..32c9df5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/797c30.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_797c30 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32uint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_797c30
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_797c30
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_797c30
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/79d168.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/79d168.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d78b25a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/79d168.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_79d168 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_cube = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1i
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_79d168
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_79d168
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_79d168
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/7a3890.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/7a3890.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28863fd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/7a3890.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_7a3890 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<u32> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_7a3890
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_7a3890
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_7a3890
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/7a9e30.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/7a9e30.wgsl.expected.ir.msl
new file mode 100644
index 0000000..74dc445
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/7a9e30.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_7a9e30 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube<u32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_7a9e30
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_7a9e30
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_7a9e30
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/7c753b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/7c753b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3a25ee1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/7c753b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_7c753b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32float, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_7c753b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_7c753b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_7c753b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/7c7c64.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/7c7c64.wgsl.expected.ir.msl
new file mode 100644
index 0000000..98f63d5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/7c7c64.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_7c7c64 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_7c7c64
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_7c7c64
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_7c7c64
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/7d8439.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/7d8439.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0c0b24a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/7d8439.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_7d8439 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32uint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_7d8439
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_7d8439
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_7d8439
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/7ea4b5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/7ea4b5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cc51472
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/7ea4b5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_7ea4b5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8sint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_7ea4b5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_7ea4b5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_7ea4b5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/7edb05.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/7edb05.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0a768d4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/7edb05.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_7edb05 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_7edb05
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_7edb05
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_7edb05
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/8057cb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/8057cb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bd43007
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/8057cb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_8057cb = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<bgra8unorm, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_8057cb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_8057cb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_8057cb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/8243a1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/8243a1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2a7ae87
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/8243a1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_8243a1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<bgra8unorm, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_8243a1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_8243a1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_8243a1
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/835f90.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/835f90.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ace061c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/835f90.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_835f90 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_835f90
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_835f90
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_835f90
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/841ebe.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/841ebe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c1668f9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/841ebe.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_841ebe = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8sint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_841ebe
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_841ebe
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_841ebe
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/84f363.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/84f363.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a2f6952
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/84f363.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<bgra8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_84f363 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<bgra8unorm, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_84f363
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_84f363
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_84f363
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/867ead.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/867ead.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8c5e17c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/867ead.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_867ead = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_867ead
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_867ead
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_867ead
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/879b73.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/879b73.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a48137a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/879b73.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_879b73 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<f32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_879b73
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_879b73
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_879b73
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/87b42d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/87b42d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dfc6994
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/87b42d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_87b42d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_87b42d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_87b42d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_87b42d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/881dd4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/881dd4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f5110b9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/881dd4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_881dd4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_881dd4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_881dd4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_881dd4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/8a2b17.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/8a2b17.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6614e6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/8a2b17.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_8a2b17 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32sint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_8a2b17
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_8a2b17
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_8a2b17
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/8a35f9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/8a35f9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e5dfe4e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/8a35f9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_8a35f9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32float, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_8a35f9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_8a35f9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_8a35f9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/8b9906.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/8b9906.wgsl.expected.ir.msl
new file mode 100644
index 0000000..186ff82
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/8b9906.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_8b9906 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8uint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_8b9906
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_8b9906
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_8b9906
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/8bd369.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/8bd369.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3c23d67
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/8bd369.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_8bd369 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_8bd369
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_8bd369
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_8bd369
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/8e15f4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/8e15f4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e47cee8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/8e15f4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_8e15f4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_8e15f4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_8e15f4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_8e15f4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/8e5de6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/8e5de6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..63f56e2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/8e5de6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_8e5de6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32sint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_8e5de6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_8e5de6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_8e5de6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/8efd47.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/8efd47.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b421b56
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/8efd47.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_8efd47 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32sint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_8efd47
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_8efd47
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_8efd47
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/902179.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/902179.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3985cbc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/902179.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_902179 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32float, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_902179
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_902179
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_902179
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/904b0f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/904b0f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d349359
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/904b0f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_904b0f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_904b0f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_904b0f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_904b0f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/90dd74.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/90dd74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b66d442
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/90dd74.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_90dd74 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_90dd74
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_90dd74
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_90dd74
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/91e3b4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/91e3b4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f391d12
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/91e3b4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_91e3b4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32sint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_91e3b4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_91e3b4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_91e3b4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/920006.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/920006.wgsl.expected.ir.msl
new file mode 100644
index 0000000..860fbde
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/920006.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_920006 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<u32> = load %arg_0
+    %5:u32 = textureDimensions %4, 1i
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_920006
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_920006
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_920006
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/92552e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/92552e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d2b8237
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/92552e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_92552e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8sint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_92552e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_92552e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_92552e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/9573f3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/9573f3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0ec14a2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/9573f3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9573f3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9573f3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9573f3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9573f3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/965645.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/965645.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e9a006f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/965645.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_965645 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<u32> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_965645
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_965645
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_965645
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/98b2d3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/98b2d3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a8d3da0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/98b2d3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_98b2d3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<i32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_98b2d3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_98b2d3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_98b2d3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/991ea9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/991ea9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2c78545
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/991ea9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_991ea9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1u
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_991ea9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_991ea9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_991ea9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/9944d5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/9944d5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7c9fbfc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/9944d5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9944d5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32uint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9944d5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9944d5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9944d5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/9b10a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/9b10a0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d512af7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/9b10a0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9b10a0 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9b10a0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9b10a0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9b10a0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/9b223b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/9b223b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3abb068
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/9b223b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9b223b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube<f32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9b223b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9b223b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9b223b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/9baf27.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/9baf27.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7047b20
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/9baf27.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9baf27 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube<u32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1u
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9baf27
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9baf27
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9baf27
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/9c7a00.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/9c7a00.wgsl.expected.ir.msl
new file mode 100644
index 0000000..61a19d2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/9c7a00.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9c7a00 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<u32> = load %arg_0
+    %5:u32 = textureDimensions %4, 1u
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9c7a00
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9c7a00
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9c7a00
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/9cd4ca.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/9cd4ca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..938b3ec
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/9cd4ca.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9cd4ca = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube<u32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1i
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9cd4ca
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9cd4ca
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9cd4ca
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/9cd8ad.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/9cd8ad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ddf86bf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/9cd8ad.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9cd8ad = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32float, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9cd8ad
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9cd8ad
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9cd8ad
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/9d0bac.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/9d0bac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0f9d421
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/9d0bac.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9d0bac = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32float, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9d0bac
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9d0bac
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9d0bac
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/9d68b8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/9d68b8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..04f5d97
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/9d68b8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9d68b8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8snorm, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9d68b8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9d68b8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9d68b8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/9dc27a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/9dc27a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0d94e5a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/9dc27a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9dc27a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9dc27a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9dc27a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9dc27a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/9e0794.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/9e0794.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9add57a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/9e0794.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9e0794 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<u32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1i
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9e0794
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9e0794
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9e0794
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/9fcc3b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/9fcc3b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..17032a6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/9fcc3b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9fcc3b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_cube_array = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9fcc3b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9fcc3b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9fcc3b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/a105a5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/a105a5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2f8e969
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/a105a5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a105a5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32uint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_a105a5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_a105a5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_a105a5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/a14386.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/a14386.wgsl.expected.ir.msl
new file mode 100644
index 0000000..15cfe67
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/a14386.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a14386 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16float, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_a14386
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_a14386
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_a14386
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/a1598a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/a1598a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7576994
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/a1598a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a1598a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<u32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_a1598a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_a1598a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_a1598a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/a25d9b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/a25d9b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6edf059
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/a25d9b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a25d9b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8unorm, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_a25d9b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_a25d9b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_a25d9b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/a2ba5e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/a2ba5e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b709b93
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/a2ba5e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a2ba5e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube<i32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1i
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_a2ba5e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_a2ba5e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_a2ba5e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/a3ea91.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/a3ea91.wgsl.expected.ir.msl
new file mode 100644
index 0000000..554a29e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/a3ea91.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a3ea91 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16float, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_a3ea91
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_a3ea91
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_a3ea91
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/a48049.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/a48049.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6710833
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/a48049.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a48049 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<i32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1u
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_a48049
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_a48049
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_a48049
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/a4cd56.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/a4cd56.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c08d746
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/a4cd56.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a4cd56 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d_array = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_a4cd56
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_a4cd56
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_a4cd56
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/a65776.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/a65776.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2f6099e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/a65776.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a65776 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_a65776
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_a65776
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_a65776
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/a7ae4c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/a7ae4c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0b992a6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/a7ae4c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a7ae4c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8snorm, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_a7ae4c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_a7ae4c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_a7ae4c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/aa4353.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/aa4353.wgsl.expected.ir.msl
new file mode 100644
index 0000000..52772f3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/aa4353.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_aa4353 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_aa4353
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_aa4353
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_aa4353
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/aac604.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/aac604.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f5d8d12
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/aac604.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_aac604 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<f32> = load %arg_0
+    %5:u32 = textureDimensions %4, 1u
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_aac604
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_aac604
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_aac604
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/ad7d3b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/ad7d3b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..724f756
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/ad7d3b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_ad7d3b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8uint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_ad7d3b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_ad7d3b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_ad7d3b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/ae4595.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/ae4595.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a2d3c0e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/ae4595.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_ae4595 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32float, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_ae4595
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_ae4595
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_ae4595
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/ae75a7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/ae75a7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c1943a4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/ae75a7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_ae75a7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16uint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_ae75a7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_ae75a7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_ae75a7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/af46ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/af46ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..035b0f2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/af46ab.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_af46ab = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_af46ab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_af46ab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_af46ab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/b16352.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/b16352.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d263ce5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/b16352.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b16352 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b16352
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b16352
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b16352
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/b284b8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/b284b8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cf8f9ca
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/b284b8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b284b8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b284b8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b284b8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b284b8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/b3ab5e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/b3ab5e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..98c78e5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/b3ab5e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b3ab5e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<f32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1i
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b3ab5e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b3ab5e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b3ab5e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/b46d97.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/b46d97.wgsl.expected.ir.msl
new file mode 100644
index 0000000..660be75
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/b46d97.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b46d97 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<i32> = load %arg_0
+    %5:u32 = textureDimensions %4, 1i
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b46d97
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b46d97
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b46d97
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/b51345.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/b51345.wgsl.expected.ir.msl
new file mode 100644
index 0000000..588584a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/b51345.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b51345 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32float, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b51345
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b51345
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b51345
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/b56112.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/b56112.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c3ce5c5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/b56112.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b56112 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b56112
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b56112
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b56112
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/b5ba03.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/b5ba03.wgsl.expected.ir.msl
new file mode 100644
index 0000000..df2706c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/b5ba03.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b5ba03 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16float, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b5ba03
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b5ba03
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b5ba03
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/b5d68e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/b5d68e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fe700f2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/b5d68e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b5d68e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b5d68e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b5d68e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b5d68e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/b6bbf4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/b6bbf4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..140934e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/b6bbf4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b6bbf4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16uint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b6bbf4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b6bbf4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b6bbf4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/b8287f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/b8287f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0c878b0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/b8287f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b8287f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b8287f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b8287f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b8287f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/b9e7ef.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/b9e7ef.wgsl.expected.ir.msl
new file mode 100644
index 0000000..db7cb144
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/b9e7ef.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b9e7ef = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32sint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b9e7ef
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b9e7ef
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b9e7ef
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/bb95d9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/bb95d9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7a637e9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/bb95d9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_bb95d9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<f32> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_bb95d9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_bb95d9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_bb95d9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/bbe285.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/bbe285.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3a30cd4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/bbe285.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_bbe285 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_bbe285
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_bbe285
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_bbe285
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/bc96f6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/bc96f6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0eb3b44
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/bc96f6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_bc96f6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_bc96f6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_bc96f6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_bc96f6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/bd94c8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/bd94c8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a1c9c04
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/bd94c8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_bd94c8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_cube_array = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1u
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_bd94c8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_bd94c8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_bd94c8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/bec716.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/bec716.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cfbdd83
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/bec716.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_bec716 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32float, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_bec716
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_bec716
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_bec716
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/bf9170.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/bf9170.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2367fb2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/bf9170.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_bf9170 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8snorm, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_bf9170
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_bf9170
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_bf9170
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/c1189e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/c1189e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e86df01
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/c1189e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c1189e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_c1189e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_c1189e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_c1189e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/c1dbf6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/c1dbf6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..920de1e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/c1dbf6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c1dbf6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_c1dbf6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_c1dbf6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_c1dbf6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/c27466.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/c27466.wgsl.expected.ir.msl
new file mode 100644
index 0000000..48f508a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/c27466.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c27466 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16sint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_c27466
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_c27466
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_c27466
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/c2cdd3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/c2cdd3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..673b3af
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/c2cdd3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_multisampled_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c2cdd3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_multisampled_2d = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_c2cdd3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_c2cdd3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_c2cdd3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/c44fc1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/c44fc1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..58e50b9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/c44fc1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c44fc1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_c44fc1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_c44fc1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_c44fc1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/c5a36e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/c5a36e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ca62b29
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/c5a36e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c5a36e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_cube = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_c5a36e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_c5a36e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_c5a36e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/c6b44c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/c6b44c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f05d60d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/c6b44c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c6b44c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_c6b44c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_c6b44c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_c6b44c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/c7ea63.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/c7ea63.wgsl.expected.ir.msl
new file mode 100644
index 0000000..61f596a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/c7ea63.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c7ea63 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32float, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_c7ea63
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_c7ea63
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_c7ea63
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/c82420.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/c82420.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5513299
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/c82420.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c82420 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_c82420
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_c82420
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_c82420
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/c871f3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/c871f3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..daf7021
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/c871f3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c871f3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<i32> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4, 1u
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_c871f3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_c871f3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_c871f3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/ca10cc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/ca10cc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..161fedc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/ca10cc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_ca10cc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_ca10cc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_ca10cc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_ca10cc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/cad3b7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/cad3b7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f3a7100
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/cad3b7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_cad3b7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_cad3b7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_cad3b7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_cad3b7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/cc947b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/cc947b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47b542e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/cc947b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8snorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_cc947b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8snorm, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_cc947b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_cc947b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_cc947b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/cd3033.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/cd3033.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b6a45c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/cd3033.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_cd3033 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_cd3033
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_cd3033
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_cd3033
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..93b2dd5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:626 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_external, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_cdc6c9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_external = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_cdc6c9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_cdc6c9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_cdc6c9
+    ret
+  }
+}
+
+Multiplanar external texture transform was not run.
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/cedabd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/cedabd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a2ed8df
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/cedabd.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_cedabd = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32sint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_cedabd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_cedabd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_cedabd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/cf2b50.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/cf2b50.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2181623
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/cf2b50.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_cf2b50 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<f32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1u
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_cf2b50
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_cf2b50
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_cf2b50
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/d0778e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/d0778e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..38da4ee
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/d0778e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d0778e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32uint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_d0778e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_d0778e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_d0778e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/d08a94.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/d08a94.wgsl.expected.ir.msl
new file mode 100644
index 0000000..75d396d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/d08a94.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d08a94 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16sint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_d08a94
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_d08a94
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_d08a94
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/d1b882.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/d1b882.wgsl.expected.ir.msl
new file mode 100644
index 0000000..410768b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/d1b882.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d1b882 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_d1b882
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_d1b882
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_d1b882
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/d3accd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/d3accd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c407c38
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/d3accd.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d3accd = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_cube = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1u
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_d3accd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_d3accd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_d3accd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/d44ac3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/d44ac3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2f25461
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/d44ac3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d44ac3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<bgra8unorm, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_d44ac3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_d44ac3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_d44ac3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/d44dd1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/d44dd1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b58195f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/d44dd1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d44dd1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_d44dd1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_d44dd1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_d44dd1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/d63c28.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/d63c28.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1e3ff88
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/d63c28.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d63c28 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_d63c28
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_d63c28
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_d63c28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/d6f3cf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/d6f3cf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..78c1037
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/d6f3cf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d6f3cf = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_d6f3cf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_d6f3cf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_d6f3cf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/d8ba68.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/d8ba68.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e1b7a46
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/d8ba68.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d8ba68 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_d8ba68
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_d8ba68
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_d8ba68
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/d8f887.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/d8f887.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9790a45
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/d8f887.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d8f887 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8uint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_d8f887
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_d8f887
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_d8f887
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/da30d2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/da30d2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0030b1b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/da30d2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_da30d2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32float, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_da30d2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_da30d2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_da30d2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/daf0fe.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/daf0fe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..85c6223
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/daf0fe.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_daf0fe = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_daf0fe
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_daf0fe
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_daf0fe
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/db7131.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/db7131.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6e195ec
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/db7131.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_db7131 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32sint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_db7131
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_db7131
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_db7131
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/dc83ce.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/dc83ce.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b3cb17b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/dc83ce.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_dc83ce = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_dc83ce
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_dc83ce
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_dc83ce
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/de03c6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/de03c6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b46352e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/de03c6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_de03c6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32uint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_de03c6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_de03c6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_de03c6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/deb3c0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/deb3c0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..425a613
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/deb3c0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_deb3c0 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16float, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_deb3c0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_deb3c0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_deb3c0
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/dee461.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/dee461.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cac0bee
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/dee461.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8snorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_dee461 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8snorm, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_dee461
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_dee461
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_dee461
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/dfdc32.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/dfdc32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..341336d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/dfdc32.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_dfdc32 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d_array = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1i
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_dfdc32
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_dfdc32
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_dfdc32
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/e122fe.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/e122fe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3a0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/e122fe.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8snorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e122fe = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8snorm, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_e122fe
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_e122fe
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_e122fe
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/e18a8b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/e18a8b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..38a2c42
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/e18a8b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e18a8b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<u32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1u
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_e18a8b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_e18a8b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_e18a8b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/e4bfd2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/e4bfd2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0f16875
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/e4bfd2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e4bfd2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<u32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_e4bfd2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_e4bfd2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_e4bfd2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/e4e310.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/e4e310.wgsl.expected.ir.msl
new file mode 100644
index 0000000..473f8ff
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/e4e310.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e4e310 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<i32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1u
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_e4e310
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_e4e310
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_e4e310
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/e4f021.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/e4f021.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b2bcd42
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/e4f021.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e4f021 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32float, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_e4f021
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_e4f021
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_e4f021
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/e50eb8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/e50eb8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2c7ed53
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/e50eb8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e50eb8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_e50eb8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_e50eb8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_e50eb8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/e5a203.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/e5a203.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c5c8391
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/e5a203.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e5a203 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<u32> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4, 1i
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_e5a203
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_e5a203
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_e5a203
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/e738f4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/e738f4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9c1b109
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/e738f4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e738f4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32sint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_e738f4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_e738f4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_e738f4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/e824b6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/e824b6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c7ffd9a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/e824b6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e824b6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_e824b6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_e824b6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_e824b6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/e99308.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/e99308.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9dc92fc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/e99308.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e99308 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_e99308
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_e99308
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_e99308
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/ea066c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/ea066c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..530a84f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/ea066c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_ea066c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32float, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_ea066c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_ea066c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_ea066c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/ea25bc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/ea25bc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d2a32b8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/ea25bc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_ea25bc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32uint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_ea25bc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_ea25bc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_ea25bc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/eafe19.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/eafe19.wgsl.expected.ir.msl
new file mode 100644
index 0000000..be46609
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/eafe19.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_eafe19 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d_array = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1u
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_eafe19
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_eafe19
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_eafe19
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/eb03b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/eb03b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..403db14
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/eb03b1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_eb03b1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_eb03b1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_eb03b1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_eb03b1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/eb10d6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/eb10d6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c72bf46
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/eb10d6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_eb10d6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8unorm, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_eb10d6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_eb10d6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_eb10d6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/eb1249.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/eb1249.wgsl.expected.ir.msl
new file mode 100644
index 0000000..449b3cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/eb1249.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_eb1249 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32uint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_eb1249
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_eb1249
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_eb1249
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/eb9f4d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/eb9f4d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..71e21aa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/eb9f4d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_eb9f4d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_eb9f4d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_eb9f4d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_eb9f4d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/ed1030.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/ed1030.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f39979f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/ed1030.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_ed1030 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_ed1030
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_ed1030
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_ed1030
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/ef2e58.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/ef2e58.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d3974d5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/ef2e58.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_ef2e58 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32sint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_ef2e58
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_ef2e58
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_ef2e58
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/f17acd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/f17acd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..be97976
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/f17acd.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f17acd = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<f32> = load %arg_0
+    %5:u32 = textureDimensions %4, 1i
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f17acd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f17acd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f17acd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/f264a3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/f264a3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..97f70de
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/f264a3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f264a3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32sint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f264a3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f264a3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f264a3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/f3a2ac.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/f3a2ac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f57bc31
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/f3a2ac.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f3a2ac = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16float, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f3a2ac
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f3a2ac
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f3a2ac
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/f406ff.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/f406ff.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a402e7a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/f406ff.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f406ff = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8unorm, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f406ff
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f406ff
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f406ff
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/f4321c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/f4321c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9aa7043
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/f4321c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f4321c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32sint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f4321c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f4321c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f4321c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/f48886.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/f48886.wgsl.expected.ir.msl
new file mode 100644
index 0000000..33146ca
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/f48886.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f48886 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f48886
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f48886
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f48886
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/f4e469.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/f4e469.wgsl.expected.ir.msl
new file mode 100644
index 0000000..189c080
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/f4e469.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f4e469 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32float, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f4e469
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f4e469
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f4e469
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/f55a94.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/f55a94.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f0b5c2c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/f55a94.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f55a94 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8snorm, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f55a94
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f55a94
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f55a94
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/f626b3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/f626b3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5f23178
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/f626b3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f626b3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube<i32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f626b3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f626b3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f626b3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/f7bac5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/f7bac5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5100361
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/f7bac5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f7bac5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f7bac5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f7bac5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f7bac5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/f8522e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/f8522e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c540c2d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/f8522e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f8522e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<i32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f8522e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f8522e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f8522e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/f93ece.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/f93ece.wgsl.expected.ir.msl
new file mode 100644
index 0000000..69b47f0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/f93ece.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f93ece = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32float, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f93ece
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f93ece
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f93ece
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/f94e55.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/f94e55.wgsl.expected.ir.msl
new file mode 100644
index 0000000..39d732b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/f94e55.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f94e55 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32float, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f94e55
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f94e55
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f94e55
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/fbb15a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/fbb15a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..823466c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/fbb15a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<bgra8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_fbb15a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<bgra8unorm, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_fbb15a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_fbb15a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_fbb15a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureDimensions/fdf6e9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureDimensions/fdf6e9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4ebf839
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureDimensions/fdf6e9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_fdf6e9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<i32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4, 1i
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_fdf6e9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_fdf6e9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_fdf6e9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/0166ec.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/0166ec.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0218a90
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/0166ec.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_0166ec = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube<i32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<i32> = textureGather 1u, %5, %6, vec3<f32>(1.0f)
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_0166ec
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_0166ec
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_0166ec
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/04fa78.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/04fa78.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2187c08
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/04fa78.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_04fa78 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<i32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<i32> = textureGather 1u, %5, %6, vec3<f32>(1.0f), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_04fa78
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_04fa78
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_04fa78
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/10c554.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/10c554.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f5af4e1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/10c554.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_10c554 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureGather %5, %6, vec3<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_10c554
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_10c554
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_10c554
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/11b2db.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/11b2db.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dcb1e5b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/11b2db.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_11b2db = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube<f32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<f32> = textureGather 1u, %5, %6, vec3<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_11b2db
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_11b2db
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_11b2db
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/17baac.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/17baac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cc52ea9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/17baac.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_17baac = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<f32> = textureGather 1i, %5, %6, vec2<f32>(1.0f), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_17baac
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_17baac
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_17baac
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/1bf0ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/1bf0ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9bd4ab9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/1bf0ab.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_1bf0ab = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<u32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<u32> = textureGather 1u, %5, %6, vec2<f32>(1.0f), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_1bf0ab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_1bf0ab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_1bf0ab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/1f7f6b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/1f7f6b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e7e1cb5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/1f7f6b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_1f7f6b = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureGather %5, %6, vec2<f32>(1.0f), vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_1f7f6b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_1f7f6b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_1f7f6b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/22e930.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/22e930.wgsl.expected.ir.msl
new file mode 100644
index 0000000..16551a6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/22e930.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_22e930 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<f32> = textureGather 1i, %5, %6, vec2<f32>(1.0f), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_22e930
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_22e930
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_22e930
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/238ec4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/238ec4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5a11624
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/238ec4.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_238ec4 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<f32> = textureGather 1u, %5, %6, vec2<f32>(1.0f), 1u, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_238ec4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_238ec4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_238ec4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/24b0bd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/24b0bd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e591313
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/24b0bd.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_24b0bd = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<f32> = textureGather 1u, %5, %6, vec2<f32>(1.0f), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_24b0bd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_24b0bd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_24b0bd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/269250.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/269250.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bde59b0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/269250.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_269250 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<i32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<i32> = textureGather 1u, %5, %6, vec2<f32>(1.0f), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_269250
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_269250
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_269250
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/2a4f40.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/2a4f40.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5c0d219
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/2a4f40.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_2a4f40 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureGather %5, %6, vec2<f32>(1.0f), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_2a4f40
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_2a4f40
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_2a4f40
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/2cc066.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/2cc066.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6c508dd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/2cc066.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_2cc066 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<u32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<u32> = textureGather 1i, %5, %6, vec2<f32>(1.0f), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_2cc066
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_2cc066
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_2cc066
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/2e0ed5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/2e0ed5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c506e45
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/2e0ed5.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_2e0ed5 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureGather %5, %6, vec2<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_2e0ed5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_2e0ed5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_2e0ed5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/32c4e8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/32c4e8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a5d737b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/32c4e8.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_32c4e8 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube<f32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<f32> = textureGather 1i, %5, %6, vec3<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_32c4e8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_32c4e8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_32c4e8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/3b32cc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/3b32cc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3fbe8af
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/3b32cc.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_3b32cc = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube<u32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<u32> = textureGather 1i, %5, %6, vec3<f32>(1.0f)
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_3b32cc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_3b32cc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_3b32cc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/43025d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/43025d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6c713ac
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/43025d.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_43025d = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureGather %5, %6, vec3<f32>(1.0f), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_43025d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_43025d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_43025d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/445793.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/445793.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dd914f4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/445793.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_445793 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<i32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<i32> = textureGather 1u, %5, %6, vec2<f32>(1.0f), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_445793
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_445793
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_445793
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/49b07f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/49b07f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..44e9f04
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/49b07f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_49b07f = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<u32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<u32> = textureGather 1i, %5, %6, vec2<f32>(1.0f), vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_49b07f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_49b07f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_49b07f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/4b8103.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/4b8103.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9977de7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/4b8103.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_4b8103 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<f32> = textureGather 1i, %5, %6, vec2<f32>(1.0f), 1i, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_4b8103
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_4b8103
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_4b8103
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/4e8ac5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/4e8ac5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d445928
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/4e8ac5.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_4e8ac5 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<i32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<i32> = textureGather 1i, %5, %6, vec2<f32>(1.0f), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_4e8ac5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_4e8ac5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_4e8ac5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/5266da.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/5266da.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9dab6ea
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/5266da.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_5266da = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<f32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<f32> = textureGather 1i, %5, %6, vec2<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_5266da
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_5266da
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_5266da
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/59372a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/59372a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aa7ad54
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/59372a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_59372a = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<f32> = textureGather 1i, %5, %6, vec2<f32>(1.0f), 1u, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_59372a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_59372a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_59372a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/5ba85f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/5ba85f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e4e258c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/5ba85f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_5ba85f = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube<i32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<i32> = textureGather 1i, %5, %6, vec3<f32>(1.0f)
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_5ba85f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_5ba85f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_5ba85f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/5bd491.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/5bd491.wgsl.expected.ir.msl
new file mode 100644
index 0000000..25c2e42
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/5bd491.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_5bd491 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<u32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<u32> = textureGather 1i, %5, %6, vec2<f32>(1.0f)
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_5bd491
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_5bd491
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_5bd491
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/6b7b74.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/6b7b74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..263045d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/6b7b74.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_6b7b74 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<u32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<u32> = textureGather 1u, %5, %6, vec2<f32>(1.0f), 1u, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_6b7b74
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_6b7b74
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_6b7b74
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/751f8a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3a74e50
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_751f8a = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<f32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<f32> = textureGather 1i, %5, %6, vec3<f32>(1.0f), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_751f8a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_751f8a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_751f8a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/788010.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/788010.wgsl.expected.ir.msl
new file mode 100644
index 0000000..100e633
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/788010.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_788010 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<i32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<i32> = textureGather 1i, %5, %6, vec3<f32>(1.0f), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_788010
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_788010
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_788010
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/7c3828.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/7c3828.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f2f63ae
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/7c3828.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_7c3828 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<i32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<i32> = textureGather 1i, %5, %6, vec2<f32>(1.0f), vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_7c3828
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_7c3828
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_7c3828
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/7dd226.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/7dd226.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ae9cf8e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/7dd226.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_7dd226 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureGather %5, %6, vec3<f32>(1.0f), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_7dd226
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_7dd226
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_7dd226
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/829357.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/829357.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f84b586
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/829357.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_829357 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<f32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<f32> = textureGather 1i, %5, %6, vec3<f32>(1.0f), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_829357
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_829357
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_829357
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/831549.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/831549.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b061342
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/831549.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_831549 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<f32> = textureGather 1u, %5, %6, vec2<f32>(1.0f), 1i, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_831549
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_831549
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_831549
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/8578bc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/8578bc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5c3efce
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/8578bc.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_8578bc = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<f32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<f32> = textureGather 1u, %5, %6, vec3<f32>(1.0f), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_8578bc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_8578bc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_8578bc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/89680f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/89680f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..22c44a2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/89680f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_89680f = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube<u32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<u32> = textureGather 1u, %5, %6, vec3<f32>(1.0f)
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_89680f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_89680f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_89680f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/8b754c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/8b754c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8688018
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/8b754c.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_8b754c = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<i32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<i32> = textureGather 1i, %5, %6, vec2<f32>(1.0f), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_8b754c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_8b754c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_8b754c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/8fae00.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/8fae00.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c381e25
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/8fae00.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_8fae00 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<u32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<u32> = textureGather 1u, %5, %6, vec2<f32>(1.0f)
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_8fae00
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_8fae00
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_8fae00
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/92ea47.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/92ea47.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c2f91fb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/92ea47.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_92ea47 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<u32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<u32> = textureGather 1u, %5, %6, vec2<f32>(1.0f), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_92ea47
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_92ea47
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_92ea47
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/986700.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/986700.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0711f18
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/986700.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_986700 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<u32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<u32> = textureGather 1u, %5, %6, vec2<f32>(1.0f), vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_986700
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_986700
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_986700
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/9a6358.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/9a6358.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5ac8413
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/9a6358.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_9a6358 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureGather %5, %6, vec2<f32>(1.0f), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_9a6358
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_9a6358
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_9a6358
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/9ab41e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/9ab41e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..78f14f8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/9ab41e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_9ab41e = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<i32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<i32> = textureGather 1u, %5, %6, vec2<f32>(1.0f), 1i, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_9ab41e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_9ab41e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_9ab41e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/a0372b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/a0372b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4fb4eb9d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/a0372b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_a0372b = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<u32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<u32> = textureGather 1i, %5, %6, vec2<f32>(1.0f), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_a0372b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_a0372b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_a0372b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/a68027.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/a68027.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d5c9cb6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/a68027.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_a68027 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureGather %5, %6, vec2<f32>(1.0f), 1u, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_a68027
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_a68027
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_a68027
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/aaf6bd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/aaf6bd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2a71502
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/aaf6bd.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_aaf6bd = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<i32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<i32> = textureGather 1u, %5, %6, vec3<f32>(1.0f), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_aaf6bd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_aaf6bd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_aaf6bd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/af55b3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/af55b3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0bd2198
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/af55b3.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_af55b3 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<f32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<f32> = textureGather 1i, %5, %6, vec2<f32>(1.0f), vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_af55b3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_af55b3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_af55b3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/bb3ac5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/bb3ac5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5883844
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/bb3ac5.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_bb3ac5 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<i32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<i32> = textureGather 1i, %5, %6, vec2<f32>(1.0f)
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_bb3ac5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_bb3ac5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_bb3ac5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/bd33b6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/bd33b6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e39c9ed
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/bd33b6.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_bd33b6 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<i32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<i32> = textureGather 1i, %5, %6, vec2<f32>(1.0f), 1u, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_bd33b6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_bd33b6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_bd33b6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/be276f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/be276f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..926df1f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/be276f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_be276f = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<u32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<u32> = textureGather 1i, %5, %6, vec3<f32>(1.0f), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_be276f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_be276f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_be276f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/c0640c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4d1c722
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_c0640c = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<i32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<i32> = textureGather 1i, %5, %6, vec3<f32>(1.0f), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_c0640c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_c0640c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_c0640c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/ccadde.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/ccadde.wgsl.expected.ir.msl
new file mode 100644
index 0000000..17708c3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/ccadde.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_ccadde = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<i32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<i32> = textureGather 1u, %5, %6, vec2<f32>(1.0f)
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_ccadde
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_ccadde
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_ccadde
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/ce5578.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/ce5578.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8549ab6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/ce5578.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_ce5578 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<u32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<u32> = textureGather 1i, %5, %6, vec2<f32>(1.0f), 1u, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_ce5578
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_ce5578
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_ce5578
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/cf9112.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/cf9112.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0fdf9ee
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/cf9112.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_cf9112 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<i32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<i32> = textureGather 1u, %5, %6, vec2<f32>(1.0f), 1u, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_cf9112
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_cf9112
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_cf9112
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/d1f187.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/d1f187.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c53f981
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/d1f187.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_d1f187 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<u32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<u32> = textureGather 1i, %5, %6, vec2<f32>(1.0f), 1i, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_d1f187
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_d1f187
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_d1f187
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/d4b5c6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/d4b5c6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..af05fac
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/d4b5c6.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_d4b5c6 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<u32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<u32> = textureGather 1u, %5, %6, vec3<f32>(1.0f), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_d4b5c6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_d4b5c6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_d4b5c6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/d6507c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/d6507c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6d411eb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/d6507c.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_d6507c = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<f32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<f32> = textureGather 1u, %5, %6, vec2<f32>(1.0f), vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_d6507c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_d6507c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_d6507c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/d8e958.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/d8e958.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ff046c6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/d8e958.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_d8e958 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<f32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<f32> = textureGather 1u, %5, %6, vec2<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_d8e958
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_d8e958
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_d8e958
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/d90605.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/d90605.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f27b6f8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/d90605.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_d90605 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureGather %5, %6, vec2<f32>(1.0f), 1i, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_d90605
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_d90605
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_d90605
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/d98d59.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/d98d59.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8650695
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/d98d59.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_d98d59 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<f32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<f32> = textureGather 1u, %5, %6, vec3<f32>(1.0f), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_d98d59
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_d98d59
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_d98d59
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/dc6661.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/dc6661.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ac1d39f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/dc6661.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_dc6661 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<i32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<i32> = textureGather 1u, %5, %6, vec2<f32>(1.0f), vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_dc6661
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_dc6661
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_dc6661
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/e2acac.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/e2acac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0d19a2a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/e2acac.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_e2acac = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<u32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<u32> = textureGather 1u, %5, %6, vec3<f32>(1.0f), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_e2acac
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_e2acac
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_e2acac
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/e3165f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/e3165f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a96fac2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/e3165f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_e3165f = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<u32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<u32> = textureGather 1u, %5, %6, vec2<f32>(1.0f), 1i, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_e3165f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_e3165f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_e3165f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/e9d390.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/e9d390.wgsl.expected.ir.msl
new file mode 100644
index 0000000..725c401
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/e9d390.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_e9d390 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<i32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<i32> = textureGather 1i, %5, %6, vec2<f32>(1.0f), 1i, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_e9d390
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_e9d390
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_e9d390
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/ea8eb4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/ea8eb4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..992c546
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/ea8eb4.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_ea8eb4 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<f32> = textureGather 1u, %5, %6, vec2<f32>(1.0f), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_ea8eb4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_ea8eb4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_ea8eb4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cf79f32
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_f2c6e3 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<u32> = load %arg_1
+    %6:sampler = load %arg_2
+    %7:vec4<u32> = textureGather 1i, %5, %6, vec3<f32>(1.0f), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGather_f2c6e3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGather_f2c6e3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGather_f2c6e3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGatherCompare/144a9a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGatherCompare/144a9a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ff56ba0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/144a9a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGatherCompare_144a9a = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:vec4<f32> = textureGatherCompare %5, %6, vec2<f32>(1.0f), 1u, 1.0f, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGatherCompare_144a9a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGatherCompare_144a9a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGatherCompare_144a9a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGatherCompare/182fd4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGatherCompare/182fd4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..da86e42
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/182fd4.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGatherCompare_182fd4 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:vec4<f32> = textureGatherCompare %5, %6, vec3<f32>(1.0f), 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGatherCompare_182fd4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGatherCompare_182fd4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGatherCompare_182fd4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGatherCompare/2e409c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGatherCompare/2e409c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..954a423
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/2e409c.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGatherCompare_2e409c = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube_array = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:vec4<f32> = textureGatherCompare %5, %6, vec3<f32>(1.0f), 1u, 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGatherCompare_2e409c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGatherCompare_2e409c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGatherCompare_2e409c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGatherCompare/313add.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGatherCompare/313add.wgsl.expected.ir.msl
new file mode 100644
index 0000000..43ce8b6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/313add.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGatherCompare_313add = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:vec4<f32> = textureGatherCompare %5, %6, vec2<f32>(1.0f), 1.0f, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGatherCompare_313add
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGatherCompare_313add
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGatherCompare_313add
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGatherCompare/60d2d1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGatherCompare/60d2d1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9e53cd6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/60d2d1.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGatherCompare_60d2d1 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube_array = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:vec4<f32> = textureGatherCompare %5, %6, vec3<f32>(1.0f), 1i, 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGatherCompare_60d2d1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGatherCompare_60d2d1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGatherCompare_60d2d1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGatherCompare/6d9352.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGatherCompare/6d9352.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c6d4793
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/6d9352.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGatherCompare_6d9352 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:vec4<f32> = textureGatherCompare %5, %6, vec2<f32>(1.0f), 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGatherCompare_6d9352
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGatherCompare_6d9352
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGatherCompare_6d9352
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGatherCompare/783e65.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGatherCompare/783e65.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2391548
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/783e65.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGatherCompare_783e65 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:vec4<f32> = textureGatherCompare %5, %6, vec2<f32>(1.0f), 1i, 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGatherCompare_783e65
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGatherCompare_783e65
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGatherCompare_783e65
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGatherCompare/b5bc43.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGatherCompare/b5bc43.wgsl.expected.ir.msl
new file mode 100644
index 0000000..06ce2f5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/b5bc43.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGatherCompare_b5bc43 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:vec4<f32> = textureGatherCompare %5, %6, vec2<f32>(1.0f), 1u, 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGatherCompare_b5bc43
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGatherCompare_b5bc43
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGatherCompare_b5bc43
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureGatherCompare/f585cc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureGatherCompare/f585cc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bd9ec67
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/f585cc.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGatherCompare_f585cc = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:vec4<f32> = textureGatherCompare %5, %6, vec2<f32>(1.0f), 1i, 1.0f, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureGatherCompare_f585cc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureGatherCompare_f585cc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureGatherCompare_f585cc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/012e11.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/012e11.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8ffe1ba
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/012e11.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_012e11 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_012e11
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_012e11
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_012e11
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/019da0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/019da0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9d9c2f0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/019da0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_019da0 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<i32>(1i), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_019da0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_019da0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_019da0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/01cd01.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/01cd01.wgsl.expected.ir.msl
new file mode 100644
index 0000000..362b77c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/01cd01.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_01cd01 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_01cd01
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_01cd01
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_01cd01
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/026217.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/026217.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1c5ab72
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/026217.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_026217 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1u, 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_026217
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_026217
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_026217
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/02c48d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/02c48d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ae791f4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/02c48d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_02c48d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_02c48d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_02c48d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_02c48d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/02ef1f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/02ef1f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..09d1b0c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/02ef1f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_02ef1f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_02ef1f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_02ef1f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_02ef1f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/03e03e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/03e03e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c3610ce
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/03e03e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_03e03e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_03e03e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_03e03e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_03e03e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/045ec9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/045ec9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9580aa4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/045ec9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_045ec9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_045ec9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_045ec9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_045ec9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/04b911.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/04b911.wgsl.expected.ir.msl
new file mode 100644
index 0000000..696b307
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/04b911.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_04b911 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d_array = load %arg_0
+    %5:f32 = textureLoad %4, vec2<u32>(1u), 1i, 1u
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_04b911
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_04b911
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_04b911
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/050c33.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/050c33.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ff2c4fa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/050c33.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_050c33 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_050c33
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_050c33
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_050c33
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/054350.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/054350.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9840be6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/054350.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_054350 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_054350
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_054350
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_054350
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/0674b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/0674b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..21c73f4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/0674b1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_0674b1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8snorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_0674b1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_0674b1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_0674b1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/06ac37.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/06ac37.wgsl.expected.ir.msl
new file mode 100644
index 0000000..89a364e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/06ac37.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_06ac37 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_06ac37
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_06ac37
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_06ac37
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/072e26.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/072e26.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a036e37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/072e26.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_072e26 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_072e26
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_072e26
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_072e26
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/078bc4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/078bc4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8ffe2f2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/078bc4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_078bc4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8snorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_078bc4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_078bc4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_078bc4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/0b515a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/0b515a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b85527b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/0b515a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_0b515a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_0b515a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_0b515a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_0b515a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/0cb698.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/0cb698.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47d8563
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/0cb698.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_0cb698 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1u, 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_0cb698
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_0cb698
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_0cb698
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/10db82.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/10db82.wgsl.expected.ir.msl
new file mode 100644
index 0000000..12ab12c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/10db82.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_10db82 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_10db82
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_10db82
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_10db82
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/126466.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/126466.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c29b9d3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/126466.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_126466 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_126466
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_126466
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_126466
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/127e12.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/127e12.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d3b7261
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/127e12.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_127e12 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_127e12
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_127e12
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_127e12
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/1373dc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/1373dc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a2bd942
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/1373dc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1373dc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1u, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_1373dc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_1373dc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_1373dc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/13d539.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/13d539.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d3bc9b7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/13d539.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_13d539 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_13d539
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_13d539
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_13d539
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/13e90c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/13e90c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..01f4e37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/13e90c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_13e90c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_13e90c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_13e90c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_13e90c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/143d84.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/143d84.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f3e4c1a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/143d84.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_143d84 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_143d84
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_143d84
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_143d84
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/1471b8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/1471b8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d5b7dee
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/1471b8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1471b8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_1471b8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_1471b8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_1471b8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/14cc4c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/14cc4c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..35b29d7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/14cc4c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_14cc4c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_14cc4c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_14cc4c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_14cc4c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/1561a7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/1561a7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e9abd0e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/1561a7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1561a7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_1561a7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_1561a7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_1561a7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/15e675.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/15e675.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d3b32ec
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/15e675.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_15e675 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_15e675
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_15e675
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_15e675
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/1619bf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/1619bf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2160668
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/1619bf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1619bf = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_1619bf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_1619bf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_1619bf
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/168dc8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/168dc8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c079bc7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/168dc8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_168dc8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1i, 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_168dc8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_168dc8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_168dc8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/170593.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/170593.wgsl.expected.ir.msl
new file mode 100644
index 0000000..23e7200
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/170593.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_170593 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_170593
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_170593
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_170593
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/17095b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/17095b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..22fdd350d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/17095b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_17095b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_17095b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_17095b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_17095b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/18ac11.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/18ac11.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9fc5fbd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/18ac11.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_18ac11 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_18ac11
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_18ac11
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_18ac11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/19cf87.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/19cf87.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fe56fac
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/19cf87.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_19cf87 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d = load %arg_0
+    %5:f32 = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_19cf87
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_19cf87
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_19cf87
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/19d6be.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/19d6be.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d94e2d2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/19d6be.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_19d6be = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_19d6be
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_19d6be
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_19d6be
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/1a062f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/1a062f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..66d8c6d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/1a062f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1a062f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_1a062f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_1a062f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_1a062f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/1a8452.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/1a8452.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e87d82c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/1a8452.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1a8452 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_1a8452
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_1a8452
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_1a8452
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/1aa950.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/1aa950.wgsl.expected.ir.msl
new file mode 100644
index 0000000..15e5c55
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/1aa950.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1aa950 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_1aa950
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_1aa950
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_1aa950
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/1b051f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/1b051f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c34197a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/1b051f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1b051f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1u, 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_1b051f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_1b051f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_1b051f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/1b4332.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/1b4332.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e86846
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/1b4332.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1b4332 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_1b4332
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_1b4332
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_1b4332
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/1b8588.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/1b8588.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8d73b32
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/1b8588.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1b8588 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1i, 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_1b8588
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_1b8588
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_1b8588
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/1bc5ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/1bc5ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fe4feed
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/1bc5ab.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1bc5ab = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8snorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_1bc5ab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_1bc5ab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_1bc5ab
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2cfe9c6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:626 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_external, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1bfdfb = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_external = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_1bfdfb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_1bfdfb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_1bfdfb
+    ret
+  }
+}
+
+Multiplanar external texture transform was not run.
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/1c562a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/1c562a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..72e9458
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/1c562a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1c562a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<u32>(1u), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_1c562a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_1c562a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_1c562a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/1d43ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/1d43ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..727d3b9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/1d43ae.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1d43ae = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_1d43ae
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_1d43ae
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_1d43ae
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/1e6baa.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/1e6baa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..81b4cea
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/1e6baa.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1e6baa = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_1e6baa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_1e6baa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_1e6baa
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/1eb93f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/1eb93f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e4a09be
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/1eb93f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1eb93f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_1eb93f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_1eb93f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_1eb93f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/1f2016.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/1f2016.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4f6a369
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/1f2016.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1f2016 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<i32>(1i), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_1f2016
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_1f2016
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_1f2016
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/206a08.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/206a08.wgsl.expected.ir.msl
new file mode 100644
index 0000000..25ffac9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/206a08.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_206a08 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_206a08
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_206a08
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_206a08
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/20fa2f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/20fa2f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6cf62bf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/20fa2f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_20fa2f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_20fa2f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_20fa2f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_20fa2f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/216c37.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/216c37.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ff6643f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/216c37.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_216c37 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1u, 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_216c37
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_216c37
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_216c37
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/21d1c4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/21d1c4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..416384d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/21d1c4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_21d1c4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<u32>(1u), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_21d1c4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_21d1c4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_21d1c4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/223246.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/223246.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5233d04
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/223246.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_223246 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<u32>(1u), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_223246
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_223246
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_223246
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/22e963.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/22e963.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b0057791
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/22e963.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_22e963 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_22e963
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_22e963
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_22e963
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/23007a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/23007a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d916c11
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/23007a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_23007a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_23007a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_23007a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_23007a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/2363be.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/2363be.wgsl.expected.ir.msl
new file mode 100644
index 0000000..373ce937
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/2363be.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2363be = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1i, 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_2363be
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_2363be
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_2363be
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/23ff89.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/23ff89.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1181bac
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/23ff89.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_23ff89 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_23ff89
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_23ff89
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_23ff89
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/25b67f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/25b67f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f2b1d28
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/25b67f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_25b67f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_25b67f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_25b67f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_25b67f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/26b8f6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/26b8f6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b8693b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/26b8f6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_26b8f6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_26b8f6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_26b8f6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_26b8f6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/26c4f8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/26c4f8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c6c6ebe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/26c4f8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_26c4f8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<bgra8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_26c4f8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_26c4f8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_26c4f8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/26d7f1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/26d7f1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..51147af
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/26d7f1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_26d7f1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_26d7f1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_26d7f1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_26d7f1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/272e7a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/272e7a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..de665c4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/272e7a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_272e7a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_272e7a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_272e7a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_272e7a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/276a2c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/276a2c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fdc4996
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/276a2c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_276a2c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_276a2c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_276a2c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_276a2c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/2887d7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/2887d7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ec7503f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/2887d7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2887d7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_2887d7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_2887d7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_2887d7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/2a82d9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/2a82d9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0a17dbc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/2a82d9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2a82d9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_2a82d9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_2a82d9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_2a82d9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/2ae485.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/2ae485.wgsl.expected.ir.msl
new file mode 100644
index 0000000..286fcf4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/2ae485.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2ae485 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_2ae485
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_2ae485
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_2ae485
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/2c72ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/2c72ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b98d25a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/2c72ae.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2c72ae = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_2c72ae
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_2c72ae
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_2c72ae
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/2cee30.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/2cee30.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bc854d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/2cee30.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2cee30 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_2cee30
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_2cee30
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_2cee30
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/2d479c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/2d479c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..83d182c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/2d479c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2d479c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_2d479c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_2d479c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_2d479c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/2d6cf7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/2d6cf7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7938b57
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/2d6cf7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2d6cf7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_2d6cf7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_2d6cf7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_2d6cf7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/2dbfc2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/2dbfc2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dba4d4a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/2dbfc2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2dbfc2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_2dbfc2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_2dbfc2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_2dbfc2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/2e09aa.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/2e09aa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..849b380
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/2e09aa.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2e09aa = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_2e09aa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_2e09aa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_2e09aa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/2e3552.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/2e3552.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3bef550
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/2e3552.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2e3552 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_2e3552
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_2e3552
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_2e3552
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/2eaf31.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/2eaf31.wgsl.expected.ir.msl
new file mode 100644
index 0000000..48055d4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/2eaf31.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2eaf31 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_2eaf31
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_2eaf31
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_2eaf31
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/313c73.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/313c73.wgsl.expected.ir.msl
new file mode 100644
index 0000000..19d8fad
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/313c73.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_313c73 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_313c73
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_313c73
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_313c73
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/31db4b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/31db4b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d1ce047
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/31db4b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_31db4b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_31db4b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_31db4b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_31db4b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/321210.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/321210.wgsl.expected.ir.msl
new file mode 100644
index 0000000..14c0e51
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/321210.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_321210 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_321210
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_321210
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_321210
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/32a7b8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/32a7b8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cc9f03c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/32a7b8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_32a7b8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_32a7b8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_32a7b8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_32a7b8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/33d3aa.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/33d3aa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..21aa630
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/33d3aa.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_33d3aa = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_33d3aa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_33d3aa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_33d3aa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/348827.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/348827.wgsl.expected.ir.msl
new file mode 100644
index 0000000..66381e6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/348827.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_348827 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_348827
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_348827
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_348827
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/34d97c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/34d97c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..85c76a6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/34d97c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_34d97c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_34d97c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_34d97c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_34d97c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/374351.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/374351.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7509553
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/374351.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_374351 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_374351
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_374351
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_374351
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/388688.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/388688.wgsl.expected.ir.msl
new file mode 100644
index 0000000..32f7dcc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/388688.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_388688 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8snorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_388688
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_388688
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_388688
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/38f8ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/38f8ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..44deb74
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/38f8ab.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_38f8ab = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_38f8ab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_38f8ab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_38f8ab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/39016c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/39016c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..12f6dca
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/39016c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_39016c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8snorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_39016c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_39016c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_39016c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/395447.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/395447.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c61753a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/395447.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_395447 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_395447
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_395447
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_395447
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/39ef40.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/39ef40.wgsl.expected.ir.msl
new file mode 100644
index 0000000..61b0ac8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/39ef40.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_39ef40 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_39ef40
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_39ef40
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_39ef40
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/3a2350.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/3a2350.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fc720f9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/3a2350.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3a2350 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_3a2350
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_3a2350
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_3a2350
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/3aea13.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/3aea13.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3cc5ff2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/3aea13.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3aea13 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_3aea13
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_3aea13
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_3aea13
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/3bbc2b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/3bbc2b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..480e505
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/3bbc2b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3bbc2b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_3bbc2b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_3bbc2b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_3bbc2b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/3c0d9e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/3c0d9e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b349ba4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/3c0d9e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3c0d9e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_3c0d9e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_3c0d9e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_3c0d9e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/3c9587.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/3c9587.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c7b1672
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/3c9587.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3c9587 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_3c9587
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_3c9587
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_3c9587
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/3c96e8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/3c96e8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..496d6b2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/3c96e8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3c96e8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1u, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_3c96e8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_3c96e8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_3c96e8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/3cfb9c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/3cfb9c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6432c4e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/3cfb9c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3cfb9c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_3cfb9c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_3cfb9c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_3cfb9c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/3d001b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/3d001b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3945d3f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/3d001b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3d001b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_3d001b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_3d001b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_3d001b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/3d3fd1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/3d3fd1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c28dc5f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/3d3fd1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3d3fd1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1u, 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_3d3fd1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_3d3fd1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_3d3fd1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/3d9c90.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/3d9c90.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b6200d6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/3d9c90.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3d9c90 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_3d9c90
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_3d9c90
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_3d9c90
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/3da3ed.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/3da3ed.wgsl.expected.ir.msl
new file mode 100644
index 0000000..37a65e1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/3da3ed.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3da3ed = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1i, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_3da3ed
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_3da3ed
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_3da3ed
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/3e5f6a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/3e5f6a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..84ae233
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/3e5f6a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3e5f6a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_3e5f6a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_3e5f6a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_3e5f6a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/40ee8b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/40ee8b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..442803e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/40ee8b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_40ee8b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_40ee8b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_40ee8b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_40ee8b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/4212a1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/4212a1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..941400a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/4212a1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4212a1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_4212a1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_4212a1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_4212a1
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/424afd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/424afd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6d39740
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/424afd.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_424afd = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_424afd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_424afd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_424afd
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/42a631.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/42a631.wgsl.expected.ir.msl
new file mode 100644
index 0000000..744164f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/42a631.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_42a631 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_42a631
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_42a631
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_42a631
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/43484a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/43484a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a84be86
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/43484a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_43484a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_43484a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_43484a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_43484a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/439e2a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/439e2a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..26a8c2c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/439e2a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_439e2a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_439e2a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_439e2a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_439e2a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/43cd86.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/43cd86.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1b21eb7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/43cd86.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_43cd86 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8snorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_43cd86
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_43cd86
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_43cd86
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/44c826.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/44c826.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d997e3b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/44c826.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_44c826 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_44c826
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_44c826
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_44c826
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/4542ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/4542ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2b6e276
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/4542ae.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4542ae = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_4542ae
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_4542ae
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_4542ae
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/454347.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/454347.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b479b08
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/454347.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_454347 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_454347
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_454347
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_454347
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/4638a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/4638a0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..98e2392
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/4638a0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4638a0 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_4638a0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_4638a0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_4638a0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/469912.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/469912.wgsl.expected.ir.msl
new file mode 100644
index 0000000..12974bc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/469912.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_469912 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_469912
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_469912
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_469912
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/46a93f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/46a93f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ed6b1b6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/46a93f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_46a93f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1i, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_46a93f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_46a93f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_46a93f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/46dbf5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/46dbf5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c025bde
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/46dbf5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_46dbf5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_46dbf5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_46dbf5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_46dbf5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/473d3e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/473d3e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..02ff353
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/473d3e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_473d3e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_473d3e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_473d3e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_473d3e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/47e818.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/47e818.wgsl.expected.ir.msl
new file mode 100644
index 0000000..93e28e8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/47e818.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_47e818 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<u32>(1u), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_47e818
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_47e818
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_47e818
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/482627.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/482627.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e9f8167
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/482627.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_482627 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_482627
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_482627
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_482627
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/484344.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/484344.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0cae638
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/484344.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_484344 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_484344
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_484344
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_484344
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/49f76f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/49f76f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bf402bc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/49f76f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_49f76f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_49f76f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_49f76f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_49f76f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/4a5c55.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/4a5c55.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a63cebe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/4a5c55.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4a5c55 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_4a5c55
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_4a5c55
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_4a5c55
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/4acb64.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/4acb64.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5430441
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/4acb64.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4acb64 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1u, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_4acb64
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_4acb64
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_4acb64
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/4c15b2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/4c15b2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4ddccfd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/4c15b2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4c15b2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_4c15b2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_4c15b2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_4c15b2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/4c1a1e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/4c1a1e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4faa3e7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/4c1a1e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4c1a1e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_4c1a1e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_4c1a1e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_4c1a1e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/4c423f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/4c423f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d67eeba
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/4c423f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4c423f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1u, 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_4c423f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_4c423f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_4c423f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/4c67be.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/4c67be.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1238fd1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/4c67be.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4c67be = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_4c67be
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_4c67be
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_4c67be
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/4ccf9a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/4ccf9a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1f97f5f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/4ccf9a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4ccf9a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_4ccf9a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_4ccf9a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_4ccf9a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/4cdca5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/4cdca5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f8441df
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/4cdca5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4cdca5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_4cdca5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_4cdca5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_4cdca5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/4db25c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/4db25c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..91b26db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/4db25c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_multisampled_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4db25c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_multisampled_2d = load %arg_0
+    %5:f32 = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_4db25c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_4db25c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_4db25c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/4e2c5c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/4e2c5c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..788cb6b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/4e2c5c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4e2c5c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_4e2c5c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_4e2c5c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_4e2c5c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/4f5496.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/4f5496.wgsl.expected.ir.msl
new file mode 100644
index 0000000..070fda2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/4f5496.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4f5496 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_4f5496
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_4f5496
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_4f5496
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/4f90bb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/4f90bb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..79acd14
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/4f90bb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4f90bb = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<bgra8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_4f90bb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_4f90bb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_4f90bb
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/4fa6ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/4fa6ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2868e18
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/4fa6ae.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4fa6ae = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<bgra8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_4fa6ae
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_4fa6ae
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_4fa6ae
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/4fd803.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/4fd803.wgsl.expected.ir.msl
new file mode 100644
index 0000000..96fb177
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/4fd803.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4fd803 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<i32>(1i), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_4fd803
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_4fd803
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_4fd803
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/505aa2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/505aa2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c060760
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/505aa2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_505aa2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_505aa2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_505aa2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_505aa2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/50915c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/50915c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..381ad84
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/50915c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_50915c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_50915c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_50915c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_50915c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/5154e1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/5154e1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7bb09d2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/5154e1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5154e1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_5154e1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_5154e1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_5154e1
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/519ab5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/519ab5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b485aba
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/519ab5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_519ab5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_519ab5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_519ab5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_519ab5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/53378a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/53378a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..25c0d04
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/53378a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_53378a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_53378a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_53378a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_53378a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/53941c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/53941c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9247f3d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/53941c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_53941c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_53941c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_53941c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_53941c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/53e142.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/53e142.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8db452a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/53e142.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_53e142 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1i, 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_53e142
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_53e142
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_53e142
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/54a59b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/54a59b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b95cd9a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/54a59b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_54a59b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1i, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_54a59b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_54a59b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_54a59b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/54e0ce.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/54e0ce.wgsl.expected.ir.msl
new file mode 100644
index 0000000..abd2931
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/54e0ce.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_54e0ce = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<bgra8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_54e0ce
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_54e0ce
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_54e0ce
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/54fb38.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/54fb38.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bb18031
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/54fb38.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_54fb38 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_54fb38
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_54fb38
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_54fb38
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/55e745.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/55e745.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7d1fa05
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/55e745.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_55e745 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_55e745
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_55e745
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_55e745
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/560573.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/560573.wgsl.expected.ir.msl
new file mode 100644
index 0000000..af902a3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/560573.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_560573 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_560573
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_560573
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_560573
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/56a000.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/56a000.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2d9fa2a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/56a000.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_56a000 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_56a000
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_56a000
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_56a000
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/582015.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/582015.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ecc34ef
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/582015.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_582015 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_582015
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_582015
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_582015
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/589eaa.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/589eaa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..458de74
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/589eaa.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_589eaa = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_589eaa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_589eaa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_589eaa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/5a2f9d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/5a2f9d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b784369
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/5a2f9d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5a2f9d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1i, 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_5a2f9d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_5a2f9d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_5a2f9d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/5abbf2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/5abbf2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2b6a9ed
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/5abbf2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5abbf2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_5abbf2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_5abbf2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_5abbf2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/5b0f5b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/5b0f5b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f64a29c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/5b0f5b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5b0f5b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_5b0f5b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_5b0f5b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_5b0f5b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/5b4947.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/5b4947.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a8a10fd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/5b4947.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5b4947 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<bgra8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_5b4947
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_5b4947
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_5b4947
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/5bb7fb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/5bb7fb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..29576cf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/5bb7fb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5bb7fb = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_5bb7fb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_5bb7fb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_5bb7fb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/5c69f8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/5c69f8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f451eab
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/5c69f8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5c69f8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<bgra8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_5c69f8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_5c69f8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_5c69f8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/5cd3fc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/5cd3fc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c314841
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/5cd3fc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5cd3fc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_5cd3fc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_5cd3fc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_5cd3fc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/5cee3b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/5cee3b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..140ac61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/5cee3b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5cee3b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_5cee3b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_5cee3b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_5cee3b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/5d0a2f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/5d0a2f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..55fadcb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/5d0a2f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5d0a2f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_5d0a2f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_5d0a2f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_5d0a2f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/5d4042.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/5d4042.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e49e8c4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/5d4042.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5d4042 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_5d4042
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_5d4042
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_5d4042
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/5e17a7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/5e17a7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7f39534
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/5e17a7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5e17a7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_5e17a7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_5e17a7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_5e17a7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/5e1843.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/5e1843.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fd4d2e4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/5e1843.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5e1843 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_5e1843
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_5e1843
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_5e1843
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/5e8d3f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/5e8d3f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3c0d74d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/5e8d3f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5e8d3f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_5e8d3f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_5e8d3f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_5e8d3f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/5f4473.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/5f4473.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5534b33
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/5f4473.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5f4473 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_5f4473
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_5f4473
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_5f4473
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/5feb4d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/5feb4d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..26eae22
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/5feb4d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5feb4d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_5feb4d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_5feb4d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_5feb4d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/6154d4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/6154d4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a297154
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/6154d4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6154d4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_6154d4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_6154d4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_6154d4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/61e2e8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/61e2e8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..158c307
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/61e2e8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_61e2e8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_61e2e8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_61e2e8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_61e2e8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/620caa.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/620caa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..82ab5a7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/620caa.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_620caa = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_620caa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_620caa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_620caa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/622278.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/622278.wgsl.expected.ir.msl
new file mode 100644
index 0000000..faf2f49
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/622278.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_622278 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_622278
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_622278
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_622278
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/6273b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/6273b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0008a73
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/6273b1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_multisampled_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6273b1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_multisampled_2d = load %arg_0
+    %5:f32 = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_6273b1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_6273b1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_6273b1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/62d125.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/62d125.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a76214a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/62d125.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_62d125 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8snorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_62d125
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_62d125
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_62d125
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/62d1de.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/62d1de.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d4baec6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/62d1de.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_62d1de = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1i, 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_62d1de
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_62d1de
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_62d1de
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/639962.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/639962.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a3996a8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/639962.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_639962 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_639962
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_639962
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_639962
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/63be18.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/63be18.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e212337
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/63be18.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_63be18 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_63be18
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_63be18
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_63be18
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/64c372.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/64c372.wgsl.expected.ir.msl
new file mode 100644
index 0000000..840099e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/64c372.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_64c372 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_64c372
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_64c372
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_64c372
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/656d76.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/656d76.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a077875
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/656d76.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_656d76 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1i, 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_656d76
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_656d76
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_656d76
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/65a4d0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/65a4d0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f5ac9af
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/65a4d0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_65a4d0 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_65a4d0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_65a4d0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_65a4d0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/666010.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/666010.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8a323f4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/666010.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_666010 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_666010
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_666010
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_666010
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/6678b6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/6678b6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1a11fe7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/6678b6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6678b6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_6678b6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_6678b6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_6678b6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/66be47.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/66be47.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9cd5017
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/66be47.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_66be47 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d_array = load %arg_0
+    %5:f32 = textureLoad %4, vec2<i32>(1i), 1u, 1u
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_66be47
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_66be47
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_66be47
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/67d826.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/67d826.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a68a3eb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/67d826.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_67d826 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_67d826
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_67d826
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_67d826
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/67edca.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/67edca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1477c1b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/67edca.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_67edca = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_67edca
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_67edca
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_67edca
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/68d273.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/68d273.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4bd6ac2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/68d273.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_68d273 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_68d273
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_68d273
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_68d273
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/6925bc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/6925bc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..478711e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/6925bc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_multisampled_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6925bc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_multisampled_2d = load %arg_0
+    %5:f32 = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_6925bc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_6925bc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_6925bc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/69fee5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/69fee5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1417b3f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/69fee5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_69fee5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_69fee5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_69fee5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_69fee5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/6a6871.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/6a6871.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7c1e6c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/6a6871.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6a6871 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_6a6871
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_6a6871
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_6a6871
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/6b77d4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/6b77d4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1d0c855
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/6b77d4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6b77d4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1i, 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_6b77d4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_6b77d4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_6b77d4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/6b8ba6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/6b8ba6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a95d0b6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/6b8ba6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6b8ba6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_6b8ba6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_6b8ba6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_6b8ba6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/6ba9ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/6ba9ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4290b80
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/6ba9ab.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6ba9ab = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_6ba9ab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_6ba9ab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_6ba9ab
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/6bf3e2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/6bf3e2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aeaf4d5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/6bf3e2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6bf3e2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_6bf3e2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_6bf3e2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_6bf3e2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/6bf4b7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/6bf4b7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1c7f0ad
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/6bf4b7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6bf4b7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<i32>(1i), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_6bf4b7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_6bf4b7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_6bf4b7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/6d1fb4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/6d1fb4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d9a16b7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/6d1fb4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6d1fb4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_6d1fb4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_6d1fb4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_6d1fb4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/6d376a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/6d376a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..508e4bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/6d376a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6d376a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1u, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_6d376a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_6d376a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_6d376a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/6d7bb5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/6d7bb5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f3199131
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/6d7bb5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6d7bb5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_6d7bb5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_6d7bb5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_6d7bb5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/6e903f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/6e903f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2fd9d17
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/6e903f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6e903f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_6e903f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_6e903f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_6e903f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/6f0ea8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/6f0ea8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..97615c2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/6f0ea8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6f0ea8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_6f0ea8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_6f0ea8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_6f0ea8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/6f1750.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/6f1750.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b7e4178
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/6f1750.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6f1750 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_6f1750
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_6f1750
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_6f1750
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/6f8927.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/6f8927.wgsl.expected.ir.msl
new file mode 100644
index 0000000..39b592f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/6f8927.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6f8927 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_6f8927
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_6f8927
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_6f8927
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/714471.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/714471.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5a57894
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/714471.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_714471 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_714471
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_714471
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_714471
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/72bb3c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/72bb3c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5d4cbd7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/72bb3c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_72bb3c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_72bb3c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_72bb3c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_72bb3c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/742f1b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/742f1b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c177890
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/742f1b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_742f1b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_742f1b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_742f1b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_742f1b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/749704.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/749704.wgsl.expected.ir.msl
new file mode 100644
index 0000000..84b2794
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/749704.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_749704 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_749704
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_749704
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_749704
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/74a387.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/74a387.wgsl.expected.ir.msl
new file mode 100644
index 0000000..60cf284
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/74a387.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_74a387 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_74a387
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_74a387
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_74a387
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/773c46.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/773c46.wgsl.expected.ir.msl
new file mode 100644
index 0000000..79b5e5d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/773c46.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_773c46 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_773c46
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_773c46
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_773c46
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/789045.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/789045.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b8eb830
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/789045.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_789045 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1i, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_789045
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_789045
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_789045
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/79e697.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/79e697.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a36886e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/79e697.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_79e697 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1i, 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_79e697
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_79e697
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_79e697
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/7ab4df.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/7ab4df.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8cb03f7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/7ab4df.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_7ab4df = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1u, 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_7ab4df
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_7ab4df
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_7ab4df
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/7b63e0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/7b63e0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e6edbd3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/7b63e0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_7b63e0 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d_array = load %arg_0
+    %5:f32 = textureLoad %4, vec2<u32>(1u), 1u, 1u
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_7b63e0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_7b63e0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_7b63e0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/7bee94.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/7bee94.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0adf714
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/7bee94.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_7bee94 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_7bee94
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_7bee94
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_7bee94
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/7c90e5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/7c90e5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ec67113
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/7c90e5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_7c90e5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1i, 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_7c90e5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_7c90e5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_7c90e5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/7dab57.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/7dab57.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4337af8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/7dab57.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_7dab57 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_7dab57
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_7dab57
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_7dab57
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/7e5cbc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/7e5cbc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fc69a2d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/7e5cbc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_7e5cbc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<bgra8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_7e5cbc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_7e5cbc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_7e5cbc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/7fd822.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/7fd822.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c8e5128
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/7fd822.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_7fd822 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d = load %arg_0
+    %5:f32 = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_7fd822
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_7fd822
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_7fd822
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/80dae1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/80dae1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c929235
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/80dae1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_80dae1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_80dae1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_80dae1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_80dae1
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/81c381.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/81c381.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b74c1ea
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/81c381.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_81c381 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1i, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_81c381
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_81c381
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_81c381
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/83162f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/83162f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e649576
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/83162f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_83162f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_83162f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_83162f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_83162f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/83cea4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/83cea4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3cd5a0f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/83cea4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_83cea4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_83cea4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_83cea4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_83cea4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/83d6e3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/83d6e3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..421bd89
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/83d6e3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_83d6e3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_83d6e3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_83d6e3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_83d6e3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/848d85.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/848d85.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d2d04d4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/848d85.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_848d85 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_848d85
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_848d85
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_848d85
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/84a438.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/84a438.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d6cbff4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/84a438.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_84a438 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_84a438
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_84a438
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_84a438
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/84c728.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/84c728.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f9648ea
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/84c728.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_84c728 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_84c728
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_84c728
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_84c728
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/84dee1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/84dee1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5d75c19
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/84dee1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_84dee1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_84dee1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_84dee1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_84dee1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/8527b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/8527b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..06dbf7a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/8527b1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8527b1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1u, 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_8527b1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_8527b1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_8527b1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/862833.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/862833.wgsl.expected.ir.msl
new file mode 100644
index 0000000..00559f8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/862833.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_862833 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_862833
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_862833
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_862833
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/878e24.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/878e24.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ababd9c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/878e24.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_878e24 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_878e24
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_878e24
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_878e24
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/87be85.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/87be85.wgsl.expected.ir.msl
new file mode 100644
index 0000000..68667c3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/87be85.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_87be85 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1i, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_87be85
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_87be85
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_87be85
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/87f0a6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/87f0a6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..05e9c70
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/87f0a6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_87f0a6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_87f0a6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_87f0a6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_87f0a6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/881349.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/881349.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d11e0d7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/881349.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_881349 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_881349
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_881349
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_881349
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/89620b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/89620b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7a35365
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/89620b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_89620b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_89620b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_89620b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_89620b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/897cf3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/897cf3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e4272f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/897cf3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_897cf3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_897cf3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_897cf3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_897cf3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/8a291b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/8a291b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0c74f16
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/8a291b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8a291b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_8a291b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_8a291b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_8a291b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/8a9988.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/8a9988.wgsl.expected.ir.msl
new file mode 100644
index 0000000..98c41f5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/8a9988.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8a9988 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_8a9988
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_8a9988
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_8a9988
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1940de4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:626 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_external, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8acf41 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_external = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_8acf41
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_8acf41
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_8acf41
+    ret
+  }
+}
+
+Multiplanar external texture transform was not run.
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/8b62fb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/8b62fb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e880d6f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/8b62fb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8b62fb = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<bgra8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_8b62fb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_8b62fb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_8b62fb
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/8bf8c2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/8bf8c2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1c16792
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/8bf8c2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8bf8c2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_8bf8c2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_8bf8c2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_8bf8c2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/8c6176.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/8c6176.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ce2ce33
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/8c6176.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8c6176 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_8c6176
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_8c6176
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_8c6176
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/8ccbe3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/8ccbe3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d105a6b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/8ccbe3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8ccbe3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d = load %arg_0
+    %5:f32 = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_8ccbe3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_8ccbe3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_8ccbe3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/8d64c3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/8d64c3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d493e21
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/8d64c3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8d64c3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_8d64c3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_8d64c3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_8d64c3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/8db0ce.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/8db0ce.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5b3cf5c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/8db0ce.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8db0ce = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_8db0ce
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_8db0ce
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_8db0ce
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/8e5032.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/8e5032.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9462a50
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/8e5032.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8e5032 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_8e5032
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_8e5032
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_8e5032
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/8e68c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/8e68c9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0d08fe1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/8e68c9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8e68c9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_8e68c9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_8e68c9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_8e68c9
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/8fc29b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/8fc29b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b53fe1a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/8fc29b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8fc29b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_8fc29b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_8fc29b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_8fc29b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/8ff033.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/8ff033.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8c28517
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/8ff033.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8ff033 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8snorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_8ff033
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_8ff033
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_8ff033
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/91ede5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/91ede5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..644e2dd5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/91ede5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_91ede5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_91ede5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_91ede5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_91ede5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/9242e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/9242e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d50fd04
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/9242e7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9242e7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_9242e7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_9242e7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_9242e7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/92eb1f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/92eb1f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5fa107c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/92eb1f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_92eb1f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<u32>(1u), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_92eb1f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_92eb1f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_92eb1f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/936952.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/936952.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0de6245
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/936952.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_936952 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_936952
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_936952
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_936952
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/93f23e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/93f23e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6b32351
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/93f23e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_93f23e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_93f23e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_93f23e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_93f23e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/96efd5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/96efd5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..12acd02
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/96efd5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_96efd5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1u, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_96efd5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_96efd5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_96efd5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/970308.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/970308.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1390a3f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/970308.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_970308 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_970308
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_970308
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_970308
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/9885b0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/9885b0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..274f20f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/9885b0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9885b0 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1u, 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_9885b0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_9885b0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_9885b0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/9a7c90.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/9a7c90.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fbc1b15
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/9a7c90.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9a7c90 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_9a7c90
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_9a7c90
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_9a7c90
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/9a8c1e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/9a8c1e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a480c66
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/9a8c1e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9a8c1e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_9a8c1e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_9a8c1e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_9a8c1e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/9aa733.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/9aa733.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3c4a1e6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/9aa733.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9aa733 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_9aa733
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_9aa733
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_9aa733
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/9b2667.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/9b2667.wgsl.expected.ir.msl
new file mode 100644
index 0000000..180f9f4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/9b2667.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9b2667 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d_array = load %arg_0
+    %5:f32 = textureLoad %4, vec2<i32>(1i), 1i, 1i
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_9b2667
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_9b2667
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_9b2667
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/9b5343.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/9b5343.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d4f92ef
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/9b5343.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9b5343 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_9b5343
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_9b5343
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_9b5343
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/9c2376.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/9c2376.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ee7d9bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/9c2376.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9c2376 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_9c2376
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_9c2376
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_9c2376
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/9c2a14.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/9c2a14.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ad06649
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/9c2a14.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9c2a14 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_9c2a14
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_9c2a14
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_9c2a14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/9cf7df.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/9cf7df.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f522040
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/9cf7df.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9cf7df = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_9cf7df
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_9cf7df
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_9cf7df
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/9d70e9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/9d70e9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..95380ed
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/9d70e9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9d70e9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1i, 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_9d70e9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_9d70e9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_9d70e9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/9de6f5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/9de6f5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bee6093
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/9de6f5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9de6f5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_9de6f5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_9de6f5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_9de6f5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/9ed19e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/9ed19e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dd26d8c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/9ed19e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9ed19e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d = load %arg_0
+    %5:f32 = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_9ed19e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_9ed19e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_9ed19e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/9fa9fd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/9fa9fd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..588a965
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/9fa9fd.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9fa9fd = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_9fa9fd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_9fa9fd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_9fa9fd
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/9fbfd9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/9fbfd9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..57e7f5f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/9fbfd9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9fbfd9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1u, 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_9fbfd9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_9fbfd9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_9fbfd9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/9fd7be.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/9fd7be.wgsl.expected.ir.msl
new file mode 100644
index 0000000..36f13ad
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/9fd7be.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9fd7be = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_9fd7be
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_9fd7be
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_9fd7be
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a03af1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a03af1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28b429c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a03af1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a03af1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a03af1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a03af1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a03af1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a24be1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a24be1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2bfe182
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a24be1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a24be1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1i, 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a24be1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a24be1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a24be1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a2b3f4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a2b3f4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..79ac3c7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a2b3f4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a2b3f4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a2b3f4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a2b3f4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a2b3f4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a3733f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a3733f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6329ab9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a3733f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a3733f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a3733f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a3733f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a3733f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a3f122.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a3f122.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2a342df
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a3f122.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a3f122 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a3f122
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a3f122
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a3f122
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a548a8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a548a8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..716be3e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a548a8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a548a8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a548a8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a548a8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a548a8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a54e11.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a54e11.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5087f1b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a54e11.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a54e11 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a54e11
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a54e11
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a54e11
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a583c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a583c9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6fdd68c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a583c9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a583c9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a583c9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a583c9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a583c9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a5c4e2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a5c4e2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eb04ba7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a5c4e2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a5c4e2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a5c4e2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a5c4e2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a5c4e2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a5e0a5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a5e0a5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7cc744c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a5e0a5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a5e0a5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a5e0a5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a5e0a5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a5e0a5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a64b1d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a64b1d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1358923
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a64b1d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a64b1d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a64b1d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a64b1d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a64b1d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a6a85a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a6a85a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..056aa6f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a6a85a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a6a85a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a6a85a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a6a85a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a6a85a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a6b61d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a6b61d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..762e168
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a6b61d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a6b61d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a6b61d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a6b61d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a6b61d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a7444c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a7444c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..98b44b3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a7444c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a7444c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a7444c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a7444c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a7444c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a7a3c3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a7a3c3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3ccaa0f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a7a3c3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a7a3c3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a7a3c3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a7a3c3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a7a3c3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a7bcb4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a7bcb4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..afd847a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a7bcb4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a7bcb4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8snorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a7bcb4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a7bcb4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a7bcb4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a7c171.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a7c171.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fd0a2c3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a7c171.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a7c171 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a7c171
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a7c171
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a7c171
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a8549b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a8549b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a9ea555
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a8549b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a8549b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a8549b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a8549b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a8549b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a92b18.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a92b18.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9b79311
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a92b18.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a92b18 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a92b18
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a92b18
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a92b18
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/a9a9f5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/a9a9f5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4cfba18
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/a9a9f5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a9a9f5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<i32>(1i), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_a9a9f5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_a9a9f5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_a9a9f5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/aa2579.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/aa2579.wgsl.expected.ir.msl
new file mode 100644
index 0000000..253a388
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/aa2579.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_aa2579 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_aa2579
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_aa2579
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_aa2579
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/aa6130.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/aa6130.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4e96fba
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/aa6130.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_aa6130 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_aa6130
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_aa6130
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_aa6130
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/aa8a0d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/aa8a0d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dcd9377
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/aa8a0d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_aa8a0d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_aa8a0d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_aa8a0d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_aa8a0d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/aae7f6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/aae7f6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..34771f8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/aae7f6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_aae7f6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_aae7f6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_aae7f6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_aae7f6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/aae9c3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/aae9c3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7bf6125
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/aae9c3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_aae9c3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_aae9c3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_aae9c3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_aae9c3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/ac64f7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/ac64f7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a93361c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/ac64f7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ac64f7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_ac64f7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_ac64f7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_ac64f7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/acf22f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/acf22f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c4816cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/acf22f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_acf22f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_acf22f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_acf22f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_acf22f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/ad551e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/ad551e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b1e8fe7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/ad551e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ad551e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_ad551e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_ad551e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_ad551e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/aeae73.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/aeae73.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fd5123e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/aeae73.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_aeae73 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_aeae73
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_aeae73
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_aeae73
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/aebc09.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/aebc09.wgsl.expected.ir.msl
new file mode 100644
index 0000000..51dbb50
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/aebc09.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_aebc09 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_aebc09
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_aebc09
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_aebc09
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/af0507.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/af0507.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a92628f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/af0507.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_af0507 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_af0507
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_af0507
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_af0507
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/b1bf79.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/b1bf79.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e1e610
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/b1bf79.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b1bf79 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_b1bf79
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_b1bf79
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_b1bf79
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/b1ca35.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/b1ca35.wgsl.expected.ir.msl
new file mode 100644
index 0000000..110f70a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/b1ca35.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b1ca35 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_b1ca35
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_b1ca35
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_b1ca35
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/b24d27.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/b24d27.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f344f5a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/b24d27.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b24d27 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_b24d27
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_b24d27
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_b24d27
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/b25644.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/b25644.wgsl.expected.ir.msl
new file mode 100644
index 0000000..266468f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/b25644.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b25644 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_b25644
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_b25644
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_b25644
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/b27c33.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/b27c33.wgsl.expected.ir.msl
new file mode 100644
index 0000000..701693a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/b27c33.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b27c33 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_b27c33
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_b27c33
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_b27c33
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/b29f71.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/b29f71.wgsl.expected.ir.msl
new file mode 100644
index 0000000..71a382b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/b29f71.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b29f71 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1u, 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_b29f71
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_b29f71
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_b29f71
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/b4d6c4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/b4d6c4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..389a80a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/b4d6c4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b4d6c4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_b4d6c4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_b4d6c4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_b4d6c4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/b58c6d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/b58c6d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..977d121
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/b58c6d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b58c6d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_b58c6d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_b58c6d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_b58c6d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/b60a86.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/b60a86.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4244bf5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/b60a86.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b60a86 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_b60a86
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_b60a86
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_b60a86
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/b60db7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/b60db7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3f0a471
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/b60db7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b60db7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_b60db7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_b60db7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_b60db7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/b6ba5d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/b6ba5d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..39ca544
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/b6ba5d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b6ba5d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d_array = load %arg_0
+    %5:f32 = textureLoad %4, vec2<u32>(1u), 1i, 1i
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_b6ba5d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_b6ba5d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_b6ba5d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/b6c458.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/b6c458.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ad4d72e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/b6c458.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b6c458 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_b6c458
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_b6c458
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_b6c458
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/b73f6b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/b73f6b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..44ff437
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/b73f6b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b73f6b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_b73f6b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_b73f6b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_b73f6b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/b75c8f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/b75c8f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d823dc2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/b75c8f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b75c8f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_b75c8f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_b75c8f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_b75c8f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/b75d4a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/b75d4a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..adcc331
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/b75d4a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b75d4a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_b75d4a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_b75d4a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_b75d4a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/b7f74f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/b7f74f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aca864d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/b7f74f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b7f74f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<bgra8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_b7f74f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_b7f74f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_b7f74f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/b80e7e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/b80e7e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0b38f6d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/b80e7e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b80e7e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_b80e7e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_b80e7e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_b80e7e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/b94d15.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/b94d15.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bdbe35b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/b94d15.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b94d15 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_b94d15
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_b94d15
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_b94d15
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/ba023a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/ba023a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d19570d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/ba023a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ba023a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_ba023a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_ba023a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_ba023a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/ba74b2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/ba74b2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3929fd2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/ba74b2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ba74b2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_ba74b2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_ba74b2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_ba74b2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/babdf3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/babdf3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9a750f6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/babdf3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_babdf3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_babdf3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_babdf3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_babdf3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/bba04a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/bba04a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..680e1a9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/bba04a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_bba04a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_bba04a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_bba04a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_bba04a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/bbb762.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/bbb762.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f08b3bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/bbb762.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_bbb762 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_bbb762
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_bbb762
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_bbb762
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/bc3201.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/bc3201.wgsl.expected.ir.msl
new file mode 100644
index 0000000..84bc912
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/bc3201.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_bc3201 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1u, 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_bc3201
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_bc3201
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_bc3201
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/bcbb3c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/bcbb3c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d39aef4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/bcbb3c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_bcbb3c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<u32>(1u), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_bcbb3c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_bcbb3c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_bcbb3c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/bd990a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/bd990a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..52e2726
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/bd990a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_bd990a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_bd990a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_bd990a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_bd990a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/bdc67a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/bdc67a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e5625b7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/bdc67a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_bdc67a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_bdc67a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_bdc67a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_bdc67a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/bfd154.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/bfd154.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b6d01d2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/bfd154.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_bfd154 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_bfd154
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_bfd154
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_bfd154
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c02b74.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c02b74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b532181
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c02b74.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c02b74 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c02b74
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c02b74
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c02b74
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c07013.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c07013.wgsl.expected.ir.msl
new file mode 100644
index 0000000..947271a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c07013.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c07013 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c07013
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c07013
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c07013
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c16e00.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c16e00.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f7f210f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c16e00.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c16e00 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d_array = load %arg_0
+    %5:f32 = textureLoad %4, vec2<i32>(1i), 1u, 1i
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c16e00
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c16e00
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c16e00
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c21b33.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c21b33.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cc6062a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c21b33.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c21b33 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c21b33
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c21b33
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c21b33
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c2a480.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c2a480.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ffc5794
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c2a480.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c2a480 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c2a480
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c2a480
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c2a480
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c2d09a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c2d09a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2eb0ebb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c2d09a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c2d09a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c2d09a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c2d09a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c2d09a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c378ee.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c378ee.wgsl.expected.ir.msl
new file mode 100644
index 0000000..22f4bb4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c378ee.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c378ee = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c378ee
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c378ee
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c378ee
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c40dcb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c40dcb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f397844
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c40dcb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c40dcb = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c40dcb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c40dcb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c40dcb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c456bc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c456bc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3c74d38
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c456bc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c456bc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c456bc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c456bc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c456bc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c5791b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c5791b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..212cb30
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c5791b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c5791b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c5791b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c5791b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c5791b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c5c86d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c5c86d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dd5dd3e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c5c86d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c5c86d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c5c86d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c5c86d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c5c86d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c66b20.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c66b20.wgsl.expected.ir.msl
new file mode 100644
index 0000000..89a67c8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c66b20.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c66b20 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c66b20
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c66b20
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c66b20
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c7cbed.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c7cbed.wgsl.expected.ir.msl
new file mode 100644
index 0000000..be8d896
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c7cbed.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c7cbed = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c7cbed
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c7cbed
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c7cbed
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c7e313.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c7e313.wgsl.expected.ir.msl
new file mode 100644
index 0000000..58dfe5a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c7e313.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c7e313 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c7e313
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c7e313
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c7e313
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c80691.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c80691.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6769b9f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c80691.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c80691 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c80691
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c80691
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c80691
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c8ed19.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c8ed19.wgsl.expected.ir.msl
new file mode 100644
index 0000000..91b4309
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c8ed19.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c8ed19 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c8ed19
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c8ed19
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c8ed19
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c98bf4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c98bf4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f114316
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c98bf4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c98bf4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8snorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c98bf4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c98bf4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c98bf4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c9b083.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c9b083.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c16c9de
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c9b083.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c9b083 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c9b083
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c9b083
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c9b083
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c9cc40.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c9cc40.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9acff86
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c9cc40.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c9cc40 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c9cc40
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c9cc40
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c9cc40
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/c9f310.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/c9f310.wgsl.expected.ir.msl
new file mode 100644
index 0000000..13f9269
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/c9f310.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c9f310 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_c9f310
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_c9f310
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_c9f310
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/cac876.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/cac876.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c7f6f0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/cac876.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_cac876 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_cac876
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_cac876
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_cac876
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/cad5f2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/cad5f2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..60079b0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/cad5f2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_cad5f2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_cad5f2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_cad5f2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_cad5f2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/cb57c2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/cb57c2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..39eb47d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/cb57c2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_cb57c2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d_array = load %arg_0
+    %5:f32 = textureLoad %4, vec2<u32>(1u), 1u, 1i
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_cb57c2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_cb57c2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_cb57c2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/cdbcf6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/cdbcf6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7661946
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/cdbcf6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_cdbcf6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_cdbcf6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_cdbcf6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_cdbcf6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/cdccd2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/cdccd2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ee35614
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/cdccd2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_cdccd2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_cdccd2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_cdccd2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_cdccd2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/cdd343.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/cdd343.wgsl.expected.ir.msl
new file mode 100644
index 0000000..85b38f5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/cdd343.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_cdd343 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_cdd343
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_cdd343
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_cdd343
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/cddf6b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/cddf6b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..21ddd06
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/cddf6b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_cddf6b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_cddf6b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_cddf6b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_cddf6b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/cec477.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/cec477.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f94a52d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/cec477.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_cec477 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_cec477
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_cec477
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_cec477
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/d02afc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/d02afc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..75174cc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/d02afc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d02afc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_d02afc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_d02afc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_d02afc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/d0e351.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/d0e351.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b2ae711
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/d0e351.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d0e351 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_d0e351
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_d0e351
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_d0e351
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/d357bb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/d357bb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6f40db2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/d357bb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d357bb = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<bgra8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_d357bb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_d357bb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_d357bb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/d37a08.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/d37a08.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f93c5ff
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/d37a08.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d37a08 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_d37a08
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_d37a08
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_d37a08
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/d3d8fc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/d3d8fc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7d7bb46
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/d3d8fc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d3d8fc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_d3d8fc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_d3d8fc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_d3d8fc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/d41c72.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/d41c72.wgsl.expected.ir.msl
new file mode 100644
index 0000000..826d576
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/d41c72.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d41c72 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_d41c72
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_d41c72
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_d41c72
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/d4df19.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/d4df19.wgsl.expected.ir.msl
new file mode 100644
index 0000000..54ea4c8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/d4df19.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d4df19 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_d4df19
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_d4df19
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_d4df19
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/d5c48d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/d5c48d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..deffcab
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/d5c48d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d5c48d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_d5c48d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_d5c48d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_d5c48d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/d72de9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/d72de9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4cd3152
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/d72de9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d72de9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_d72de9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_d72de9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_d72de9
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/d7996a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/d7996a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a8ec53e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/d7996a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d7996a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_d7996a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_d7996a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_d7996a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/d79c5c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/d79c5c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..90feb87
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/d79c5c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d79c5c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_d79c5c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_d79c5c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_d79c5c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/d80ff3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/d80ff3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d68c51c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/d80ff3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d80ff3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<bgra8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_d80ff3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_d80ff3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_d80ff3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/d81c57.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/d81c57.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b00ffd8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/d81c57.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d81c57 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_d81c57
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_d81c57
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_d81c57
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/d85d61.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/d85d61.wgsl.expected.ir.msl
new file mode 100644
index 0000000..36bfddc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/d85d61.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d85d61 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_d85d61
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_d85d61
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_d85d61
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/d8617f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/d8617f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b1b2853
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/d8617f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d8617f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_d8617f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_d8617f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_d8617f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/d8be5a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/d8be5a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b2012a1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/d8be5a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d8be5a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_d8be5a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_d8be5a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_d8be5a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/d91f37.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/d91f37.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6d48db1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/d91f37.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d91f37 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_d91f37
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_d91f37
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_d91f37
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/dab04f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/dab04f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1ef67fb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/dab04f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_dab04f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_dab04f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_dab04f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_dab04f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/dbd554.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/dbd554.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cbfdf43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/dbd554.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_dbd554 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_dbd554
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_dbd554
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_dbd554
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/dd5859.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/dd5859.wgsl.expected.ir.msl
new file mode 100644
index 0000000..17bbef5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/dd5859.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_dd5859 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_dd5859
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_dd5859
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_dd5859
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/dd8776.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/dd8776.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f6be212
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/dd8776.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_dd8776 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_dd8776
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_dd8776
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_dd8776
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/ddeed3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/ddeed3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2487b7f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/ddeed3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ddeed3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_ddeed3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_ddeed3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_ddeed3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/de5a0e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/de5a0e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f5755ea
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/de5a0e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_de5a0e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_de5a0e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_de5a0e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_de5a0e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/dee8e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/dee8e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..427bc41
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/dee8e7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_dee8e7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_dee8e7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_dee8e7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_dee8e7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/defd9a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/defd9a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1576f1c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/defd9a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_defd9a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_defd9a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_defd9a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_defd9a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/dfdf3b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/dfdf3b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..04edd2e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/dfdf3b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_dfdf3b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_dfdf3b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_dfdf3b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_dfdf3b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/e1c3cf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/e1c3cf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..84ec4c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/e1c3cf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e1c3cf = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_e1c3cf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_e1c3cf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_e1c3cf
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/e2292f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/e2292f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..94a6c3a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/e2292f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e2292f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_e2292f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_e2292f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_e2292f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/e2b3a1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/e2b3a1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..15daf28
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/e2b3a1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e2b3a1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_e2b3a1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_e2b3a1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_e2b3a1
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/e2d7da.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/e2d7da.wgsl.expected.ir.msl
new file mode 100644
index 0000000..89cffb2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/e2d7da.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e2d7da = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_e2d7da
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_e2d7da
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_e2d7da
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/e33285.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/e33285.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3a6b8fd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/e33285.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e33285 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_e33285
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_e33285
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_e33285
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/e35f72.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/e35f72.wgsl.expected.ir.msl
new file mode 100644
index 0000000..19cbb0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/e35f72.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e35f72 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<i32>(1i), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_e35f72
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_e35f72
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_e35f72
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/e3b08b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/e3b08b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..25df3da
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/e3b08b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e3b08b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_e3b08b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_e3b08b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_e3b08b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/e3d2cc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/e3d2cc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..646f657
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/e3d2cc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e3d2cc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_e3d2cc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_e3d2cc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_e3d2cc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/e57e92.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/e57e92.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1919a43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/e57e92.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e57e92 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_e57e92
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_e57e92
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_e57e92
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/e59fdf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/e59fdf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..149ffcf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/e59fdf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e59fdf = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_e59fdf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_e59fdf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_e59fdf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/e65916.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/e65916.wgsl.expected.ir.msl
new file mode 100644
index 0000000..81ccb0e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/e65916.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e65916 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_e65916
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_e65916
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_e65916
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/e893d7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/e893d7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..71c2c9b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/e893d7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e893d7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_e893d7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_e893d7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_e893d7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/e92dd0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/e92dd0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..34841fe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/e92dd0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e92dd0 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_e92dd0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_e92dd0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_e92dd0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/e9eb65.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/e9eb65.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e2bd15
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/e9eb65.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e9eb65 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_e9eb65
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_e9eb65
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_e9eb65
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/ea2abd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/ea2abd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4414594
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/ea2abd.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ea2abd = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_ea2abd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_ea2abd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_ea2abd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/eb573b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/eb573b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..15306d9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/eb573b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_eb573b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_eb573b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_eb573b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_eb573b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/ebfb92.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/ebfb92.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dd77500
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/ebfb92.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ebfb92 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_ebfb92
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_ebfb92
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_ebfb92
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/ecc823.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/ecc823.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7bff95f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/ecc823.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ecc823 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_ecc823
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_ecc823
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_ecc823
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/ed55a8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/ed55a8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c34e3f9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/ed55a8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ed55a8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_ed55a8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_ed55a8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_ed55a8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/ee33c5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/ee33c5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eda99e9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/ee33c5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ee33c5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec3<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_ee33c5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_ee33c5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_ee33c5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/eecf7d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/eecf7d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..18f1dcd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/eecf7d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_eecf7d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_eecf7d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_eecf7d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_eecf7d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/ef2ec3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/ef2ec3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..833f666
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/ef2ec3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ef2ec3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_ef2ec3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_ef2ec3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_ef2ec3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/ef5405.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/ef5405.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7aa3f07
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/ef5405.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ef5405 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_ef5405
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_ef5405
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_ef5405
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/efa787.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/efa787.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d2d6949
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/efa787.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_efa787 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_efa787
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_efa787
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_efa787
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f0514a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f0514a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..12f988f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f0514a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f0514a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f0514a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f0514a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f0514a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f06b69.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f06b69.wgsl.expected.ir.msl
new file mode 100644
index 0000000..edba4ee
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f06b69.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f06b69 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f06b69
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f06b69
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f06b69
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f0abad.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f0abad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..22de56b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f0abad.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f0abad = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f0abad
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f0abad
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f0abad
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f1c549.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f1c549.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d5ee9a3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f1c549.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f1c549 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f1c549
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f1c549
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f1c549
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f2a7ff.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f2a7ff.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8280fc0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f2a7ff.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f2a7ff = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f2a7ff
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f2a7ff
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f2a7ff
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f2c311.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f2c311.wgsl.expected.ir.msl
new file mode 100644
index 0000000..39a5325
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f2c311.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f2c311 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f2c311
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f2c311
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f2c311
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f348d9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f348d9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d4909d6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f348d9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f348d9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<f32> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1u, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f348d9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f348d9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f348d9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f35ac7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f35ac7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7b62973
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f35ac7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f35ac7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f35ac7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f35ac7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f35ac7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f379e2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f379e2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c51e0fc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f379e2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f379e2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f379e2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f379e2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f379e2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f56e6f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f56e6f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c8967f5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f56e6f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f56e6f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f56e6f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f56e6f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f56e6f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f5fbc6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f5fbc6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ee1330a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f5fbc6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f5fbc6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f5fbc6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f5fbc6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f5fbc6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f74bd8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f74bd8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0c4881c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f74bd8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f74bd8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f74bd8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f74bd8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f74bd8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f7f3bc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f7f3bc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7346fa8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f7f3bc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f7f3bc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8snorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f7f3bc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f7f3bc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f7f3bc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f7f936.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f7f936.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d7b03a5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f7f936.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f7f936 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f7f936
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f7f936
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f7f936
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f81792.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f81792.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f9e9ca4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f81792.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f81792 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f81792
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f81792
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f81792
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f82eb2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f82eb2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..292553c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f82eb2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f82eb2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f82eb2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f82eb2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f82eb2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f85291.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f85291.wgsl.expected.ir.msl
new file mode 100644
index 0000000..505824e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f85291.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f85291 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<i32> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f85291
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f85291
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f85291
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f8a2e8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f8a2e8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f06bbdb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f8a2e8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f8a2e8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<bgra8unorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f8a2e8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f8a2e8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f8a2e8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f92c2d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f92c2d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e59e7ed
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f92c2d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f92c2d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32float, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f92c2d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f92c2d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f92c2d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/f9eaaf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/f9eaaf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e62fe0e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/f9eaaf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f9eaaf = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, 1u
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_f9eaaf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_f9eaaf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_f9eaaf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/fc47ff.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/fc47ff.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e4578a7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/fc47ff.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_fc47ff = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8sint, read_write> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_fc47ff
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_fc47ff
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_fc47ff
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/fc6d36.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/fc6d36.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aafbdb7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/fc6d36.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_fc6d36 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, read> = load %arg_0
+    %5:vec4<i32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_fc6d36
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_fc6d36
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_fc6d36
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/fcd23d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/fcd23d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2482c91
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/fcd23d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_multisampled_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_fcd23d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_multisampled_2d = load %arg_0
+    %5:f32 = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_fcd23d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_fcd23d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_fcd23d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/fd6442.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/fd6442.wgsl.expected.ir.msl
new file mode 100644
index 0000000..70734e6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/fd6442.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_fd6442 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u)
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_fd6442
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_fd6442
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_fd6442
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/fd9606.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/fd9606.wgsl.expected.ir.msl
new file mode 100644
index 0000000..785e313
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/fd9606.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_fd9606 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_fd9606
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_fd9606
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_fd9606
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/fdebd0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/fdebd0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..610ae7e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/fdebd0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_fdebd0 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, read> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_fdebd0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_fdebd0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_fdebd0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/fe0565.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/fe0565.wgsl.expected.ir.msl
new file mode 100644
index 0000000..611930f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/fe0565.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_fe0565 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<u32> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<u32>(1u), 1i
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_fe0565
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_fe0565
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_fe0565
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/fe222a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/fe222a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6180264
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/fe222a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_fe222a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8snorm, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_fe222a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_fe222a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_fe222a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/fe2c1b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/fe2c1b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..89b91fd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/fe2c1b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_fe2c1b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %5:vec4<u32> = textureLoad %4, vec2<i32>(1i), 1u
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_fe2c1b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_fe2c1b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_fe2c1b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/feab99.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/feab99.wgsl.expected.ir.msl
new file mode 100644
index 0000000..68a1042
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/feab99.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_feab99 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16float, read> = load %arg_0
+    %5:vec4<f32> = textureLoad %4, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_feab99
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_feab99
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_feab99
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureLoad/ff1119.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureLoad/ff1119.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4522b3b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureLoad/ff1119.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ff1119 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d_array = load %arg_0
+    %5:f32 = textureLoad %4, vec2<i32>(1i), 1i, 1u
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureLoad_ff1119
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureLoad_ff1119
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureLoad_ff1119
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/014a3b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/014a3b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f07b440
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/014a3b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_014a3b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_014a3b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_014a3b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_014a3b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/071ebc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/071ebc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..39a1614
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/071ebc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_071ebc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_071ebc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_071ebc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_071ebc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..199f16d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_0856ae = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_0856ae
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_0856ae
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_0856ae
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/0ec222.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/0ec222.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b7bbc4a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/0ec222.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_0ec222 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<f32> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_0ec222
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_0ec222
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_0ec222
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/0fe8dc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/0fe8dc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e777301
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/0fe8dc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_0fe8dc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_0fe8dc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_0fe8dc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_0fe8dc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f1bf0ef
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_17ccad = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_17ccad
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_17ccad
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_17ccad
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/1f858a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/1f858a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0c3ea76
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/1f858a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_1f858a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_1f858a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_1f858a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_1f858a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ea559ad
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_24d572 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_24d572
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_24d572
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_24d572
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/26c9f9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/26c9f9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f3e96cd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/26c9f9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_26c9f9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_26c9f9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_26c9f9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_26c9f9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7606d4e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_2a48dc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_2a48dc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_2a48dc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_2a48dc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/2d95ea.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/2d95ea.wgsl.expected.ir.msl
new file mode 100644
index 0000000..495e07f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/2d95ea.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_2d95ea = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_2d95ea
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_2d95ea
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_2d95ea
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3b10bb9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_327d70 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_327d70
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_327d70
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_327d70
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c7106f5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_32ca10 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_32ca10
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_32ca10
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_32ca10
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/3465ec.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/3465ec.wgsl.expected.ir.msl
new file mode 100644
index 0000000..58361e2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/3465ec.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_3465ec = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_3465ec
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_3465ec
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_3465ec
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/34cefa.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/34cefa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a33f6a5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/34cefa.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_34cefa = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<f32> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_34cefa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_34cefa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_34cefa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/3580ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/3580ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3c817e5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/3580ab.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_3580ab = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_3580ab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_3580ab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_3580ab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/379cc5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/379cc5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..af207db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/379cc5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_379cc5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_379cc5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_379cc5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_379cc5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5056c30
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_37bc8a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_37bc8a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_37bc8a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_37bc8a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3e993fe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_380a60 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_380a60
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_380a60
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_380a60
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/3ad143.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/3ad143.wgsl.expected.ir.msl
new file mode 100644
index 0000000..26fba61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/3ad143.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_3ad143 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_3ad143
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_3ad143
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_3ad143
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/3eff89.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/3eff89.wgsl.expected.ir.msl
new file mode 100644
index 0000000..38745b3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/3eff89.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_3eff89 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_3eff89
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_3eff89
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_3eff89
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/485774.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/485774.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b6a1cd2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/485774.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_485774 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_485774
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_485774
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_485774
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/48ef47.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/48ef47.wgsl.expected.ir.msl
new file mode 100644
index 0000000..27ba8af
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/48ef47.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_48ef47 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_cube_array = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_48ef47
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_48ef47
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_48ef47
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/4adaad.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/4adaad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..87c7bed
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/4adaad.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_4adaad = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_4adaad
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_4adaad
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_4adaad
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/4c4333.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/4c4333.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f4ea374
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/4c4333.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_4c4333 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_4c4333
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_4c4333
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_4c4333
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b362d6b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_520086 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_520086
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_520086
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_520086
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/52dfc5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/52dfc5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8a7c43b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/52dfc5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_52dfc5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_52dfc5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_52dfc5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_52dfc5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.ir.msl
new file mode 100644
index 0000000..684d552
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_54a654 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_54a654
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_54a654
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_54a654
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/555f67.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/555f67.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b88e37e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/555f67.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_555f67 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_555f67
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_555f67
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_555f67
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/59eb57.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/59eb57.wgsl.expected.ir.msl
new file mode 100644
index 0000000..08f8255
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/59eb57.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_59eb57 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_59eb57
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_59eb57
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_59eb57
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9aa6417
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_5ee8f2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_5ee8f2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_5ee8f2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_5ee8f2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/5f20d1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/5f20d1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6be5a60
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/5f20d1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_5f20d1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_5f20d1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_5f20d1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_5f20d1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/61bd23.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/61bd23.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5275648
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/61bd23.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_61bd23 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_61bd23
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_61bd23
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_61bd23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8d48fda
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_622aa2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_622aa2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_622aa2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_622aa2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/6b4321.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/6b4321.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f6ad1e9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/6b4321.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_6b4321 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<i32> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_6b4321
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_6b4321
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_6b4321
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a422cd9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_6da0eb = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_6da0eb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_6da0eb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_6da0eb
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/77be7b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/77be7b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b885127
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/77be7b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_77be7b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<i32> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_77be7b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_77be7b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_77be7b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/7895f4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/7895f4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..77f5aae
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/7895f4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_7895f4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_7895f4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_7895f4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_7895f4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/7f28cf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/7f28cf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f28162b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/7f28cf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_7f28cf = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_7f28cf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_7f28cf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_7f28cf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/878dea.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/878dea.wgsl.expected.ir.msl
new file mode 100644
index 0000000..522fa8a6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/878dea.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_878dea = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_878dea
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_878dea
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_878dea
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/87faad.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/87faad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1ad65ca
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/87faad.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_87faad = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_87faad
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_87faad
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_87faad
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/8ac32a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/8ac32a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eea2924
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8ac32a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_8ac32a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<u32> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_8ac32a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_8ac32a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_8ac32a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/8bd987.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/8bd987.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3d169ea
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8bd987.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_8bd987 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_8bd987
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_8bd987
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_8bd987
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/8dbf23.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/8dbf23.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a3cad19
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8dbf23.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_8dbf23 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_8dbf23
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_8dbf23
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_8dbf23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..75282c7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_8e1bd0 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_8e1bd0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_8e1bd0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_8e1bd0
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/90b8cc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/90b8cc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..513199b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/90b8cc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_90b8cc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_90b8cc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_90b8cc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_90b8cc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/9695c6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/9695c6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8f213e7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/9695c6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_9695c6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_9695c6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_9695c6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_9695c6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/98a9cf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/98a9cf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bfb3eb0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/98a9cf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_98a9cf = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_98a9cf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_98a9cf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_98a9cf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/9c60e3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/9c60e3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c6ae270
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/9c60e3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_9c60e3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_9c60e3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_9c60e3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_9c60e3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.ir.msl
new file mode 100644
index 0000000..74486de
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_a54655 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_a54655
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_a54655
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_a54655
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/a9d3f5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/a9d3f5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..96c917c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/a9d3f5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_a9d3f5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d_array = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_a9d3f5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_a9d3f5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_a9d3f5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/bf2f76.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/bf2f76.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8f67ad1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/bf2f76.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_bf2f76 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_bf2f76
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_bf2f76
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_bf2f76
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/c1eca9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/c1eca9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2b54222
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/c1eca9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_c1eca9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<u32> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_c1eca9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_c1eca9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_c1eca9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/d3e21f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/d3e21f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..71cac35
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/d3e21f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_d3e21f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_d3e21f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_d3e21f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_d3e21f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e75a181
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_d3f655 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_d3f655
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_d3f655
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_d3f655
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/d75a0b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/d75a0b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e8263ac
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/d75a0b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_d75a0b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_d75a0b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_d75a0b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_d75a0b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/de8087.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/de8087.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d41bdd9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/de8087.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_de8087 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_de8087
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_de8087
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_de8087
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8fc96fb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_e47aac = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_e47aac
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_e47aac
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_e47aac
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLayers/f1783f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLayers/f1783f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e882280
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/f1783f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_f1783f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_f1783f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_f1783f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_f1783f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/181090.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/181090.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e02dce7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/181090.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_181090 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<u32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_181090
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_181090
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_181090
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/1a3fa9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/1a3fa9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d969be1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/1a3fa9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_1a3fa9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<i32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_1a3fa9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_1a3fa9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_1a3fa9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/1a7fc3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/1a7fc3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..45cb73e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/1a7fc3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_1a7fc3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<u32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_1a7fc3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_1a7fc3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_1a7fc3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/2267d8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/2267d8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a3bd139
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/2267d8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_2267d8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube<i32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_2267d8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_2267d8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_2267d8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/24b2c6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/24b2c6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bf578a3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/24b2c6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_24b2c6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<f32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_24b2c6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_24b2c6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_24b2c6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/2bea6c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/2bea6c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bfb1bda
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/2bea6c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_2bea6c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_cube_array = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_2bea6c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_2bea6c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_2bea6c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/2df1ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/2df1ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..22b80d2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/2df1ab.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_2df1ab = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube<f32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_2df1ab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_2df1ab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_2df1ab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/46dbd8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/46dbd8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b1901b9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/46dbd8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_46dbd8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<f32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_46dbd8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_46dbd8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_46dbd8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/60d9b8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/60d9b8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e1b3d63
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/60d9b8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_60d9b8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<u32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_60d9b8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_60d9b8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_60d9b8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/903920.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/903920.wgsl.expected.ir.msl
new file mode 100644
index 0000000..295ff41
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/903920.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_903920 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<i32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_903920
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_903920
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_903920
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/9a1a65.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/9a1a65.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cba68a8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/9a1a65.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_9a1a65 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<i32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_9a1a65
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_9a1a65
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_9a1a65
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/adc783.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/adc783.wgsl.expected.ir.msl
new file mode 100644
index 0000000..808c9f2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/adc783.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_adc783 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<i32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_adc783
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_adc783
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_adc783
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/ae911c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/ae911c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f53d7df
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/ae911c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_ae911c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d_array = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_ae911c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_ae911c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_ae911c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/c386c8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/c386c8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b27413e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/c386c8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_c386c8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube<u32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_c386c8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_c386c8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_c386c8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/c399f9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/c399f9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aeff09d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/c399f9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_c399f9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<f32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_c399f9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_c399f9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_c399f9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/c8c25c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/c8c25c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..920460e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/c8c25c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_c8c25c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_cube = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_c8c25c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_c8c25c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_c8c25c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/d63126.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/d63126.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9888865
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/d63126.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_d63126 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_d63126
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_d63126
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_d63126
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/d8f73b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/d8f73b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dedca70
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/d8f73b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_d8f73b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<f32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_d8f73b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_d8f73b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_d8f73b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/ef7944.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/ef7944.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2c3b05b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/ef7944.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_ef7944 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<f32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_ef7944
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_ef7944
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_ef7944
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/efd6df.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/efd6df.wgsl.expected.ir.msl
new file mode 100644
index 0000000..687d98f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/efd6df.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_efd6df = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<u32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_efd6df
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_efd6df
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_efd6df
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/f742c0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/f742c0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3c05d08
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/f742c0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_f742c0 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<i32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_f742c0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_f742c0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_f742c0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumLevels/fe2171.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumLevels/fe2171.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e39e952
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLevels/fe2171.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_fe2171 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<u32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_fe2171
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_fe2171
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_fe2171
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumSamples/50f399.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumSamples/50f399.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dd2dc07
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumSamples/50f399.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumSamples_50f399 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<u32> = load %arg_0
+    %5:u32 = textureNumSamples %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumSamples_50f399
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumSamples_50f399
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumSamples_50f399
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumSamples/c1a777.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumSamples/c1a777.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28de74c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumSamples/c1a777.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumSamples_c1a777 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<i32> = load %arg_0
+    %5:u32 = textureNumSamples %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumSamples_c1a777
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumSamples_c1a777
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumSamples_c1a777
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumSamples/dbb799.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumSamples/dbb799.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b12692e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumSamples/dbb799.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumSamples_dbb799 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<f32> = load %arg_0
+    %5:u32 = textureNumSamples %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumSamples_dbb799
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumSamples_dbb799
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumSamples_dbb799
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureNumSamples/ecd321.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureNumSamples/ecd321.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2f8220e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumSamples/ecd321.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_multisampled_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumSamples_ecd321 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_multisampled_2d = load %arg_0
+    %5:u32 = textureNumSamples %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumSamples_ecd321
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumSamples_ecd321
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumSamples_ecd321
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/0dff6c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a4825d6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_0dff6c = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSample %5, %6, vec2<f32>(1.0f), vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_0dff6c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/17e988.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/17e988.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f685c63
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/17e988.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_17e988 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSample %5, %6, vec2<f32>(1.0f), 1i, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_17e988
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/193203.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/193203.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4dd1bef
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/193203.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_193203 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSample %5, %6, vec2<f32>(1.0f), 1u, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_193203
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/1a4e1b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/1a4e1b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..655fd76
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/1a4e1b.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_1a4e1b = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSample %5, %6, vec2<f32>(1.0f), 1u
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_1a4e1b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/2149ec.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/2149ec.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b7f5dff
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/2149ec.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_2149ec = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_3d<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSample %5, %6, vec3<f32>(1.0f), vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_2149ec
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/38bbb9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/38bbb9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bb94541
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/38bbb9.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_38bbb9 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSample %5, %6, vec2<f32>(1.0f)
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_38bbb9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/3b50bd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/3b50bd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bf96072
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/3b50bd.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_3b50bd = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_3d<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSample %5, %6, vec3<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_3b50bd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d03bcc5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_4703d0 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSample %5, %6, vec2<f32>(1.0f), 1u, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_4703d0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/4dd1bf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/4dd1bf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e749d6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/4dd1bf.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_4dd1bf = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSample %5, %6, vec3<f32>(1.0f), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_4dd1bf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/51b514.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/51b514.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9f6cd4f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/51b514.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_51b514 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSample %5, %6, vec2<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_51b514
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.ir.msl
new file mode 100644
index 0000000..de7a558
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_60bf45 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSample %5, %6, vec2<f32>(1.0f), 1i, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_60bf45
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/6717ca.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/6717ca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fd13fc6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/6717ca.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_6717ca = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSample %5, %6, vec2<f32>(1.0f), 1i
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_6717ca
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/6e64fb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/6e64fb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..339434f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/6e64fb.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_6e64fb = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_1d<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSample %5, %6, 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_6e64fb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/7e9ffd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/7e9ffd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c11ddcf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/7e9ffd.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_7e9ffd = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSample %5, %6, vec2<f32>(1.0f), 1i
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_7e9ffd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/7fd8cb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/7fd8cb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3b72de8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/7fd8cb.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_7fd8cb = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSample %5, %6, vec3<f32>(1.0f), 1u
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_7fd8cb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/85c4ba.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/85c4ba.wgsl.expected.ir.msl
new file mode 100644
index 0000000..99ef344
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/85c4ba.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_85c4ba = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSample %5, %6, vec2<f32>(1.0f), vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_85c4ba
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/bc7477.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/bc7477.wgsl.expected.ir.msl
new file mode 100644
index 0000000..32e8b3e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/bc7477.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_bc7477 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSample %5, %6, vec3<f32>(1.0f), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_bc7477
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1183281
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_c2f4e8 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSample %5, %6, vec3<f32>(1.0f), 1i
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_c2f4e8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/d6b281.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/d6b281.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e455c4f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/d6b281.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_d6b281 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSample %5, %6, vec2<f32>(1.0f), 1u
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_d6b281
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/e53267.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/e53267.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c2947da
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/e53267.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_e53267 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSample %5, %6, vec3<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_e53267
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSample/ea7030.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSample/ea7030.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9b9abb2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSample/ea7030.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_ea7030 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSample %5, %6, vec3<f32>(1.0f)
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSample_ea7030
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f085c32
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:626 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_external, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBaseClampToEdge_7c04e6 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_external = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleBaseClampToEdge %5, %6, vec2<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleBaseClampToEdge_7c04e6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleBaseClampToEdge_7c04e6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleBaseClampToEdge_7c04e6
+    ret
+  }
+}
+
+Multiplanar external texture transform was not run.
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0741e42
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBaseClampToEdge_9ca02c = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleBaseClampToEdge %5, %6, vec2<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleBaseClampToEdge_9ca02c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleBaseClampToEdge_9ca02c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleBaseClampToEdge_9ca02c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleBias/1c707e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleBias/1c707e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b1e3b90
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleBias/1c707e.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_1c707e = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleBias %5, %6, vec2<f32>(1.0f), 1u, 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleBias_1c707e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleBias/53b9f7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleBias/53b9f7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..80acd63
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleBias/53b9f7.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_53b9f7 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleBias %5, %6, vec3<f32>(1.0f), 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleBias_53b9f7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleBias/594824.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleBias/594824.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b1d82b9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleBias/594824.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_594824 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_3d<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleBias %5, %6, vec3<f32>(1.0f), 1.0f, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleBias_594824
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleBias/6a9113.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleBias/6a9113.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c8c47ad
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleBias/6a9113.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_6a9113 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleBias %5, %6, vec2<f32>(1.0f), 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleBias_6a9113
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleBias/80e579.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleBias/80e579.wgsl.expected.ir.msl
new file mode 100644
index 0000000..537fe0d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleBias/80e579.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_80e579 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleBias %5, %6, vec2<f32>(1.0f), 1i, 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleBias_80e579
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleBias/87915c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleBias/87915c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aeffa96
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleBias/87915c.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_87915c = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleBias %5, %6, vec2<f32>(1.0f), 1u, 1.0f, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleBias_87915c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleBias/9dbb51.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleBias/9dbb51.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9cf4617
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleBias/9dbb51.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_9dbb51 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleBias %5, %6, vec2<f32>(1.0f), 1i, 1.0f, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleBias_9dbb51
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleBias/a161cf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleBias/a161cf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..05f27ed
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleBias/a161cf.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_a161cf = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleBias %5, %6, vec2<f32>(1.0f), 1.0f, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleBias_a161cf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleBias/c6953d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleBias/c6953d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..78c41bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleBias/c6953d.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_c6953d = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleBias %5, %6, vec3<f32>(1.0f), 1u, 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleBias_c6953d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleBias/d3fa1b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleBias/d3fa1b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a517b8b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleBias/d3fa1b.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_d3fa1b = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_3d<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleBias %5, %6, vec3<f32>(1.0f), 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleBias_d3fa1b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleBias/eed7c4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleBias/eed7c4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aa22f60
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleBias/eed7c4.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_eed7c4 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleBias %5, %6, vec3<f32>(1.0f), 1i, 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleBias_eed7c4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleCompare/1912e5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleCompare/1912e5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5cea052
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/1912e5.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompare_1912e5 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube_array = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:f32 = textureSampleCompare %5, %6, vec3<f32>(1.0f), 1u, 1.0f
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleCompare_1912e5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleCompare/3a5923.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleCompare/3a5923.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fde8cde
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/3a5923.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompare_3a5923 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:f32 = textureSampleCompare %5, %6, vec2<f32>(1.0f), 1.0f
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleCompare_3a5923
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleCompare/63fb83.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleCompare/63fb83.wgsl.expected.ir.msl
new file mode 100644
index 0000000..18dabd8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/63fb83.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompare_63fb83 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:f32 = textureSampleCompare %5, %6, vec3<f32>(1.0f), 1.0f
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleCompare_63fb83
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleCompare/7b5025.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleCompare/7b5025.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c67c808
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/7b5025.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompare_7b5025 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:f32 = textureSampleCompare %5, %6, vec2<f32>(1.0f), 1u, 1.0f, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleCompare_7b5025
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleCompare/90ae56.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleCompare/90ae56.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dad4402
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/90ae56.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompare_90ae56 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:f32 = textureSampleCompare %5, %6, vec2<f32>(1.0f), 1u, 1.0f
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleCompare_90ae56
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleCompare/a3ca7e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleCompare/a3ca7e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4876126
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/a3ca7e.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompare_a3ca7e = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube_array = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:f32 = textureSampleCompare %5, %6, vec3<f32>(1.0f), 1i, 1.0f
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleCompare_a3ca7e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4cb4115
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompare_af1051 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:f32 = textureSampleCompare %5, %6, vec2<f32>(1.0f), 1i, 1.0f, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleCompare_af1051
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleCompare/dd431d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleCompare/dd431d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f8b2b62
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/dd431d.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompare_dd431d = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:f32 = textureSampleCompare %5, %6, vec2<f32>(1.0f), 1i, 1.0f
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleCompare_dd431d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleCompare/dec064.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleCompare/dec064.wgsl.expected.ir.msl
new file mode 100644
index 0000000..61a9489
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/dec064.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompare_dec064 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:f32 = textureSampleCompare %5, %6, vec2<f32>(1.0f), 1.0f, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleCompare_dec064
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleCompareLevel/1116ed.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/1116ed.wgsl.expected.ir.msl
new file mode 100644
index 0000000..44009ae
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/1116ed.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompareLevel_1116ed = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:f32 = textureSampleCompareLevel %5, %6, vec2<f32>(1.0f), 1i, 1.0f
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleCompareLevel_1116ed
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleCompareLevel_1116ed
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleCompareLevel_1116ed
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleCompareLevel/1568e3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/1568e3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fd46fdb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/1568e3.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompareLevel_1568e3 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:f32 = textureSampleCompareLevel %5, %6, vec3<f32>(1.0f), 1.0f
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleCompareLevel_1568e3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleCompareLevel_1568e3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleCompareLevel_1568e3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleCompareLevel/2ad2b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/2ad2b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6d0eb75
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/2ad2b1.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompareLevel_2ad2b1 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:f32 = textureSampleCompareLevel %5, %6, vec2<f32>(1.0f), 1.0f
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleCompareLevel_2ad2b1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleCompareLevel_2ad2b1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleCompareLevel_2ad2b1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleCompareLevel/4cf3a2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/4cf3a2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b2916b2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/4cf3a2.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompareLevel_4cf3a2 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube_array = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:f32 = textureSampleCompareLevel %5, %6, vec3<f32>(1.0f), 1i, 1.0f
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleCompareLevel_4cf3a2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleCompareLevel_4cf3a2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleCompareLevel_4cf3a2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleCompareLevel/7dc3c0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/7dc3c0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ed2cee5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/7dc3c0.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompareLevel_7dc3c0 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:f32 = textureSampleCompareLevel %5, %6, vec2<f32>(1.0f), 1u, 1.0f
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleCompareLevel_7dc3c0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleCompareLevel_7dc3c0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleCompareLevel_7dc3c0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleCompareLevel/7f2b9a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/7f2b9a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f171e2c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/7f2b9a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompareLevel_7f2b9a = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:f32 = textureSampleCompareLevel %5, %6, vec2<f32>(1.0f), 1.0f, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleCompareLevel_7f2b9a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleCompareLevel_7f2b9a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleCompareLevel_7f2b9a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleCompareLevel/958c87.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/958c87.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3b66768
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/958c87.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompareLevel_958c87 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube_array = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:f32 = textureSampleCompareLevel %5, %6, vec3<f32>(1.0f), 1u, 1.0f
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleCompareLevel_958c87
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleCompareLevel_958c87
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleCompareLevel_958c87
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..179e858
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompareLevel_b6e47c = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:f32 = textureSampleCompareLevel %5, %6, vec2<f32>(1.0f), 1i, 1.0f, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleCompareLevel_b6e47c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleCompareLevel_b6e47c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleCompareLevel_b6e47c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleCompareLevel/bcb3dd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/bcb3dd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c35bb91
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/bcb3dd.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompareLevel_bcb3dd = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler_comparison = load %arg_1
+    %7:f32 = textureSampleCompareLevel %5, %6, vec2<f32>(1.0f), 1u, 1.0f, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleCompareLevel_bcb3dd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleCompareLevel_bcb3dd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleCompareLevel_bcb3dd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleGrad/21402b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleGrad/21402b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dc0dd82
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/21402b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_21402b = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_3d<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleGrad %5, %6, vec3<f32>(1.0f), vec3<f32>(1.0f), vec3<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleGrad_21402b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleGrad_21402b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleGrad_21402b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleGrad/2ecd8f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleGrad/2ecd8f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a87693e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/2ecd8f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_2ecd8f = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleGrad %5, %6, vec2<f32>(1.0f), 1i, vec2<f32>(1.0f), vec2<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleGrad_2ecd8f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleGrad_2ecd8f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleGrad_2ecd8f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleGrad/521263.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleGrad/521263.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cf7afd4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/521263.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_521263 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleGrad %5, %6, vec2<f32>(1.0f), vec2<f32>(1.0f), vec2<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleGrad_521263
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleGrad_521263
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleGrad_521263
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleGrad/5312f4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleGrad/5312f4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cc9150d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/5312f4.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_5312f4 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleGrad %5, %6, vec3<f32>(1.0f), vec3<f32>(1.0f), vec3<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleGrad_5312f4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleGrad_5312f4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleGrad_5312f4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleGrad/5884dd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleGrad/5884dd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a27bbfa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/5884dd.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_5884dd = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_3d<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleGrad %5, %6, vec3<f32>(1.0f), vec3<f32>(1.0f), vec3<f32>(1.0f), vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleGrad_5884dd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleGrad_5884dd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleGrad_5884dd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleGrad/7cd6de.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleGrad/7cd6de.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9b10bef
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/7cd6de.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_7cd6de = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleGrad %5, %6, vec2<f32>(1.0f), 1u, vec2<f32>(1.0f), vec2<f32>(1.0f), vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleGrad_7cd6de
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleGrad_7cd6de
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleGrad_7cd6de
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleGrad/a09131.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleGrad/a09131.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ba1cf37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/a09131.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_a09131 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleGrad %5, %6, vec2<f32>(1.0f), 1u, vec2<f32>(1.0f), vec2<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleGrad_a09131
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleGrad_a09131
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleGrad_a09131
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleGrad/bbb58f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleGrad/bbb58f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f322640
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/bbb58f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_bbb58f = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleGrad %5, %6, vec3<f32>(1.0f), 1u, vec3<f32>(1.0f), vec3<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleGrad_bbb58f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleGrad_bbb58f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleGrad_bbb58f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleGrad/d4e3c5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleGrad/d4e3c5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0133a3b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/d4e3c5.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_d4e3c5 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleGrad %5, %6, vec2<f32>(1.0f), vec2<f32>(1.0f), vec2<f32>(1.0f), vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleGrad_d4e3c5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleGrad_d4e3c5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleGrad_d4e3c5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleGrad/d65515.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleGrad/d65515.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e064b3f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/d65515.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_d65515 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleGrad %5, %6, vec2<f32>(1.0f), 1i, vec2<f32>(1.0f), vec2<f32>(1.0f), vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleGrad_d65515
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleGrad_d65515
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleGrad_d65515
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleGrad/e383db.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleGrad/e383db.wgsl.expected.ir.msl
new file mode 100644
index 0000000..804a90a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/e383db.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_e383db = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleGrad %5, %6, vec3<f32>(1.0f), 1i, vec3<f32>(1.0f), vec3<f32>(1.0f)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleGrad_e383db
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleGrad_e383db
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleGrad_e383db
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/02be59.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/02be59.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b9c2167
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/02be59.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_02be59 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSampleLevel %5, %6, vec2<f32>(1.0f), 1i
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_02be59
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_02be59
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_02be59
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/0b0a1b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/0b0a1b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8a8c344
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/0b0a1b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_0b0a1b = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleLevel %5, %6, vec2<f32>(1.0f), 1.0f, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_0b0a1b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_0b0a1b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_0b0a1b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/0bdd9a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/0bdd9a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..900ba71
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/0bdd9a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_0bdd9a = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleLevel %5, %6, vec3<f32>(1.0f), 1i, 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_0bdd9a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_0bdd9a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_0bdd9a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.ir.msl
new file mode 100644
index 0000000..114d4d2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_1b0291 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSampleLevel %5, %6, vec3<f32>(1.0f), 1i
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_1b0291
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_1b0291
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_1b0291
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0e9951f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_1bf73e = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSampleLevel %5, %6, vec2<f32>(1.0f), 1i, 1i
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_1bf73e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_1bf73e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_1bf73e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/265cc7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/265cc7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e2a7d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/265cc7.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_265cc7 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleLevel %5, %6, vec2<f32>(1.0f), 1u, 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_265cc7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_265cc7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_265cc7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/2974eb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/2974eb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..83a4615
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/2974eb.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_2974eb = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSampleLevel %5, %6, vec2<f32>(1.0f), 1i, 1u
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_2974eb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_2974eb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_2974eb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/302be4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/302be4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d8a7e3b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/302be4.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_302be4 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleLevel %5, %6, vec2<f32>(1.0f), 1i, 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_302be4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_302be4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_302be4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..07f27ca
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_36780e = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSampleLevel %5, %6, vec2<f32>(1.0f), 1i, 1i, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_36780e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_36780e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_36780e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b28e984
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_36f0d3 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSampleLevel %5, %6, vec2<f32>(1.0f), 1i, 1u, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_36f0d3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_36f0d3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_36f0d3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/3c3442.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/3c3442.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8d83b36
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/3c3442.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_3c3442 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSampleLevel %5, %6, vec2<f32>(1.0f), 1u, 1i
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_3c3442
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_3c3442
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_3c3442
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/615583.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/615583.wgsl.expected.ir.msl
new file mode 100644
index 0000000..62e88a8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/615583.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_615583 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSampleLevel %5, %6, vec2<f32>(1.0f), 1u, 1u
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_615583
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_615583
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_615583
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/73e892.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/73e892.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b6433d9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/73e892.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_73e892 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSampleLevel %5, %6, vec2<f32>(1.0f), 1u
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_73e892
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_73e892
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_73e892
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..136a3fb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_749baf = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSampleLevel %5, %6, vec2<f32>(1.0f), 1i, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_749baf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_749baf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_749baf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/941a53.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/941a53.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a9d7981
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/941a53.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_941a53 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSampleLevel %5, %6, vec3<f32>(1.0f), 1u, 1u
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_941a53
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_941a53
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_941a53
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/a12142.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/a12142.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d906eb4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/a12142.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_a12142 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSampleLevel %5, %6, vec3<f32>(1.0f), 1i, 1u
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_a12142
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_a12142
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_a12142
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/aab3b9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/aab3b9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..36c5614
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/aab3b9.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_aab3b9 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleLevel %5, %6, vec3<f32>(1.0f), 1u, 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_aab3b9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_aab3b9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_aab3b9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/abfcc0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/abfcc0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9c6619b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/abfcc0.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_abfcc0 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_3d<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleLevel %5, %6, vec3<f32>(1.0f), 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_abfcc0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_abfcc0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_abfcc0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.ir.msl
new file mode 100644
index 0000000..122369b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_ae5e39 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSampleLevel %5, %6, vec3<f32>(1.0f), 1i, 1i
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_ae5e39
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_ae5e39
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_ae5e39
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/ae92a2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/ae92a2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1719adc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/ae92a2.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_ae92a2 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSampleLevel %5, %6, vec3<f32>(1.0f), 1u
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_ae92a2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_ae92a2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_ae92a2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/b7c55c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/b7c55c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..893de9a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/b7c55c.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_b7c55c = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleLevel %5, %6, vec2<f32>(1.0f), 1i, 1.0f, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_b7c55c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_b7c55c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_b7c55c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/c32df7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/c32df7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d25cdf4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/c32df7.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_c32df7 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_cube<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleLevel %5, %6, vec3<f32>(1.0f), 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_c32df7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_c32df7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_c32df7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/c6aca6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/c6aca6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..313f648
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/c6aca6.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_c6aca6 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleLevel %5, %6, vec2<f32>(1.0f), 1.0f
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_c6aca6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_c6aca6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_c6aca6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..347cb7b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_cdfe0f = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSampleLevel %5, %6, vec2<f32>(1.0f), 1u, 1u, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_cdfe0f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_cdfe0f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_cdfe0f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/dcbecb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/dcbecb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6621e8c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/dcbecb.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_dcbecb = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_3d<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleLevel %5, %6, vec3<f32>(1.0f), 1.0f, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_dcbecb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_dcbecb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_dcbecb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..31be153
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_e6ce9e = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSampleLevel %5, %6, vec2<f32>(1.0f), 1u, 1i, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_e6ce9e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_e6ce9e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_e6ce9e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/f3b2c8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/f3b2c8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..073a582
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/f3b2c8.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_f3b2c8 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_2d = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSampleLevel %5, %6, vec2<f32>(1.0f), 1u, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_f3b2c8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_f3b2c8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_f3b2c8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/faa6d7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/faa6d7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8db5399
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/faa6d7.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_faa6d7 = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_2d_array<f32> = load %arg_0
+    %6:sampler = load %arg_1
+    %7:vec4<f32> = textureSampleLevel %5, %6, vec2<f32>(1.0f), 1u, 1.0f, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_faa6d7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_faa6d7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_faa6d7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureSampleLevel/ff11bc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureSampleLevel/ff11bc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e50331
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/ff11bc.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_ff11bc = func():void -> %b2 {
+  %b2 = block {
+    %5:texture_depth_cube_array = load %arg_0
+    %6:sampler = load %arg_1
+    %7:f32 = textureSampleLevel %5, %6, vec3<f32>(1.0f), 1u, 1i
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureSampleLevel_ff11bc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureSampleLevel_ff11bc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureSampleLevel_ff11bc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/00ca64.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/00ca64.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/00ca64.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/0148bd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/0148bd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0148bd.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.ir.msl
new file mode 100644
index 0000000..15bb19e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_031506 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<r32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_031506
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_031506
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_031506
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b1268bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_036d0e = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<i32>(1i), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_036d0e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_036d0e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_036d0e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8cfecbb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_03e7a0 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba16uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_03e7a0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_03e7a0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_03e7a0
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ab7624d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_042b06 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_042b06
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_042b06
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_042b06
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d93e560
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_052a4e = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_052a4e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_052a4e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_052a4e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0d4921d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_053664 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_053664
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_053664
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_053664
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/05ce15.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/05ce15.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/05ce15.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/064c7f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/064c7f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/064c7f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/068641.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/068641.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/068641.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/06e49c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/06e49c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/06e49c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/07548b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/07548b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/07548b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d833050
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_09e4d5 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<bgra8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_09e4d5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_09e4d5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_09e4d5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/0a1a79.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/0a1a79.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0a1a79.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4b85db4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_0ade9a = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1u, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_0ade9a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_0ade9a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_0ade9a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/0af6b5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/0af6b5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0af6b5.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/0c3dff.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/0c3dff.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0c3dff.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/0cc825.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/0cc825.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0cc825.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..56dd9d2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_0ff97a = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_0ff97a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_0ff97a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_0ff97a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2440d4f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_101325 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba16uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<u32>(1u), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_101325
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_101325
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_101325
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/102722.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/102722.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/102722.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6ee77af
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_145061 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba16uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_145061
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_145061
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_145061
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/158cf0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/158cf0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/158cf0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.ir.msl
new file mode 100644
index 0000000..78c153d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_178e69 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<bgra8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_178e69
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_178e69
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_178e69
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/1839f2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/1839f2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1839f2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f2f2ad2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_195d1b = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<u32>(1u), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_195d1b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_195d1b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_195d1b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7cf5366
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_197637 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba32float, read_write> = load %arg_0
+    %4:void = textureStore %3, 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_197637
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_197637
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_197637
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7ed6e30
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_1a6c0b = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1u, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_1a6c0b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_1a6c0b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_1a6c0b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/1a7d35.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/1a7d35.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1a7d35.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b905817
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_1af236 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_1af236
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_1af236
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_1af236
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/1bbd08.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/1bbd08.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1bbd08.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/1c02e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/1c02e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1c02e7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/1dc954.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/1dc954.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1dc954.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/1e20f2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/1e20f2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1e20f2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..67e38b7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_1e9fbd = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1i, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_1e9fbd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_1e9fbd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_1e9fbd
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/1efc36.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/1efc36.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1efc36.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/1f1ef8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/1f1ef8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1f1ef8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cfa3e02
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_1fef04 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<r32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1u, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_1fef04
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_1fef04
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_1fef04
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bf37743
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_2046db = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_2046db
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_2046db
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_2046db
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/207fdd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/207fdd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/207fdd.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..51e9bde
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_2173fd = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1u, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_2173fd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_2173fd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_2173fd
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/22d955.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/22d955.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/22d955.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/22f045.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/22f045.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/22f045.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/2383fc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2383fc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2383fc.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..adbab21
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_24e6b7 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<r32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<i32>(1i), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_24e6b7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_24e6b7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_24e6b7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/258ab0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/258ab0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/258ab0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7792768
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_26a26d = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba8snorm, read_write> = load %arg_0
+    %4:void = textureStore %3, 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_26a26d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_26a26d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_26a26d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/26bf70.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/26bf70.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/26bf70.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/27063a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/27063a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/27063a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/2796b4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2796b4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2796b4.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/285218.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/285218.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/285218.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/28a7ec.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/28a7ec.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/28a7ec.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.ir.msl
new file mode 100644
index 0000000..76e21d6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_28e109 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba8sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_28e109
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_28e109
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_28e109
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d17c0a4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_2a60c9 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1u, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_2a60c9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_2a60c9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_2a60c9
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/2ac6c7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2ac6c7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2ac6c7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a6ff53f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_2addd6 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1u, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_2addd6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_2addd6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_2addd6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.ir.msl
new file mode 100644
index 0000000..06cb596
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_2c76db = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba8snorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_2c76db
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_2c76db
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_2c76db
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/2d2835.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2d2835.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2d2835.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/2e4245.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2e4245.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2e4245.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/2e6102.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2e6102.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2e6102.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/2eb2a4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2eb2a4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2eb2a4.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/2ed2a3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2ed2a3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2ed2a3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b8ee715
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_2f29ea = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_2f29ea
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_2f29ea
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_2f29ea
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/30b0b0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/30b0b0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/30b0b0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8d8f0ae
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_312f27 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_312f27
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_312f27
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_312f27
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/31745b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/31745b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/31745b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/319029.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/319029.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/319029.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..483a7e2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_32d3d6 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<r32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1u, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_32d3d6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_32d3d6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_32d3d6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/32f368.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/32f368.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/32f368.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/330b7c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/330b7c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/330b7c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..100248d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_3310d3 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_3310d3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_3310d3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_3310d3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/331aee.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/331aee.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/331aee.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/33cec0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/33cec0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/33cec0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.ir.msl
new file mode 100644
index 0000000..72c33f8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_345332 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba8uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_345332
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_345332
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_345332
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/37ffd4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/37ffd4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/37ffd4.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/38e8d7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/38e8d7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/38e8d7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/3a52ac.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/3a52ac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3a52ac.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/3bb7a1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/3bb7a1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3bb7a1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/3bec15.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/3bec15.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3bec15.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/3c1937.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/3c1937.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3c1937.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3578d85
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_3d1ebe = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<r32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_3d1ebe
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_3d1ebe
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_3d1ebe
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/3d6f01.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/3d6f01.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3d6f01.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4050fe3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_3d96a4 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<u32>(1u), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_3d96a4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_3d96a4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_3d96a4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ab650d9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_3e0dc4 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_3e0dc4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_3e0dc4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_3e0dc4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0b2137d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_3f61ca = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba8snorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<i32>(1i), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_3f61ca
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_3f61ca
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_3f61ca
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/3fb31f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/3fb31f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3fb31f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/40c455.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/40c455.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/40c455.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/4288fc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/4288fc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4288fc.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.ir.msl
new file mode 100644
index 0000000..82fc47a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_441222 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_441222
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_441222
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_441222
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/441ba8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/441ba8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/441ba8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ba001c3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_4483e7 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1u, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_4483e7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_4483e7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_4483e7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e7e7125
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_44b372 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba16sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_44b372
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_44b372
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_44b372
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/44daa7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/44daa7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/44daa7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ad609f1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_473ead = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rg32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<u32>(1u), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_473ead
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_473ead
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_473ead
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.ir.msl
new file mode 100644
index 0000000..96547df
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_47bd70 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_47bd70
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_47bd70
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_47bd70
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/486500.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/486500.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/486500.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7bbb672
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_48cb56 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1u, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_48cb56
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_48cb56
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_48cb56
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8384c97
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_4bf1fd = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<r32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_4bf1fd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_4bf1fd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_4bf1fd
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/4c454f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/4c454f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4c454f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3eaf12b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_4c76b7 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_4c76b7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_4c76b7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_4c76b7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c9e6352
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_4cce74 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rg32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1i, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_4cce74
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_4cce74
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_4cce74
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/4d359d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/4d359d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4d359d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b2974f0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_4ddf52 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba16sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_4ddf52
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_4ddf52
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_4ddf52
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..51b2e28
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_4e2b3a = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_4e2b3a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_4e2b3a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_4e2b3a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/4fc057.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/4fc057.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4fc057.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2ce55eb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_5030f5 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_5030f5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_5030f5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_5030f5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/506a71.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/506a71.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/506a71.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.ir.msl
new file mode 100644
index 0000000..81bead8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_51ec82 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rg32float, read_write> = load %arg_0
+    %4:void = textureStore %3, 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_51ec82
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_51ec82
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_51ec82
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..00db0e3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_5246b4 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<r32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<u32>(1u), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_5246b4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_5246b4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_5246b4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/52f503.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/52f503.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/52f503.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c2629d7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_53a68b = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<r32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<i32>(1i), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_53a68b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_53a68b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_53a68b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0d19a14
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_5425ab = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rg32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_5425ab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_5425ab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_5425ab
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8d59ecb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_544f06 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<bgra8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_544f06
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_544f06
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_544f06
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..993a3d1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_55f9dc = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_55f9dc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_55f9dc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_55f9dc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.ir.msl
new file mode 100644
index 0000000..18bf6e4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_574a31 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rg32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1u, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_574a31
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_574a31
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_574a31
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.ir.msl
new file mode 100644
index 0000000..053a6ef
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_579b93 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<r32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_579b93
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_579b93
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_579b93
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/5841f8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5841f8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5841f8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b429ace
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_58fc35 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba16float, read_write> = load %arg_0
+    %4:void = textureStore %3, 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_58fc35
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_58fc35
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_58fc35
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/59a0ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/59a0ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/59a0ab.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/5a2f8f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5a2f8f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5a2f8f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3c28799
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_5a8b41 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_5a8b41
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_5a8b41
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_5a8b41
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..85b9753
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_5b17eb = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rg32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_5b17eb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_5b17eb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_5b17eb
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d3b07ef
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_5b4522 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba8uint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1u, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_5b4522
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_5b4522
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_5b4522
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/5bc4f3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5bc4f3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5bc4f3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/5ddc61.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5ddc61.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5ddc61.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c860353
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_5ec6b2 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<r32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<u32>(1u), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_5ec6b2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_5ec6b2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_5ec6b2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e6e9c27
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_5ee194 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_5ee194
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_5ee194
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_5ee194
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/5f9a49.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5f9a49.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5f9a49.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/602b5a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/602b5a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/602b5a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/60975f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/60975f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/60975f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.ir.msl
new file mode 100644
index 0000000..de399e8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_614b58 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1u, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_614b58
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_614b58
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_614b58
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.ir.msl
new file mode 100644
index 0000000..81d9418
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_635584 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rg32float, read_write> = load %arg_0
+    %4:void = textureStore %3, 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_635584
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_635584
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_635584
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9a40a6f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_63f34a = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rg32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_63f34a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_63f34a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_63f34a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..79c08a5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_646dbc = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<i32>(1i), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_646dbc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_646dbc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_646dbc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/658a74.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/658a74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/658a74.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..87b2ac0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_65b6aa = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba8sint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1i, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_65b6aa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_65b6aa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_65b6aa
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/682fd6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/682fd6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/682fd6.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/699a1b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/699a1b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/699a1b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/6b75c3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6b75c3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6b75c3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/6b80d2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6b80d2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6b80d2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5df92c1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_6be9e0 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<r32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<i32>(1i), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_6be9e0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_6be9e0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_6be9e0
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5fee7ba
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_6c4a70 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<r32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_6c4a70
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_6c4a70
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_6c4a70
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/6cff2e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6cff2e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6cff2e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.ir.msl
new file mode 100644
index 0000000..001e5f8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_6d1809 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_6d1809
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_6d1809
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_6d1809
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cafe49d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_6d259f = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_6d259f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_6d259f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_6d259f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/6da692.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6da692.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6da692.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9cb376c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_6e6cc0 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<r32float, read_write> = load %arg_0
+    %4:void = textureStore %3, 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_6e6cc0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_6e6cc0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_6e6cc0
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.ir.msl
new file mode 100644
index 0000000..53ffbbf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_6f3542 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba16uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<i32>(1i), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_6f3542
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_6f3542
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_6f3542
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/6f8642.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6f8642.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6f8642.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..282de11
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_6fb99b = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba16float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<i32>(1i), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_6fb99b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_6fb99b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_6fb99b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..79cf778
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_704e1f = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_704e1f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_704e1f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_704e1f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0be32fc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_706236 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_706236
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_706236
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_706236
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5639d76
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_706560 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1u, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_706560
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_706560
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_706560
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/726472.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/726472.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/726472.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a6a028d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_726d6d = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba16float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_726d6d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_726d6d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_726d6d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/72fa64.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/72fa64.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/72fa64.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/731349.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/731349.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/731349.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bfce710
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_73a735 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1i, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_73a735
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_73a735
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_73a735
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/73bbbc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/73bbbc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/73bbbc.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f878265
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_751256 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1i, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_751256
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_751256
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_751256
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/752da6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/752da6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/752da6.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2dbe77b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_75bbd5 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1u, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_75bbd5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_75bbd5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_75bbd5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/76affd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/76affd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/76affd.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8e5c127
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_7792fa = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rg32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<u32>(1u), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_7792fa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_7792fa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_7792fa
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/779d14.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/779d14.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/779d14.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/77c0ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/77c0ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/77c0ae.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.ir.msl
new file mode 100644
index 0000000..970103d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_7b8f86 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rg32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<u32>(1u), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_7b8f86
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_7b8f86
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_7b8f86
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/7bb211.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/7bb211.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7bb211.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/7cec8d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/7cec8d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7cec8d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/7cf6e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/7cf6e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7cf6e7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..857872b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_7d10e0 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba32float, read_write> = load %arg_0
+    %4:void = textureStore %3, 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_7d10e0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_7d10e0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_7d10e0
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.ir.msl
new file mode 100644
index 0000000..29bb235
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_7dd042 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1i, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_7dd042
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_7dd042
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_7dd042
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b93b61c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_7e787a = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<i32>(1i), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_7e787a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_7e787a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_7e787a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/7f7fae.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/7f7fae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7f7fae.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/804942.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/804942.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/804942.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/805dae.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/805dae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/805dae.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7027045
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_80bf1d = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rg32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_80bf1d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_80bf1d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_80bf1d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..82c9b7f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_818df6 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba16float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<u32>(1u), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_818df6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_818df6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_818df6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d95a491
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_81ae31 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_81ae31
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_81ae31
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_81ae31
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.ir.msl
new file mode 100644
index 0000000..50ad138
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_820272 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1u, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_820272
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_820272
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_820272
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/83bcc1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d8a3f21
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_84d435 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1i, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_84d435
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_84d435
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_84d435
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ebbe1b5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_84f4f4 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1i, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_84f4f4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_84f4f4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_84f4f4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f86dee2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_8676c9 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<r32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1i, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_8676c9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_8676c9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_8676c9
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cb6f11b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_86f713 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba16sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<i32>(1i), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_86f713
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_86f713
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_86f713
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/872747.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/872747.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/872747.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a7f2a9d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_877c92 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba8snorm, read_write> = load %arg_0
+    %4:void = textureStore %3, 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_877c92
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_877c92
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_877c92
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a9dee69
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_8815b1 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1u, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_8815b1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_8815b1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_8815b1
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3fe1b69
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_885921 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<u32>(1u), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_885921
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_885921
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_885921
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2c3c748
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_88ce7e = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba8sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<i32>(1i), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_88ce7e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_88ce7e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_88ce7e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1cf7842
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_8a16b0 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1i, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_8a16b0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_8a16b0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_8a16b0
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.ir.msl
new file mode 100644
index 0000000..38bbef2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_8a46ff = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba16float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_8a46ff
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_8a46ff
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_8a46ff
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..51af9f5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_8a85b9 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1i, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_8a85b9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_8a85b9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_8a85b9
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.ir.msl
new file mode 100644
index 0000000..23f9886
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_8a8681 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rg32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_8a8681
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_8a8681
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_8a8681
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5d7ba25
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_8ae0bc = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_8ae0bc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_8ae0bc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_8ae0bc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/8b9310.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8b9310.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8b9310.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/8bb287.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8bb287.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8bb287.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/8c76e9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8c76e9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8c76e9.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1e94cfb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_8cd841 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1u, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_8cd841
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_8cd841
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_8cd841
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/8dc54f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8dc54f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8dc54f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/8e0479.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8e0479.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8e0479.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..94187c3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_8ebdc9 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_8ebdc9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_8ebdc9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_8ebdc9
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/8ed9f8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8ed9f8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8ed9f8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/8f71a1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8f71a1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8f71a1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/8ff674.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8ff674.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8ff674.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fa7ab89
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_90960e = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba16float, read_write> = load %arg_0
+    %4:void = textureStore %3, 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_90960e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_90960e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_90960e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bae5da6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_90a553 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1u, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_90a553
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_90a553
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_90a553
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/958353.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/958353.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/958353.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/959d94.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/959d94.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/959d94.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/95e452.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/95e452.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/95e452.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/969534.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/969534.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/969534.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6ff9890
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_976636 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba8sint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1u, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_976636
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_976636
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_976636
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/9938b7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/9938b7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9938b7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/9a3ecc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/9a3ecc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9a3ecc.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/9aedd3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/9aedd3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9aedd3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0dba9af
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_9ba5c1 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba16uint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1u, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_9ba5c1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_9ba5c1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_9ba5c1
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f8d6916
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_9cea9e = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1u, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_9cea9e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_9cea9e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_9cea9e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3e444b1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_9d7c62 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba8uint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1i, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_9d7c62
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_9d7c62
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_9d7c62
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/9d8668.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/9d8668.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9d8668.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/9d9cd5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/9d9cd5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9d9cd5.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/9e3ec5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/9e3ec5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9e3ec5.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/9f5318.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/9f5318.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9f5318.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/9f7cea.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/9f7cea.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9f7cea.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b88f167
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_a0022f = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1i, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_a0022f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_a0022f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_a0022f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/a0f96e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a0f96e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a0f96e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/a1352c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a1352c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a1352c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.ir.msl
new file mode 100644
index 0000000..94c3549
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_a14041 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1i, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_a14041
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_a14041
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_a14041
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/a165b8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a165b8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a165b8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e5d0f7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_a19a12 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<i32>(1i), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_a19a12
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_a19a12
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_a19a12
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.ir.msl
new file mode 100644
index 0000000..719fc39
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_a24491 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_a24491
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_a24491
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_a24491
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/a4c338.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a4c338.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a4c338.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7d52587
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_a5b88e = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba16sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<u32>(1u), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_a5b88e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_a5b88e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_a5b88e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bbc07d0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_a5c925 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba8sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<u32>(1u), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_a5c925
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_a5c925
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_a5c925
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/a5e80d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a5e80d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a5e80d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fbc8309
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_a66ca4 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<bgra8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<i32>(1i), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_a66ca4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_a66ca4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_a66ca4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/a6a986.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a6a986.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a6a986.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/a6e78f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a6e78f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a6e78f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..51a0ff4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_a702b6 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1i, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_a702b6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_a702b6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_a702b6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e83bd48
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_a9298c = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rg32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1u, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_a9298c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_a9298c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_a9298c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/a9426c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a9426c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a9426c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e12c20c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_ab03b6 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba8uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<i32>(1i), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_ab03b6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_ab03b6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_ab03b6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e178d0f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_ab788e = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rg32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_ab788e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_ab788e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_ab788e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.ir.msl
new file mode 100644
index 0000000..936be54
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_abdd21 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1u, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_abdd21
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_abdd21
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_abdd21
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f3a9bbe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_ac0a55 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1u, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_ac0a55
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_ac0a55
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_ac0a55
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/ac67aa.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/ac67aa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ac67aa.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/aeb38a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/aeb38a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/aeb38a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..afa6857
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_aedea3 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1i, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_aedea3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_aedea3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_aedea3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.ir.msl
new file mode 100644
index 0000000..831a9b1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_b16110 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1u, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_b16110
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_b16110
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_b16110
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..90f50f9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_b286b4 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1i, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_b286b4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_b286b4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_b286b4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dcd6b8c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_b36bc1 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba8uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<u32>(1u), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_b36bc1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_b36bc1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_b36bc1
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/b42fd3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b42fd3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b42fd3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..115f07c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_b4389e = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<bgra8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<u32>(1u), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_b4389e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_b4389e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_b4389e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/b706b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b706b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b706b1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/b70ded.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b70ded.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b70ded.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d97c0a5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_b71c13 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_b71c13
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_b71c13
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_b71c13
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..89c2184
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_b7232c = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<r32float, read_write> = load %arg_0
+    %4:void = textureStore %3, 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_b7232c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_b7232c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_b7232c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/b76ff3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b76ff3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b76ff3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/b77161.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b77161.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b77161.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b066c54
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_b89ffb = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_b89ffb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_b89ffb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_b89ffb
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8ea826a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_b9c81a = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rg32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<i32>(1i), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_b9c81a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_b9c81a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_b9c81a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9169195
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_b9d863 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1i, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_b9d863
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_b9d863
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_b9d863
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/bbcb7f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/bbcb7f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bbcb7f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f648ca3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_bc1423 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1i, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_bc1423
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_bc1423
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_bc1423
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1c2756c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_bcc97a = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<r32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_bcc97a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_bcc97a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_bcc97a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ad3a189
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_bd6602 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1i, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_bd6602
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_bd6602
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_bd6602
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/be6e30.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/be6e30.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/be6e30.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/bedbfc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/bedbfc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bedbfc.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/bf775c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/bf775c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bf775c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ea33e66
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_c06463 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_c06463
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_c06463
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_c06463
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c966b2f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_c1c664 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_c1c664
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_c1c664
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_c1c664
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/c1f29e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c1f29e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c1f29e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fe119fd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_c1f760 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1u, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_c1f760
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_c1f760
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_c1f760
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/c2ca46.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c2ca46.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c2ca46.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/c32905.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c32905.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c32905.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.ir.msl
new file mode 100644
index 0000000..549511f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_c33478 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rg32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<i32>(1i), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_c33478
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_c33478
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_c33478
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5da6320
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_c35268 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1i, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_c35268
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_c35268
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_c35268
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/c5af1e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c5af1e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c5af1e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d5bf729
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_c63f05 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1i, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_c63f05
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_c63f05
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_c63f05
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f634cd3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_c79451 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba16sint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1u, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_c79451
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_c79451
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_c79451
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/c863be.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c863be.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c863be.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/c9d780.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c9d780.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c9d780.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/cb3b0b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/cb3b0b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/cb3b0b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.ir.msl
new file mode 100644
index 0000000..27adbd2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_ccac20 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_ccac20
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_ccac20
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_ccac20
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/cd6755.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/cd6755.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/cd6755.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.ir.msl
new file mode 100644
index 0000000..add810b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_ceb832 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1u, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_ceb832
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_ceb832
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_ceb832
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..46cf7be
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_d0d62c = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba8uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_d0d62c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_d0d62c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_d0d62c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4285ab4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_d0fadc = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_d0fadc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_d0fadc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_d0fadc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2a108fa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_d19db4 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rg32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<i32>(1i), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_d19db4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_d19db4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_d19db4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a0ae585
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_d1ab82 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_d1ab82
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_d1ab82
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_d1ab82
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/d26166.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/d26166.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d26166.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/d2b565.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/d2b565.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d2b565.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1d82607
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_d3a22b = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<u32>(1u), vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_d3a22b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_d3a22b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_d3a22b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/d4aa95.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/d4aa95.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d4aa95.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/d55e65.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/d55e65.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d55e65.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/d73b5c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/d82b0a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/d82b0a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d82b0a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.ir.msl
new file mode 100644
index 0000000..900ddc8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_d86d33 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_d86d33
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_d86d33
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_d86d33
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6187531
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_da530c = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba8sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_da530c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_da530c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_da530c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8e25e06
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_db5128 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1u, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_db5128
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_db5128
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_db5128
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/db92a2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/db92a2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/db92a2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a38f4a1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_dce0e2 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_dce0e2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_dce0e2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_dce0e2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/dd7d81.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/dd7d81.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dd7d81.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f018be1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_dd8b29 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1i, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_dd8b29
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_dd8b29
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_dd8b29
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/dde364.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/dde364.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dde364.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8a069c1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_de38e5 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<rgba8snorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<u32>(1u), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_de38e5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_de38e5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_de38e5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/de4b94.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/de4b94.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/de4b94.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d01c563
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_df0c51 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_3d<r32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec3<u32>(1u), vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_df0c51
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_df0c51
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_df0c51
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/df2ca4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/df2ca4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/df2ca4.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/dfa9a1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/dfa9a1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dfa9a1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/dffb13.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/dffb13.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dffb13.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..96a14e9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_e077e7 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rg32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1i, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_e077e7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_e077e7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_e077e7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/e0b666.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/e0b666.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e0b666.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f790806
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_e1784d = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_e1784d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_e1784d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_e1784d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/e38281.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/e38281.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e38281.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fd05964
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_e46fd8 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<bgra8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_e46fd8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_e46fd8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_e46fd8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dd00705
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_e72bdc = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1u, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_e72bdc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_e72bdc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_e72bdc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/e7c6d8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/e7c6d8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e7c6d8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b46bb3e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_e87f6e = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba16sint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1i, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_e87f6e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_e87f6e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_e87f6e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/e885e8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/e885e8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e885e8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/e8cbf7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/e8cbf7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e8cbf7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..93fdd90
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_ea30d2 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1i, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_ea30d2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_ea30d2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_ea30d2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/eb702f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/eb702f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/eb702f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/eb78b9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/eb78b9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/eb78b9.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/ee6acc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/ee6acc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ee6acc.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/ef9f2f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/ef9f2f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ef9f2f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.ir.msl
new file mode 100644
index 0000000..361138b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_f05928 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1u, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_f05928
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_f05928
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_f05928
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/f1e6d3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/f1e6d3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f1e6d3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.ir.msl
new file mode 100644
index 0000000..25840cf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_f64d69 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<r32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1i, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_f64d69
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_f64d69
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_f64d69
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.ir.msl
new file mode 100644
index 0000000..57335aa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_f6f392 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1i, vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_f6f392
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_f6f392
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_f6f392
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3352751
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_f8aaf9 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), 1i, vec4<i32>(1i)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_f8aaf9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_f8aaf9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_f8aaf9
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/f8dead.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/f8dead.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f8dead.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b408839
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_f975a0 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d<rgba8snorm, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<i32>(1i), vec4<f32>(1.0f)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_f975a0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_f975a0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_f975a0
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/f9be83.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/f9be83.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f9be83.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/fb9a8f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/fb9a8f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/fb9a8f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/fbf53f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/fbf53f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/fbf53f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..27605a4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_fc916e = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %4:void = textureStore %3, vec2<u32>(1u), 1i, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_fc916e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_fc916e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_fc916e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/fcbe66.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/fcbe66.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/fcbe66.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/fd350c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/fd350c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/fd350c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..999f7d5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_ff23b3 = func():void -> %b2 {
+  %b2 = block {
+    %3:texture_storage_1d<rgba16uint, read_write> = load %arg_0
+    %4:void = textureStore %3, 1i, vec4<u32>(1u)
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %textureStore_ff23b3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %textureStore_ff23b3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %textureStore_ff23b3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9ad38d5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat3x3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_06794e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, mat3x3<f16>, read_write> = var, mat3x3<f16>(vec3<f16>(1.0h))
+    %4:mat3x3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %transpose_06794e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %transpose_06794e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %transpose_06794e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/2585cd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/2585cd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..91e8cd9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/2585cd.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_2585cd = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, mat3x4<f32>, read_write> = var, mat3x4<f32>(vec4<f32>(1.0f))
+    %4:mat3x4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %transpose_2585cd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %transpose_2585cd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %transpose_2585cd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/31d679.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/31d679.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b2c60fb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/31d679.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_31d679 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, mat2x2<f32>, read_write> = var, mat2x2<f32>(vec2<f32>(1.0f))
+    %4:mat2x2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %transpose_31d679
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %transpose_31d679
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %transpose_31d679
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/31e37e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/31e37e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0a1b06b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/31e37e.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_31e37e = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, mat2x4<f32>, read_write> = var, mat2x4<f32>(vec4<f32>(1.0f))
+    %4:mat2x4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %transpose_31e37e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %transpose_31e37e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %transpose_31e37e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/32dd64.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/32dd64.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/32dd64.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/4ce359.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/4ce359.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f1dccb0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/4ce359.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_4ce359 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, mat4x2<f32>, read_write> = var, mat4x2<f32>(vec2<f32>(1.0f))
+    %4:mat4x2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %transpose_4ce359
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %transpose_4ce359
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %transpose_4ce359
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/4dc9a1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/4dc9a1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..407270c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/4dc9a1.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_4dc9a1 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, mat3x2<f32>, read_write> = var, mat3x2<f32>(vec2<f32>(1.0f))
+    %4:mat3x2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %transpose_4dc9a1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %transpose_4dc9a1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %transpose_4dc9a1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/553e90.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/553e90.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/553e90.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/5c133c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/5c133c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/5c133c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b75b369
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat2x4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_5edd96 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, mat2x4<f16>, read_write> = var, mat2x4<f16>(vec4<f16>(1.0h))
+    %4:mat2x4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %transpose_5edd96
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %transpose_5edd96
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %transpose_5edd96
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..00fb468
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat3x4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_5f36bf = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, mat3x4<f16>, read_write> = var, mat3x4<f16>(vec4<f16>(1.0h))
+    %4:mat3x4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %transpose_5f36bf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %transpose_5f36bf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %transpose_5f36bf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/66fce8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/66fce8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/66fce8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/70ca11.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/70ca11.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/70ca11.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..be2d040
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat2x2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_7be8b2 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, mat2x2<f16>, read_write> = var, mat2x2<f16>(vec2<f16>(1.0h))
+    %4:mat2x2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %transpose_7be8b2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %transpose_7be8b2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %transpose_7be8b2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/7eb2c5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/7eb2c5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/7eb2c5.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/844869.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.ir.msl
new file mode 100644
index 0000000..55eab2f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat4x4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_844869 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, mat4x4<f16>, read_write> = var, mat4x4<f16>(vec4<f16>(1.0h))
+    %4:mat4x4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %transpose_844869
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %transpose_844869
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %transpose_844869
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/84a763.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/84a763.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/84a763.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/854336.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/854336.wgsl.expected.ir.msl
new file mode 100644
index 0000000..de06f5d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/854336.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_854336 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, mat3x3<f32>, read_write> = var, mat3x3<f32>(vec3<f32>(1.0f))
+    %4:mat3x3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %transpose_854336
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %transpose_854336
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %transpose_854336
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b6dcde2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat4x3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_8c06ce = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, mat4x3<f16>, read_write> = var, mat4x3<f16>(vec3<f16>(1.0h))
+    %4:mat4x3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %transpose_8c06ce
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %transpose_8c06ce
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %transpose_8c06ce
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/ace596.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/ace596.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/ace596.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a4b77da
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat2x3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_b9ad1f = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, mat2x3<f16>, read_write> = var, mat2x3<f16>(vec3<f16>(1.0h))
+    %4:mat2x3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %transpose_b9ad1f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %transpose_b9ad1f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %transpose_b9ad1f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/c1b600.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/c1b600.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2b75b82
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/c1b600.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_c1b600 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, mat4x4<f32>, read_write> = var, mat4x4<f32>(vec4<f32>(1.0f))
+    %4:mat4x4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %transpose_c1b600
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %transpose_c1b600
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %transpose_c1b600
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.ir.msl
new file mode 100644
index 0000000..11097de
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat3x2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_d6faec = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, mat3x2<f16>, read_write> = var, mat3x2<f16>(vec2<f16>(1.0h))
+    %4:mat3x2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %transpose_d6faec
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %transpose_d6faec
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %transpose_d6faec
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/d8f8ba.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/d8f8ba.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9878cdf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/d8f8ba.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_d8f8ba = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, mat4x3<f32>, read_write> = var, mat4x3<f32>(vec3<f32>(1.0f))
+    %4:mat4x3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %transpose_d8f8ba
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %transpose_d8f8ba
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %transpose_d8f8ba
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/dc671a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/dc671a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/dc671a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/ed4bdc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/ed4bdc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b9bcba7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/ed4bdc.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_ed4bdc = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, mat2x3<f32>, read_write> = var, mat2x3<f32>(vec3<f32>(1.0f))
+    %4:mat2x3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %transpose_ed4bdc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %transpose_ed4bdc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %transpose_ed4bdc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bd59ff8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat4x2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_faeb05 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, mat4x2<f16>, read_write> = var, mat4x2<f16>(vec2<f16>(1.0h))
+    %4:mat4x2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %transpose_faeb05
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %transpose_faeb05
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %transpose_faeb05
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..016d2b3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%trunc_103ab8 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %trunc_103ab8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %trunc_103ab8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %trunc_103ab8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/trunc/117396.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/trunc/117396.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/trunc/117396.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/trunc/562d05.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/trunc/562d05.wgsl.expected.ir.msl
new file mode 100644
index 0000000..428a358
--- /dev/null
+++ b/test/tint/builtins/gen/literal/trunc/562d05.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%trunc_562d05 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %trunc_562d05
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %trunc_562d05
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %trunc_562d05
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/trunc/7d6ded.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/trunc/7d6ded.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/trunc/7d6ded.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a69b160
--- /dev/null
+++ b/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%trunc_a56109 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %trunc_a56109
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %trunc_a56109
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %trunc_a56109
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/trunc/c12555.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/trunc/c12555.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/trunc/c12555.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5665b11
--- /dev/null
+++ b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%trunc_cc2b0d = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %trunc_cc2b0d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %trunc_cc2b0d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %trunc_cc2b0d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.ir.msl
new file mode 100644
index 0000000..664188b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%trunc_ce7c17 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %trunc_ce7c17
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %trunc_ce7c17
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %trunc_ce7c17
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/trunc/e183aa.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/trunc/e183aa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ced128b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/trunc/e183aa.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%trunc_e183aa = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %trunc_e183aa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %trunc_e183aa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %trunc_e183aa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/trunc/eb83df.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/trunc/eb83df.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0944ebc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/trunc/eb83df.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%trunc_eb83df = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %trunc_eb83df
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %trunc_eb83df
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %trunc_eb83df
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/trunc/f0f1a1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/trunc/f0f1a1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/trunc/f0f1a1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/literal/trunc/f370d3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/trunc/f370d3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1c2f0ea
--- /dev/null
+++ b/test/tint/builtins/gen/literal/trunc/f370d3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%trunc_f370d3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %trunc_f370d3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %trunc_f370d3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %trunc_f370d3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e0342ce
--- /dev/null
+++ b/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%unpack2x16float_32a5cf = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.00000005960464477539f, 0.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %unpack2x16float_32a5cf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %unpack2x16float_32a5cf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %unpack2x16float_32a5cf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f6754a3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%unpack2x16snorm_b4aea6 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.00003051850944757462f, 0.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %unpack2x16snorm_b4aea6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %unpack2x16snorm_b4aea6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %unpack2x16snorm_b4aea6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d087ff3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%unpack2x16unorm_7699c0 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.00001525902189314365f, 0.0f)
+    %4:vec2<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %unpack2x16unorm_7699c0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %unpack2x16unorm_7699c0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %unpack2x16unorm_7699c0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9a7fa36
--- /dev/null
+++ b/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%unpack4x8snorm_523fb3 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.00787401571869850159f, 0.0f, 0.0f, 0.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %unpack4x8snorm_523fb3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %unpack4x8snorm_523fb3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %unpack4x8snorm_523fb3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..da463f7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%unpack4x8unorm_750c74 = func():void -> %b2 {
+  %b2 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.0039215688593685627f, 0.0f, 0.0f, 0.0f)
+    %4:vec4<f32> = load %res
+    store %prevent_dce, %4
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %6:void = call %unpack4x8unorm_750c74
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %8:void = call %unpack4x8unorm_750c74
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %10:void = call %unpack4x8unorm_750c74
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/workgroupBarrier/a17f7f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/workgroupBarrier/a17f7f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/workgroupBarrier/a17f7f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/literal/workgroupUniformLoad/37307c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/workgroupUniformLoad/37307c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1cea43c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/workgroupUniformLoad/37307c.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, u32, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%workgroupUniformLoad_37307c = func():void -> %b2 {
+  %b2 = block {
+    %4:void = workgroupBarrier
+    %5:u32 = load %arg_0
+    %6:void = workgroupBarrier
+    %res:ptr<function, u32, read_write> = var, %5
+    %8:u32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %workgroupUniformLoad_37307c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/workgroupUniformLoad/7a857c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/workgroupUniformLoad/7a857c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c099224
--- /dev/null
+++ b/test/tint/builtins/gen/literal/workgroupUniformLoad/7a857c.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, f32, read_write> = var
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%workgroupUniformLoad_7a857c = func():void -> %b2 {
+  %b2 = block {
+    %4:void = workgroupBarrier
+    %5:f32 = load %arg_0
+    %6:void = workgroupBarrier
+    %res:ptr<function, f32, read_write> = var, %5
+    %8:f32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %workgroupUniformLoad_7a857c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/workgroupUniformLoad/9d33de.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/workgroupUniformLoad/9d33de.wgsl.expected.ir.msl
new file mode 100644
index 0000000..44c439c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/workgroupUniformLoad/9d33de.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, i32, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%workgroupUniformLoad_9d33de = func():void -> %b2 {
+  %b2 = block {
+    %4:void = workgroupBarrier
+    %5:i32 = load %arg_0
+    %6:void = workgroupBarrier
+    %res:ptr<function, i32, read_write> = var, %5
+    %8:i32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %workgroupUniformLoad_9d33de
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/literal/workgroupUniformLoad/e07d08.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/workgroupUniformLoad/e07d08.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0724ae1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/workgroupUniformLoad/e07d08.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, f16, read_write> = var
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%workgroupUniformLoad_e07d08 = func():void -> %b2 {
+  %b2 = block {
+    %4:void = workgroupBarrier
+    %5:f16 = load %arg_0
+    %6:void = workgroupBarrier
+    %res:ptr<function, f16, read_write> = var, %5
+    %8:f16 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %workgroupUniformLoad_e07d08
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/abs/002533.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/002533.wgsl.expected.ir.msl
new file mode 100644
index 0000000..116ad40
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/002533.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_002533 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = abs %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %abs_002533
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %abs_002533
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %abs_002533
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/abs/005174.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/005174.wgsl.expected.ir.msl
new file mode 100644
index 0000000..18282c6
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/005174.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_005174 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = abs %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %abs_005174
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %abs_005174
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %abs_005174
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/abs/1ce782.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/1ce782.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a302b13
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/1ce782.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_1ce782 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %4:vec4<u32> = load %arg_0
+    %5:vec4<u32> = abs %4
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %abs_1ce782
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %abs_1ce782
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %abs_1ce782
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/abs/1e9d53.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/1e9d53.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a2c3292
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/1e9d53.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_1e9d53 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = abs %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %abs_1e9d53
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %abs_1e9d53
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %abs_1e9d53
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/abs/2f861b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/abs/421ca3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/421ca3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..db74e6d
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/421ca3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_421ca3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = abs %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %abs_421ca3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %abs_421ca3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %abs_421ca3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/abs/467cd1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/467cd1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..865b7e3
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/467cd1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%abs_467cd1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %4:u32 = load %arg_0
+    %5:u32 = abs %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %abs_467cd1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %abs_467cd1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %abs_467cd1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/abs/4ad288.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/4ad288.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bf7953a
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/4ad288.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%abs_4ad288 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, i32, read_write> = var, 1i
+    %4:i32 = load %arg_0
+    %5:i32 = abs %4
+    %res:ptr<function, i32, read_write> = var, %5
+    %7:i32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %abs_4ad288
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %abs_4ad288
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %abs_4ad288
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/abs/538d29.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/538d29.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2c125a4
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/538d29.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_538d29 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = abs %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %abs_538d29
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %abs_538d29
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %abs_538d29
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/abs/577d6e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/abs/5ad50a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/5ad50a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6cb8bc3
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/5ad50a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_5ad50a = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %4:vec3<i32> = load %arg_0
+    %5:vec3<i32> = abs %4
+    %res:ptr<function, vec3<i32>, read_write> = var, %5
+    %7:vec3<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %abs_5ad50a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %abs_5ad50a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %abs_5ad50a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/abs/5ae4fe.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/5ae4fe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e79a70e
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/5ae4fe.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_5ae4fe = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = abs %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %abs_5ae4fe
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %abs_5ae4fe
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %abs_5ae4fe
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/abs/7326de.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/7326de.wgsl.expected.ir.msl
new file mode 100644
index 0000000..93be634
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/7326de.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_7326de = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %4:vec3<u32> = load %arg_0
+    %5:vec3<u32> = abs %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %abs_7326de
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %abs_7326de
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %abs_7326de
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/abs/7f28e6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/7f28e6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..405f46d
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/7f28e6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_7f28e6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %4:vec2<u32> = load %arg_0
+    %5:vec2<u32> = abs %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %abs_7f28e6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %abs_7f28e6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %abs_7f28e6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/abs/7faa9e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/7faa9e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8364a6d
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/7faa9e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_7faa9e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %4:vec2<i32> = load %arg_0
+    %5:vec2<i32> = abs %4
+    %res:ptr<function, vec2<i32>, read_write> = var, %5
+    %7:vec2<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %abs_7faa9e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %abs_7faa9e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %abs_7faa9e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/abs/9c80a6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/9c80a6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e525a98
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/9c80a6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%abs_9c80a6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %4:vec4<i32> = load %arg_0
+    %5:vec4<i32> = abs %4
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %abs_9c80a6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %abs_9c80a6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %abs_9c80a6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/abs/b96037.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/b96037.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1d6e8d9
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/b96037.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%abs_b96037 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = abs %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %abs_b96037
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %abs_b96037
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %abs_b96037
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/abs/c3321c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/abs/e28785.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/abs/fd247f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/abs/fd247f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fec4485
--- /dev/null
+++ b/test/tint/builtins/gen/var/abs/fd247f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%abs_fd247f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %arg_0
+    %5:f16 = abs %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %abs_fd247f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %abs_fd247f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %abs_fd247f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/acos/004aff.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acos/004aff.wgsl.expected.ir.msl
new file mode 100644
index 0000000..91e71be
--- /dev/null
+++ b/test/tint/builtins/gen/var/acos/004aff.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%acos_004aff = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.96875h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = acos %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %acos_004aff
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %acos_004aff
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %acos_004aff
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/acos/069188.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acos/069188.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/acos/069188.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/acos/15d35b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acos/15d35b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/acos/15d35b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/acos/203628.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acos/203628.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8702273
--- /dev/null
+++ b/test/tint/builtins/gen/var/acos/203628.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%acos_203628 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.96875h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = acos %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %acos_203628
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %acos_203628
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %acos_203628
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/acos/303e3d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acos/303e3d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3ec7b12
--- /dev/null
+++ b/test/tint/builtins/gen/var/acos/303e3d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%acos_303e3d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 0.96875h
+    %4:f16 = load %arg_0
+    %5:f16 = acos %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %acos_303e3d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %acos_303e3d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %acos_303e3d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/acos/489247.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acos/489247.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a1aaf77
--- /dev/null
+++ b/test/tint/builtins/gen/var/acos/489247.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%acos_489247 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 0.96891242265701293945f
+    %4:f32 = load %arg_0
+    %5:f32 = acos %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %acos_489247
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %acos_489247
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %acos_489247
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/acos/4dac75.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acos/4dac75.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/acos/4dac75.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/acos/5e9ad2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acos/5e9ad2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/acos/5e9ad2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d8d20ad
--- /dev/null
+++ b/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%acos_8e2acf = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.96891242265701293945f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = acos %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %acos_8e2acf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %acos_8e2acf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %acos_8e2acf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/acos/a610c4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ad5c9ee
--- /dev/null
+++ b/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%acos_a610c4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.96891242265701293945f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = acos %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %acos_a610c4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %acos_a610c4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %acos_a610c4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/acos/dfc915.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.ir.msl
new file mode 100644
index 0000000..505a9eb
--- /dev/null
+++ b/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%acos_dfc915 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.96891242265701293945f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = acos %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %acos_dfc915
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %acos_dfc915
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %acos_dfc915
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/acos/f47057.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acos/f47057.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8e20618
--- /dev/null
+++ b/test/tint/builtins/gen/var/acos/f47057.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%acos_f47057 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.96875h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = acos %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %acos_f47057
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %acos_f47057
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %acos_f47057
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/acosh/17260e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/acosh/490aae.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f63bcb5
--- /dev/null
+++ b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%acosh_5f49d8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.54296875h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = acosh %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %acosh_5f49d8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %acosh_5f49d8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %acosh_5f49d8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/acosh/640883.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3ea9594
--- /dev/null
+++ b/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%acosh_640883 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.54308068752288818359f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = acosh %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %acosh_640883
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %acosh_640883
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %acosh_640883
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..12a06cc
--- /dev/null
+++ b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%acosh_a37dfe = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.54296875h
+    %4:f16 = load %arg_0
+    %5:f16 = acosh %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %acosh_a37dfe
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %acosh_a37dfe
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %acosh_a37dfe
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e8c6844
--- /dev/null
+++ b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%acosh_d51ccb = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.54308068752288818359f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = acosh %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %acosh_d51ccb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %acosh_d51ccb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %acosh_d51ccb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b7f15cf
--- /dev/null
+++ b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%acosh_de60d8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.54296875h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = acosh %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %acosh_de60d8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %acosh_de60d8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %acosh_de60d8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ae00a53
--- /dev/null
+++ b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%acosh_e38f5c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.54308068752288818359f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = acosh %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %acosh_e38f5c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %acosh_e38f5c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %acosh_e38f5c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..513597b
--- /dev/null
+++ b/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%acosh_ecf2d1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.54308068752288818359f
+    %4:f32 = load %arg_0
+    %5:f32 = acosh %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %acosh_ecf2d1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %acosh_ecf2d1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %acosh_ecf2d1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/acosh/f56574.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.ir.msl
new file mode 100644
index 0000000..86ac537
--- /dev/null
+++ b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%acosh_f56574 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.54296875h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = acosh %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %acosh_f56574
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %acosh_f56574
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %acosh_f56574
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/all/353d6a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/all/353d6a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fe784c6
--- /dev/null
+++ b/test/tint/builtins/gen/var/all/353d6a.wgsl.expected.ir.msl
@@ -0,0 +1,46 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%all_353d6a = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, bool, read_write> = var, true
+    %4:bool = load %arg_0
+    %5:bool = all %4
+    %res:ptr<function, bool, read_write> = var, %5
+    %7:bool = load %res
+    %8:bool = eq %7, false
+    %9:bool = all %8
+    %10:i32 = select 0i, 1i, %9
+    store %prevent_dce, %10
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %all_353d6a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %all_353d6a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %all_353d6a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/all/986c7b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/all/986c7b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..17d0858
--- /dev/null
+++ b/test/tint/builtins/gen/var/all/986c7b.wgsl.expected.ir.msl
@@ -0,0 +1,46 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%all_986c7b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<bool>, read_write> = var, vec4<bool>(true)
+    %4:vec4<bool> = load %arg_0
+    %5:bool = all %4
+    %res:ptr<function, bool, read_write> = var, %5
+    %7:bool = load %res
+    %8:bool = eq %7, false
+    %9:bool = all %8
+    %10:i32 = select 0i, 1i, %9
+    store %prevent_dce, %10
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %all_986c7b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %all_986c7b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %all_986c7b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/all/bd2dba.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/all/bd2dba.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1dbf723
--- /dev/null
+++ b/test/tint/builtins/gen/var/all/bd2dba.wgsl.expected.ir.msl
@@ -0,0 +1,46 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%all_bd2dba = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<bool>, read_write> = var, vec3<bool>(true)
+    %4:vec3<bool> = load %arg_0
+    %5:bool = all %4
+    %res:ptr<function, bool, read_write> = var, %5
+    %7:bool = load %res
+    %8:bool = eq %7, false
+    %9:bool = all %8
+    %10:i32 = select 0i, 1i, %9
+    store %prevent_dce, %10
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %all_bd2dba
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %all_bd2dba
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %all_bd2dba
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/all/f46790.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/all/f46790.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aceea71
--- /dev/null
+++ b/test/tint/builtins/gen/var/all/f46790.wgsl.expected.ir.msl
@@ -0,0 +1,46 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%all_f46790 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<bool>, read_write> = var, vec2<bool>(true)
+    %4:vec2<bool> = load %arg_0
+    %5:bool = all %4
+    %res:ptr<function, bool, read_write> = var, %5
+    %7:bool = load %res
+    %8:bool = eq %7, false
+    %9:bool = all %8
+    %10:i32 = select 0i, 1i, %9
+    store %prevent_dce, %10
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %all_f46790
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %all_f46790
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %all_f46790
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/any/083428.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/any/083428.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2558f24
--- /dev/null
+++ b/test/tint/builtins/gen/var/any/083428.wgsl.expected.ir.msl
@@ -0,0 +1,46 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%any_083428 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<bool>, read_write> = var, vec4<bool>(true)
+    %4:vec4<bool> = load %arg_0
+    %5:bool = any %4
+    %res:ptr<function, bool, read_write> = var, %5
+    %7:bool = load %res
+    %8:bool = eq %7, false
+    %9:bool = all %8
+    %10:i32 = select 0i, 1i, %9
+    store %prevent_dce, %10
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %any_083428
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %any_083428
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %any_083428
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/any/0e3e58.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/any/0e3e58.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4f7d4a4
--- /dev/null
+++ b/test/tint/builtins/gen/var/any/0e3e58.wgsl.expected.ir.msl
@@ -0,0 +1,46 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%any_0e3e58 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<bool>, read_write> = var, vec2<bool>(true)
+    %4:vec2<bool> = load %arg_0
+    %5:bool = any %4
+    %res:ptr<function, bool, read_write> = var, %5
+    %7:bool = load %res
+    %8:bool = eq %7, false
+    %9:bool = all %8
+    %10:i32 = select 0i, 1i, %9
+    store %prevent_dce, %10
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %any_0e3e58
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %any_0e3e58
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %any_0e3e58
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/any/2ab91a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/any/2ab91a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..67c8065
--- /dev/null
+++ b/test/tint/builtins/gen/var/any/2ab91a.wgsl.expected.ir.msl
@@ -0,0 +1,46 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%any_2ab91a = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, bool, read_write> = var, true
+    %4:bool = load %arg_0
+    %5:bool = any %4
+    %res:ptr<function, bool, read_write> = var, %5
+    %7:bool = load %res
+    %8:bool = eq %7, false
+    %9:bool = all %8
+    %10:i32 = select 0i, 1i, %9
+    store %prevent_dce, %10
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %any_2ab91a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %any_2ab91a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %any_2ab91a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/any/e755c1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/any/e755c1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e350eea
--- /dev/null
+++ b/test/tint/builtins/gen/var/any/e755c1.wgsl.expected.ir.msl
@@ -0,0 +1,46 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%any_e755c1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<bool>, read_write> = var, vec3<bool>(true)
+    %4:vec3<bool> = load %arg_0
+    %5:bool = any %4
+    %res:ptr<function, bool, read_write> = var, %5
+    %7:bool = load %res
+    %8:bool = eq %7, false
+    %9:bool = all %8
+    %10:i32 = select 0i, 1i, %9
+    store %prevent_dce, %10
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %any_e755c1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %any_e755c1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %any_e755c1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/arrayLength/1588cd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/arrayLength/1588cd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7cb8118
--- /dev/null
+++ b/test/tint/builtins/gen/var/arrayLength/1588cd.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RO = struct @align(4) {
+  arg_0:array<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_ro:ptr<storage, SB_RO, read> = var @binding_point(0, 1)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%arrayLength_1588cd = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, array<i32>, read> = access %sb_ro, 0u
+    %5:u32 = arrayLength %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %arrayLength_1588cd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %arrayLength_1588cd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %arrayLength_1588cd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/arrayLength/61b1c7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/arrayLength/61b1c7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b3f8345
--- /dev/null
+++ b/test/tint/builtins/gen/var/arrayLength/61b1c7.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:array<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%arrayLength_61b1c7 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, array<i32>, read_write> = access %sb_rw, 0u
+    %5:u32 = arrayLength %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %arrayLength_61b1c7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %arrayLength_61b1c7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %arrayLength_61b1c7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7f0f1fb
--- /dev/null
+++ b/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RO = struct @align(2) {
+  arg_0:array<f16> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_ro:ptr<storage, SB_RO, read> = var @binding_point(0, 1)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%arrayLength_8421b9 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, array<f16>, read> = access %sb_ro, 0u
+    %5:u32 = arrayLength %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %arrayLength_8421b9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %arrayLength_8421b9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %arrayLength_8421b9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/arrayLength/a0f5ca.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/arrayLength/a0f5ca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fa401db
--- /dev/null
+++ b/test/tint/builtins/gen/var/arrayLength/a0f5ca.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RO = struct @align(4) {
+  arg_0:array<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_ro:ptr<storage, SB_RO, read> = var @binding_point(0, 1)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%arrayLength_a0f5ca = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, array<f32>, read> = access %sb_ro, 0u
+    %5:u32 = arrayLength %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %arrayLength_a0f5ca
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %arrayLength_a0f5ca
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %arrayLength_a0f5ca
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b5bbeb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(2) {
+  arg_0:array<f16> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%arrayLength_cbd6b5 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, array<f16>, read_write> = access %sb_rw, 0u
+    %5:u32 = arrayLength %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %arrayLength_cbd6b5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %arrayLength_cbd6b5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %arrayLength_cbd6b5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/arrayLength/cdd123.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/arrayLength/cdd123.wgsl.expected.ir.msl
new file mode 100644
index 0000000..acc165e
--- /dev/null
+++ b/test/tint/builtins/gen/var/arrayLength/cdd123.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:array<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%arrayLength_cdd123 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, array<f32>, read_write> = access %sb_rw, 0u
+    %5:u32 = arrayLength %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %arrayLength_cdd123
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %arrayLength_cdd123
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %arrayLength_cdd123
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/arrayLength/cfca0a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/arrayLength/cfca0a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2b35883
--- /dev/null
+++ b/test/tint/builtins/gen/var/arrayLength/cfca0a.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RO = struct @align(4) {
+  arg_0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_ro:ptr<storage, SB_RO, read> = var @binding_point(0, 1)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%arrayLength_cfca0a = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, array<u32>, read> = access %sb_ro, 0u
+    %5:u32 = arrayLength %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %arrayLength_cfca0a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %arrayLength_cfca0a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %arrayLength_cfca0a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/arrayLength/eb510f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/arrayLength/eb510f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f924728
--- /dev/null
+++ b/test/tint/builtins/gen/var/arrayLength/eb510f.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%arrayLength_eb510f = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, array<u32>, read_write> = access %sb_rw, 0u
+    %5:u32 = arrayLength %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %arrayLength_eb510f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %arrayLength_eb510f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %arrayLength_eb510f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/asin/064953.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asin/064953.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8c310bb
--- /dev/null
+++ b/test/tint/builtins/gen/var/asin/064953.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%asin_064953 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.47942554950714111328f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = asin %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %asin_064953
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %asin_064953
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %asin_064953
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/asin/0bac07.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asin/0bac07.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/asin/0bac07.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/asin/11dfda.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2aee308
--- /dev/null
+++ b/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%asin_11dfda = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 0.479248046875h
+    %4:f16 = load %arg_0
+    %5:f16 = asin %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %asin_11dfda
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %asin_11dfda
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %asin_11dfda
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.ir.msl
new file mode 100644
index 0000000..07dbab6
--- /dev/null
+++ b/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%asin_2d8e29 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.479248046875h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = asin %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %asin_2d8e29
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %asin_2d8e29
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %asin_2d8e29
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5774e1d
--- /dev/null
+++ b/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%asin_3cfbd4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.479248046875h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = asin %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %asin_3cfbd4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %asin_3cfbd4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %asin_3cfbd4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/asin/64bb1f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asin/64bb1f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/asin/64bb1f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7a23b55
--- /dev/null
+++ b/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%asin_7b6a44 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.47942554950714111328f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = asin %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %asin_7b6a44
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %asin_7b6a44
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %asin_7b6a44
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..78f1a82
--- /dev/null
+++ b/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%asin_8cd9c9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.47942554950714111328f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = asin %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %asin_8cd9c9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %asin_8cd9c9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %asin_8cd9c9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/asin/a5dd88.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asin/a5dd88.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/asin/a5dd88.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/asin/a6d73a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asin/a6d73a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/asin/a6d73a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/asin/b4aced.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4598e89
--- /dev/null
+++ b/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%asin_b4aced = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.479248046875h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = asin %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %asin_b4aced
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %asin_b4aced
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %asin_b4aced
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/asin/c0c272.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.ir.msl
new file mode 100644
index 0000000..67c9002
--- /dev/null
+++ b/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%asin_c0c272 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 0.47942554950714111328f
+    %4:f32 = load %arg_0
+    %5:f32 = asin %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %asin_c0c272
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %asin_c0c272
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %asin_c0c272
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/asinh/157447.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asinh/157447.wgsl.expected.ir.msl
new file mode 100644
index 0000000..edd7569
--- /dev/null
+++ b/test/tint/builtins/gen/var/asinh/157447.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%asinh_157447 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = asinh %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %asinh_157447
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %asinh_157447
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %asinh_157447
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/asinh/16b543.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/asinh/180015.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/asinh/2265ee.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asinh/2265ee.wgsl.expected.ir.msl
new file mode 100644
index 0000000..17e46c1
--- /dev/null
+++ b/test/tint/builtins/gen/var/asinh/2265ee.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%asinh_2265ee = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = asinh %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %asinh_2265ee
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %asinh_2265ee
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %asinh_2265ee
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/asinh/468a48.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asinh/468a48.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bb9260b
--- /dev/null
+++ b/test/tint/builtins/gen/var/asinh/468a48.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%asinh_468a48 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %arg_0
+    %5:f16 = asinh %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %asinh_468a48
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %asinh_468a48
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %asinh_468a48
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/asinh/4a2226.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asinh/4a2226.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e8d3662
--- /dev/null
+++ b/test/tint/builtins/gen/var/asinh/4a2226.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%asinh_4a2226 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = asinh %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %asinh_4a2226
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %asinh_4a2226
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %asinh_4a2226
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/asinh/51079e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/asinh/8d2e51.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asinh/8d2e51.wgsl.expected.ir.msl
new file mode 100644
index 0000000..15babce
--- /dev/null
+++ b/test/tint/builtins/gen/var/asinh/8d2e51.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%asinh_8d2e51 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = asinh %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %asinh_8d2e51
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %asinh_8d2e51
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %asinh_8d2e51
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/asinh/95ab2b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asinh/95ab2b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e58a9a5
--- /dev/null
+++ b/test/tint/builtins/gen/var/asinh/95ab2b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%asinh_95ab2b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = asinh %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %asinh_95ab2b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %asinh_95ab2b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %asinh_95ab2b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/asinh/ad8f8b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asinh/ad8f8b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3ba61e4
--- /dev/null
+++ b/test/tint/builtins/gen/var/asinh/ad8f8b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%asinh_ad8f8b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = asinh %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %asinh_ad8f8b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %asinh_ad8f8b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %asinh_ad8f8b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/asinh/fb5e8c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/asinh/fb5e8c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5f64316
--- /dev/null
+++ b/test/tint/builtins/gen/var/asinh/fb5e8c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%asinh_fb5e8c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = asinh %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %asinh_fb5e8c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %asinh_fb5e8c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %asinh_fb5e8c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atan/02979a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan/02979a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2bfedf2
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan/02979a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%atan_02979a = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = atan %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %atan_02979a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atan_02979a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atan_02979a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atan/19faea.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan/19faea.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d4acffc
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan/19faea.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%atan_19faea = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = atan %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %atan_19faea
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atan_19faea
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atan_19faea
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atan/1e1764.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan/1e1764.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e771f60
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan/1e1764.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%atan_1e1764 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = atan %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %atan_1e1764
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atan_1e1764
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atan_1e1764
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atan/331e6d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan/331e6d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ea06867
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan/331e6d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%atan_331e6d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = atan %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %atan_331e6d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atan_331e6d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atan_331e6d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/atan/749e1b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/atan/a5f421.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan/a5f421.wgsl.expected.ir.msl
new file mode 100644
index 0000000..88b2102
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan/a5f421.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%atan_a5f421 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = atan %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %atan_a5f421
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atan_a5f421
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atan_a5f421
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atan/a7ba61.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan/a7ba61.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0c4fe30
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan/a7ba61.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%atan_a7ba61 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %arg_0
+    %5:f16 = atan %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %atan_a7ba61
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atan_a7ba61
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atan_a7ba61
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atan/a8b696.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan/a8b696.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d66db44
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan/a8b696.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%atan_a8b696 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = atan %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %atan_a8b696
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atan_a8b696
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atan_a8b696
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atan/ad96e4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan/ad96e4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ac3047e
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan/ad96e4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%atan_ad96e4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = atan %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %atan_ad96e4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atan_ad96e4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atan_ad96e4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/atan2/034ace.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/atan2/21dfea.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan2/21dfea.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c3bf670
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan2/21dfea.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%atan2_21dfea = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %5:vec3<f16> = load %arg_0
+    %6:vec3<f16> = load %arg_1
+    %7:vec3<f16> = atan2 %5, %6
+    %res:ptr<function, vec3<f16>, read_write> = var, %7
+    %9:vec3<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %atan2_21dfea
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atan2_21dfea
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %atan2_21dfea
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/atan2/57fb13.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan2/57fb13.wgsl.expected.ir.msl
new file mode 100644
index 0000000..761944a
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan2/57fb13.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%atan2_57fb13 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_1:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %5:vec2<f32> = load %arg_0
+    %6:vec2<f32> = load %arg_1
+    %7:vec2<f32> = atan2 %5, %6
+    %res:ptr<function, vec2<f32>, read_write> = var, %7
+    %9:vec2<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %atan2_57fb13
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atan2_57fb13
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %atan2_57fb13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atan2/93febc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan2/93febc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ec9e62d
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan2/93febc.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%atan2_93febc = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_1:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %5:vec2<f16> = load %arg_0
+    %6:vec2<f16> = load %arg_1
+    %7:vec2<f16> = atan2 %5, %6
+    %res:ptr<function, vec2<f16>, read_write> = var, %7
+    %9:vec2<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %atan2_93febc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atan2_93febc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %atan2_93febc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atan2/96057c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan2/96057c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0096b68
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan2/96057c.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%atan2_96057c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %arg_1:ptr<function, f32, read_write> = var, 1.0f
+    %5:f32 = load %arg_0
+    %6:f32 = load %arg_1
+    %7:f32 = atan2 %5, %6
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %atan2_96057c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atan2_96057c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %atan2_96057c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atan2/a70d0d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan2/a70d0d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..228350d
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan2/a70d0d.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%atan2_a70d0d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_1:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %5:vec3<f32> = load %arg_0
+    %6:vec3<f32> = load %arg_1
+    %7:vec3<f32> = atan2 %5, %6
+    %res:ptr<function, vec3<f32>, read_write> = var, %7
+    %9:vec3<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %atan2_a70d0d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atan2_a70d0d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %atan2_a70d0d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atan2/ae713e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan2/ae713e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..796f0cd
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan2/ae713e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%atan2_ae713e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:vec4<f32> = load %arg_0
+    %6:vec4<f32> = load %arg_1
+    %7:vec4<f32> = atan2 %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %atan2_ae713e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atan2_ae713e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %atan2_ae713e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atan2/c19683.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/atan2/ca698e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan2/ca698e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..931d8b6
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan2/ca698e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%atan2_ca698e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %arg_1:ptr<function, f16, read_write> = var, 1.0h
+    %5:f16 = load %arg_0
+    %6:f16 = load %arg_1
+    %7:f16 = atan2 %5, %6
+    %res:ptr<function, f16, read_write> = var, %7
+    %9:f16 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %atan2_ca698e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atan2_ca698e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %atan2_ca698e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atan2/d983ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atan2/d983ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..81fa3a7
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan2/d983ab.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%atan2_d983ab = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_1:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %5:vec4<f16> = load %arg_0
+    %6:vec4<f16> = load %arg_1
+    %7:vec4<f16> = atan2 %5, %6
+    %res:ptr<function, vec4<f16>, read_write> = var, %7
+    %9:vec4<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %atan2_d983ab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atan2_d983ab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %atan2_d983ab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atanh/440cca.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atanh/440cca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..235fc8e
--- /dev/null
+++ b/test/tint/builtins/gen/var/atanh/440cca.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%atanh_440cca = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.5f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = atanh %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %atanh_440cca
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atanh_440cca
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atanh_440cca
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atanh/5bf88d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atanh/5bf88d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a09b3b5
--- /dev/null
+++ b/test/tint/builtins/gen/var/atanh/5bf88d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%atanh_5bf88d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.5h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = atanh %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %atanh_5bf88d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atanh_5bf88d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atanh_5bf88d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/atanh/7997d8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atanh/7997d8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eb32cc5
--- /dev/null
+++ b/test/tint/builtins/gen/var/atanh/7997d8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%atanh_7997d8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 0.5f
+    %4:f32 = load %arg_0
+    %5:f32 = atanh %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %atanh_7997d8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atanh_7997d8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atanh_7997d8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/atanh/c0e634.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atanh/c0e634.wgsl.expected.ir.msl
new file mode 100644
index 0000000..284d78c
--- /dev/null
+++ b/test/tint/builtins/gen/var/atanh/c0e634.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%atanh_c0e634 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.5f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = atanh %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %atanh_c0e634
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atanh_c0e634
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atanh_c0e634
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/atanh/d2d8cd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atanh/d2d8cd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a81d5d2
--- /dev/null
+++ b/test/tint/builtins/gen/var/atanh/d2d8cd.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%atanh_d2d8cd = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 0.5h
+    %4:f16 = load %arg_0
+    %5:f16 = atanh %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %atanh_d2d8cd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atanh_d2d8cd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atanh_d2d8cd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atanh/e3b450.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atanh/e3b450.wgsl.expected.ir.msl
new file mode 100644
index 0000000..09d1741
--- /dev/null
+++ b/test/tint/builtins/gen/var/atanh/e3b450.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%atanh_e3b450 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.5h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = atanh %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %atanh_e3b450
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atanh_e3b450
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atanh_e3b450
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/atanh/ec4b06.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atanh/ec4b06.wgsl.expected.ir.msl
new file mode 100644
index 0000000..40ceb8b
--- /dev/null
+++ b/test/tint/builtins/gen/var/atanh/ec4b06.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%atanh_ec4b06 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.5h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = atanh %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %atanh_ec4b06
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atanh_ec4b06
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atanh_ec4b06
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atanh/f3e01b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atanh/f3e01b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5f29184
--- /dev/null
+++ b/test/tint/builtins/gen/var/atanh/f3e01b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%atanh_f3e01b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.5f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = atanh %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %atanh_f3e01b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atanh_f3e01b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %atanh_f3e01b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicAdd/794055.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicAdd/794055.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aa0080e
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicAdd/794055.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<i32>, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicAdd_794055 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:i32 = load %arg_1
+    %6:i32 = atomicAdd %arg_0, %5
+    %res:ptr<function, i32, read_write> = var, %6
+    %8:i32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %atomicAdd_794055
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicAdd/8a199a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicAdd/8a199a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ed2ecfd
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicAdd/8a199a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicAdd_8a199a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %6:u32 = load %arg_1
+    %7:u32 = atomicAdd %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicAdd_8a199a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atomicAdd_8a199a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicAdd/d32fe4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicAdd/d32fe4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f8963d8
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicAdd/d32fe4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicAdd_d32fe4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %6:i32 = load %arg_1
+    %7:i32 = atomicAdd %5, %6
+    %res:ptr<function, i32, read_write> = var, %7
+    %9:i32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicAdd_d32fe4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atomicAdd_d32fe4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicAdd/d5db1d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicAdd/d5db1d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a75712e
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicAdd/d5db1d.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<u32>, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicAdd_d5db1d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:u32 = load %arg_1
+    %6:u32 = atomicAdd %arg_0, %5
+    %res:ptr<function, u32, read_write> = var, %6
+    %8:u32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %atomicAdd_d5db1d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicAnd/152966.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicAnd/152966.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e77ec96
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicAnd/152966.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicAnd_152966 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %6:i32 = load %arg_1
+    %7:i32 = atomicAnd %5, %6
+    %res:ptr<function, i32, read_write> = var, %7
+    %9:i32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicAnd_152966
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atomicAnd_152966
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicAnd/34edd3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicAnd/34edd3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2c3cd9e
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicAnd/34edd3.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<u32>, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicAnd_34edd3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:u32 = load %arg_1
+    %6:u32 = atomicAnd %arg_0, %5
+    %res:ptr<function, u32, read_write> = var, %6
+    %8:u32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %atomicAnd_34edd3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicAnd/45a819.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicAnd/45a819.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6056f1a
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicAnd/45a819.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<i32>, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicAnd_45a819 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:i32 = load %arg_1
+    %6:i32 = atomicAnd %arg_0, %5
+    %res:ptr<function, i32, read_write> = var, %6
+    %8:i32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %atomicAnd_45a819
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicAnd/85a8d9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicAnd/85a8d9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a7b2aaa
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicAnd/85a8d9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicAnd_85a8d9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %6:u32 = load %arg_1
+    %7:u32 = atomicAnd %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicAnd_85a8d9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atomicAnd_85a8d9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicCompareExchangeWeak/1bd40a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/1bd40a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d7d7b4a
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/1bd40a.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+__atomic_compare_exchange_result_i32 = struct @align(4) {
+  old_value:i32 @offset(0)
+  exchanged:bool @offset(4)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+}
+
+%atomicCompareExchangeWeak_1bd40a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %5:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %6:i32 = load %arg_1
+    %7:i32 = load %arg_2
+    %8:__atomic_compare_exchange_result_i32 = atomicCompareExchangeWeak %5, %6, %7
+    %res:ptr<function, __atomic_compare_exchange_result_i32, read_write> = var, %8
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicCompareExchangeWeak_1bd40a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atomicCompareExchangeWeak_1bd40a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicCompareExchangeWeak/63d8e6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/63d8e6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..594658c
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/63d8e6.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+__atomic_compare_exchange_result_u32 = struct @align(4) {
+  old_value:u32 @offset(0)
+  exchanged:bool @offset(4)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+}
+
+%atomicCompareExchangeWeak_63d8e6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %5:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %6:u32 = load %arg_1
+    %7:u32 = load %arg_2
+    %8:__atomic_compare_exchange_result_u32 = atomicCompareExchangeWeak %5, %6, %7
+    %res:ptr<function, __atomic_compare_exchange_result_u32, read_write> = var, %8
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicCompareExchangeWeak_63d8e6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atomicCompareExchangeWeak_63d8e6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicCompareExchangeWeak/83580d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/83580d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/83580d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/atomicCompareExchangeWeak/e88938.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/e88938.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/e88938.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/atomicExchange/0a5dca.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicExchange/0a5dca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6884fe9
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicExchange/0a5dca.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<u32>, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicExchange_0a5dca = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:u32 = load %arg_1
+    %6:u32 = atomicExchange %arg_0, %5
+    %res:ptr<function, u32, read_write> = var, %6
+    %8:u32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %atomicExchange_0a5dca
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicExchange/d59712.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicExchange/d59712.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b5046ef
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicExchange/d59712.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicExchange_d59712 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %6:u32 = load %arg_1
+    %7:u32 = atomicExchange %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicExchange_d59712
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atomicExchange_d59712
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicExchange/e114ba.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicExchange/e114ba.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3f1efb9
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicExchange/e114ba.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<i32>, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicExchange_e114ba = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:i32 = load %arg_1
+    %6:i32 = atomicExchange %arg_0, %5
+    %res:ptr<function, i32, read_write> = var, %6
+    %8:i32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %atomicExchange_e114ba
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicExchange/f2e22f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicExchange/f2e22f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..da71f45
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicExchange/f2e22f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicExchange_f2e22f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %6:i32 = load %arg_1
+    %7:i32 = atomicExchange %5, %6
+    %res:ptr<function, i32, read_write> = var, %7
+    %9:i32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicExchange_f2e22f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atomicExchange_f2e22f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicLoad/0806ad.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicLoad/0806ad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..df14b13
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicLoad/0806ad.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicLoad_0806ad = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %5:i32 = atomicLoad %4
+    %res:ptr<function, i32, read_write> = var, %5
+    %7:i32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicLoad_0806ad
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicLoad_0806ad
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicLoad/361bf1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicLoad/361bf1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c9e32cc
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicLoad/361bf1.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<u32>, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicLoad_361bf1 = func():void -> %b2 {
+  %b2 = block {
+    %4:u32 = atomicLoad %arg_0
+    %res:ptr<function, u32, read_write> = var, %4
+    %6:u32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicLoad_361bf1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicLoad/afcc03.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicLoad/afcc03.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f1ff708
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicLoad/afcc03.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<i32>, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicLoad_afcc03 = func():void -> %b2 {
+  %b2 = block {
+    %4:i32 = atomicLoad %arg_0
+    %res:ptr<function, i32, read_write> = var, %4
+    %6:i32 = load %res
+    store %prevent_dce, %6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicLoad_afcc03
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicLoad/fe6cc3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicLoad/fe6cc3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8a6db9b
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicLoad/fe6cc3.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicLoad_fe6cc3 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %5:u32 = atomicLoad %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %atomicLoad_fe6cc3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %atomicLoad_fe6cc3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicMax/51b9be.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicMax/51b9be.wgsl.expected.ir.msl
new file mode 100644
index 0000000..00f7db5
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicMax/51b9be.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicMax_51b9be = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %6:u32 = load %arg_1
+    %7:u32 = atomicMax %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicMax_51b9be
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atomicMax_51b9be
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicMax/92aa72.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicMax/92aa72.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3f6843a
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicMax/92aa72.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicMax_92aa72 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %6:i32 = load %arg_1
+    %7:i32 = atomicMax %5, %6
+    %res:ptr<function, i32, read_write> = var, %7
+    %9:i32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicMax_92aa72
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atomicMax_92aa72
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicMax/a89cc3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicMax/a89cc3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..554f039
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicMax/a89cc3.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<i32>, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicMax_a89cc3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:i32 = load %arg_1
+    %6:i32 = atomicMax %arg_0, %5
+    %res:ptr<function, i32, read_write> = var, %6
+    %8:i32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %atomicMax_a89cc3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicMax/beccfc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicMax/beccfc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..504918c
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicMax/beccfc.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<u32>, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicMax_beccfc = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:u32 = load %arg_1
+    %6:u32 = atomicMax %arg_0, %5
+    %res:ptr<function, u32, read_write> = var, %6
+    %8:u32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %atomicMax_beccfc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicMin/278235.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicMin/278235.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b986310
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicMin/278235.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<i32>, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicMin_278235 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:i32 = load %arg_1
+    %6:i32 = atomicMin %arg_0, %5
+    %res:ptr<function, i32, read_write> = var, %6
+    %8:i32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %atomicMin_278235
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicMin/69d383.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicMin/69d383.wgsl.expected.ir.msl
new file mode 100644
index 0000000..566f39b
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicMin/69d383.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<u32>, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicMin_69d383 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:u32 = load %arg_1
+    %6:u32 = atomicMin %arg_0, %5
+    %res:ptr<function, u32, read_write> = var, %6
+    %8:u32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %atomicMin_69d383
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicMin/8e38dc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicMin/8e38dc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..01a66f1
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicMin/8e38dc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicMin_8e38dc = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %6:i32 = load %arg_1
+    %7:i32 = atomicMin %5, %6
+    %res:ptr<function, i32, read_write> = var, %7
+    %9:i32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicMin_8e38dc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atomicMin_8e38dc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicMin/c67a74.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicMin/c67a74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e7c1b26
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicMin/c67a74.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicMin_c67a74 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %6:u32 = load %arg_1
+    %7:u32 = atomicMin %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicMin_c67a74
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atomicMin_c67a74
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicOr/5e3d61.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicOr/5e3d61.wgsl.expected.ir.msl
new file mode 100644
index 0000000..735e604
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicOr/5e3d61.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<u32>, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicOr_5e3d61 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:u32 = load %arg_1
+    %6:u32 = atomicOr %arg_0, %5
+    %res:ptr<function, u32, read_write> = var, %6
+    %8:u32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %atomicOr_5e3d61
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicOr/5e95d4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicOr/5e95d4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5972212
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicOr/5e95d4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicOr_5e95d4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %6:u32 = load %arg_1
+    %7:u32 = atomicOr %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicOr_5e95d4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atomicOr_5e95d4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicOr/8d96a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicOr/8d96a0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1ea62f1
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicOr/8d96a0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicOr_8d96a0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %6:i32 = load %arg_1
+    %7:i32 = atomicOr %5, %6
+    %res:ptr<function, i32, read_write> = var, %7
+    %9:i32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicOr_8d96a0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atomicOr_8d96a0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicOr/d09248.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicOr/d09248.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8bd8396
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicOr/d09248.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<i32>, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicOr_d09248 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:i32 = load %arg_1
+    %6:i32 = atomicOr %arg_0, %5
+    %res:ptr<function, i32, read_write> = var, %6
+    %8:i32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %atomicOr_d09248
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicStore/726882.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicStore/726882.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicStore/726882.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/atomicStore/8bea94.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicStore/8bea94.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicStore/8bea94.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/atomicStore/cdc29e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicStore/cdc29e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdff908
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicStore/cdc29e.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+}
+
+%atomicStore_cdc29e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %5:u32 = load %arg_1
+    %6:void = atomicStore %4, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicStore_cdc29e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %10:void = call %atomicStore_cdc29e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicStore/d1e9a6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicStore/d1e9a6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9f772fd
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicStore/d1e9a6.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+}
+
+%atomicStore_d1e9a6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %4:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %5:i32 = load %arg_1
+    %6:void = atomicStore %4, %5
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %8:void = call %atomicStore_d1e9a6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %10:void = call %atomicStore_d1e9a6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicSub/051100.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicSub/051100.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e99750
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicSub/051100.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicSub_051100 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %6:i32 = load %arg_1
+    %7:i32 = atomicSub %5, %6
+    %res:ptr<function, i32, read_write> = var, %7
+    %9:i32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicSub_051100
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atomicSub_051100
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicSub/0d26c2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicSub/0d26c2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ea45086
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicSub/0d26c2.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<u32>, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicSub_0d26c2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:u32 = load %arg_1
+    %6:u32 = atomicSub %arg_0, %5
+    %res:ptr<function, u32, read_write> = var, %6
+    %8:u32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %atomicSub_0d26c2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicSub/15bfc9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicSub/15bfc9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..82059a7
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicSub/15bfc9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicSub_15bfc9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %6:u32 = load %arg_1
+    %7:u32 = atomicSub %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicSub_15bfc9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atomicSub_15bfc9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicSub/77883a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicSub/77883a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..92d24ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicSub/77883a.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<i32>, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicSub_77883a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:i32 = load %arg_1
+    %6:i32 = atomicSub %arg_0, %5
+    %res:ptr<function, i32, read_write> = var, %6
+    %8:i32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %atomicSub_77883a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicXor/54510e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicXor/54510e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..704a84c
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicXor/54510e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicXor_54510e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
+    %6:u32 = load %arg_1
+    %7:u32 = atomicXor %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicXor_54510e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atomicXor_54510e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicXor/75dc95.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicXor/75dc95.wgsl.expected.ir.msl
new file mode 100644
index 0000000..99b4a4d
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicXor/75dc95.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<i32>, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicXor_75dc95 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:i32 = load %arg_1
+    %6:i32 = atomicXor %arg_0, %5
+    %res:ptr<function, i32, read_write> = var, %6
+    %8:i32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %atomicXor_75dc95
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicXor/c1b78c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicXor/c1b78c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..787db61
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicXor/c1b78c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SB_RW = struct @align(4) {
+  arg_0:atomic<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicXor_c1b78c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
+    %6:i32 = load %arg_1
+    %7:i32 = atomicXor %5, %6
+    %res:ptr<function, i32, read_write> = var, %7
+    %9:i32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %11:void = call %atomicXor_c1b78c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %atomicXor_c1b78c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/atomicXor/c8e6be.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/atomicXor/c8e6be.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5838caa
--- /dev/null
+++ b/test/tint/builtins/gen/var/atomicXor/c8e6be.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, atomic<u32>, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%atomicXor_c8e6be = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:u32 = load %arg_1
+    %6:u32 = atomicXor %arg_0, %5
+    %res:ptr<function, u32, read_write> = var, %6
+    %8:u32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %atomicXor_c8e6be
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ceil/09bf52.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ceil/09bf52.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d3eb2d1
--- /dev/null
+++ b/test/tint/builtins/gen/var/ceil/09bf52.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%ceil_09bf52 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.5h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = ceil %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %ceil_09bf52
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %ceil_09bf52
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %ceil_09bf52
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ceil/11b1dc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ceil/11b1dc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/ceil/11b1dc.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/ceil/18c240.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ceil/18c240.wgsl.expected.ir.msl
new file mode 100644
index 0000000..44503ec
--- /dev/null
+++ b/test/tint/builtins/gen/var/ceil/18c240.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%ceil_18c240 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.5h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = ceil %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %ceil_18c240
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %ceil_18c240
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %ceil_18c240
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ceil/32c946.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ceil/32c946.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/ceil/32c946.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/ceil/34064b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ceil/34064b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0bed114
--- /dev/null
+++ b/test/tint/builtins/gen/var/ceil/34064b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%ceil_34064b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.5f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = ceil %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %ceil_34064b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %ceil_34064b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %ceil_34064b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ceil/4bca2a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ceil/4bca2a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bf35fd2
--- /dev/null
+++ b/test/tint/builtins/gen/var/ceil/4bca2a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%ceil_4bca2a = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.5h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = ceil %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %ceil_4bca2a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %ceil_4bca2a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %ceil_4bca2a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ceil/678655.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ceil/678655.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f016ee3
--- /dev/null
+++ b/test/tint/builtins/gen/var/ceil/678655.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%ceil_678655 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.5f
+    %4:f32 = load %arg_0
+    %5:f32 = ceil %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %ceil_678655
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %ceil_678655
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %ceil_678655
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ceil/96f597.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ceil/96f597.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e2577e
--- /dev/null
+++ b/test/tint/builtins/gen/var/ceil/96f597.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%ceil_96f597 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.5f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = ceil %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %ceil_96f597
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %ceil_96f597
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %ceil_96f597
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ceil/b74c16.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ceil/b74c16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9652c1e
--- /dev/null
+++ b/test/tint/builtins/gen/var/ceil/b74c16.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%ceil_b74c16 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.5f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = ceil %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %ceil_b74c16
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %ceil_b74c16
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %ceil_b74c16
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ceil/bb2ca2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ceil/bb2ca2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/ceil/bb2ca2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/ceil/e0b70a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ceil/e0b70a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/ceil/e0b70a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/ceil/f3f889.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ceil/f3f889.wgsl.expected.ir.msl
new file mode 100644
index 0000000..91839b0
--- /dev/null
+++ b/test/tint/builtins/gen/var/ceil/f3f889.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%ceil_f3f889 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.5h
+    %4:f16 = load %arg_0
+    %5:f16 = ceil %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %ceil_f3f889
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %ceil_f3f889
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %ceil_f3f889
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/0acf8f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/0acf8f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..22c4f73
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/0acf8f.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_0acf8f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_1:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:vec2<f32> = load %arg_0
+    %7:vec2<f32> = load %arg_1
+    %8:vec2<f32> = load %arg_2
+    %9:vec2<f32> = clamp %6, %7, %8
+    %res:ptr<function, vec2<f32>, read_write> = var, %9
+    %11:vec2<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %clamp_0acf8f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %clamp_0acf8f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %clamp_0acf8f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/177548.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/1a32e3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/1a32e3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..606c5f2
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/1a32e3.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_1a32e3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %arg_1:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:vec4<i32> = load %arg_0
+    %7:vec4<i32> = load %arg_1
+    %8:vec4<i32> = load %arg_2
+    %9:vec4<i32> = clamp %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %clamp_1a32e3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %clamp_1a32e3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %clamp_1a32e3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/235b29.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/235b29.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b2db5c2
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/235b29.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_235b29 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_1:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_2:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %6:vec2<f16> = load %arg_0
+    %7:vec2<f16> = load %arg_1
+    %8:vec2<f16> = load %arg_2
+    %9:vec2<f16> = clamp %6, %7, %8
+    %res:ptr<function, vec2<f16>, read_write> = var, %9
+    %11:vec2<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %clamp_235b29
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %clamp_235b29
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %clamp_235b29
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/2bd567.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/2bd567.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dd005f8
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/2bd567.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_2bd567 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %arg_1:ptr<function, f32, read_write> = var, 1.0f
+    %arg_2:ptr<function, f32, read_write> = var, 1.0f
+    %6:f32 = load %arg_0
+    %7:f32 = load %arg_1
+    %8:f32 = load %arg_2
+    %9:f32 = clamp %6, %7, %8
+    %res:ptr<function, f32, read_write> = var, %9
+    %11:f32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %clamp_2bd567
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %clamp_2bd567
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %clamp_2bd567
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/2bde41.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/2bde41.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7c13aab
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/2bde41.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_2bde41 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:vec4<f32> = load %arg_0
+    %7:vec4<f32> = load %arg_1
+    %8:vec4<f32> = load %arg_2
+    %9:vec4<f32> = clamp %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %clamp_2bde41
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %clamp_2bde41
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %clamp_2bde41
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/2c251b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/2c251b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dd6ac03
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/2c251b.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_2c251b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_1:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_2:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %6:vec4<f16> = load %arg_0
+    %7:vec4<f16> = load %arg_1
+    %8:vec4<f16> = load %arg_2
+    %9:vec4<f16> = clamp %6, %7, %8
+    %res:ptr<function, vec4<f16>, read_write> = var, %9
+    %11:vec4<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %clamp_2c251b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %clamp_2c251b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %clamp_2c251b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/548fc7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/548fc7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..66a3a41
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/548fc7.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_548fc7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %6:vec3<u32> = load %arg_0
+    %7:vec3<u32> = load %arg_1
+    %8:vec3<u32> = load %arg_2
+    %9:vec3<u32> = clamp %6, %7, %8
+    %res:ptr<function, vec3<u32>, read_write> = var, %9
+    %11:vec3<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %clamp_548fc7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %clamp_548fc7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %clamp_548fc7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/553ffb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/553ffb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9941bf6
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/553ffb.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_553ffb = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %arg_1:ptr<function, f16, read_write> = var, 1.0h
+    %arg_2:ptr<function, f16, read_write> = var, 1.0h
+    %6:f16 = load %arg_0
+    %7:f16 = load %arg_1
+    %8:f16 = load %arg_2
+    %9:f16 = clamp %6, %7, %8
+    %res:ptr<function, f16, read_write> = var, %9
+    %11:f16 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %clamp_553ffb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %clamp_553ffb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %clamp_553ffb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/5f0819.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/5f0819.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5e95c19
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/5f0819.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_5f0819 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %6:vec3<i32> = load %arg_0
+    %7:vec3<i32> = load %arg_1
+    %8:vec3<i32> = load %arg_2
+    %9:vec3<i32> = clamp %6, %7, %8
+    %res:ptr<function, vec3<i32>, read_write> = var, %9
+    %11:vec3<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %clamp_5f0819
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %clamp_5f0819
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %clamp_5f0819
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/6c1749.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/6c1749.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a601c5a
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/6c1749.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_6c1749 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %6:vec2<i32> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:vec2<i32> = load %arg_2
+    %9:vec2<i32> = clamp %6, %7, %8
+    %res:ptr<function, vec2<i32>, read_write> = var, %9
+    %11:vec2<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %clamp_6c1749
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %clamp_6c1749
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %clamp_6c1749
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/7706d7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/7706d7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e2683c1
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/7706d7.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_7706d7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %6:vec2<u32> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:vec2<u32> = load %arg_2
+    %9:vec2<u32> = clamp %6, %7, %8
+    %res:ptr<function, vec2<u32>, read_write> = var, %9
+    %11:vec2<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %clamp_7706d7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %clamp_7706d7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %clamp_7706d7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/867397.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/867397.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2565812
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/867397.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_867397 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_1:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %6:vec3<f32> = load %arg_0
+    %7:vec3<f32> = load %arg_1
+    %8:vec3<f32> = load %arg_2
+    %9:vec3<f32> = clamp %6, %7, %8
+    %res:ptr<function, vec3<f32>, read_write> = var, %9
+    %11:vec3<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %clamp_867397
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %clamp_867397
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %clamp_867397
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/87df46.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/a2de25.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/a2de25.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f74ee90
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/a2de25.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_a2de25 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:u32 = load %arg_0
+    %7:u32 = load %arg_1
+    %8:u32 = load %arg_2
+    %9:u32 = clamp %6, %7, %8
+    %res:ptr<function, u32, read_write> = var, %9
+    %11:u32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %clamp_a2de25
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %clamp_a2de25
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %clamp_a2de25
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/b07c65.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/b07c65.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b4f1a08
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/b07c65.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_b07c65 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, i32, read_write> = var, 1i
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:i32 = load %arg_0
+    %7:i32 = load %arg_1
+    %8:i32 = load %arg_2
+    %9:i32 = clamp %6, %7, %8
+    %res:ptr<function, i32, read_write> = var, %9
+    %11:i32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %clamp_b07c65
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %clamp_b07c65
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %clamp_b07c65
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/b195eb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/b195eb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f83ed22
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/b195eb.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_b195eb = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_2:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %6:vec3<f16> = load %arg_0
+    %7:vec3<f16> = load %arg_1
+    %8:vec3<f16> = load %arg_2
+    %9:vec3<f16> = clamp %6, %7, %8
+    %res:ptr<function, vec3<f16>, read_write> = var, %9
+    %11:vec3<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %clamp_b195eb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %clamp_b195eb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %clamp_b195eb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/bd43ce.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/bd43ce.wgsl.expected.ir.msl
new file mode 100644
index 0000000..535460b
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/bd43ce.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%clamp_bd43ce = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %arg_1:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:vec4<u32> = load %arg_0
+    %7:vec4<u32> = load %arg_1
+    %8:vec4<u32> = load %arg_2
+    %9:vec4<u32> = clamp %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %clamp_bd43ce
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %clamp_bd43ce
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %clamp_bd43ce
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/clamp/d396af.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/cos/0835a8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cos/0835a8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2acc754
--- /dev/null
+++ b/test/tint/builtins/gen/var/cos/0835a8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%cos_0835a8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = cos %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %cos_0835a8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %cos_0835a8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %cos_0835a8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/cos/0a89f7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cos/0a89f7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9c829e7
--- /dev/null
+++ b/test/tint/builtins/gen/var/cos/0a89f7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%cos_0a89f7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = cos %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %cos_0a89f7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %cos_0a89f7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %cos_0a89f7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/cos/16dc15.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cos/16dc15.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fc404ff4
--- /dev/null
+++ b/test/tint/builtins/gen/var/cos/16dc15.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%cos_16dc15 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = cos %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %cos_16dc15
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %cos_16dc15
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %cos_16dc15
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/cos/29d66d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cos/29d66d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3edd7fd
--- /dev/null
+++ b/test/tint/builtins/gen/var/cos/29d66d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%cos_29d66d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = cos %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %cos_29d66d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %cos_29d66d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %cos_29d66d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/cos/47d768.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cos/47d768.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/cos/47d768.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/cos/5bc2c6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cos/5bc2c6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fd6333b
--- /dev/null
+++ b/test/tint/builtins/gen/var/cos/5bc2c6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%cos_5bc2c6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = cos %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %cos_5bc2c6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %cos_5bc2c6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %cos_5bc2c6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/cos/6b1fdf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cos/6b1fdf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/cos/6b1fdf.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/cos/a297d4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cos/a297d4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/cos/a297d4.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/cos/af7447.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cos/af7447.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/cos/af7447.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/cos/c3b486.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cos/c3b486.wgsl.expected.ir.msl
new file mode 100644
index 0000000..649e7ce
--- /dev/null
+++ b/test/tint/builtins/gen/var/cos/c3b486.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%cos_c3b486 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = cos %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %cos_c3b486
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %cos_c3b486
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %cos_c3b486
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/cos/c5c28e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cos/c5c28e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9c15f8c
--- /dev/null
+++ b/test/tint/builtins/gen/var/cos/c5c28e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%cos_c5c28e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 0.0f
+    %4:f32 = load %arg_0
+    %5:f32 = cos %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %cos_c5c28e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %cos_c5c28e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %cos_c5c28e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/cos/fc047d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cos/fc047d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a75aef9
--- /dev/null
+++ b/test/tint/builtins/gen/var/cos/fc047d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%cos_fc047d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 0.0h
+    %4:f16 = load %arg_0
+    %5:f16 = cos %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %cos_fc047d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %cos_fc047d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %cos_fc047d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/cosh/2ed778.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cosh/2ed778.wgsl.expected.ir.msl
new file mode 100644
index 0000000..562f1ca
--- /dev/null
+++ b/test/tint/builtins/gen/var/cosh/2ed778.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%cosh_2ed778 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 0.0h
+    %4:f16 = load %arg_0
+    %5:f16 = cosh %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %cosh_2ed778
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %cosh_2ed778
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %cosh_2ed778
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/cosh/377652.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cosh/377652.wgsl.expected.ir.msl
new file mode 100644
index 0000000..479fb32
--- /dev/null
+++ b/test/tint/builtins/gen/var/cosh/377652.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%cosh_377652 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = cosh %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %cosh_377652
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %cosh_377652
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %cosh_377652
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/cosh/3b7bbf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cosh/3b7bbf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5cc1851
--- /dev/null
+++ b/test/tint/builtins/gen/var/cosh/3b7bbf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%cosh_3b7bbf = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = cosh %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %cosh_3b7bbf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %cosh_3b7bbf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %cosh_3b7bbf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/cosh/432645.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cosh/432645.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/cosh/432645.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/cosh/43b672.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cosh/43b672.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b31b344
--- /dev/null
+++ b/test/tint/builtins/gen/var/cosh/43b672.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%cosh_43b672 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = cosh %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %cosh_43b672
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %cosh_43b672
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %cosh_43b672
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/cosh/b1b8a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cosh/b1b8a0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ca7c92b
--- /dev/null
+++ b/test/tint/builtins/gen/var/cosh/b1b8a0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%cosh_b1b8a0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = cosh %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %cosh_b1b8a0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %cosh_b1b8a0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %cosh_b1b8a0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/cosh/c13756.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cosh/c13756.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c91f684
--- /dev/null
+++ b/test/tint/builtins/gen/var/cosh/c13756.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%cosh_c13756 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = cosh %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %cosh_c13756
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %cosh_c13756
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %cosh_c13756
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/cosh/c892bb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cosh/c892bb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/cosh/c892bb.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/cosh/d8dee7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cosh/d8dee7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/cosh/d8dee7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/cosh/da92dd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cosh/da92dd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e458c67
--- /dev/null
+++ b/test/tint/builtins/gen/var/cosh/da92dd.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%cosh_da92dd = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 0.0f
+    %4:f32 = load %arg_0
+    %5:f32 = cosh %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %cosh_da92dd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %cosh_da92dd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %cosh_da92dd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/cosh/e0c1de.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cosh/e0c1de.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5ed4b87
--- /dev/null
+++ b/test/tint/builtins/gen/var/cosh/e0c1de.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%cosh_e0c1de = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = cosh %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %cosh_e0c1de
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %cosh_e0c1de
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %cosh_e0c1de
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/cosh/f67ff1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cosh/f67ff1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/cosh/f67ff1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/countLeadingZeros/208d46.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countLeadingZeros/208d46.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f5fca3d
--- /dev/null
+++ b/test/tint/builtins/gen/var/countLeadingZeros/208d46.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%countLeadingZeros_208d46 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %4:u32 = load %arg_0
+    %5:u32 = countLeadingZeros %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countLeadingZeros_208d46
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countLeadingZeros_208d46
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countLeadingZeros_208d46
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countLeadingZeros/6d4656.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countLeadingZeros/6d4656.wgsl.expected.ir.msl
new file mode 100644
index 0000000..573982b
--- /dev/null
+++ b/test/tint/builtins/gen/var/countLeadingZeros/6d4656.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%countLeadingZeros_6d4656 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, i32, read_write> = var, 1i
+    %4:i32 = load %arg_0
+    %5:i32 = countLeadingZeros %4
+    %res:ptr<function, i32, read_write> = var, %5
+    %7:i32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countLeadingZeros_6d4656
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countLeadingZeros_6d4656
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countLeadingZeros_6d4656
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countLeadingZeros/70783f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countLeadingZeros/70783f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..48d8b04
--- /dev/null
+++ b/test/tint/builtins/gen/var/countLeadingZeros/70783f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%countLeadingZeros_70783f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %4:vec2<u32> = load %arg_0
+    %5:vec2<u32> = countLeadingZeros %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countLeadingZeros_70783f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countLeadingZeros_70783f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countLeadingZeros_70783f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countLeadingZeros/7c38a6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countLeadingZeros/7c38a6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..39a784c
--- /dev/null
+++ b/test/tint/builtins/gen/var/countLeadingZeros/7c38a6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%countLeadingZeros_7c38a6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %4:vec3<i32> = load %arg_0
+    %5:vec3<i32> = countLeadingZeros %4
+    %res:ptr<function, vec3<i32>, read_write> = var, %5
+    %7:vec3<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countLeadingZeros_7c38a6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countLeadingZeros_7c38a6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countLeadingZeros_7c38a6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countLeadingZeros/858d40.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countLeadingZeros/858d40.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c1bfdaa
--- /dev/null
+++ b/test/tint/builtins/gen/var/countLeadingZeros/858d40.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%countLeadingZeros_858d40 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %4:vec2<i32> = load %arg_0
+    %5:vec2<i32> = countLeadingZeros %4
+    %res:ptr<function, vec2<i32>, read_write> = var, %5
+    %7:vec2<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countLeadingZeros_858d40
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countLeadingZeros_858d40
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countLeadingZeros_858d40
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countLeadingZeros/ab6345.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countLeadingZeros/ab6345.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9dc1a57
--- /dev/null
+++ b/test/tint/builtins/gen/var/countLeadingZeros/ab6345.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%countLeadingZeros_ab6345 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %4:vec3<u32> = load %arg_0
+    %5:vec3<u32> = countLeadingZeros %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countLeadingZeros_ab6345
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countLeadingZeros_ab6345
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countLeadingZeros_ab6345
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countLeadingZeros/eab32b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countLeadingZeros/eab32b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fa62722
--- /dev/null
+++ b/test/tint/builtins/gen/var/countLeadingZeros/eab32b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%countLeadingZeros_eab32b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %4:vec4<i32> = load %arg_0
+    %5:vec4<i32> = countLeadingZeros %4
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countLeadingZeros_eab32b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countLeadingZeros_eab32b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countLeadingZeros_eab32b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countLeadingZeros/f70103.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countLeadingZeros/f70103.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3a2fdd1
--- /dev/null
+++ b/test/tint/builtins/gen/var/countLeadingZeros/f70103.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%countLeadingZeros_f70103 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %4:vec4<u32> = load %arg_0
+    %5:vec4<u32> = countLeadingZeros %4
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countLeadingZeros_f70103
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countLeadingZeros_f70103
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countLeadingZeros_f70103
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countOneBits/0d0e46.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countOneBits/0d0e46.wgsl.expected.ir.msl
new file mode 100644
index 0000000..16ae5ed
--- /dev/null
+++ b/test/tint/builtins/gen/var/countOneBits/0d0e46.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%countOneBits_0d0e46 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %4:vec4<u32> = load %arg_0
+    %5:vec4<u32> = countOneBits %4
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countOneBits_0d0e46
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countOneBits_0d0e46
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countOneBits_0d0e46
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countOneBits/0f7980.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countOneBits/0f7980.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0707da5
--- /dev/null
+++ b/test/tint/builtins/gen/var/countOneBits/0f7980.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%countOneBits_0f7980 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %4:vec4<i32> = load %arg_0
+    %5:vec4<i32> = countOneBits %4
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countOneBits_0f7980
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countOneBits_0f7980
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countOneBits_0f7980
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countOneBits/65d2ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countOneBits/65d2ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..42fdb55
--- /dev/null
+++ b/test/tint/builtins/gen/var/countOneBits/65d2ae.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%countOneBits_65d2ae = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %4:vec3<i32> = load %arg_0
+    %5:vec3<i32> = countOneBits %4
+    %res:ptr<function, vec3<i32>, read_write> = var, %5
+    %7:vec3<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countOneBits_65d2ae
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countOneBits_65d2ae
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countOneBits_65d2ae
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countOneBits/690cfc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countOneBits/690cfc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e932ba6
--- /dev/null
+++ b/test/tint/builtins/gen/var/countOneBits/690cfc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%countOneBits_690cfc = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %4:vec3<u32> = load %arg_0
+    %5:vec3<u32> = countOneBits %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countOneBits_690cfc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countOneBits_690cfc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countOneBits_690cfc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countOneBits/94fd81.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countOneBits/94fd81.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a56e724
--- /dev/null
+++ b/test/tint/builtins/gen/var/countOneBits/94fd81.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%countOneBits_94fd81 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %4:vec2<u32> = load %arg_0
+    %5:vec2<u32> = countOneBits %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countOneBits_94fd81
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countOneBits_94fd81
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countOneBits_94fd81
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countOneBits/ae44f9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countOneBits/ae44f9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bd13ac9
--- /dev/null
+++ b/test/tint/builtins/gen/var/countOneBits/ae44f9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%countOneBits_ae44f9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %4:u32 = load %arg_0
+    %5:u32 = countOneBits %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countOneBits_ae44f9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countOneBits_ae44f9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countOneBits_ae44f9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countOneBits/af90e2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countOneBits/af90e2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..598d7b3
--- /dev/null
+++ b/test/tint/builtins/gen/var/countOneBits/af90e2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%countOneBits_af90e2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %4:vec2<i32> = load %arg_0
+    %5:vec2<i32> = countOneBits %4
+    %res:ptr<function, vec2<i32>, read_write> = var, %5
+    %7:vec2<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countOneBits_af90e2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countOneBits_af90e2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countOneBits_af90e2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countOneBits/fd88b2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countOneBits/fd88b2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..98abbe7
--- /dev/null
+++ b/test/tint/builtins/gen/var/countOneBits/fd88b2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%countOneBits_fd88b2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, i32, read_write> = var, 1i
+    %4:i32 = load %arg_0
+    %5:i32 = countOneBits %4
+    %res:ptr<function, i32, read_write> = var, %5
+    %7:i32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countOneBits_fd88b2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countOneBits_fd88b2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countOneBits_fd88b2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countTrailingZeros/1ad138.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countTrailingZeros/1ad138.wgsl.expected.ir.msl
new file mode 100644
index 0000000..62fc9c4
--- /dev/null
+++ b/test/tint/builtins/gen/var/countTrailingZeros/1ad138.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%countTrailingZeros_1ad138 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %4:vec2<u32> = load %arg_0
+    %5:vec2<u32> = countTrailingZeros %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countTrailingZeros_1ad138
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countTrailingZeros_1ad138
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countTrailingZeros_1ad138
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countTrailingZeros/1dc84a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countTrailingZeros/1dc84a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..78cc965
--- /dev/null
+++ b/test/tint/builtins/gen/var/countTrailingZeros/1dc84a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%countTrailingZeros_1dc84a = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %4:vec4<i32> = load %arg_0
+    %5:vec4<i32> = countTrailingZeros %4
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countTrailingZeros_1dc84a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countTrailingZeros_1dc84a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countTrailingZeros_1dc84a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countTrailingZeros/21e394.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countTrailingZeros/21e394.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b32fe2f
--- /dev/null
+++ b/test/tint/builtins/gen/var/countTrailingZeros/21e394.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%countTrailingZeros_21e394 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %4:u32 = load %arg_0
+    %5:u32 = countTrailingZeros %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countTrailingZeros_21e394
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countTrailingZeros_21e394
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countTrailingZeros_21e394
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countTrailingZeros/327c37.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countTrailingZeros/327c37.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4f0b8b1
--- /dev/null
+++ b/test/tint/builtins/gen/var/countTrailingZeros/327c37.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%countTrailingZeros_327c37 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %4:vec2<i32> = load %arg_0
+    %5:vec2<i32> = countTrailingZeros %4
+    %res:ptr<function, vec2<i32>, read_write> = var, %5
+    %7:vec2<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countTrailingZeros_327c37
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countTrailingZeros_327c37
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countTrailingZeros_327c37
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countTrailingZeros/42fed6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countTrailingZeros/42fed6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7de4828
--- /dev/null
+++ b/test/tint/builtins/gen/var/countTrailingZeros/42fed6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%countTrailingZeros_42fed6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, i32, read_write> = var, 1i
+    %4:i32 = load %arg_0
+    %5:i32 = countTrailingZeros %4
+    %res:ptr<function, i32, read_write> = var, %5
+    %7:i32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countTrailingZeros_42fed6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countTrailingZeros_42fed6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countTrailingZeros_42fed6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countTrailingZeros/8ed26f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countTrailingZeros/8ed26f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c1245c5
--- /dev/null
+++ b/test/tint/builtins/gen/var/countTrailingZeros/8ed26f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%countTrailingZeros_8ed26f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %4:vec3<u32> = load %arg_0
+    %5:vec3<u32> = countTrailingZeros %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countTrailingZeros_8ed26f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countTrailingZeros_8ed26f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countTrailingZeros_8ed26f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countTrailingZeros/acfacb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countTrailingZeros/acfacb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..06e41ce
--- /dev/null
+++ b/test/tint/builtins/gen/var/countTrailingZeros/acfacb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%countTrailingZeros_acfacb = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %4:vec3<i32> = load %arg_0
+    %5:vec3<i32> = countTrailingZeros %4
+    %res:ptr<function, vec3<i32>, read_write> = var, %5
+    %7:vec3<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countTrailingZeros_acfacb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countTrailingZeros_acfacb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countTrailingZeros_acfacb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/countTrailingZeros/d2b4a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/countTrailingZeros/d2b4a0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..48eab60
--- /dev/null
+++ b/test/tint/builtins/gen/var/countTrailingZeros/d2b4a0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%countTrailingZeros_d2b4a0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %4:vec4<u32> = load %arg_0
+    %5:vec4<u32> = countTrailingZeros %4
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %countTrailingZeros_d2b4a0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %countTrailingZeros_d2b4a0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %countTrailingZeros_d2b4a0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/cross/041cb0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cross/041cb0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6df03f7
--- /dev/null
+++ b/test/tint/builtins/gen/var/cross/041cb0.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%cross_041cb0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_1:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %5:vec3<f32> = load %arg_0
+    %6:vec3<f32> = load %arg_1
+    %7:vec3<f32> = cross %5, %6
+    %res:ptr<function, vec3<f32>, read_write> = var, %7
+    %9:vec3<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %cross_041cb0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %cross_041cb0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %cross_041cb0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/cross/1d7933.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cross/1d7933.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/cross/1d7933.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/cross/9857cb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/cross/9857cb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..12cb4b1
--- /dev/null
+++ b/test/tint/builtins/gen/var/cross/9857cb.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%cross_9857cb = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %5:vec3<f16> = load %arg_0
+    %6:vec3<f16> = load %arg_1
+    %7:vec3<f16> = cross %5, %6
+    %res:ptr<function, vec3<f16>, read_write> = var, %7
+    %9:vec3<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %cross_9857cb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %cross_9857cb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %cross_9857cb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2cc0b3b
--- /dev/null
+++ b/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%degrees_0d170c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = degrees %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %degrees_0d170c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %degrees_0d170c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %degrees_0d170c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.ir.msl
new file mode 100644
index 0000000..236572c
--- /dev/null
+++ b/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%degrees_1ad5df = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = degrees %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %degrees_1ad5df
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %degrees_1ad5df
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %degrees_1ad5df
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/degrees/2af623.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b6eb6b9
--- /dev/null
+++ b/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%degrees_2af623 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = degrees %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %degrees_2af623
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %degrees_2af623
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %degrees_2af623
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..61c7570
--- /dev/null
+++ b/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%degrees_3055d3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = degrees %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %degrees_3055d3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %degrees_3055d3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %degrees_3055d3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/degrees/51f705.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.ir.msl
new file mode 100644
index 0000000..67cde19
--- /dev/null
+++ b/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%degrees_51f705 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = degrees %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %degrees_51f705
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %degrees_51f705
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %degrees_51f705
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.ir.msl
new file mode 100644
index 0000000..58e4487
--- /dev/null
+++ b/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%degrees_5e9805 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %arg_0
+    %5:f16 = degrees %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %degrees_5e9805
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %degrees_5e9805
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %degrees_5e9805
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/degrees/810467.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..51f046c
--- /dev/null
+++ b/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%degrees_dfe8f4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = degrees %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %degrees_dfe8f4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %degrees_dfe8f4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %degrees_dfe8f4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/degrees/f59715.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8e0dd0b
--- /dev/null
+++ b/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%degrees_f59715 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = degrees %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %degrees_f59715
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %degrees_f59715
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %degrees_f59715
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/determinant/1bf6e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/determinant/1bf6e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/determinant/1bf6e7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/determinant/2b62ba.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/determinant/2b62ba.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1bccfcc
--- /dev/null
+++ b/test/tint/builtins/gen/var/determinant/2b62ba.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%determinant_2b62ba = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat3x3<f32>, read_write> = var, mat3x3<f32>(vec3<f32>(1.0f))
+    %4:mat3x3<f32> = load %arg_0
+    %5:f32 = determinant %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %determinant_2b62ba
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %determinant_2b62ba
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %determinant_2b62ba
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/determinant/32bfde.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/determinant/32bfde.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f438929
--- /dev/null
+++ b/test/tint/builtins/gen/var/determinant/32bfde.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%determinant_32bfde = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat4x4<f16>, read_write> = var, mat4x4<f16>(vec4<f16>(1.0h))
+    %4:mat4x4<f16> = load %arg_0
+    %5:f16 = determinant %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %determinant_32bfde
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %determinant_32bfde
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %determinant_32bfde
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/determinant/a0a87c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/determinant/a0a87c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..487a6d4
--- /dev/null
+++ b/test/tint/builtins/gen/var/determinant/a0a87c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%determinant_a0a87c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat4x4<f32>, read_write> = var, mat4x4<f32>(vec4<f32>(1.0f))
+    %4:mat4x4<f32> = load %arg_0
+    %5:f32 = determinant %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %determinant_a0a87c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %determinant_a0a87c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %determinant_a0a87c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/determinant/c8251d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/determinant/c8251d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/determinant/c8251d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/determinant/cefdf3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/determinant/cefdf3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/determinant/cefdf3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/determinant/d7c86f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/determinant/d7c86f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8b9e407
--- /dev/null
+++ b/test/tint/builtins/gen/var/determinant/d7c86f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%determinant_d7c86f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat3x3<f16>, read_write> = var, mat3x3<f16>(vec3<f16>(1.0h))
+    %4:mat3x3<f16> = load %arg_0
+    %5:f16 = determinant %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %determinant_d7c86f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %determinant_d7c86f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %determinant_d7c86f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/determinant/e19305.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/determinant/e19305.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ffe3509
--- /dev/null
+++ b/test/tint/builtins/gen/var/determinant/e19305.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%determinant_e19305 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat2x2<f32>, read_write> = var, mat2x2<f32>(vec2<f32>(1.0f))
+    %4:mat2x2<f32> = load %arg_0
+    %5:f32 = determinant %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %determinant_e19305
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %determinant_e19305
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %determinant_e19305
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/determinant/fc12a5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/determinant/fc12a5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..af41785
--- /dev/null
+++ b/test/tint/builtins/gen/var/determinant/fc12a5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%determinant_fc12a5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat2x2<f16>, read_write> = var, mat2x2<f16>(vec2<f16>(1.0h))
+    %4:mat2x2<f16> = load %arg_0
+    %5:f16 = determinant %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %determinant_fc12a5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %determinant_fc12a5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %determinant_fc12a5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/distance/0657d4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/distance/0657d4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..161cecc
--- /dev/null
+++ b/test/tint/builtins/gen/var/distance/0657d4.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%distance_0657d4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_1:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %5:vec3<f32> = load %arg_0
+    %6:vec3<f32> = load %arg_1
+    %7:f32 = distance %5, %6
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %distance_0657d4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %distance_0657d4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %distance_0657d4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/distance/3a175a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/distance/3a175a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/distance/3a175a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/distance/7272f3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/distance/7272f3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fec865b
--- /dev/null
+++ b/test/tint/builtins/gen/var/distance/7272f3.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%distance_7272f3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_1:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %5:vec4<f16> = load %arg_0
+    %6:vec4<f16> = load %arg_1
+    %7:f16 = distance %5, %6
+    %res:ptr<function, f16, read_write> = var, %7
+    %9:f16 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %distance_7272f3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %distance_7272f3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %distance_7272f3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/distance/7d201f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/distance/7d201f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28f8ac1
--- /dev/null
+++ b/test/tint/builtins/gen/var/distance/7d201f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%distance_7d201f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %arg_1:ptr<function, f16, read_write> = var, 1.0h
+    %5:f16 = load %arg_0
+    %6:f16 = load %arg_1
+    %7:f16 = distance %5, %6
+    %res:ptr<function, f16, read_write> = var, %7
+    %9:f16 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %distance_7d201f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %distance_7d201f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %distance_7d201f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/distance/83911f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/distance/83911f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/distance/83911f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/distance/892a5d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/distance/892a5d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2eb3e2e
--- /dev/null
+++ b/test/tint/builtins/gen/var/distance/892a5d.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%distance_892a5d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_1:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %5:vec2<f16> = load %arg_0
+    %6:vec2<f16> = load %arg_1
+    %7:f16 = distance %5, %6
+    %res:ptr<function, f16, read_write> = var, %7
+    %9:f16 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %distance_892a5d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %distance_892a5d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %distance_892a5d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/distance/928fa0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/distance/928fa0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..be57fa6
--- /dev/null
+++ b/test/tint/builtins/gen/var/distance/928fa0.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%distance_928fa0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %5:vec3<f16> = load %arg_0
+    %6:vec3<f16> = load %arg_1
+    %7:f16 = distance %5, %6
+    %res:ptr<function, f16, read_write> = var, %7
+    %9:f16 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %distance_928fa0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %distance_928fa0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %distance_928fa0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/distance/9646ea.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/distance/9646ea.wgsl.expected.ir.msl
new file mode 100644
index 0000000..61a8eaa
--- /dev/null
+++ b/test/tint/builtins/gen/var/distance/9646ea.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%distance_9646ea = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:vec4<f32> = load %arg_0
+    %6:vec4<f32> = load %arg_1
+    %7:f32 = distance %5, %6
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %distance_9646ea
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %distance_9646ea
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %distance_9646ea
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/distance/aa4055.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/distance/aa4055.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5192eda
--- /dev/null
+++ b/test/tint/builtins/gen/var/distance/aa4055.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%distance_aa4055 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_1:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %5:vec2<f32> = load %arg_0
+    %6:vec2<f32> = load %arg_1
+    %7:f32 = distance %5, %6
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %distance_aa4055
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %distance_aa4055
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %distance_aa4055
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/distance/ac5535.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/distance/ac5535.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/distance/ac5535.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/distance/cfed73.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/distance/cfed73.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ddca388
--- /dev/null
+++ b/test/tint/builtins/gen/var/distance/cfed73.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%distance_cfed73 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %arg_1:ptr<function, f32, read_write> = var, 1.0f
+    %5:f32 = load %arg_0
+    %6:f32 = load %arg_1
+    %7:f32 = distance %5, %6
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %distance_cfed73
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %distance_cfed73
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %distance_cfed73
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/distance/f9c9ee.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/distance/f9c9ee.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/distance/f9c9ee.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/dot/08eb56.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot/08eb56.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot/08eb56.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/dot/0c577b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot/0c577b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e62df82
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot/0c577b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%dot_0c577b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:vec4<f32> = load %arg_0
+    %6:vec4<f32> = load %arg_1
+    %7:f32 = dot %5, %6
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %dot_0c577b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %dot_0c577b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %dot_0c577b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dot/0d2c2e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot/0d2c2e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot/0d2c2e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/dot/14bc63.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot/14bc63.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot/14bc63.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/dot/5a4c8f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot/5a4c8f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot/5a4c8f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/dot/7548a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot/7548a0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0644372
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot/7548a0.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%dot_7548a0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:vec3<u32> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:u32 = dot %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %dot_7548a0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %dot_7548a0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %dot_7548a0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dot/883f0e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot/883f0e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9e6559b
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot/883f0e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%dot_883f0e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_1:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %5:vec2<f32> = load %arg_0
+    %6:vec2<f32> = load %arg_1
+    %7:f32 = dot %5, %6
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %dot_883f0e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %dot_883f0e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %dot_883f0e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dot/8e40f1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot/8e40f1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bcea9c2
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot/8e40f1.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%dot_8e40f1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %5:vec3<f16> = load %arg_0
+    %6:vec3<f16> = load %arg_1
+    %7:f16 = dot %5, %6
+    %res:ptr<function, f16, read_write> = var, %7
+    %9:f16 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %dot_8e40f1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %dot_8e40f1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %dot_8e40f1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dot/97c7ee.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot/97c7ee.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a01e534
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot/97c7ee.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%dot_97c7ee = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:vec2<u32> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:u32 = dot %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %dot_97c7ee
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %dot_97c7ee
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %dot_97c7ee
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dot/ba4246.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot/ba4246.wgsl.expected.ir.msl
new file mode 100644
index 0000000..53fbd08
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot/ba4246.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%dot_ba4246 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_1:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %5:vec3<f32> = load %arg_0
+    %6:vec3<f32> = load %arg_1
+    %7:f32 = dot %5, %6
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %dot_ba4246
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %dot_ba4246
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %dot_ba4246
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dot/c11efe.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot/c11efe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot/c11efe.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/dot/cd5a04.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot/cd5a04.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8ac951f5
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot/cd5a04.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%dot_cd5a04 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_1:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %5:vec2<f16> = load %arg_0
+    %6:vec2<f16> = load %arg_1
+    %7:f16 = dot %5, %6
+    %res:ptr<function, f16, read_write> = var, %7
+    %9:f16 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %dot_cd5a04
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %dot_cd5a04
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %dot_cd5a04
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dot/d0d179.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot/d0d179.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4302dad
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot/d0d179.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%dot_d0d179 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_1:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %5:vec4<f16> = load %arg_0
+    %6:vec4<f16> = load %arg_1
+    %7:f16 = dot %5, %6
+    %res:ptr<function, f16, read_write> = var, %7
+    %9:f16 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %dot_d0d179
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %dot_d0d179
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %dot_d0d179
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dot/e994c7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot/e994c7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d56e4fc
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot/e994c7.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%dot_e994c7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %arg_1:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:vec4<u32> = load %arg_0
+    %6:vec4<u32> = load %arg_1
+    %7:u32 = dot %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %dot_e994c7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %dot_e994c7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %dot_e994c7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dot/eb9fbf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot/eb9fbf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot/eb9fbf.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/dot/ef6b1d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot/ef6b1d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2515248
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot/ef6b1d.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%dot_ef6b1d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %arg_1:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:vec4<i32> = load %arg_0
+    %6:vec4<i32> = load %arg_1
+    %7:i32 = dot %5, %6
+    %res:ptr<function, i32, read_write> = var, %7
+    %9:i32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %dot_ef6b1d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %dot_ef6b1d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %dot_ef6b1d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dot/f1312c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot/f1312c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b03adb9
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot/f1312c.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%dot_f1312c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:vec3<i32> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:i32 = dot %5, %6
+    %res:ptr<function, i32, read_write> = var, %7
+    %9:i32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %dot_f1312c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %dot_f1312c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %dot_f1312c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dot/fc5f7c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot/fc5f7c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9b5cd3b
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot/fc5f7c.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%dot_fc5f7c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:vec2<i32> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:i32 = dot %5, %6
+    %res:ptr<function, i32, read_write> = var, %7
+    %9:i32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %dot_fc5f7c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %dot_fc5f7c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %dot_fc5f7c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dot4I8Packed/881e62.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot4I8Packed/881e62.wgsl.expected.ir.msl
new file mode 100644
index 0000000..62b3f2a
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot4I8Packed/881e62.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%dot4I8Packed_881e62 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:u32 = load %arg_0
+    %6:u32 = load %arg_1
+    %7:i32 = dot4I8Packed %5, %6
+    %res:ptr<function, i32, read_write> = var, %7
+    %9:i32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %dot4I8Packed_881e62
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %dot4I8Packed_881e62
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %dot4I8Packed_881e62
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dot4U8Packed/fbed7b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dot4U8Packed/fbed7b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ae45091
--- /dev/null
+++ b/test/tint/builtins/gen/var/dot4U8Packed/fbed7b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%dot4U8Packed_fbed7b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:u32 = load %arg_0
+    %6:u32 = load %arg_1
+    %7:u32 = dot4U8Packed %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %dot4U8Packed_fbed7b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %dot4U8Packed_fbed7b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %dot4U8Packed_fbed7b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdx/0763f7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdx/0763f7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f2ccb0d
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdx/0763f7.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdx_0763f7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = dpdx %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdx_0763f7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdx/99edb1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdx/99edb1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1a46b1e
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdx/99edb1.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdx_99edb1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = dpdx %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdx_99edb1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdx/c487fa.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdx/c487fa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6527df6
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdx/c487fa.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdx_c487fa = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = dpdx %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdx_c487fa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdx/e263de.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdx/e263de.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1683c2d
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdx/e263de.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%dpdx_e263de = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = dpdx %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdx_e263de
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdxCoarse/029152.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdxCoarse/029152.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4c6c6dc
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdxCoarse/029152.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%dpdxCoarse_029152 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = dpdxCoarse %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdxCoarse_029152
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdxCoarse/9581cf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdxCoarse/9581cf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e7f91d1
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdxCoarse/9581cf.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdxCoarse_9581cf = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = dpdxCoarse %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdxCoarse_9581cf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdxCoarse/c28641.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdxCoarse/c28641.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c7d7e52
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdxCoarse/c28641.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdxCoarse_c28641 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = dpdxCoarse %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdxCoarse_c28641
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdxCoarse/f64d7b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdxCoarse/f64d7b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..353ae1a
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdxCoarse/f64d7b.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdxCoarse_f64d7b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = dpdxCoarse %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdxCoarse_f64d7b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdxFine/8c5069.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdxFine/8c5069.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1a3fd13
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdxFine/8c5069.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdxFine_8c5069 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = dpdxFine %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdxFine_8c5069
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdxFine/9631de.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdxFine/9631de.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c2bd361
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdxFine/9631de.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdxFine_9631de = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = dpdxFine %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdxFine_9631de
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdxFine/f401a2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdxFine/f401a2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b68e5a4
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdxFine/f401a2.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%dpdxFine_f401a2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = dpdxFine %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdxFine_f401a2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdxFine/f92fb6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdxFine/f92fb6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..db69509
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdxFine/f92fb6.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdxFine_f92fb6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = dpdxFine %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdxFine_f92fb6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdy/699a05.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdy/699a05.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cd0ff65
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdy/699a05.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdy_699a05 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = dpdy %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdy_699a05
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdy/7f8d84.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdy/7f8d84.wgsl.expected.ir.msl
new file mode 100644
index 0000000..51e5715
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdy/7f8d84.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%dpdy_7f8d84 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = dpdy %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdy_7f8d84
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdy/a8b56e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdy/a8b56e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..237085a
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdy/a8b56e.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdy_a8b56e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = dpdy %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdy_a8b56e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdy/feb40f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdy/feb40f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..16ee366
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdy/feb40f.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdy_feb40f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = dpdy %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdy_feb40f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdyCoarse/3e1ab4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdyCoarse/3e1ab4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dde73f5
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdyCoarse/3e1ab4.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdyCoarse_3e1ab4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = dpdyCoarse %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdyCoarse_3e1ab4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdyCoarse/445d24.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdyCoarse/445d24.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9c4f7bc
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdyCoarse/445d24.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdyCoarse_445d24 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = dpdyCoarse %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdyCoarse_445d24
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdyCoarse/870a7e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdyCoarse/870a7e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..12c284b
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdyCoarse/870a7e.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%dpdyCoarse_870a7e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = dpdyCoarse %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdyCoarse_870a7e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdyCoarse/ae1873.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdyCoarse/ae1873.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7653c00
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdyCoarse/ae1873.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdyCoarse_ae1873 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = dpdyCoarse %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdyCoarse_ae1873
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdyFine/1fb7ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdyFine/1fb7ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..685e9e2
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdyFine/1fb7ab.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdyFine_1fb7ab = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = dpdyFine %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdyFine_1fb7ab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdyFine/6eb673.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdyFine/6eb673.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d024180
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdyFine/6eb673.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%dpdyFine_6eb673 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = dpdyFine %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdyFine_6eb673
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdyFine/d0a648.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdyFine/d0a648.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3fd27d7
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdyFine/d0a648.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdyFine_d0a648 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = dpdyFine %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdyFine_d0a648
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/dpdyFine/df33aa.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/dpdyFine/df33aa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c056a9a
--- /dev/null
+++ b/test/tint/builtins/gen/var/dpdyFine/df33aa.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%dpdyFine_df33aa = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = dpdyFine %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %dpdyFine_df33aa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/exp/0f70eb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp/0f70eb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ab039ff
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp/0f70eb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%exp_0f70eb = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = exp %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %exp_0f70eb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %exp_0f70eb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %exp_0f70eb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/exp/13806d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp/13806d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e884b5
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp/13806d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%exp_13806d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = exp %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %exp_13806d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %exp_13806d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %exp_13806d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/exp/1951e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp/1951e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..75bfcfa
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp/1951e7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%exp_1951e7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = exp %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %exp_1951e7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %exp_1951e7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %exp_1951e7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/exp/2e08e2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp/2e08e2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..535d7cd
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp/2e08e2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%exp_2e08e2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = exp %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %exp_2e08e2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %exp_2e08e2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %exp_2e08e2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/exp/611a87.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp/611a87.wgsl.expected.ir.msl
new file mode 100644
index 0000000..42b7d2f
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp/611a87.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%exp_611a87 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = exp %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %exp_611a87
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %exp_611a87
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %exp_611a87
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/exp/699629.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp/699629.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp/699629.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/exp/771fd2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp/771fd2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1944504
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp/771fd2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%exp_771fd2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = exp %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %exp_771fd2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %exp_771fd2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %exp_771fd2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/exp/c18fe9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp/c18fe9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6ebeb44
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp/c18fe9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%exp_c18fe9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %arg_0
+    %5:f16 = exp %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %exp_c18fe9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %exp_c18fe9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %exp_c18fe9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/exp/d98450.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp/d98450.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b888e91
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp/d98450.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%exp_d98450 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = exp %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %exp_d98450
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %exp_d98450
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %exp_d98450
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/exp/dad791.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/exp2/151a4c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp2/151a4c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f6f2029
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp2/151a4c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%exp2_151a4c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = exp2 %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %exp2_151a4c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %exp2_151a4c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %exp2_151a4c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/exp2/18aa76.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp2/18aa76.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp2/18aa76.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/exp2/1f8680.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp2/1f8680.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a9921b3
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp2/1f8680.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%exp2_1f8680 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = exp2 %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %exp2_1f8680
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %exp2_1f8680
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %exp2_1f8680
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/exp2/303753.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp2/303753.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp2/303753.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/exp2/751377.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp2/751377.wgsl.expected.ir.msl
new file mode 100644
index 0000000..141f2ee
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp2/751377.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%exp2_751377 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = exp2 %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %exp2_751377
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %exp2_751377
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %exp2_751377
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/exp2/8bd72d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp2/8bd72d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp2/8bd72d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/exp2/a9d0a7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp2/a9d0a7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5f32971
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp2/a9d0a7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%exp2_a9d0a7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = exp2 %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %exp2_a9d0a7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %exp2_a9d0a7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %exp2_a9d0a7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/exp2/b408e4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp2/b408e4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2782c7f
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp2/b408e4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%exp2_b408e4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %arg_0
+    %5:f16 = exp2 %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %exp2_b408e4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %exp2_b408e4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %exp2_b408e4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/exp2/d6777c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp2/d6777c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..689eb49
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp2/d6777c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%exp2_d6777c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = exp2 %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %exp2_d6777c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %exp2_d6777c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %exp2_d6777c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/exp2/dea523.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp2/dea523.wgsl.expected.ir.msl
new file mode 100644
index 0000000..03ffd60
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp2/dea523.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%exp2_dea523 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = exp2 %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %exp2_dea523
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %exp2_dea523
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %exp2_dea523
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/exp2/f4f0f1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp2/f4f0f1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp2/f4f0f1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/exp2/ffa827.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/exp2/ffa827.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3bb9d8a
--- /dev/null
+++ b/test/tint/builtins/gen/var/exp2/ffa827.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%exp2_ffa827 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = exp2 %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %exp2_ffa827
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %exp2_ffa827
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %exp2_ffa827
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/extractBits/12b197.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/extractBits/12b197.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8a5cca9
--- /dev/null
+++ b/test/tint/builtins/gen/var/extractBits/12b197.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%extractBits_12b197 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:vec3<u32> = load %arg_0
+    %7:u32 = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec3<u32> = extractBits %6, %7, %8
+    %res:ptr<function, vec3<u32>, read_write> = var, %9
+    %11:vec3<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %extractBits_12b197
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %extractBits_12b197
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %extractBits_12b197
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/extractBits/249874.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/extractBits/249874.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7f32f6d
--- /dev/null
+++ b/test/tint/builtins/gen/var/extractBits/249874.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%extractBits_249874 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, i32, read_write> = var, 1i
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:i32 = load %arg_0
+    %7:u32 = load %arg_1
+    %8:u32 = load %arg_2
+    %9:i32 = extractBits %6, %7, %8
+    %res:ptr<function, i32, read_write> = var, %9
+    %11:i32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %extractBits_249874
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %extractBits_249874
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %extractBits_249874
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/extractBits/631377.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/extractBits/631377.wgsl.expected.ir.msl
new file mode 100644
index 0000000..36a85a4
--- /dev/null
+++ b/test/tint/builtins/gen/var/extractBits/631377.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%extractBits_631377 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:vec4<u32> = load %arg_0
+    %7:u32 = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = extractBits %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %extractBits_631377
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %extractBits_631377
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %extractBits_631377
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/extractBits/a99a8d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/extractBits/a99a8d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1e428fb
--- /dev/null
+++ b/test/tint/builtins/gen/var/extractBits/a99a8d.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%extractBits_a99a8d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:vec2<i32> = load %arg_0
+    %7:u32 = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec2<i32> = extractBits %6, %7, %8
+    %res:ptr<function, vec2<i32>, read_write> = var, %9
+    %11:vec2<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %extractBits_a99a8d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %extractBits_a99a8d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %extractBits_a99a8d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/extractBits/ce81f8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/extractBits/ce81f8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a9dd569
--- /dev/null
+++ b/test/tint/builtins/gen/var/extractBits/ce81f8.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%extractBits_ce81f8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:u32 = load %arg_0
+    %7:u32 = load %arg_1
+    %8:u32 = load %arg_2
+    %9:u32 = extractBits %6, %7, %8
+    %res:ptr<function, u32, read_write> = var, %9
+    %11:u32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %extractBits_ce81f8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %extractBits_ce81f8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %extractBits_ce81f8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/extractBits/e04f5d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/extractBits/e04f5d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8ddb766
--- /dev/null
+++ b/test/tint/builtins/gen/var/extractBits/e04f5d.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%extractBits_e04f5d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:vec3<i32> = load %arg_0
+    %7:u32 = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec3<i32> = extractBits %6, %7, %8
+    %res:ptr<function, vec3<i32>, read_write> = var, %9
+    %11:vec3<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %extractBits_e04f5d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %extractBits_e04f5d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %extractBits_e04f5d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/extractBits/f28f69.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/extractBits/f28f69.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3bb4fc0
--- /dev/null
+++ b/test/tint/builtins/gen/var/extractBits/f28f69.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%extractBits_f28f69 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:vec2<u32> = load %arg_0
+    %7:u32 = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec2<u32> = extractBits %6, %7, %8
+    %res:ptr<function, vec2<u32>, read_write> = var, %9
+    %11:vec2<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %extractBits_f28f69
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %extractBits_f28f69
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %extractBits_f28f69
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/extractBits/fb850f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/extractBits/fb850f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e72884e
--- /dev/null
+++ b/test/tint/builtins/gen/var/extractBits/fb850f.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%extractBits_fb850f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:vec4<i32> = load %arg_0
+    %7:u32 = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = extractBits %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %extractBits_fb850f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %extractBits_fb850f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %extractBits_fb850f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/faceForward/2c4d14.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/faceForward/2c4d14.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/faceForward/2c4d14.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/faceForward/524986.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/faceForward/524986.wgsl.expected.ir.msl
new file mode 100644
index 0000000..67082d6
--- /dev/null
+++ b/test/tint/builtins/gen/var/faceForward/524986.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%faceForward_524986 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_2:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %6:vec3<f16> = load %arg_0
+    %7:vec3<f16> = load %arg_1
+    %8:vec3<f16> = load %arg_2
+    %9:vec3<f16> = faceForward %6, %7, %8
+    %res:ptr<function, vec3<f16>, read_write> = var, %9
+    %11:vec3<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %faceForward_524986
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %faceForward_524986
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %faceForward_524986
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/faceForward/5afbd5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/faceForward/5afbd5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3fcd741
--- /dev/null
+++ b/test/tint/builtins/gen/var/faceForward/5afbd5.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%faceForward_5afbd5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_1:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %6:vec3<f32> = load %arg_0
+    %7:vec3<f32> = load %arg_1
+    %8:vec3<f32> = load %arg_2
+    %9:vec3<f32> = faceForward %6, %7, %8
+    %res:ptr<function, vec3<f32>, read_write> = var, %9
+    %11:vec3<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %faceForward_5afbd5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %faceForward_5afbd5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %faceForward_5afbd5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/faceForward/b316e5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/faceForward/b316e5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..13ee1a5
--- /dev/null
+++ b/test/tint/builtins/gen/var/faceForward/b316e5.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%faceForward_b316e5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:vec4<f32> = load %arg_0
+    %7:vec4<f32> = load %arg_1
+    %8:vec4<f32> = load %arg_2
+    %9:vec4<f32> = faceForward %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %faceForward_b316e5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %faceForward_b316e5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %faceForward_b316e5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/faceForward/b42ef3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/faceForward/b42ef3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/faceForward/b42ef3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/faceForward/cc63dc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/faceForward/cc63dc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..56dcd12
--- /dev/null
+++ b/test/tint/builtins/gen/var/faceForward/cc63dc.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%faceForward_cc63dc = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_1:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_2:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %6:vec4<f16> = load %arg_0
+    %7:vec4<f16> = load %arg_1
+    %8:vec4<f16> = load %arg_2
+    %9:vec4<f16> = faceForward %6, %7, %8
+    %res:ptr<function, vec4<f16>, read_write> = var, %9
+    %11:vec4<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %faceForward_cc63dc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %faceForward_cc63dc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %faceForward_cc63dc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/faceForward/e6908b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/faceForward/e6908b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..63ef442
--- /dev/null
+++ b/test/tint/builtins/gen/var/faceForward/e6908b.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%faceForward_e6908b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_1:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:vec2<f32> = load %arg_0
+    %7:vec2<f32> = load %arg_1
+    %8:vec2<f32> = load %arg_2
+    %9:vec2<f32> = faceForward %6, %7, %8
+    %res:ptr<function, vec2<f32>, read_write> = var, %9
+    %11:vec2<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %faceForward_e6908b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %faceForward_e6908b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %faceForward_e6908b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/faceForward/fb0f2e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/faceForward/fb0f2e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7ac04c3
--- /dev/null
+++ b/test/tint/builtins/gen/var/faceForward/fb0f2e.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%faceForward_fb0f2e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_1:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_2:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %6:vec2<f16> = load %arg_0
+    %7:vec2<f16> = load %arg_1
+    %8:vec2<f16> = load %arg_2
+    %9:vec2<f16> = faceForward %6, %7, %8
+    %res:ptr<function, vec2<f16>, read_write> = var, %9
+    %11:vec2<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %faceForward_fb0f2e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %faceForward_fb0f2e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %faceForward_fb0f2e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/faceForward/fe522b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/faceForward/fe522b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/faceForward/fe522b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/firstLeadingBit/000ff3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/firstLeadingBit/000ff3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ac2c9ea
--- /dev/null
+++ b/test/tint/builtins/gen/var/firstLeadingBit/000ff3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstLeadingBit_000ff3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %4:vec4<u32> = load %arg_0
+    %5:vec4<u32> = firstLeadingBit %4
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %firstLeadingBit_000ff3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %firstLeadingBit_000ff3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %firstLeadingBit_000ff3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/firstLeadingBit/35053e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/firstLeadingBit/35053e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0df5bde
--- /dev/null
+++ b/test/tint/builtins/gen/var/firstLeadingBit/35053e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstLeadingBit_35053e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %4:vec3<i32> = load %arg_0
+    %5:vec3<i32> = firstLeadingBit %4
+    %res:ptr<function, vec3<i32>, read_write> = var, %5
+    %7:vec3<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %firstLeadingBit_35053e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %firstLeadingBit_35053e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %firstLeadingBit_35053e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/firstLeadingBit/3fd7d0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/firstLeadingBit/3fd7d0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9500d88
--- /dev/null
+++ b/test/tint/builtins/gen/var/firstLeadingBit/3fd7d0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstLeadingBit_3fd7d0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %4:vec3<u32> = load %arg_0
+    %5:vec3<u32> = firstLeadingBit %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %firstLeadingBit_3fd7d0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %firstLeadingBit_3fd7d0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %firstLeadingBit_3fd7d0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/firstLeadingBit/57a1a3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/firstLeadingBit/57a1a3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..23f7722
--- /dev/null
+++ b/test/tint/builtins/gen/var/firstLeadingBit/57a1a3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%firstLeadingBit_57a1a3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, i32, read_write> = var, 1i
+    %4:i32 = load %arg_0
+    %5:i32 = firstLeadingBit %4
+    %res:ptr<function, i32, read_write> = var, %5
+    %7:i32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %firstLeadingBit_57a1a3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %firstLeadingBit_57a1a3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %firstLeadingBit_57a1a3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/firstLeadingBit/6fe804.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/firstLeadingBit/6fe804.wgsl.expected.ir.msl
new file mode 100644
index 0000000..db3976a
--- /dev/null
+++ b/test/tint/builtins/gen/var/firstLeadingBit/6fe804.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstLeadingBit_6fe804 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %4:vec2<u32> = load %arg_0
+    %5:vec2<u32> = firstLeadingBit %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %firstLeadingBit_6fe804
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %firstLeadingBit_6fe804
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %firstLeadingBit_6fe804
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/firstLeadingBit/a622c2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/firstLeadingBit/a622c2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dd8fda5
--- /dev/null
+++ b/test/tint/builtins/gen/var/firstLeadingBit/a622c2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstLeadingBit_a622c2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %4:vec2<i32> = load %arg_0
+    %5:vec2<i32> = firstLeadingBit %4
+    %res:ptr<function, vec2<i32>, read_write> = var, %5
+    %7:vec2<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %firstLeadingBit_a622c2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %firstLeadingBit_a622c2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %firstLeadingBit_a622c2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/firstLeadingBit/c1f940.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/firstLeadingBit/c1f940.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fafbc29
--- /dev/null
+++ b/test/tint/builtins/gen/var/firstLeadingBit/c1f940.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstLeadingBit_c1f940 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %4:vec4<i32> = load %arg_0
+    %5:vec4<i32> = firstLeadingBit %4
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %firstLeadingBit_c1f940
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %firstLeadingBit_c1f940
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %firstLeadingBit_c1f940
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/firstLeadingBit/f0779d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/firstLeadingBit/f0779d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0d5c516
--- /dev/null
+++ b/test/tint/builtins/gen/var/firstLeadingBit/f0779d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%firstLeadingBit_f0779d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %4:u32 = load %arg_0
+    %5:u32 = firstLeadingBit %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %firstLeadingBit_f0779d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %firstLeadingBit_f0779d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %firstLeadingBit_f0779d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/firstTrailingBit/110f2c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/firstTrailingBit/110f2c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c131321
--- /dev/null
+++ b/test/tint/builtins/gen/var/firstTrailingBit/110f2c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstTrailingBit_110f2c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %4:vec4<u32> = load %arg_0
+    %5:vec4<u32> = firstTrailingBit %4
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %firstTrailingBit_110f2c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %firstTrailingBit_110f2c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %firstTrailingBit_110f2c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/firstTrailingBit/3a2acc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/firstTrailingBit/3a2acc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..452eb16
--- /dev/null
+++ b/test/tint/builtins/gen/var/firstTrailingBit/3a2acc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%firstTrailingBit_3a2acc = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, i32, read_write> = var, 1i
+    %4:i32 = load %arg_0
+    %5:i32 = firstTrailingBit %4
+    %res:ptr<function, i32, read_write> = var, %5
+    %7:i32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %firstTrailingBit_3a2acc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %firstTrailingBit_3a2acc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %firstTrailingBit_3a2acc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/firstTrailingBit/45eb10.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/firstTrailingBit/45eb10.wgsl.expected.ir.msl
new file mode 100644
index 0000000..876f411
--- /dev/null
+++ b/test/tint/builtins/gen/var/firstTrailingBit/45eb10.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstTrailingBit_45eb10 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %4:vec2<u32> = load %arg_0
+    %5:vec2<u32> = firstTrailingBit %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %firstTrailingBit_45eb10
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %firstTrailingBit_45eb10
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %firstTrailingBit_45eb10
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/firstTrailingBit/47d475.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/firstTrailingBit/47d475.wgsl.expected.ir.msl
new file mode 100644
index 0000000..76746b7
--- /dev/null
+++ b/test/tint/builtins/gen/var/firstTrailingBit/47d475.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%firstTrailingBit_47d475 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %4:u32 = load %arg_0
+    %5:u32 = firstTrailingBit %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %firstTrailingBit_47d475
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %firstTrailingBit_47d475
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %firstTrailingBit_47d475
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/firstTrailingBit/50c072.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/firstTrailingBit/50c072.wgsl.expected.ir.msl
new file mode 100644
index 0000000..62f4c5a
--- /dev/null
+++ b/test/tint/builtins/gen/var/firstTrailingBit/50c072.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstTrailingBit_50c072 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %4:vec2<i32> = load %arg_0
+    %5:vec2<i32> = firstTrailingBit %4
+    %res:ptr<function, vec2<i32>, read_write> = var, %5
+    %7:vec2<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %firstTrailingBit_50c072
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %firstTrailingBit_50c072
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %firstTrailingBit_50c072
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/firstTrailingBit/7496d6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/firstTrailingBit/7496d6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4603f17
--- /dev/null
+++ b/test/tint/builtins/gen/var/firstTrailingBit/7496d6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstTrailingBit_7496d6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %4:vec3<i32> = load %arg_0
+    %5:vec3<i32> = firstTrailingBit %4
+    %res:ptr<function, vec3<i32>, read_write> = var, %5
+    %7:vec3<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %firstTrailingBit_7496d6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %firstTrailingBit_7496d6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %firstTrailingBit_7496d6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/firstTrailingBit/86551b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/firstTrailingBit/86551b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6faf67c
--- /dev/null
+++ b/test/tint/builtins/gen/var/firstTrailingBit/86551b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstTrailingBit_86551b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %4:vec4<i32> = load %arg_0
+    %5:vec4<i32> = firstTrailingBit %4
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %firstTrailingBit_86551b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %firstTrailingBit_86551b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %firstTrailingBit_86551b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/firstTrailingBit/cb51ce.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/firstTrailingBit/cb51ce.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dcd37d5
--- /dev/null
+++ b/test/tint/builtins/gen/var/firstTrailingBit/cb51ce.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%firstTrailingBit_cb51ce = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %4:vec3<u32> = load %arg_0
+    %5:vec3<u32> = firstTrailingBit %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %firstTrailingBit_cb51ce
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %firstTrailingBit_cb51ce
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %firstTrailingBit_cb51ce
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/floor/218952.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/floor/218952.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/floor/218952.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/floor/3802c0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/floor/3802c0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..600cd86
--- /dev/null
+++ b/test/tint/builtins/gen/var/floor/3802c0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%floor_3802c0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.5h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = floor %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %floor_3802c0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %floor_3802c0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %floor_3802c0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/floor/3bccc4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/floor/3bccc4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1b81954
--- /dev/null
+++ b/test/tint/builtins/gen/var/floor/3bccc4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%floor_3bccc4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.5f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = floor %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %floor_3bccc4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %floor_3bccc4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %floor_3bccc4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/floor/5fc9ac.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/floor/5fc9ac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6595428
--- /dev/null
+++ b/test/tint/builtins/gen/var/floor/5fc9ac.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%floor_5fc9ac = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.5f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = floor %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %floor_5fc9ac
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %floor_5fc9ac
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %floor_5fc9ac
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/floor/60d7ea.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/floor/60d7ea.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0b3abfc
--- /dev/null
+++ b/test/tint/builtins/gen/var/floor/60d7ea.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%floor_60d7ea = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.5f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = floor %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %floor_60d7ea
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %floor_60d7ea
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %floor_60d7ea
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/floor/66f154.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/floor/66f154.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6839453
--- /dev/null
+++ b/test/tint/builtins/gen/var/floor/66f154.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%floor_66f154 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.5f
+    %4:f32 = load %arg_0
+    %5:f32 = floor %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %floor_66f154
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %floor_66f154
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %floor_66f154
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/floor/84658c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/floor/84658c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fba67f0
--- /dev/null
+++ b/test/tint/builtins/gen/var/floor/84658c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%floor_84658c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.5h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = floor %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %floor_84658c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %floor_84658c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %floor_84658c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/floor/953774.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/floor/953774.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/floor/953774.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/floor/a2d31b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/floor/a2d31b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1b9539b
--- /dev/null
+++ b/test/tint/builtins/gen/var/floor/a2d31b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%floor_a2d31b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.5h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = floor %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %floor_a2d31b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %floor_a2d31b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %floor_a2d31b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/floor/b6e09c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/floor/b6e09c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b2789ca
--- /dev/null
+++ b/test/tint/builtins/gen/var/floor/b6e09c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%floor_b6e09c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.5h
+    %4:f16 = load %arg_0
+    %5:f16 = floor %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %floor_b6e09c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %floor_b6e09c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %floor_b6e09c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/floor/dcd5a2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/floor/dcd5a2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/floor/dcd5a2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/floor/e585ef.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/floor/e585ef.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/floor/e585ef.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/fma/143d5d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fma/143d5d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/fma/143d5d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/fma/1f5084.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fma/1f5084.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/fma/1f5084.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/fma/26a7a9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fma/26a7a9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..11fefc1
--- /dev/null
+++ b/test/tint/builtins/gen/var/fma/26a7a9.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fma_26a7a9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_1:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:vec2<f32> = load %arg_0
+    %7:vec2<f32> = load %arg_1
+    %8:vec2<f32> = load %arg_2
+    %9:vec2<f32> = fma %6, %7, %8
+    %res:ptr<function, vec2<f32>, read_write> = var, %9
+    %11:vec2<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %fma_26a7a9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %fma_26a7a9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %fma_26a7a9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fma/466442.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fma/466442.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/fma/466442.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/fma/6a3283.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fma/6a3283.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cb3d1ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/fma/6a3283.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fma_6a3283 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:vec4<f32> = load %arg_0
+    %7:vec4<f32> = load %arg_1
+    %8:vec4<f32> = load %arg_2
+    %9:vec4<f32> = fma %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %fma_6a3283
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %fma_6a3283
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %fma_6a3283
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fma/ab7818.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fma/ab7818.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ef98e2c
--- /dev/null
+++ b/test/tint/builtins/gen/var/fma/ab7818.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%fma_ab7818 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_1:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_2:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %6:vec4<f16> = load %arg_0
+    %7:vec4<f16> = load %arg_1
+    %8:vec4<f16> = load %arg_2
+    %9:vec4<f16> = fma %6, %7, %8
+    %res:ptr<function, vec4<f16>, read_write> = var, %9
+    %11:vec4<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %fma_ab7818
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %fma_ab7818
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %fma_ab7818
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fma/bf21b6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fma/bf21b6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f4d306e
--- /dev/null
+++ b/test/tint/builtins/gen/var/fma/bf21b6.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%fma_bf21b6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_1:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_2:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %6:vec2<f16> = load %arg_0
+    %7:vec2<f16> = load %arg_1
+    %8:vec2<f16> = load %arg_2
+    %9:vec2<f16> = fma %6, %7, %8
+    %res:ptr<function, vec2<f16>, read_write> = var, %9
+    %11:vec2<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %fma_bf21b6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %fma_bf21b6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %fma_bf21b6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fma/c10ba3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fma/c10ba3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..23bc79a
--- /dev/null
+++ b/test/tint/builtins/gen/var/fma/c10ba3.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%fma_c10ba3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %arg_1:ptr<function, f32, read_write> = var, 1.0f
+    %arg_2:ptr<function, f32, read_write> = var, 1.0f
+    %6:f32 = load %arg_0
+    %7:f32 = load %arg_1
+    %8:f32 = load %arg_2
+    %9:f32 = fma %6, %7, %8
+    %res:ptr<function, f32, read_write> = var, %9
+    %11:f32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %fma_c10ba3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %fma_c10ba3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %fma_c10ba3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fma/c8abb3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fma/c8abb3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c542f0e
--- /dev/null
+++ b/test/tint/builtins/gen/var/fma/c8abb3.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%fma_c8abb3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %arg_1:ptr<function, f16, read_write> = var, 1.0h
+    %arg_2:ptr<function, f16, read_write> = var, 1.0h
+    %6:f16 = load %arg_0
+    %7:f16 = load %arg_1
+    %8:f16 = load %arg_2
+    %9:f16 = fma %6, %7, %8
+    %res:ptr<function, f16, read_write> = var, %9
+    %11:f16 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %fma_c8abb3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %fma_c8abb3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %fma_c8abb3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fma/e17c5c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fma/e17c5c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3bff0ed
--- /dev/null
+++ b/test/tint/builtins/gen/var/fma/e17c5c.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fma_e17c5c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_1:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %6:vec3<f32> = load %arg_0
+    %7:vec3<f32> = load %arg_1
+    %8:vec3<f32> = load %arg_2
+    %9:vec3<f32> = fma %6, %7, %8
+    %res:ptr<function, vec3<f32>, read_write> = var, %9
+    %11:vec3<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %fma_e17c5c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %fma_e17c5c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %fma_e17c5c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fma/e7abdc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fma/e7abdc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bbe239b
--- /dev/null
+++ b/test/tint/builtins/gen/var/fma/e7abdc.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%fma_e7abdc = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_2:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %6:vec3<f16> = load %arg_0
+    %7:vec3<f16> = load %arg_1
+    %8:vec3<f16> = load %arg_2
+    %9:vec3<f16> = fma %6, %7, %8
+    %res:ptr<function, vec3<f16>, read_write> = var, %9
+    %11:vec3<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %fma_e7abdc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %fma_e7abdc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %fma_e7abdc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fma/eb25d7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fma/eb25d7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/fma/eb25d7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/fract/181aa9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fract/181aa9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e8836d1
--- /dev/null
+++ b/test/tint/builtins/gen/var/fract/181aa9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%fract_181aa9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.25h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = fract %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %fract_181aa9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fract_181aa9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %fract_181aa9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fract/2eddfe.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fract/2eddfe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/fract/2eddfe.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/fract/498c77.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fract/498c77.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9e278f3
--- /dev/null
+++ b/test/tint/builtins/gen/var/fract/498c77.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%fract_498c77 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.25h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = fract %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %fract_498c77
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fract_498c77
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %fract_498c77
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fract/7e3f2d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fract/7e3f2d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/fract/7e3f2d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/fract/8bc1e9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fract/8bc1e9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b0be0ea
--- /dev/null
+++ b/test/tint/builtins/gen/var/fract/8bc1e9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fract_8bc1e9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.25f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = fract %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %fract_8bc1e9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fract_8bc1e9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %fract_8bc1e9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fract/943cb1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fract/943cb1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5ac12bb
--- /dev/null
+++ b/test/tint/builtins/gen/var/fract/943cb1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fract_943cb1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.25f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = fract %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %fract_943cb1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fract_943cb1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %fract_943cb1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fract/958a1d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fract/958a1d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..045aa69
--- /dev/null
+++ b/test/tint/builtins/gen/var/fract/958a1d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%fract_958a1d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.25h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = fract %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %fract_958a1d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fract_958a1d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %fract_958a1d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fract/a49758.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fract/a49758.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d8a61c2
--- /dev/null
+++ b/test/tint/builtins/gen/var/fract/a49758.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fract_a49758 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.25f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = fract %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %fract_a49758
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fract_a49758
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %fract_a49758
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fract/eb38ce.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fract/eb38ce.wgsl.expected.ir.msl
new file mode 100644
index 0000000..031f2e2
--- /dev/null
+++ b/test/tint/builtins/gen/var/fract/eb38ce.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%fract_eb38ce = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.25h
+    %4:f16 = load %arg_0
+    %5:f16 = fract %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %fract_eb38ce
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fract_eb38ce
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %fract_eb38ce
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fract/ed00ca.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fract/ed00ca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/fract/ed00ca.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/fract/ed2f79.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fract/ed2f79.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/fract/ed2f79.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/fract/fa5c71.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fract/fa5c71.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f6da20e
--- /dev/null
+++ b/test/tint/builtins/gen/var/fract/fa5c71.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%fract_fa5c71 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.25f
+    %4:f32 = load %arg_0
+    %5:f32 = fract %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %fract_fa5c71
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %fract_fa5c71
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %fract_fa5c71
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/frexp/34bbfb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/34bbfb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/frexp/34bbfb.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/frexp/3dd21e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/3dd21e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/frexp/3dd21e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/frexp/4b2200.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/4b2200.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/frexp/4b2200.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/frexp/5257dd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/5257dd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/frexp/5257dd.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/frexp/5f47bf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/5f47bf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/frexp/5f47bf.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/frexp/6fb3ad.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/6fb3ad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/frexp/6fb3ad.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/frexp/77af93.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/77af93.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/frexp/77af93.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/frexp/979800.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/979800.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/frexp/979800.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/frexp/ae4a66.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/ae4a66.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/frexp/ae4a66.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/frexp/bee870.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/bee870.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/frexp/bee870.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/frexp/bf45ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/bf45ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/frexp/bf45ae.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/frexp/eb2421.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/eb2421.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/frexp/eb2421.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/fwidth/5d1b39.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fwidth/5d1b39.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0f0ce34
--- /dev/null
+++ b/test/tint/builtins/gen/var/fwidth/5d1b39.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fwidth_5d1b39 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = fwidth %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %fwidth_5d1b39
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fwidth/b83ebb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fwidth/b83ebb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..958c5ac
--- /dev/null
+++ b/test/tint/builtins/gen/var/fwidth/b83ebb.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fwidth_b83ebb = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = fwidth %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %fwidth_b83ebb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fwidth/d2ab9a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fwidth/d2ab9a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2f23eca
--- /dev/null
+++ b/test/tint/builtins/gen/var/fwidth/d2ab9a.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fwidth_d2ab9a = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = fwidth %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %fwidth_d2ab9a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fwidth/df38ef.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fwidth/df38ef.wgsl.expected.ir.msl
new file mode 100644
index 0000000..27bcda3
--- /dev/null
+++ b/test/tint/builtins/gen/var/fwidth/df38ef.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%fwidth_df38ef = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = fwidth %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %fwidth_df38ef
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fwidthCoarse/159c8a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fwidthCoarse/159c8a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5040af1
--- /dev/null
+++ b/test/tint/builtins/gen/var/fwidthCoarse/159c8a.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%fwidthCoarse_159c8a = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = fwidthCoarse %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %fwidthCoarse_159c8a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fwidthCoarse/1e59d9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fwidthCoarse/1e59d9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0592d9b
--- /dev/null
+++ b/test/tint/builtins/gen/var/fwidthCoarse/1e59d9.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fwidthCoarse_1e59d9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = fwidthCoarse %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %fwidthCoarse_1e59d9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fwidthCoarse/4e4fc4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fwidthCoarse/4e4fc4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4439910
--- /dev/null
+++ b/test/tint/builtins/gen/var/fwidthCoarse/4e4fc4.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fwidthCoarse_4e4fc4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = fwidthCoarse %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %fwidthCoarse_4e4fc4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fwidthCoarse/e653f7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fwidthCoarse/e653f7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..750e4aa
--- /dev/null
+++ b/test/tint/builtins/gen/var/fwidthCoarse/e653f7.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fwidthCoarse_e653f7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = fwidthCoarse %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %fwidthCoarse_e653f7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fwidthFine/523fdc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fwidthFine/523fdc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdac623
--- /dev/null
+++ b/test/tint/builtins/gen/var/fwidthFine/523fdc.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fwidthFine_523fdc = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = fwidthFine %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %fwidthFine_523fdc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fwidthFine/68f4ef.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fwidthFine/68f4ef.wgsl.expected.ir.msl
new file mode 100644
index 0000000..33b92c0
--- /dev/null
+++ b/test/tint/builtins/gen/var/fwidthFine/68f4ef.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fwidthFine_68f4ef = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = fwidthFine %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %fwidthFine_68f4ef
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fwidthFine/f1742d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fwidthFine/f1742d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..948cb7b
--- /dev/null
+++ b/test/tint/builtins/gen/var/fwidthFine/f1742d.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%fwidthFine_f1742d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = fwidthFine %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %fwidthFine_f1742d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/fwidthFine/ff6aa0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/fwidthFine/ff6aa0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..883da05
--- /dev/null
+++ b/test/tint/builtins/gen/var/fwidthFine/ff6aa0.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%fwidthFine_ff6aa0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = fwidthFine %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %fwidthFine_ff6aa0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/insertBits/3c7ba5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/insertBits/3c7ba5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f4759b2
--- /dev/null
+++ b/test/tint/builtins/gen/var/insertBits/3c7ba5.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%insertBits_3c7ba5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:vec2<u32> = load %arg_0
+    %8:vec2<u32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec2<u32> = insertBits %7, %8, %9, %10
+    %res:ptr<function, vec2<u32>, read_write> = var, %11
+    %13:vec2<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %insertBits_3c7ba5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %insertBits_3c7ba5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %insertBits_3c7ba5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/insertBits/428b0b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/insertBits/428b0b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0630d0c
--- /dev/null
+++ b/test/tint/builtins/gen/var/insertBits/428b0b.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%insertBits_428b0b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:vec3<i32> = load %arg_0
+    %8:vec3<i32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec3<i32> = insertBits %7, %8, %9, %10
+    %res:ptr<function, vec3<i32>, read_write> = var, %11
+    %13:vec3<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %insertBits_428b0b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %insertBits_428b0b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %insertBits_428b0b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/insertBits/51ede1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/insertBits/51ede1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..186cb39
--- /dev/null
+++ b/test/tint/builtins/gen/var/insertBits/51ede1.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%insertBits_51ede1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %arg_1:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:vec4<u32> = load %arg_0
+    %8:vec4<u32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<u32> = insertBits %7, %8, %9, %10
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %insertBits_51ede1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %insertBits_51ede1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %insertBits_51ede1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/insertBits/65468b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/insertBits/65468b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f24526d
--- /dev/null
+++ b/test/tint/builtins/gen/var/insertBits/65468b.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%insertBits_65468b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, i32, read_write> = var, 1i
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:i32 = load %arg_0
+    %8:i32 = load %arg_1
+    %9:u32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:i32 = insertBits %7, %8, %9, %10
+    %res:ptr<function, i32, read_write> = var, %11
+    %13:i32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %insertBits_65468b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %insertBits_65468b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %insertBits_65468b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/insertBits/87826b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/insertBits/87826b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..147012f
--- /dev/null
+++ b/test/tint/builtins/gen/var/insertBits/87826b.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%insertBits_87826b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:vec3<u32> = load %arg_0
+    %8:vec3<u32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec3<u32> = insertBits %7, %8, %9, %10
+    %res:ptr<function, vec3<u32>, read_write> = var, %11
+    %13:vec3<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %insertBits_87826b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %insertBits_87826b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %insertBits_87826b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/insertBits/d86978.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/insertBits/d86978.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4e9de05
--- /dev/null
+++ b/test/tint/builtins/gen/var/insertBits/d86978.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%insertBits_d86978 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %arg_1:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:vec4<i32> = load %arg_0
+    %8:vec4<i32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<i32> = insertBits %7, %8, %9, %10
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %insertBits_d86978
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %insertBits_d86978
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %insertBits_d86978
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/insertBits/e3e3a2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/insertBits/e3e3a2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c2643f9
--- /dev/null
+++ b/test/tint/builtins/gen/var/insertBits/e3e3a2.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%insertBits_e3e3a2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:u32 = load %arg_0
+    %8:u32 = load %arg_1
+    %9:u32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:u32 = insertBits %7, %8, %9, %10
+    %res:ptr<function, u32, read_write> = var, %11
+    %13:u32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %insertBits_e3e3a2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %insertBits_e3e3a2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %insertBits_e3e3a2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/insertBits/fe6ba6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/insertBits/fe6ba6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5afeec3
--- /dev/null
+++ b/test/tint/builtins/gen/var/insertBits/fe6ba6.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%insertBits_fe6ba6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:vec2<i32> = load %arg_0
+    %8:vec2<i32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec2<i32> = insertBits %7, %8, %9, %10
+    %res:ptr<function, vec2<i32>, read_write> = var, %11
+    %13:vec2<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %insertBits_fe6ba6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %insertBits_fe6ba6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %insertBits_fe6ba6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/inverseSqrt/07a6fe.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/inverseSqrt/07a6fe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/inverseSqrt/07a6fe.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/inverseSqrt/440300.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/inverseSqrt/440300.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f5b6249
--- /dev/null
+++ b/test/tint/builtins/gen/var/inverseSqrt/440300.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%inverseSqrt_440300 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %arg_0
+    %5:f16 = inverseSqrt %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %inverseSqrt_440300
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %inverseSqrt_440300
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %inverseSqrt_440300
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/inverseSqrt/4ca6d6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/inverseSqrt/4ca6d6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/inverseSqrt/4ca6d6.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/inverseSqrt/5f51f8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/inverseSqrt/5f51f8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0326dfb
--- /dev/null
+++ b/test/tint/builtins/gen/var/inverseSqrt/5f51f8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%inverseSqrt_5f51f8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = inverseSqrt %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %inverseSqrt_5f51f8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %inverseSqrt_5f51f8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %inverseSqrt_5f51f8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/inverseSqrt/6d0783.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/inverseSqrt/6d0783.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/inverseSqrt/6d0783.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/inverseSqrt/84407e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/inverseSqrt/84407e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b20c454
--- /dev/null
+++ b/test/tint/builtins/gen/var/inverseSqrt/84407e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%inverseSqrt_84407e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = inverseSqrt %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %inverseSqrt_84407e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %inverseSqrt_84407e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %inverseSqrt_84407e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/inverseSqrt/8f2bd2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/inverseSqrt/8f2bd2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1db4fac
--- /dev/null
+++ b/test/tint/builtins/gen/var/inverseSqrt/8f2bd2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%inverseSqrt_8f2bd2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = inverseSqrt %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %inverseSqrt_8f2bd2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %inverseSqrt_8f2bd2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %inverseSqrt_8f2bd2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/inverseSqrt/b197b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/inverseSqrt/b197b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eaefe0a
--- /dev/null
+++ b/test/tint/builtins/gen/var/inverseSqrt/b197b1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%inverseSqrt_b197b1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = inverseSqrt %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %inverseSqrt_b197b1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %inverseSqrt_b197b1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %inverseSqrt_b197b1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/inverseSqrt/b85ebd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/inverseSqrt/b85ebd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..75de5c0
--- /dev/null
+++ b/test/tint/builtins/gen/var/inverseSqrt/b85ebd.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%inverseSqrt_b85ebd = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = inverseSqrt %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %inverseSqrt_b85ebd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %inverseSqrt_b85ebd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %inverseSqrt_b85ebd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/inverseSqrt/c22347.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/inverseSqrt/c22347.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0545b4b
--- /dev/null
+++ b/test/tint/builtins/gen/var/inverseSqrt/c22347.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%inverseSqrt_c22347 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = inverseSqrt %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %inverseSqrt_c22347
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %inverseSqrt_c22347
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %inverseSqrt_c22347
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/inverseSqrt/cbdc70.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/inverseSqrt/cbdc70.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7b44bc7
--- /dev/null
+++ b/test/tint/builtins/gen/var/inverseSqrt/cbdc70.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%inverseSqrt_cbdc70 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = inverseSqrt %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %inverseSqrt_cbdc70
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %inverseSqrt_cbdc70
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %inverseSqrt_cbdc70
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/inverseSqrt/f60c1c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/inverseSqrt/f60c1c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/inverseSqrt/f60c1c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/082c1f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/082c1f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..67bc2b0
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/082c1f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_082c1f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %arg_0
+    %5:f16 = ldexp %4, 1i
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %ldexp_082c1f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %ldexp_082c1f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %ldexp_082c1f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/217a31.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/217a31.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8462d8f
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/217a31.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_217a31 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = ldexp %4, vec2<i32>(1i)
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %ldexp_217a31
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %ldexp_217a31
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %ldexp_217a31
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/2bfc68.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/2bfc68.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/2bfc68.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/2c6370.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/2c6370.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/2c6370.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/376938.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/376938.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/376938.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/3d90b4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/3d90b4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3d1bb10
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/3d90b4.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_3d90b4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:vec2<f16> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec2<f16> = ldexp %5, %6
+    %res:ptr<function, vec2<f16>, read_write> = var, %7
+    %9:vec2<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %ldexp_3d90b4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %ldexp_3d90b4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %ldexp_3d90b4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/4a3ad9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/4a3ad9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/4a3ad9.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/593ff3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/593ff3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f5d7c46
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/593ff3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_593ff3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = ldexp %4, vec3<i32>(1i)
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %ldexp_593ff3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %ldexp_593ff3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %ldexp_593ff3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/624e0c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/624e0c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6e850fb
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/624e0c.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_624e0c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:f16 = load %arg_0
+    %6:i32 = load %arg_1
+    %7:f16 = ldexp %5, %6
+    %res:ptr<function, f16, read_write> = var, %7
+    %9:f16 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %ldexp_624e0c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %ldexp_624e0c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %ldexp_624e0c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/65a7bd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/65a7bd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8f69f34
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/65a7bd.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_65a7bd = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = ldexp %4, vec4<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %ldexp_65a7bd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %ldexp_65a7bd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %ldexp_65a7bd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/71ebe3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/71ebe3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/71ebe3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/7485ce.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/7485ce.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c1d414a
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/7485ce.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_7485ce = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:vec3<f16> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec3<f16> = ldexp %5, %6
+    %res:ptr<function, vec3<f16>, read_write> = var, %7
+    %9:vec3<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %ldexp_7485ce
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %ldexp_7485ce
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %ldexp_7485ce
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/7fa13c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/7fa13c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e1220c
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/7fa13c.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_7fa13c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_1:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:vec4<f16> = load %arg_0
+    %6:vec4<i32> = load %arg_1
+    %7:vec4<f16> = ldexp %5, %6
+    %res:ptr<function, vec4<f16>, read_write> = var, %7
+    %9:vec4<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %ldexp_7fa13c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %ldexp_7fa13c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %ldexp_7fa13c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/8a0c2f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/8a0c2f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bd6d012
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/8a0c2f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_8a0c2f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = ldexp %4, vec4<i32>(1i)
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %ldexp_8a0c2f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %ldexp_8a0c2f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %ldexp_8a0c2f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/8e43e9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/8e43e9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5d1a24b
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/8e43e9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_8e43e9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = ldexp %4, vec3<i32>(1i)
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %ldexp_8e43e9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %ldexp_8e43e9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %ldexp_8e43e9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/a22679.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/a22679.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f395d62
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/a22679.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_a22679 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = ldexp %4, vec2<i32>(1i)
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %ldexp_a22679
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %ldexp_a22679
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %ldexp_a22679
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/a31cdc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/a31cdc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..63e7e33
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/a31cdc.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_a31cdc = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:vec3<f32> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec3<f32> = ldexp %5, %6
+    %res:ptr<function, vec3<f32>, read_write> = var, %7
+    %9:vec3<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %ldexp_a31cdc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %ldexp_a31cdc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %ldexp_a31cdc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/a6126e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/a6126e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/a6126e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/abd718.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/abd718.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e878811
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/abd718.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_abd718 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:vec2<f32> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec2<f32> = ldexp %5, %6
+    %res:ptr<function, vec2<f32>, read_write> = var, %7
+    %9:vec2<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %ldexp_abd718
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %ldexp_abd718
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %ldexp_abd718
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/c9d0b7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/c9d0b7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..49903f6
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/c9d0b7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_c9d0b7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = ldexp %4, 1i
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %ldexp_c9d0b7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %ldexp_c9d0b7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %ldexp_c9d0b7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/cb0faf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/cb0faf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/cb0faf.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/cc9cde.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/cc9cde.wgsl.expected.ir.msl
new file mode 100644
index 0000000..967cf0d
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/cc9cde.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_cc9cde = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_1:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:vec4<f32> = load %arg_0
+    %6:vec4<i32> = load %arg_1
+    %7:vec4<f32> = ldexp %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %ldexp_cc9cde
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %ldexp_cc9cde
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %ldexp_cc9cde
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/db8b49.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/db8b49.wgsl.expected.ir.msl
new file mode 100644
index 0000000..748d4d3
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/db8b49.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%ldexp_db8b49 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:f32 = load %arg_0
+    %6:i32 = load %arg_1
+    %7:f32 = ldexp %5, %6
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %ldexp_db8b49
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %ldexp_db8b49
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %ldexp_db8b49
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/ldexp/fdbc7b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/ldexp/fdbc7b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/ldexp/fdbc7b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/length/056071.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/length/056071.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7dc3322
--- /dev/null
+++ b/test/tint/builtins/gen/var/length/056071.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%length_056071 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(0.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:f32 = length %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %length_056071
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %length_056071
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %length_056071
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/length/3f0e13.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/length/3f0e13.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a04a4b2
--- /dev/null
+++ b/test/tint/builtins/gen/var/length/3f0e13.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%length_3f0e13 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(0.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:f16 = length %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %length_3f0e13
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %length_3f0e13
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %length_3f0e13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/length/555aba.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/length/555aba.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/length/555aba.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/length/5b1a9b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/length/5b1a9b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bdf0a39
--- /dev/null
+++ b/test/tint/builtins/gen/var/length/5b1a9b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%length_5b1a9b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(0.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:f16 = length %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %length_5b1a9b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %length_5b1a9b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %length_5b1a9b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/length/602a17.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/length/602a17.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4f182d6
--- /dev/null
+++ b/test/tint/builtins/gen/var/length/602a17.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%length_602a17 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 0.0f
+    %4:f32 = load %arg_0
+    %5:f32 = length %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %length_602a17
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %length_602a17
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %length_602a17
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/length/7b4741.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/length/7b4741.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/length/7b4741.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/length/936ad5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/length/936ad5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/length/936ad5.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/length/afde8b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/length/afde8b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5fc7129
--- /dev/null
+++ b/test/tint/builtins/gen/var/length/afde8b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%length_afde8b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:f32 = length %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %length_afde8b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %length_afde8b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %length_afde8b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/length/ba16d6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/length/ba16d6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eeb5e92
--- /dev/null
+++ b/test/tint/builtins/gen/var/length/ba16d6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%length_ba16d6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(0.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:f16 = length %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %length_ba16d6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %length_ba16d6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %length_ba16d6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/length/becebf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/length/becebf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9a69763
--- /dev/null
+++ b/test/tint/builtins/gen/var/length/becebf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%length_becebf = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:f32 = length %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %length_becebf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %length_becebf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %length_becebf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/length/c158da.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/length/c158da.wgsl.expected.ir.msl
new file mode 100644
index 0000000..59a0c71
--- /dev/null
+++ b/test/tint/builtins/gen/var/length/c158da.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%length_c158da = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 0.0h
+    %4:f16 = load %arg_0
+    %5:f16 = length %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %length_c158da
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %length_c158da
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %length_c158da
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/length/c2c544.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/length/c2c544.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/length/c2c544.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/log/3da25a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log/3da25a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f5428e7
--- /dev/null
+++ b/test/tint/builtins/gen/var/log/3da25a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%log_3da25a = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = log %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %log_3da25a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %log_3da25a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %log_3da25a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/log/655989.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log/655989.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/log/655989.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/log/697e1d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log/697e1d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/log/697e1d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/log/6ff86f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log/6ff86f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..39c15d2
--- /dev/null
+++ b/test/tint/builtins/gen/var/log/6ff86f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%log_6ff86f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = log %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %log_6ff86f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %log_6ff86f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %log_6ff86f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/log/7114a6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log/7114a6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1f4fcbc
--- /dev/null
+++ b/test/tint/builtins/gen/var/log/7114a6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%log_7114a6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = log %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %log_7114a6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %log_7114a6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %log_7114a6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/log/8f0e32.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log/8f0e32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..858aa33
--- /dev/null
+++ b/test/tint/builtins/gen/var/log/8f0e32.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%log_8f0e32 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = log %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %log_8f0e32
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %log_8f0e32
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %log_8f0e32
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/log/b2ce28.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log/b2ce28.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e765bf3
--- /dev/null
+++ b/test/tint/builtins/gen/var/log/b2ce28.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%log_b2ce28 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = log %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %log_b2ce28
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %log_b2ce28
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %log_b2ce28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/log/b8088d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log/b8088d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/log/b8088d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/log/c9f489.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log/c9f489.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dcb40de
--- /dev/null
+++ b/test/tint/builtins/gen/var/log/c9f489.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%log_c9f489 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %arg_0
+    %5:f16 = log %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %log_c9f489
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %log_c9f489
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %log_c9f489
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/log/cdbdc1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log/cdbdc1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..93a559f
--- /dev/null
+++ b/test/tint/builtins/gen/var/log/cdbdc1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%log_cdbdc1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = log %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %log_cdbdc1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %log_cdbdc1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %log_cdbdc1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/log/f4c570.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log/f4c570.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1a91298
--- /dev/null
+++ b/test/tint/builtins/gen/var/log/f4c570.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%log_f4c570 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = log %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %log_f4c570
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %log_f4c570
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %log_f4c570
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/log/f60cc7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log/f60cc7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/log/f60cc7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/log2/0fbd39.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log2/0fbd39.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/log2/0fbd39.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/log2/38b478.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log2/38b478.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cc03ab4
--- /dev/null
+++ b/test/tint/builtins/gen/var/log2/38b478.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%log2_38b478 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = log2 %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %log2_38b478
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %log2_38b478
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %log2_38b478
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/log2/4036ed.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log2/4036ed.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7d094d9
--- /dev/null
+++ b/test/tint/builtins/gen/var/log2/4036ed.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%log2_4036ed = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = log2 %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %log2_4036ed
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %log2_4036ed
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %log2_4036ed
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/log2/5b464b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log2/5b464b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/log2/5b464b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/log2/6b8954.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log2/6b8954.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/log2/6b8954.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/log2/776088.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log2/776088.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eaa5927
--- /dev/null
+++ b/test/tint/builtins/gen/var/log2/776088.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%log2_776088 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = log2 %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %log2_776088
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %log2_776088
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %log2_776088
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/log2/8c10b3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log2/8c10b3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0618fd9
--- /dev/null
+++ b/test/tint/builtins/gen/var/log2/8c10b3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%log2_8c10b3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %arg_0
+    %5:f16 = log2 %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %log2_8c10b3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %log2_8c10b3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %log2_8c10b3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/log2/902988.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log2/902988.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7fd3583
--- /dev/null
+++ b/test/tint/builtins/gen/var/log2/902988.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%log2_902988 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = log2 %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %log2_902988
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %log2_902988
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %log2_902988
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/log2/a52bbb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log2/a52bbb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/log2/a52bbb.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/log2/adb233.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log2/adb233.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2299b95
--- /dev/null
+++ b/test/tint/builtins/gen/var/log2/adb233.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%log2_adb233 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = log2 %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %log2_adb233
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %log2_adb233
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %log2_adb233
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/log2/aea659.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log2/aea659.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e2ca784
--- /dev/null
+++ b/test/tint/builtins/gen/var/log2/aea659.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%log2_aea659 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = log2 %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %log2_aea659
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %log2_aea659
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %log2_aea659
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/log2/fb9f0b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/log2/fb9f0b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..425cb6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/log2/fb9f0b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%log2_fb9f0b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = log2 %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %log2_fb9f0b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %log2_fb9f0b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %log2_fb9f0b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/max/067f3a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/067f3a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/067f3a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/max/0c0aae.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/0c0aae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..15bde68
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/0c0aae.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%max_0c0aae = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:u32 = load %arg_0
+    %6:u32 = load %arg_1
+    %7:u32 = max %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %max_0c0aae
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %max_0c0aae
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %max_0c0aae
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/max/111ac0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/111ac0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9774c9c
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/111ac0.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%max_111ac0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %arg_1:ptr<function, f16, read_write> = var, 1.0h
+    %5:f16 = load %arg_0
+    %6:f16 = load %arg_1
+    %7:f16 = max %5, %6
+    %res:ptr<function, f16, read_write> = var, %7
+    %9:f16 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %max_111ac0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %max_111ac0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %max_111ac0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/max/19070a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/19070a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/19070a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/max/25eafe.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/25eafe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b75d200
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/25eafe.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%max_25eafe = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:vec3<i32> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec3<i32> = max %5, %6
+    %res:ptr<function, vec3<i32>, read_write> = var, %7
+    %9:vec3<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %max_25eafe
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %max_25eafe
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %max_25eafe
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/max/320815.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/320815.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2fe8a13
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/320815.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%max_320815 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:vec2<u32> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec2<u32> = max %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %max_320815
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %max_320815
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %max_320815
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/max/34956e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/34956e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c9ce5b9
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/34956e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%max_34956e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_1:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %5:vec2<f16> = load %arg_0
+    %6:vec2<f16> = load %arg_1
+    %7:vec2<f16> = max %5, %6
+    %res:ptr<function, vec2<f16>, read_write> = var, %7
+    %9:vec2<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %max_34956e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %max_34956e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %max_34956e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/max/445169.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/445169.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7be338a
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/445169.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%max_445169 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %5:vec3<f16> = load %arg_0
+    %6:vec3<f16> = load %arg_1
+    %7:vec3<f16> = max %5, %6
+    %res:ptr<function, vec3<f16>, read_write> = var, %7
+    %9:vec3<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %max_445169
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %max_445169
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %max_445169
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/max/44a39d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/44a39d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c72e0ae
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/44a39d.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%max_44a39d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %arg_1:ptr<function, f32, read_write> = var, 1.0f
+    %5:f32 = load %arg_0
+    %6:f32 = load %arg_1
+    %7:f32 = max %5, %6
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %max_44a39d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %max_44a39d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %max_44a39d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/max/453e04.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/453e04.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a77ef65
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/453e04.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%max_453e04 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %arg_1:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:vec4<u32> = load %arg_0
+    %6:vec4<u32> = load %arg_1
+    %7:vec4<u32> = max %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %max_453e04
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %max_453e04
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %max_453e04
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/max/462050.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/462050.wgsl.expected.ir.msl
new file mode 100644
index 0000000..78e76f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/462050.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%max_462050 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_1:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %5:vec2<f32> = load %arg_0
+    %6:vec2<f32> = load %arg_1
+    %7:vec2<f32> = max %5, %6
+    %res:ptr<function, vec2<f32>, read_write> = var, %7
+    %9:vec2<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %max_462050
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %max_462050
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %max_462050
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/max/482d23.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/482d23.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/482d23.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/max/4883ac.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/4883ac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c3bb8c5
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/4883ac.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%max_4883ac = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_1:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %5:vec3<f32> = load %arg_0
+    %6:vec3<f32> = load %arg_1
+    %7:vec3<f32> = max %5, %6
+    %res:ptr<function, vec3<f32>, read_write> = var, %7
+    %9:vec3<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %max_4883ac
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %max_4883ac
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %max_4883ac
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/max/4bbff2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/4bbff2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/4bbff2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/max/85e6bc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/85e6bc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7a9f27f
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/85e6bc.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%max_85e6bc = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %arg_1:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:vec4<i32> = load %arg_0
+    %6:vec4<i32> = load %arg_1
+    %7:vec4<i32> = max %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %max_85e6bc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %max_85e6bc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %max_85e6bc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/max/a1b196.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/a1b196.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/a1b196.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/max/a93419.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/a93419.wgsl.expected.ir.msl
new file mode 100644
index 0000000..048cf9a
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/a93419.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%max_a93419 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:vec4<f32> = load %arg_0
+    %6:vec4<f32> = load %arg_1
+    %7:vec4<f32> = max %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %max_a93419
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %max_a93419
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %max_a93419
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/max/b1b73a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/b1b73a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3762851
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/b1b73a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%max_b1b73a = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:vec3<u32> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec3<u32> = max %5, %6
+    %res:ptr<function, vec3<u32>, read_write> = var, %7
+    %9:vec3<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %max_b1b73a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %max_b1b73a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %max_b1b73a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/max/c023dd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/c023dd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/c023dd.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/max/caa3d7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/caa3d7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/caa3d7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/max/ce7c30.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/ce7c30.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e7d509c
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/ce7c30.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%max_ce7c30 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, i32, read_write> = var, 1i
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:i32 = load %arg_0
+    %6:i32 = load %arg_1
+    %7:i32 = max %5, %6
+    %res:ptr<function, i32, read_write> = var, %7
+    %9:i32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %max_ce7c30
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %max_ce7c30
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %max_ce7c30
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/max/de6b87.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/de6b87.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/de6b87.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/max/e14f2b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/e14f2b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4b08647
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/e14f2b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%max_e14f2b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_1:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %5:vec4<f16> = load %arg_0
+    %6:vec4<f16> = load %arg_1
+    %7:vec4<f16> = max %5, %6
+    %res:ptr<function, vec4<f16>, read_write> = var, %7
+    %9:vec4<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %max_e14f2b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %max_e14f2b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %max_e14f2b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/max/e8192f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/max/e8192f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4250271
--- /dev/null
+++ b/test/tint/builtins/gen/var/max/e8192f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%max_e8192f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:vec2<i32> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec2<i32> = max %5, %6
+    %res:ptr<function, vec2<i32>, read_write> = var, %7
+    %9:vec2<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %max_e8192f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %max_e8192f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %max_e8192f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/min/03c7e3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/03c7e3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a6a09f8
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/03c7e3.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%min_03c7e3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:vec2<i32> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec2<i32> = min %5, %6
+    %res:ptr<function, vec2<i32>, read_write> = var, %7
+    %9:vec2<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %min_03c7e3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %min_03c7e3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %min_03c7e3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/min/0dc614.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/0dc614.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c5c39a4
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/0dc614.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%min_0dc614 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %arg_1:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:vec4<u32> = load %arg_0
+    %6:vec4<u32> = load %arg_1
+    %7:vec4<u32> = min %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %min_0dc614
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %min_0dc614
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %min_0dc614
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/min/364910.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/364910.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/364910.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/min/371bd6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/371bd6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/371bd6.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/min/3941e1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/3941e1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f8cc43f
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/3941e1.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%min_3941e1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %arg_1:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:vec4<i32> = load %arg_0
+    %6:vec4<i32> = load %arg_1
+    %7:vec4<i32> = min %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %min_3941e1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %min_3941e1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %min_3941e1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/min/46c5d3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/46c5d3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f086566
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/46c5d3.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%min_46c5d3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:u32 = load %arg_0
+    %6:u32 = load %arg_1
+    %7:u32 = min %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %min_46c5d3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %min_46c5d3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %min_46c5d3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/min/527b79.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/527b79.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/527b79.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/min/717257.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/717257.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/717257.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/min/794711.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/794711.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/794711.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/min/7c710a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/7c710a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e115910
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/7c710a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%min_7c710a = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_1:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %5:vec4<f16> = load %arg_0
+    %6:vec4<f16> = load %arg_1
+    %7:vec4<f16> = min %5, %6
+    %res:ptr<function, vec4<f16>, read_write> = var, %7
+    %9:vec4<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %min_7c710a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %min_7c710a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %min_7c710a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/min/82b28f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/82b28f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..932b939
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/82b28f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%min_82b28f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:vec2<u32> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec2<u32> = min %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %min_82b28f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %min_82b28f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %min_82b28f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/min/84c9fe.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/84c9fe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/84c9fe.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/min/93cfc4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/93cfc4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..81756dc
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/93cfc4.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%min_93cfc4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_1:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %5:vec3<f32> = load %arg_0
+    %6:vec3<f32> = load %arg_1
+    %7:vec3<f32> = min %5, %6
+    %res:ptr<function, vec3<f32>, read_write> = var, %7
+    %9:vec3<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %min_93cfc4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %min_93cfc4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %min_93cfc4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/min/98e797.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/98e797.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/98e797.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/min/a45171.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/a45171.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5937275
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/a45171.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%min_a45171 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:vec3<i32> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec3<i32> = min %5, %6
+    %res:ptr<function, vec3<i32>, read_write> = var, %7
+    %9:vec3<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %min_a45171
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %min_a45171
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %min_a45171
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/min/aa28ad.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/aa28ad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8f04de6
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/aa28ad.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%min_aa28ad = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_1:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %5:vec2<f32> = load %arg_0
+    %6:vec2<f32> = load %arg_1
+    %7:vec2<f32> = min %5, %6
+    %res:ptr<function, vec2<f32>, read_write> = var, %7
+    %9:vec2<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %min_aa28ad
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %min_aa28ad
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %min_aa28ad
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/min/ab0acd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/ab0acd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c0868cf
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/ab0acd.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%min_ab0acd = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %5:vec3<f16> = load %arg_0
+    %6:vec3<f16> = load %arg_1
+    %7:vec3<f16> = min %5, %6
+    %res:ptr<function, vec3<f16>, read_write> = var, %7
+    %9:vec3<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %min_ab0acd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %min_ab0acd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %min_ab0acd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/min/ac84d6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/ac84d6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e43e190
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/ac84d6.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%min_ac84d6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %arg_1:ptr<function, f16, read_write> = var, 1.0h
+    %5:f16 = load %arg_0
+    %6:f16 = load %arg_1
+    %7:f16 = min %5, %6
+    %res:ptr<function, f16, read_write> = var, %7
+    %9:f16 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %min_ac84d6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %min_ac84d6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %min_ac84d6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/min/af326d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/af326d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..914ab6c
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/af326d.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%min_af326d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %arg_1:ptr<function, f32, read_write> = var, 1.0f
+    %5:f32 = load %arg_0
+    %6:f32 = load %arg_1
+    %7:f32 = min %5, %6
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %min_af326d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %min_af326d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %min_af326d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/min/af364e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/af364e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/af364e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/min/c70bb7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/c70bb7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fe6dc37
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/c70bb7.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%min_c70bb7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:vec3<u32> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec3<u32> = min %5, %6
+    %res:ptr<function, vec3<u32>, read_write> = var, %7
+    %9:vec3<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %min_c70bb7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %min_c70bb7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %min_c70bb7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/min/c73147.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/c73147.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a4c1db0
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/c73147.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%min_c73147 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, i32, read_write> = var, 1i
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:i32 = load %arg_0
+    %6:i32 = load %arg_1
+    %7:i32 = min %5, %6
+    %res:ptr<function, i32, read_write> = var, %7
+    %9:i32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %min_c73147
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %min_c73147
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %min_c73147
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/min/c76fa6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/c76fa6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0b5c1eb
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/c76fa6.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%min_c76fa6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:vec4<f32> = load %arg_0
+    %6:vec4<f32> = load %arg_1
+    %7:vec4<f32> = min %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %min_c76fa6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %min_c76fa6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %min_c76fa6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/min/e780f9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/min/e780f9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..58f2a9a
--- /dev/null
+++ b/test/tint/builtins/gen/var/min/e780f9.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%min_e780f9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_1:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %5:vec2<f16> = load %arg_0
+    %6:vec2<f16> = load %arg_1
+    %7:vec2<f16> = min %5, %6
+    %res:ptr<function, vec2<f16>, read_write> = var, %7
+    %9:vec2<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %min_e780f9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %min_e780f9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %min_e780f9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/mix/0c8c33.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/0c8c33.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bb7c6bf
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/0c8c33.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_0c8c33 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_1:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %6:vec3<f32> = load %arg_0
+    %7:vec3<f32> = load %arg_1
+    %8:vec3<f32> = load %arg_2
+    %9:vec3<f32> = mix %6, %7, %8
+    %res:ptr<function, vec3<f32>, read_write> = var, %9
+    %11:vec3<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %mix_0c8c33
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %mix_0c8c33
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %mix_0c8c33
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/mix/1faeb1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/1faeb1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..42fc021
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/1faeb1.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_1faeb1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_2:ptr<function, f32, read_write> = var, 1.0f
+    %6:vec4<f32> = load %arg_0
+    %7:vec4<f32> = load %arg_1
+    %8:f32 = load %arg_2
+    %9:vec4<f32> = mix %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %mix_1faeb1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %mix_1faeb1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %mix_1faeb1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/mix/275cac.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/mix/2fadab.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/2fadab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..529898b
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/2fadab.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_2fadab = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_1:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_2:ptr<function, f32, read_write> = var, 1.0f
+    %6:vec2<f32> = load %arg_0
+    %7:vec2<f32> = load %arg_1
+    %8:f32 = load %arg_2
+    %9:vec2<f32> = mix %6, %7, %8
+    %res:ptr<function, vec2<f32>, read_write> = var, %9
+    %11:vec2<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %mix_2fadab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %mix_2fadab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %mix_2fadab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/mix/30de36.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/mix/315264.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/315264.wgsl.expected.ir.msl
new file mode 100644
index 0000000..97fe12c
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/315264.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_315264 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_1:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_2:ptr<function, f32, read_write> = var, 1.0f
+    %6:vec3<f32> = load %arg_0
+    %7:vec3<f32> = load %arg_1
+    %8:f32 = load %arg_2
+    %9:vec3<f32> = mix %6, %7, %8
+    %res:ptr<function, vec3<f32>, read_write> = var, %9
+    %11:vec3<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %mix_315264
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %mix_315264
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %mix_315264
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/mix/343c49.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/mix/38cbbb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/38cbbb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..39ac6d2
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/38cbbb.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%mix_38cbbb = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %arg_1:ptr<function, f16, read_write> = var, 1.0h
+    %arg_2:ptr<function, f16, read_write> = var, 1.0h
+    %6:f16 = load %arg_0
+    %7:f16 = load %arg_1
+    %8:f16 = load %arg_2
+    %9:f16 = mix %6, %7, %8
+    %res:ptr<function, f16, read_write> = var, %9
+    %11:f16 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %mix_38cbbb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %mix_38cbbb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %mix_38cbbb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/mix/42d11d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/mix/4f0b5e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/4f0b5e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..03c346b
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/4f0b5e.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%mix_4f0b5e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %arg_1:ptr<function, f32, read_write> = var, 1.0f
+    %arg_2:ptr<function, f32, read_write> = var, 1.0f
+    %6:f32 = load %arg_0
+    %7:f32 = load %arg_1
+    %8:f32 = load %arg_2
+    %9:f32 = mix %6, %7, %8
+    %res:ptr<function, f32, read_write> = var, %9
+    %11:f32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %mix_4f0b5e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %mix_4f0b5e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %mix_4f0b5e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/mix/63f2fd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/63f2fd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0e1c830
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/63f2fd.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_63f2fd = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_2:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %6:vec3<f16> = load %arg_0
+    %7:vec3<f16> = load %arg_1
+    %8:vec3<f16> = load %arg_2
+    %9:vec3<f16> = mix %6, %7, %8
+    %res:ptr<function, vec3<f16>, read_write> = var, %9
+    %11:vec3<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %mix_63f2fd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %mix_63f2fd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %mix_63f2fd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/mix/6f8adc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/6f8adc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1aba4c7
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/6f8adc.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_6f8adc = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_1:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:vec2<f32> = load %arg_0
+    %7:vec2<f32> = load %arg_1
+    %8:vec2<f32> = load %arg_2
+    %9:vec2<f32> = mix %6, %7, %8
+    %res:ptr<function, vec2<f32>, read_write> = var, %9
+    %11:vec2<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %mix_6f8adc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %mix_6f8adc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %mix_6f8adc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/mix/98007a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/mix/98ee3e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/98ee3e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9e9abac
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/98ee3e.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_98ee3e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_1:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_2:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %6:vec2<f16> = load %arg_0
+    %7:vec2<f16> = load %arg_1
+    %8:vec2<f16> = load %arg_2
+    %9:vec2<f16> = mix %6, %7, %8
+    %res:ptr<function, vec2<f16>, read_write> = var, %9
+    %11:vec2<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %mix_98ee3e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %mix_98ee3e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %mix_98ee3e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/mix/9c2681.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/mix/c1aec6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/c1aec6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7f6b292
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/c1aec6.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_c1aec6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_2:ptr<function, f16, read_write> = var, 1.0h
+    %6:vec3<f16> = load %arg_0
+    %7:vec3<f16> = load %arg_1
+    %8:f16 = load %arg_2
+    %9:vec3<f16> = mix %6, %7, %8
+    %res:ptr<function, vec3<f16>, read_write> = var, %9
+    %11:vec3<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %mix_c1aec6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %mix_c1aec6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %mix_c1aec6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/mix/c37ede.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/c37ede.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c05304c
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/c37ede.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_c37ede = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:vec4<f32> = load %arg_0
+    %7:vec4<f32> = load %arg_1
+    %8:vec4<f32> = load %arg_2
+    %9:vec4<f32> = mix %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %mix_c37ede
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %mix_c37ede
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %mix_c37ede
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/mix/e46a83.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/e46a83.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f714008
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/e46a83.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_e46a83 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_1:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_2:ptr<function, f16, read_write> = var, 1.0h
+    %6:vec2<f16> = load %arg_0
+    %7:vec2<f16> = load %arg_1
+    %8:f16 = load %arg_2
+    %9:vec2<f16> = mix %6, %7, %8
+    %res:ptr<function, vec2<f16>, read_write> = var, %9
+    %11:vec2<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %mix_e46a83
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %mix_e46a83
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %mix_e46a83
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/mix/ee2468.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/ee2468.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0ad3527
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/ee2468.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_ee2468 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_1:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_2:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %6:vec4<f16> = load %arg_0
+    %7:vec4<f16> = load %arg_1
+    %8:vec4<f16> = load %arg_2
+    %9:vec4<f16> = mix %6, %7, %8
+    %res:ptr<function, vec4<f16>, read_write> = var, %9
+    %11:vec4<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %mix_ee2468
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %mix_ee2468
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %mix_ee2468
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/mix/ef3575.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/mix/f1a543.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/mix/f1a543.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2a6bef8
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/f1a543.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%mix_f1a543 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_1:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_2:ptr<function, f16, read_write> = var, 1.0h
+    %6:vec4<f16> = load %arg_0
+    %7:vec4<f16> = load %arg_1
+    %8:f16 = load %arg_2
+    %9:vec4<f16> = mix %6, %7, %8
+    %res:ptr<function, vec4<f16>, read_write> = var, %9
+    %11:vec4<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %mix_f1a543
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %mix_f1a543
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %mix_f1a543
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/modf/2d50da.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/modf/2d50da.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/modf/2d50da.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/modf/45005f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/modf/45005f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/modf/45005f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/modf/4bfced.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/modf/4bfced.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/modf/4bfced.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/modf/5ea256.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/modf/5ea256.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/modf/5ea256.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/modf/68d8ee.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/modf/68d8ee.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/modf/68d8ee.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/modf/732aa6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/modf/732aa6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/modf/732aa6.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/modf/8dbbbf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/modf/8dbbbf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/modf/8dbbbf.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/modf/995934.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/modf/995934.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/modf/995934.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/modf/a545b9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/modf/a545b9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/modf/a545b9.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/modf/bbf7f7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/modf/bbf7f7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/modf/bbf7f7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/modf/c15f48.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/modf/c15f48.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/modf/c15f48.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/modf/f3d1f9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/modf/f3d1f9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/modf/f3d1f9.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/normalize/39d5ec.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/normalize/39d5ec.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3af4d11
--- /dev/null
+++ b/test/tint/builtins/gen/var/normalize/39d5ec.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%normalize_39d5ec = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = normalize %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %normalize_39d5ec
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %normalize_39d5ec
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %normalize_39d5ec
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/normalize/4eaf61.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/normalize/4eaf61.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/normalize/4eaf61.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/normalize/584e47.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/normalize/64d8c0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/normalize/64d8c0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d3fc07f
--- /dev/null
+++ b/test/tint/builtins/gen/var/normalize/64d8c0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%normalize_64d8c0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = normalize %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %normalize_64d8c0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %normalize_64d8c0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %normalize_64d8c0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/normalize/7990f3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/normalize/7990f3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9e6e241
--- /dev/null
+++ b/test/tint/builtins/gen/var/normalize/7990f3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%normalize_7990f3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = normalize %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %normalize_7990f3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %normalize_7990f3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %normalize_7990f3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/normalize/9a0aab.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/normalize/9a0aab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7b40126
--- /dev/null
+++ b/test/tint/builtins/gen/var/normalize/9a0aab.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%normalize_9a0aab = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = normalize %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %normalize_9a0aab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %normalize_9a0aab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %normalize_9a0aab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/normalize/b8cb8d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/normalize/b8cb8d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bc4df01
--- /dev/null
+++ b/test/tint/builtins/gen/var/normalize/b8cb8d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%normalize_b8cb8d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = normalize %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %normalize_b8cb8d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %normalize_b8cb8d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %normalize_b8cb8d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/normalize/fc2ef1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/normalize/fc2ef1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8f8eaa1
--- /dev/null
+++ b/test/tint/builtins/gen/var/normalize/fc2ef1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%normalize_fc2ef1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = normalize %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %normalize_fc2ef1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %normalize_fc2ef1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %normalize_fc2ef1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/pack2x16float/0e97b3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/pack2x16float/0e97b3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f0b3b0c
--- /dev/null
+++ b/test/tint/builtins/gen/var/pack2x16float/0e97b3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%pack2x16float_0e97b3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:u32 = pack2x16float %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %pack2x16float_0e97b3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %pack2x16float_0e97b3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %pack2x16float_0e97b3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/pack2x16snorm/6c169b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/pack2x16snorm/6c169b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4f4516e
--- /dev/null
+++ b/test/tint/builtins/gen/var/pack2x16snorm/6c169b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%pack2x16snorm_6c169b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:u32 = pack2x16snorm %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %pack2x16snorm_6c169b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %pack2x16snorm_6c169b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %pack2x16snorm_6c169b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/pack2x16unorm/0f08e4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/pack2x16unorm/0f08e4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b71585c
--- /dev/null
+++ b/test/tint/builtins/gen/var/pack2x16unorm/0f08e4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%pack2x16unorm_0f08e4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:u32 = pack2x16unorm %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %pack2x16unorm_0f08e4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %pack2x16unorm_0f08e4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %pack2x16unorm_0f08e4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/pack4x8snorm/4d22e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/pack4x8snorm/4d22e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c535b0a
--- /dev/null
+++ b/test/tint/builtins/gen/var/pack4x8snorm/4d22e7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%pack4x8snorm_4d22e7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:u32 = pack4x8snorm %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %pack4x8snorm_4d22e7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %pack4x8snorm_4d22e7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %pack4x8snorm_4d22e7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/pack4x8unorm/95c456.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/pack4x8unorm/95c456.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b27659a
--- /dev/null
+++ b/test/tint/builtins/gen/var/pack4x8unorm/95c456.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%pack4x8unorm_95c456 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:u32 = pack4x8unorm %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %pack4x8unorm_95c456
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %pack4x8unorm_95c456
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %pack4x8unorm_95c456
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/pow/04a908.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/pow/04a908.wgsl.expected.ir.msl
new file mode 100644
index 0000000..90312f2
--- /dev/null
+++ b/test/tint/builtins/gen/var/pow/04a908.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%pow_04a908 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:vec4<f32> = load %arg_0
+    %6:vec4<f32> = load %arg_1
+    %7:vec4<f32> = pow %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %pow_04a908
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %pow_04a908
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %pow_04a908
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/pow/46e029.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/pow/46e029.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b090630
--- /dev/null
+++ b/test/tint/builtins/gen/var/pow/46e029.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%pow_46e029 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %arg_1:ptr<function, f32, read_write> = var, 1.0f
+    %5:f32 = load %arg_0
+    %6:f32 = load %arg_1
+    %7:f32 = pow %5, %6
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %pow_46e029
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %pow_46e029
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %pow_46e029
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/pow/4a46c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/pow/4a46c9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..95058a5
--- /dev/null
+++ b/test/tint/builtins/gen/var/pow/4a46c9.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%pow_4a46c9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_1:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %5:vec3<f32> = load %arg_0
+    %6:vec3<f32> = load %arg_1
+    %7:vec3<f32> = pow %5, %6
+    %res:ptr<function, vec3<f32>, read_write> = var, %7
+    %9:vec3<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %pow_4a46c9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %pow_4a46c9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %pow_4a46c9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/pow/4f33b2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/pow/4f33b2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..56951a5
--- /dev/null
+++ b/test/tint/builtins/gen/var/pow/4f33b2.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%pow_4f33b2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_1:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %5:vec4<f16> = load %arg_0
+    %6:vec4<f16> = load %arg_1
+    %7:vec4<f16> = pow %5, %6
+    %res:ptr<function, vec4<f16>, read_write> = var, %7
+    %9:vec4<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %pow_4f33b2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %pow_4f33b2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %pow_4f33b2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/pow/749c42.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/pow/749c42.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/pow/749c42.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/pow/a8f6b2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/pow/a8f6b2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/pow/a8f6b2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/pow/bc91ed.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/pow/bc91ed.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/pow/bc91ed.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/pow/ce9ef5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/pow/ce9ef5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..233892b
--- /dev/null
+++ b/test/tint/builtins/gen/var/pow/ce9ef5.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%pow_ce9ef5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %arg_1:ptr<function, f16, read_write> = var, 1.0h
+    %5:f16 = load %arg_0
+    %6:f16 = load %arg_1
+    %7:f16 = pow %5, %6
+    %res:ptr<function, f16, read_write> = var, %7
+    %9:f16 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %pow_ce9ef5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %pow_ce9ef5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %pow_ce9ef5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/pow/e42f20.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/pow/e42f20.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/pow/e42f20.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/pow/e60ea5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/pow/e60ea5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..21a5e57
--- /dev/null
+++ b/test/tint/builtins/gen/var/pow/e60ea5.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%pow_e60ea5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_1:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %5:vec2<f32> = load %arg_0
+    %6:vec2<f32> = load %arg_1
+    %7:vec2<f32> = pow %5, %6
+    %res:ptr<function, vec2<f32>, read_write> = var, %7
+    %9:vec2<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %pow_e60ea5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %pow_e60ea5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %pow_e60ea5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/pow/f37b25.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/pow/f37b25.wgsl.expected.ir.msl
new file mode 100644
index 0000000..12bf777
--- /dev/null
+++ b/test/tint/builtins/gen/var/pow/f37b25.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%pow_f37b25 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_1:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %5:vec2<f16> = load %arg_0
+    %6:vec2<f16> = load %arg_1
+    %7:vec2<f16> = pow %5, %6
+    %res:ptr<function, vec2<f16>, read_write> = var, %7
+    %9:vec2<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %pow_f37b25
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %pow_f37b25
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %pow_f37b25
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/pow/fa5429.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/pow/fa5429.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b4505b6
--- /dev/null
+++ b/test/tint/builtins/gen/var/pow/fa5429.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%pow_fa5429 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %5:vec3<f16> = load %arg_0
+    %6:vec3<f16> = load %arg_1
+    %7:vec3<f16> = pow %5, %6
+    %res:ptr<function, vec3<f16>, read_write> = var, %7
+    %9:vec3<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %pow_fa5429
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %pow_fa5429
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %pow_fa5429
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/quantizeToF16/12e50e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/quantizeToF16/12e50e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8409a35
--- /dev/null
+++ b/test/tint/builtins/gen/var/quantizeToF16/12e50e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%quantizeToF16_12e50e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = quantizeToF16 %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %quantizeToF16_12e50e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %quantizeToF16_12e50e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %quantizeToF16_12e50e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/quantizeToF16/2cddf3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/quantizeToF16/2cddf3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..37ae00b
--- /dev/null
+++ b/test/tint/builtins/gen/var/quantizeToF16/2cddf3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%quantizeToF16_2cddf3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = quantizeToF16 %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %quantizeToF16_2cddf3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %quantizeToF16_2cddf3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %quantizeToF16_2cddf3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/quantizeToF16/cba294.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/quantizeToF16/cba294.wgsl.expected.ir.msl
new file mode 100644
index 0000000..54dfe64
--- /dev/null
+++ b/test/tint/builtins/gen/var/quantizeToF16/cba294.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%quantizeToF16_cba294 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = quantizeToF16 %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %quantizeToF16_cba294
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %quantizeToF16_cba294
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %quantizeToF16_cba294
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/quantizeToF16/e8fd14.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/quantizeToF16/e8fd14.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f4a25ba
--- /dev/null
+++ b/test/tint/builtins/gen/var/quantizeToF16/e8fd14.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%quantizeToF16_e8fd14 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = quantizeToF16 %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %quantizeToF16_e8fd14
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %quantizeToF16_e8fd14
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %quantizeToF16_e8fd14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bee859d
--- /dev/null
+++ b/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%radians_09b7fc = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = radians %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %radians_09b7fc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %radians_09b7fc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %radians_09b7fc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/radians/208fd9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4435b5f
--- /dev/null
+++ b/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%radians_208fd9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %arg_0
+    %5:f16 = radians %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %radians_208fd9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %radians_208fd9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %radians_208fd9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/radians/379214.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/radians/379214.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/radians/379214.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/radians/44f20b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2413bc3
--- /dev/null
+++ b/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%radians_44f20b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = radians %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %radians_44f20b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %radians_44f20b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %radians_44f20b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/radians/524a91.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/radians/61687a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a5298d9
--- /dev/null
+++ b/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%radians_61687a = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = radians %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %radians_61687a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %radians_61687a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %radians_61687a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..88dacfc
--- /dev/null
+++ b/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%radians_6b0ff2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = radians %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %radians_6b0ff2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %radians_6b0ff2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %radians_6b0ff2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3bebd96
--- /dev/null
+++ b/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%radians_7ea4c7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = radians %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %radians_7ea4c7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %radians_7ea4c7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %radians_7ea4c7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/radians/bff231.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/radians/f96258.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f33fef9
--- /dev/null
+++ b/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%radians_f96258 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = radians %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %radians_f96258
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %radians_f96258
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %radians_f96258
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c828d29
--- /dev/null
+++ b/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%radians_fbacf0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = radians %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %radians_fbacf0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %radians_fbacf0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %radians_fbacf0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/reflect/05357e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/reflect/05357e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d9f4a0c
--- /dev/null
+++ b/test/tint/builtins/gen/var/reflect/05357e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%reflect_05357e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:vec4<f32> = load %arg_0
+    %6:vec4<f32> = load %arg_1
+    %7:vec4<f32> = reflect %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %reflect_05357e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %reflect_05357e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %reflect_05357e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/reflect/310de5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/reflect/310de5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4d2c511
--- /dev/null
+++ b/test/tint/builtins/gen/var/reflect/310de5.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%reflect_310de5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_1:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %5:vec4<f16> = load %arg_0
+    %6:vec4<f16> = load %arg_1
+    %7:vec4<f16> = reflect %5, %6
+    %res:ptr<function, vec4<f16>, read_write> = var, %7
+    %9:vec4<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %reflect_310de5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %reflect_310de5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %reflect_310de5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/reflect/61ca21.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/reflect/61ca21.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4fd8335
--- /dev/null
+++ b/test/tint/builtins/gen/var/reflect/61ca21.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%reflect_61ca21 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %5:vec3<f16> = load %arg_0
+    %6:vec3<f16> = load %arg_1
+    %7:vec3<f16> = reflect %5, %6
+    %res:ptr<function, vec3<f16>, read_write> = var, %7
+    %9:vec3<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %reflect_61ca21
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %reflect_61ca21
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %reflect_61ca21
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/reflect/a8baf2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/reflect/a8baf2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/reflect/a8baf2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/reflect/b61e10.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/reflect/b61e10.wgsl.expected.ir.msl
new file mode 100644
index 0000000..956ebbd
--- /dev/null
+++ b/test/tint/builtins/gen/var/reflect/b61e10.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%reflect_b61e10 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_1:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %5:vec2<f32> = load %arg_0
+    %6:vec2<f32> = load %arg_1
+    %7:vec2<f32> = reflect %5, %6
+    %res:ptr<function, vec2<f32>, read_write> = var, %7
+    %9:vec2<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %reflect_b61e10
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %reflect_b61e10
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %reflect_b61e10
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/reflect/bb15ac.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/reflect/bb15ac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c7dca7d
--- /dev/null
+++ b/test/tint/builtins/gen/var/reflect/bb15ac.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%reflect_bb15ac = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_1:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %5:vec2<f16> = load %arg_0
+    %6:vec2<f16> = load %arg_1
+    %7:vec2<f16> = reflect %5, %6
+    %res:ptr<function, vec2<f16>, read_write> = var, %7
+    %9:vec2<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %reflect_bb15ac
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %reflect_bb15ac
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %reflect_bb15ac
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/reflect/bba2d0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/reflect/bba2d0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/reflect/bba2d0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/reflect/d7e210.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/reflect/d7e210.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/reflect/d7e210.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/reflect/f47fdb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/reflect/f47fdb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5844c91
--- /dev/null
+++ b/test/tint/builtins/gen/var/reflect/f47fdb.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%reflect_f47fdb = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_1:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %5:vec3<f32> = load %arg_0
+    %6:vec3<f32> = load %arg_1
+    %7:vec3<f32> = reflect %5, %6
+    %res:ptr<function, vec3<f32>, read_write> = var, %7
+    %9:vec3<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %reflect_f47fdb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %reflect_f47fdb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %reflect_f47fdb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/refract/0594ba.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/refract/0594ba.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3650a1b
--- /dev/null
+++ b/test/tint/builtins/gen/var/refract/0594ba.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%refract_0594ba = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_1:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_2:ptr<function, f16, read_write> = var, 1.0h
+    %6:vec4<f16> = load %arg_0
+    %7:vec4<f16> = load %arg_1
+    %8:f16 = load %arg_2
+    %9:vec4<f16> = refract %6, %7, %8
+    %res:ptr<function, vec4<f16>, read_write> = var, %9
+    %11:vec4<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %refract_0594ba
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %refract_0594ba
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %refract_0594ba
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/refract/570cb3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/refract/570cb3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..32c1d68
--- /dev/null
+++ b/test/tint/builtins/gen/var/refract/570cb3.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%refract_570cb3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_1:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_2:ptr<function, f16, read_write> = var, 1.0h
+    %6:vec2<f16> = load %arg_0
+    %7:vec2<f16> = load %arg_1
+    %8:f16 = load %arg_2
+    %9:vec2<f16> = refract %6, %7, %8
+    %res:ptr<function, vec2<f16>, read_write> = var, %9
+    %11:vec2<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %refract_570cb3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %refract_570cb3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %refract_570cb3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/refract/7e02e6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/refract/7e02e6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..17e95cf
--- /dev/null
+++ b/test/tint/builtins/gen/var/refract/7e02e6.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%refract_7e02e6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_2:ptr<function, f32, read_write> = var, 1.0f
+    %6:vec4<f32> = load %arg_0
+    %7:vec4<f32> = load %arg_1
+    %8:f32 = load %arg_2
+    %9:vec4<f32> = refract %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %refract_7e02e6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %refract_7e02e6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %refract_7e02e6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/refract/8984af.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/refract/8984af.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9811d81
--- /dev/null
+++ b/test/tint/builtins/gen/var/refract/8984af.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%refract_8984af = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_2:ptr<function, f16, read_write> = var, 1.0h
+    %6:vec3<f16> = load %arg_0
+    %7:vec3<f16> = load %arg_1
+    %8:f16 = load %arg_2
+    %9:vec3<f16> = refract %6, %7, %8
+    %res:ptr<function, vec3<f16>, read_write> = var, %9
+    %11:vec3<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %refract_8984af
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %refract_8984af
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %refract_8984af
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/refract/8c192a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/refract/8c192a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/refract/8c192a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/refract/cbc1d2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/refract/cbc1d2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4d7233f
--- /dev/null
+++ b/test/tint/builtins/gen/var/refract/cbc1d2.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%refract_cbc1d2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_1:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_2:ptr<function, f32, read_write> = var, 1.0f
+    %6:vec3<f32> = load %arg_0
+    %7:vec3<f32> = load %arg_1
+    %8:f32 = load %arg_2
+    %9:vec3<f32> = refract %6, %7, %8
+    %res:ptr<function, vec3<f32>, read_write> = var, %9
+    %11:vec3<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %refract_cbc1d2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %refract_cbc1d2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %refract_cbc1d2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/refract/cd905f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/refract/cd905f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efc8a67
--- /dev/null
+++ b/test/tint/builtins/gen/var/refract/cd905f.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%refract_cd905f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_1:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_2:ptr<function, f32, read_write> = var, 1.0f
+    %6:vec2<f32> = load %arg_0
+    %7:vec2<f32> = load %arg_1
+    %8:f32 = load %arg_2
+    %9:vec2<f32> = refract %6, %7, %8
+    %res:ptr<function, vec2<f32>, read_write> = var, %9
+    %11:vec2<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %refract_cd905f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %refract_cd905f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %refract_cd905f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/refract/cf1629.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/refract/cf1629.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/refract/cf1629.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/refract/d7569b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/refract/d7569b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/refract/d7569b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/reverseBits/222177.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/reverseBits/222177.wgsl.expected.ir.msl
new file mode 100644
index 0000000..62400d3
--- /dev/null
+++ b/test/tint/builtins/gen/var/reverseBits/222177.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%reverseBits_222177 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %4:vec2<i32> = load %arg_0
+    %5:vec2<i32> = reverseBits %4
+    %res:ptr<function, vec2<i32>, read_write> = var, %5
+    %7:vec2<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %reverseBits_222177
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %reverseBits_222177
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %reverseBits_222177
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/reverseBits/35fea9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/reverseBits/35fea9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8891448
--- /dev/null
+++ b/test/tint/builtins/gen/var/reverseBits/35fea9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%reverseBits_35fea9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %4:vec4<u32> = load %arg_0
+    %5:vec4<u32> = reverseBits %4
+    %res:ptr<function, vec4<u32>, read_write> = var, %5
+    %7:vec4<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %reverseBits_35fea9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %reverseBits_35fea9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %reverseBits_35fea9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/reverseBits/4dbd6f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/reverseBits/4dbd6f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ef55aff
--- /dev/null
+++ b/test/tint/builtins/gen/var/reverseBits/4dbd6f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%reverseBits_4dbd6f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %4:vec4<i32> = load %arg_0
+    %5:vec4<i32> = reverseBits %4
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %reverseBits_4dbd6f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %reverseBits_4dbd6f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %reverseBits_4dbd6f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/reverseBits/7c4269.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/reverseBits/7c4269.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6a64a3e
--- /dev/null
+++ b/test/tint/builtins/gen/var/reverseBits/7c4269.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%reverseBits_7c4269 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, i32, read_write> = var, 1i
+    %4:i32 = load %arg_0
+    %5:i32 = reverseBits %4
+    %res:ptr<function, i32, read_write> = var, %5
+    %7:i32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %reverseBits_7c4269
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %reverseBits_7c4269
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %reverseBits_7c4269
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/reverseBits/a6ccd4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/reverseBits/a6ccd4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f89d7cd
--- /dev/null
+++ b/test/tint/builtins/gen/var/reverseBits/a6ccd4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%reverseBits_a6ccd4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %4:vec3<u32> = load %arg_0
+    %5:vec3<u32> = reverseBits %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %reverseBits_a6ccd4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %reverseBits_a6ccd4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %reverseBits_a6ccd4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/reverseBits/c21bc1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/reverseBits/c21bc1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5a5e201
--- /dev/null
+++ b/test/tint/builtins/gen/var/reverseBits/c21bc1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%reverseBits_c21bc1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %4:vec3<i32> = load %arg_0
+    %5:vec3<i32> = reverseBits %4
+    %res:ptr<function, vec3<i32>, read_write> = var, %5
+    %7:vec3<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %reverseBits_c21bc1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %reverseBits_c21bc1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %reverseBits_c21bc1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/reverseBits/e1f4c1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/reverseBits/e1f4c1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..33935cc
--- /dev/null
+++ b/test/tint/builtins/gen/var/reverseBits/e1f4c1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%reverseBits_e1f4c1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %4:vec2<u32> = load %arg_0
+    %5:vec2<u32> = reverseBits %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %reverseBits_e1f4c1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %reverseBits_e1f4c1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %reverseBits_e1f4c1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/reverseBits/e31adf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/reverseBits/e31adf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ff155db
--- /dev/null
+++ b/test/tint/builtins/gen/var/reverseBits/e31adf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%reverseBits_e31adf = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %4:u32 = load %arg_0
+    %5:u32 = reverseBits %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %reverseBits_e31adf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %reverseBits_e31adf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %reverseBits_e31adf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/round/106c0b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aa82b91
--- /dev/null
+++ b/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%round_106c0b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(3.5f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = round %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %round_106c0b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %round_106c0b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %round_106c0b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/round/184d5a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/round/1c7897.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.ir.msl
new file mode 100644
index 0000000..83c47db
--- /dev/null
+++ b/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%round_1c7897 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(3.5f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = round %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %round_1c7897
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %round_1c7897
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %round_1c7897
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/round/52c84d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bee62ae
--- /dev/null
+++ b/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%round_52c84d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(3.5f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = round %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %round_52c84d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %round_52c84d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %round_52c84d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/round/773a8f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/round/8fdca3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/round/9078ef.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8530b6f
--- /dev/null
+++ b/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%round_9078ef = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 3.5h
+    %4:f16 = load %arg_0
+    %5:f16 = round %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %round_9078ef
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %round_9078ef
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %round_9078ef
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/round/9edc38.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.ir.msl
new file mode 100644
index 0000000..de452f3
--- /dev/null
+++ b/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%round_9edc38 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 3.5f
+    %4:f32 = load %arg_0
+    %5:f32 = round %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %round_9edc38
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %round_9edc38
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %round_9edc38
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/round/a1673d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/round/d87e84.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.ir.msl
new file mode 100644
index 0000000..abfbd62
--- /dev/null
+++ b/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%round_d87e84 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(3.5h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = round %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %round_d87e84
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %round_d87e84
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %round_d87e84
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/round/e1bba2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ff85fd9
--- /dev/null
+++ b/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%round_e1bba2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(3.5h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = round %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %round_e1bba2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %round_e1bba2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %round_e1bba2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/round/f665b5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d74f6b6
--- /dev/null
+++ b/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%round_f665b5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(3.5h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = round %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %round_f665b5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %round_f665b5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %round_f665b5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/saturate/270da5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/saturate/270da5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8deb3ae
--- /dev/null
+++ b/test/tint/builtins/gen/var/saturate/270da5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%saturate_270da5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 2.0f
+    %4:f32 = load %arg_0
+    %5:f32 = saturate %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %saturate_270da5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %saturate_270da5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %saturate_270da5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/saturate/462535.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/saturate/462535.wgsl.expected.ir.msl
new file mode 100644
index 0000000..09f79ad
--- /dev/null
+++ b/test/tint/builtins/gen/var/saturate/462535.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%saturate_462535 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(2.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = saturate %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %saturate_462535
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %saturate_462535
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %saturate_462535
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/saturate/4ed8d7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/saturate/4ed8d7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/saturate/4ed8d7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/saturate/51567f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/saturate/51567f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3a8f5a8
--- /dev/null
+++ b/test/tint/builtins/gen/var/saturate/51567f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%saturate_51567f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(2.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = saturate %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %saturate_51567f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %saturate_51567f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %saturate_51567f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/saturate/6bcddf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/saturate/6bcddf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f3376fb
--- /dev/null
+++ b/test/tint/builtins/gen/var/saturate/6bcddf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%saturate_6bcddf = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(2.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = saturate %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %saturate_6bcddf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %saturate_6bcddf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %saturate_6bcddf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/saturate/78b37c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/saturate/78b37c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/saturate/78b37c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/saturate/a5b571.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/saturate/a5b571.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c75d7f0
--- /dev/null
+++ b/test/tint/builtins/gen/var/saturate/a5b571.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%saturate_a5b571 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(2.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = saturate %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %saturate_a5b571
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %saturate_a5b571
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %saturate_a5b571
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/saturate/cd2028.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/saturate/cd2028.wgsl.expected.ir.msl
new file mode 100644
index 0000000..42da912
--- /dev/null
+++ b/test/tint/builtins/gen/var/saturate/cd2028.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%saturate_cd2028 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(2.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = saturate %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %saturate_cd2028
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %saturate_cd2028
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %saturate_cd2028
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/saturate/d55822.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/saturate/d55822.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/saturate/d55822.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/saturate/dcde71.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/saturate/dcde71.wgsl.expected.ir.msl
new file mode 100644
index 0000000..24a6618
--- /dev/null
+++ b/test/tint/builtins/gen/var/saturate/dcde71.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%saturate_dcde71 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(2.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = saturate %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %saturate_dcde71
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %saturate_dcde71
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %saturate_dcde71
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/saturate/e40fb6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/saturate/e40fb6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/saturate/e40fb6.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/saturate/e8df56.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/saturate/e8df56.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5d21218
--- /dev/null
+++ b/test/tint/builtins/gen/var/saturate/e8df56.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%saturate_e8df56 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 2.0h
+    %4:f16 = load %arg_0
+    %5:f16 = saturate %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %saturate_e8df56
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %saturate_e8df56
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %saturate_e8df56
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/00b848.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/00b848.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a4f94ea
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/00b848.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_00b848 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, vec2<bool>, read_write> = var, vec2<bool>(true)
+    %6:vec2<i32> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:vec2<bool> = load %arg_2
+    %9:vec2<i32> = select %6, %7, %8
+    %res:ptr<function, vec2<i32>, read_write> = var, %9
+    %11:vec2<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_00b848
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_00b848
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_00b848
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/01e2cd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/01e2cd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..46cffbf
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/01e2cd.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_01e2cd = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, vec3<bool>, read_write> = var, vec3<bool>(true)
+    %6:vec3<i32> = load %arg_0
+    %7:vec3<i32> = load %arg_1
+    %8:vec3<bool> = load %arg_2
+    %9:vec3<i32> = select %6, %7, %8
+    %res:ptr<function, vec3<i32>, read_write> = var, %9
+    %11:vec3<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_01e2cd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_01e2cd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_01e2cd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/087ea4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/087ea4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..498967f
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/087ea4.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_087ea4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %arg_1:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:vec4<u32> = load %arg_0
+    %7:vec4<u32> = load %arg_1
+    %8:bool = load %arg_2
+    %9:vec4<u32> = select %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_087ea4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_087ea4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_087ea4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/089657.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/089657.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/089657.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/select/10e73b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/10e73b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b29400a
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/10e73b.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%select_10e73b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %arg_1:ptr<function, f16, read_write> = var, 1.0h
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:f16 = load %arg_0
+    %7:f16 = load %arg_1
+    %8:bool = load %arg_2
+    %9:f16 = select %6, %7, %8
+    %res:ptr<function, f16, read_write> = var, %9
+    %11:f16 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_10e73b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_10e73b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_10e73b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/17441a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/17441a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/17441a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/select/1ada2a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/1ada2a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..573b1a4
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/1ada2a.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%select_1ada2a = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:vec3<f16> = load %arg_0
+    %7:vec3<f16> = load %arg_1
+    %8:bool = load %arg_2
+    %9:vec3<f16> = select %6, %7, %8
+    %res:ptr<function, vec3<f16>, read_write> = var, %9
+    %11:vec3<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_1ada2a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_1ada2a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_1ada2a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/1e960b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/1e960b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bd2bdec
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/1e960b.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_1e960b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, vec2<bool>, read_write> = var, vec2<bool>(true)
+    %6:vec2<u32> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:vec2<bool> = load %arg_2
+    %9:vec2<u32> = select %6, %7, %8
+    %res:ptr<function, vec2<u32>, read_write> = var, %9
+    %11:vec2<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_1e960b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_1e960b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_1e960b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/1f4d93.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/select/266aff.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/266aff.wgsl.expected.ir.msl
new file mode 100644
index 0000000..69fca92
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/266aff.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_266aff = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_1:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_2:ptr<function, vec2<bool>, read_write> = var, vec2<bool>(true)
+    %6:vec2<f32> = load %arg_0
+    %7:vec2<f32> = load %arg_1
+    %8:vec2<bool> = load %arg_2
+    %9:vec2<f32> = select %6, %7, %8
+    %res:ptr<function, vec2<f32>, read_write> = var, %9
+    %11:vec2<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_266aff
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_266aff
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_266aff
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/28a27e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/28a27e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1ddf4ea
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/28a27e.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_28a27e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, vec3<bool>, read_write> = var, vec3<bool>(true)
+    %6:vec3<u32> = load %arg_0
+    %7:vec3<u32> = load %arg_1
+    %8:vec3<bool> = load %arg_2
+    %9:vec3<u32> = select %6, %7, %8
+    %res:ptr<function, vec3<u32>, read_write> = var, %9
+    %11:vec3<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_28a27e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_28a27e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_28a27e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/2c96d4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/select/3a14be.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/select/3c25ce.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/3c25ce.wgsl.expected.ir.msl
new file mode 100644
index 0000000..578fb58
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/3c25ce.wgsl.expected.ir.msl
@@ -0,0 +1,50 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%select_3c25ce = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<bool>, read_write> = var, vec3<bool>(true)
+    %arg_1:ptr<function, vec3<bool>, read_write> = var, vec3<bool>(true)
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:vec3<bool> = load %arg_0
+    %7:vec3<bool> = load %arg_1
+    %8:bool = load %arg_2
+    %9:vec3<bool> = select %6, %7, %8
+    %res:ptr<function, vec3<bool>, read_write> = var, %9
+    %11:vec3<bool> = load %res
+    %12:vec3<bool> = eq %11, vec3<bool>(false)
+    %13:bool = all %12
+    %14:i32 = select 0i, 1i, %13
+    store %prevent_dce, %14
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %16:void = call %select_3c25ce
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %18:void = call %select_3c25ce
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %20:void = call %select_3c25ce
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/416e14.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/416e14.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c0e598c
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/416e14.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%select_416e14 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %arg_1:ptr<function, f32, read_write> = var, 1.0f
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:f32 = load %arg_0
+    %7:f32 = load %arg_1
+    %8:bool = load %arg_2
+    %9:f32 = select %6, %7, %8
+    %res:ptr<function, f32, read_write> = var, %9
+    %11:f32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_416e14
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_416e14
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_416e14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/431dfb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/select/43741e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/43741e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/43741e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/select/494051.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/494051.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/494051.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/select/4c4738.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/select/4e60da.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/select/51b047.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/51b047.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dd70f14
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/51b047.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_51b047 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:vec2<u32> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:bool = load %arg_2
+    %9:vec2<u32> = select %6, %7, %8
+    %res:ptr<function, vec2<u32>, read_write> = var, %9
+    %11:vec2<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_51b047
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_51b047
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_51b047
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/53d518.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/53d518.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0526d40
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/53d518.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%select_53d518 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_2:ptr<function, vec3<bool>, read_write> = var, vec3<bool>(true)
+    %6:vec3<f16> = load %arg_0
+    %7:vec3<f16> = load %arg_1
+    %8:vec3<bool> = load %arg_2
+    %9:vec3<f16> = select %6, %7, %8
+    %res:ptr<function, vec3<f16>, read_write> = var, %9
+    %11:vec3<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_53d518
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_53d518
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_53d518
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/713567.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/713567.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8c53ae2
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/713567.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_713567 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:vec4<f32> = load %arg_0
+    %7:vec4<f32> = load %arg_1
+    %8:bool = load %arg_2
+    %9:vec4<f32> = select %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_713567
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_713567
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_713567
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/78be5f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/78be5f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..838cfaa
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/78be5f.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_78be5f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_1:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:vec3<f32> = load %arg_0
+    %7:vec3<f32> = load %arg_1
+    %8:bool = load %arg_2
+    %9:vec3<f32> = select %6, %7, %8
+    %res:ptr<function, vec3<f32>, read_write> = var, %9
+    %11:vec3<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_78be5f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_78be5f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_78be5f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/80a9a9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/80a9a9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aadcf20
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/80a9a9.wgsl.expected.ir.msl
@@ -0,0 +1,50 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%select_80a9a9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<bool>, read_write> = var, vec3<bool>(true)
+    %arg_1:ptr<function, vec3<bool>, read_write> = var, vec3<bool>(true)
+    %arg_2:ptr<function, vec3<bool>, read_write> = var, vec3<bool>(true)
+    %6:vec3<bool> = load %arg_0
+    %7:vec3<bool> = load %arg_1
+    %8:vec3<bool> = load %arg_2
+    %9:vec3<bool> = select %6, %7, %8
+    %res:ptr<function, vec3<bool>, read_write> = var, %9
+    %11:vec3<bool> = load %res
+    %12:vec3<bool> = eq %11, vec3<bool>(false)
+    %13:bool = all %12
+    %14:i32 = select 0i, 1i, %13
+    store %prevent_dce, %14
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %16:void = call %select_80a9a9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %18:void = call %select_80a9a9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %20:void = call %select_80a9a9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/830dd9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/830dd9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..63dd58c
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/830dd9.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%select_830dd9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_1:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:vec4<f16> = load %arg_0
+    %7:vec4<f16> = load %arg_1
+    %8:bool = load %arg_2
+    %9:vec4<f16> = select %6, %7, %8
+    %res:ptr<function, vec4<f16>, read_write> = var, %9
+    %11:vec4<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_830dd9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_830dd9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_830dd9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/86f9bd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/86f9bd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f75bd9d
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/86f9bd.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%select_86f9bd = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_1:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:vec2<f16> = load %arg_0
+    %7:vec2<f16> = load %arg_1
+    %8:bool = load %arg_2
+    %9:vec2<f16> = select %6, %7, %8
+    %res:ptr<function, vec2<f16>, read_write> = var, %9
+    %11:vec2<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_86f9bd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_86f9bd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_86f9bd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/8fa62c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/8fa62c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..66915e7
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/8fa62c.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_8fa62c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:vec3<i32> = load %arg_0
+    %7:vec3<i32> = load %arg_1
+    %8:bool = load %arg_2
+    %9:vec3<i32> = select %6, %7, %8
+    %res:ptr<function, vec3<i32>, read_write> = var, %9
+    %11:vec3<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_8fa62c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_8fa62c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_8fa62c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/99f883.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/99f883.wgsl.expected.ir.msl
new file mode 100644
index 0000000..051ee3e
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/99f883.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%select_99f883 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:u32 = load %arg_0
+    %7:u32 = load %arg_1
+    %8:bool = load %arg_2
+    %9:u32 = select %6, %7, %8
+    %res:ptr<function, u32, read_write> = var, %9
+    %11:u32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_99f883
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_99f883
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_99f883
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/9b478d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/select/a081f1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/a081f1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b531763
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/a081f1.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%select_a081f1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_1:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_2:ptr<function, vec4<bool>, read_write> = var, vec4<bool>(true)
+    %6:vec4<f16> = load %arg_0
+    %7:vec4<f16> = load %arg_1
+    %8:vec4<bool> = load %arg_2
+    %9:vec4<f16> = select %6, %7, %8
+    %res:ptr<function, vec4<f16>, read_write> = var, %9
+    %11:vec4<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_a081f1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_a081f1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_a081f1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/a2860e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/a2860e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d09bc94
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/a2860e.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_a2860e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %arg_1:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %arg_2:ptr<function, vec4<bool>, read_write> = var, vec4<bool>(true)
+    %6:vec4<i32> = load %arg_0
+    %7:vec4<i32> = load %arg_1
+    %8:vec4<bool> = load %arg_2
+    %9:vec4<i32> = select %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_a2860e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_a2860e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_a2860e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/ab069f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/ab069f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6e7b7d6
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/ab069f.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_ab069f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %arg_1:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:vec4<i32> = load %arg_0
+    %7:vec4<i32> = load %arg_1
+    %8:bool = load %arg_2
+    %9:vec4<i32> = select %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_ab069f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_ab069f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_ab069f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/b04721.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/b04721.wgsl.expected.ir.msl
new file mode 100644
index 0000000..65e9f47
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/b04721.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_b04721 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:vec3<u32> = load %arg_0
+    %7:vec3<u32> = load %arg_1
+    %8:bool = load %arg_2
+    %9:vec3<u32> = select %6, %7, %8
+    %res:ptr<function, vec3<u32>, read_write> = var, %9
+    %11:vec3<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_b04721
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_b04721
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_b04721
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/b93806.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/b93806.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/b93806.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/select/bb447f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/bb447f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..668a0bc
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/bb447f.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_bb447f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:vec2<i32> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:bool = load %arg_2
+    %9:vec2<i32> = select %6, %7, %8
+    %res:ptr<function, vec2<i32>, read_write> = var, %9
+    %11:vec2<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_bb447f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_bb447f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_bb447f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/bb8aae.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/bb8aae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ca836bf
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/bb8aae.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_bb8aae = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_2:ptr<function, vec4<bool>, read_write> = var, vec4<bool>(true)
+    %6:vec4<f32> = load %arg_0
+    %7:vec4<f32> = load %arg_1
+    %8:vec4<bool> = load %arg_2
+    %9:vec4<f32> = select %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_bb8aae
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_bb8aae
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_bb8aae
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/bf3d29.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/bf3d29.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f8a112c
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/bf3d29.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_bf3d29 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_1:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:vec2<f32> = load %arg_0
+    %7:vec2<f32> = load %arg_1
+    %8:bool = load %arg_2
+    %9:vec2<f32> = select %6, %7, %8
+    %res:ptr<function, vec2<f32>, read_write> = var, %9
+    %11:vec2<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_bf3d29
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_bf3d29
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_bf3d29
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/c31f9e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/c31f9e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3f3a32f
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/c31f9e.wgsl.expected.ir.msl
@@ -0,0 +1,50 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%select_c31f9e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, bool, read_write> = var, true
+    %arg_1:ptr<function, bool, read_write> = var, true
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:bool = load %arg_0
+    %7:bool = load %arg_1
+    %8:bool = load %arg_2
+    %9:bool = select %6, %7, %8
+    %res:ptr<function, bool, read_write> = var, %9
+    %11:bool = load %res
+    %12:bool = eq %11, false
+    %13:bool = all %12
+    %14:i32 = select 0i, 1i, %13
+    store %prevent_dce, %14
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %16:void = call %select_c31f9e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %18:void = call %select_c31f9e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %20:void = call %select_c31f9e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/c41bd1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/c41bd1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6d98c14
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/c41bd1.wgsl.expected.ir.msl
@@ -0,0 +1,50 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%select_c41bd1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<bool>, read_write> = var, vec4<bool>(true)
+    %arg_1:ptr<function, vec4<bool>, read_write> = var, vec4<bool>(true)
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:vec4<bool> = load %arg_0
+    %7:vec4<bool> = load %arg_1
+    %8:bool = load %arg_2
+    %9:vec4<bool> = select %6, %7, %8
+    %res:ptr<function, vec4<bool>, read_write> = var, %9
+    %11:vec4<bool> = load %res
+    %12:vec4<bool> = eq %11, vec4<bool>(false)
+    %13:bool = all %12
+    %14:i32 = select 0i, 1i, %13
+    store %prevent_dce, %14
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %16:void = call %select_c41bd1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %18:void = call %select_c41bd1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %20:void = call %select_c41bd1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/c4a4ef.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/c4a4ef.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0f8c8ae
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/c4a4ef.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_c4a4ef = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %arg_1:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %arg_2:ptr<function, vec4<bool>, read_write> = var, vec4<bool>(true)
+    %6:vec4<u32> = load %arg_0
+    %7:vec4<u32> = load %arg_1
+    %8:vec4<bool> = load %arg_2
+    %9:vec4<u32> = select %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_c4a4ef
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_c4a4ef
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_c4a4ef
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/cb9301.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/cb9301.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7514f7e
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/cb9301.wgsl.expected.ir.msl
@@ -0,0 +1,50 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%select_cb9301 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<bool>, read_write> = var, vec2<bool>(true)
+    %arg_1:ptr<function, vec2<bool>, read_write> = var, vec2<bool>(true)
+    %arg_2:ptr<function, vec2<bool>, read_write> = var, vec2<bool>(true)
+    %6:vec2<bool> = load %arg_0
+    %7:vec2<bool> = load %arg_1
+    %8:vec2<bool> = load %arg_2
+    %9:vec2<bool> = select %6, %7, %8
+    %res:ptr<function, vec2<bool>, read_write> = var, %9
+    %11:vec2<bool> = load %res
+    %12:vec2<bool> = eq %11, vec2<bool>(false)
+    %13:bool = all %12
+    %14:i32 = select 0i, 1i, %13
+    store %prevent_dce, %14
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %16:void = call %select_cb9301
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %18:void = call %select_cb9301
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %20:void = call %select_cb9301
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/dfab3b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/select/e381c3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/select/e3e028.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/e3e028.wgsl.expected.ir.msl
new file mode 100644
index 0000000..57606ac
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/e3e028.wgsl.expected.ir.msl
@@ -0,0 +1,50 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%select_e3e028 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<bool>, read_write> = var, vec4<bool>(true)
+    %arg_1:ptr<function, vec4<bool>, read_write> = var, vec4<bool>(true)
+    %arg_2:ptr<function, vec4<bool>, read_write> = var, vec4<bool>(true)
+    %6:vec4<bool> = load %arg_0
+    %7:vec4<bool> = load %arg_1
+    %8:vec4<bool> = load %arg_2
+    %9:vec4<bool> = select %6, %7, %8
+    %res:ptr<function, vec4<bool>, read_write> = var, %9
+    %11:vec4<bool> = load %res
+    %12:vec4<bool> = eq %11, vec4<bool>(false)
+    %13:bool = all %12
+    %14:i32 = select 0i, 1i, %13
+    store %prevent_dce, %14
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %16:void = call %select_e3e028
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %18:void = call %select_e3e028
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %20:void = call %select_e3e028
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/ebfea2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/ebfea2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..332613f
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/ebfea2.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%select_ebfea2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_1:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_2:ptr<function, vec3<bool>, read_write> = var, vec3<bool>(true)
+    %6:vec3<f32> = load %arg_0
+    %7:vec3<f32> = load %arg_1
+    %8:vec3<bool> = load %arg_2
+    %9:vec3<f32> = select %6, %7, %8
+    %res:ptr<function, vec3<f32>, read_write> = var, %9
+    %11:vec3<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_ebfea2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_ebfea2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_ebfea2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/ed7c13.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/ed7c13.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a6ec348
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/ed7c13.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%select_ed7c13 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_1:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_2:ptr<function, vec2<bool>, read_write> = var, vec2<bool>(true)
+    %6:vec2<f16> = load %arg_0
+    %7:vec2<f16> = load %arg_1
+    %8:vec2<bool> = load %arg_2
+    %9:vec2<f16> = select %6, %7, %8
+    %res:ptr<function, vec2<f16>, read_write> = var, %9
+    %11:vec2<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_ed7c13
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_ed7c13
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_ed7c13
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/ed8a15.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/ed8a15.wgsl.expected.ir.msl
new file mode 100644
index 0000000..beade5e
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/ed8a15.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%select_ed8a15 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, i32, read_write> = var, 1i
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:i32 = load %arg_0
+    %7:i32 = load %arg_1
+    %8:bool = load %arg_2
+    %9:i32 = select %6, %7, %8
+    %res:ptr<function, i32, read_write> = var, %9
+    %11:i32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %select_ed8a15
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %select_ed8a15
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %select_ed8a15
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/select/fb7e53.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/select/fb7e53.wgsl.expected.ir.msl
new file mode 100644
index 0000000..49f7c92
--- /dev/null
+++ b/test/tint/builtins/gen/var/select/fb7e53.wgsl.expected.ir.msl
@@ -0,0 +1,50 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%select_fb7e53 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<bool>, read_write> = var, vec2<bool>(true)
+    %arg_1:ptr<function, vec2<bool>, read_write> = var, vec2<bool>(true)
+    %arg_2:ptr<function, bool, read_write> = var, true
+    %6:vec2<bool> = load %arg_0
+    %7:vec2<bool> = load %arg_1
+    %8:bool = load %arg_2
+    %9:vec2<bool> = select %6, %7, %8
+    %res:ptr<function, vec2<bool>, read_write> = var, %9
+    %11:vec2<bool> = load %res
+    %12:vec2<bool> = eq %11, vec2<bool>(false)
+    %13:bool = all %12
+    %14:i32 = select 0i, 1i, %13
+    store %prevent_dce, %14
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %16:void = call %select_fb7e53
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %18:void = call %select_fb7e53
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %20:void = call %select_fb7e53
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sign/0799fd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/0799fd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/0799fd.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sign/159665.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/159665.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ffedd81
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/159665.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sign_159665 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = sign %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sign_159665
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sign_159665
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sign_159665
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sign/160933.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/160933.wgsl.expected.ir.msl
new file mode 100644
index 0000000..74b516d
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/160933.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sign_160933 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = sign %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sign_160933
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sign_160933
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sign_160933
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sign/3233fa.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/3233fa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1c90468
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/3233fa.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%sign_3233fa = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, i32, read_write> = var, 1i
+    %4:i32 = load %arg_0
+    %5:i32 = sign %4
+    %res:ptr<function, i32, read_write> = var, %5
+    %7:i32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sign_3233fa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sign_3233fa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sign_3233fa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sign/3a39ac.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/3a39ac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/3a39ac.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sign/3bdab6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/3bdab6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/3bdab6.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sign/55339e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/55339e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/55339e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sign/58d779.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/58d779.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f0050fb
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/58d779.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%sign_58d779 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %4:vec4<i32> = load %arg_0
+    %5:vec4<i32> = sign %4
+    %res:ptr<function, vec4<i32>, read_write> = var, %5
+    %7:vec4<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sign_58d779
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sign_58d779
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sign_58d779
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sign/5d283a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/5d283a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..386bd85cb
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/5d283a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sign_5d283a = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = sign %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sign_5d283a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sign_5d283a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sign_5d283a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sign/7c85ea.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/7c85ea.wgsl.expected.ir.msl
new file mode 100644
index 0000000..af034ee
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/7c85ea.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%sign_7c85ea = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %arg_0
+    %5:f16 = sign %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sign_7c85ea
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sign_7c85ea
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sign_7c85ea
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sign/926015.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/926015.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3666068
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/926015.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%sign_926015 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %4:vec2<i32> = load %arg_0
+    %5:vec2<i32> = sign %4
+    %res:ptr<function, vec2<i32>, read_write> = var, %5
+    %7:vec2<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sign_926015
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sign_926015
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sign_926015
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sign/943b2e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/943b2e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/943b2e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sign/9603b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/9603b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f7f9b15
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/9603b1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%sign_9603b1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %4:vec3<i32> = load %arg_0
+    %5:vec3<i32> = sign %4
+    %res:ptr<function, vec3<i32>, read_write> = var, %5
+    %7:vec3<i32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sign_9603b1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sign_9603b1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sign_9603b1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sign/ab6301.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/ab6301.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/ab6301.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sign/b8f634.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/b8f634.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4cc8a69
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/b8f634.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sign_b8f634 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = sign %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sign_b8f634
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sign_b8f634
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sign_b8f634
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sign/c8289c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/c8289c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/c8289c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sign/ccdb3c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/ccdb3c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..124079d
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/ccdb3c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sign_ccdb3c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = sign %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sign_ccdb3c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sign_ccdb3c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sign_ccdb3c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sign/d065d8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/d065d8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9bf03d2
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/d065d8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sign_d065d8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = sign %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sign_d065d8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sign_d065d8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sign_d065d8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sign/dd790e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/dd790e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c627749
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/dd790e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%sign_dd790e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = sign %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sign_dd790e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sign_dd790e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sign_dd790e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sign/f5da6a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sign/f5da6a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sign/f5da6a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sin/01f241.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4be23af
--- /dev/null
+++ b/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sin_01f241 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.57079637050628662109f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = sin %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sin_01f241
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sin_01f241
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sin_01f241
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sin/15b2c6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sin/15b2c6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sin/15b2c6.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sin/2c903b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sin/2c903b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1065ce1
--- /dev/null
+++ b/test/tint/builtins/gen/var/sin/2c903b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sin_2c903b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.5703125h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = sin %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sin_2c903b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sin_2c903b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sin_2c903b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sin/3cca11.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sin/3cca11.wgsl.expected.ir.msl
new file mode 100644
index 0000000..38fd38c
--- /dev/null
+++ b/test/tint/builtins/gen/var/sin/3cca11.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sin_3cca11 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.5703125h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = sin %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sin_3cca11
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sin_3cca11
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sin_3cca11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sin/4e3979.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b53947e
--- /dev/null
+++ b/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sin_4e3979 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.57079637050628662109f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = sin %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sin_4e3979
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sin_4e3979
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sin_4e3979
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sin/5c0712.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sin/5c0712.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c20ad7b
--- /dev/null
+++ b/test/tint/builtins/gen/var/sin/5c0712.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sin_5c0712 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.5703125h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = sin %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sin_5c0712
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sin_5c0712
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sin_5c0712
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sin/66a59f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sin/66a59f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0050346
--- /dev/null
+++ b/test/tint/builtins/gen/var/sin/66a59f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%sin_66a59f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.5703125h
+    %4:f16 = load %arg_0
+    %5:f16 = sin %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sin_66a59f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sin_66a59f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sin_66a59f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sin/67b03c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sin/67b03c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sin/67b03c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sin/68d3ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sin/68d3ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sin/68d3ab.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sin/a9ab19.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sin/a9ab19.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sin/a9ab19.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sin/b78c91.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d88faa0
--- /dev/null
+++ b/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%sin_b78c91 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.57079637050628662109f
+    %4:f32 = load %arg_0
+    %5:f32 = sin %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sin_b78c91
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sin_b78c91
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sin_b78c91
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0e57219
--- /dev/null
+++ b/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sin_fc8bc4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.57079637050628662109f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = sin %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sin_fc8bc4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sin_fc8bc4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sin_fc8bc4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sinh/0908c1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sinh/0908c1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c071a4d
--- /dev/null
+++ b/test/tint/builtins/gen/var/sinh/0908c1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sinh_0908c1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = sinh %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sinh_0908c1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sinh_0908c1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sinh_0908c1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sinh/445e33.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sinh/445e33.wgsl.expected.ir.msl
new file mode 100644
index 0000000..503c405
--- /dev/null
+++ b/test/tint/builtins/gen/var/sinh/445e33.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sinh_445e33 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = sinh %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sinh_445e33
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sinh_445e33
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sinh_445e33
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sinh/69cce2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sinh/69cce2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e04dc69
--- /dev/null
+++ b/test/tint/builtins/gen/var/sinh/69cce2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%sinh_69cce2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %arg_0
+    %5:f16 = sinh %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sinh_69cce2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sinh_69cce2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sinh_69cce2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sinh/7bb598.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sinh/7bb598.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3402594
--- /dev/null
+++ b/test/tint/builtins/gen/var/sinh/7bb598.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%sinh_7bb598 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = sinh %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sinh_7bb598
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sinh_7bb598
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sinh_7bb598
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sinh/924f19.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sinh/924f19.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6f405c2
--- /dev/null
+++ b/test/tint/builtins/gen/var/sinh/924f19.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sinh_924f19 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = sinh %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sinh_924f19
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sinh_924f19
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sinh_924f19
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sinh/b9860e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sinh/b9860e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cf41e03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sinh/b9860e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sinh_b9860e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = sinh %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sinh_b9860e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sinh_b9860e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sinh_b9860e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sinh/ba7e25.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sinh/ba7e25.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7cb50d4
--- /dev/null
+++ b/test/tint/builtins/gen/var/sinh/ba7e25.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sinh_ba7e25 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = sinh %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sinh_ba7e25
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sinh_ba7e25
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sinh_ba7e25
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sinh/c9a5eb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sinh/c9a5eb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a89222b
--- /dev/null
+++ b/test/tint/builtins/gen/var/sinh/c9a5eb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sinh_c9a5eb = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = sinh %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sinh_c9a5eb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sinh_c9a5eb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sinh_c9a5eb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/smoothstep/0c481b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/smoothstep/0c481b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/smoothstep/0c481b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/smoothstep/0c4ffc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/smoothstep/0c4ffc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/smoothstep/0c4ffc.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/smoothstep/12c031.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/smoothstep/12c031.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1b07d13
--- /dev/null
+++ b/test/tint/builtins/gen/var/smoothstep/12c031.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%smoothstep_12c031 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(2.0h)
+    %arg_1:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(4.0h)
+    %arg_2:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(3.0h)
+    %6:vec2<f16> = load %arg_0
+    %7:vec2<f16> = load %arg_1
+    %8:vec2<f16> = load %arg_2
+    %9:vec2<f16> = smoothstep %6, %7, %8
+    %res:ptr<function, vec2<f16>, read_write> = var, %9
+    %11:vec2<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %smoothstep_12c031
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %smoothstep_12c031
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %smoothstep_12c031
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/smoothstep/392c19.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/smoothstep/392c19.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0037249
--- /dev/null
+++ b/test/tint/builtins/gen/var/smoothstep/392c19.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%smoothstep_392c19 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(2.0f)
+    %arg_1:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(4.0f)
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(3.0f)
+    %6:vec2<f32> = load %arg_0
+    %7:vec2<f32> = load %arg_1
+    %8:vec2<f32> = load %arg_2
+    %9:vec2<f32> = smoothstep %6, %7, %8
+    %res:ptr<function, vec2<f32>, read_write> = var, %9
+    %11:vec2<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %smoothstep_392c19
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %smoothstep_392c19
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %smoothstep_392c19
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/smoothstep/40864c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/smoothstep/40864c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7eb0e5b
--- /dev/null
+++ b/test/tint/builtins/gen/var/smoothstep/40864c.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%smoothstep_40864c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(2.0f)
+    %arg_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(4.0f)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(3.0f)
+    %6:vec4<f32> = load %arg_0
+    %7:vec4<f32> = load %arg_1
+    %8:vec4<f32> = load %arg_2
+    %9:vec4<f32> = smoothstep %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %smoothstep_40864c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %smoothstep_40864c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %smoothstep_40864c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/smoothstep/586e12.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/smoothstep/586e12.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f49c900c
--- /dev/null
+++ b/test/tint/builtins/gen/var/smoothstep/586e12.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%smoothstep_586e12 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 2.0h
+    %arg_1:ptr<function, f16, read_write> = var, 4.0h
+    %arg_2:ptr<function, f16, read_write> = var, 3.0h
+    %6:f16 = load %arg_0
+    %7:f16 = load %arg_1
+    %8:f16 = load %arg_2
+    %9:f16 = smoothstep %6, %7, %8
+    %res:ptr<function, f16, read_write> = var, %9
+    %11:f16 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %smoothstep_586e12
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %smoothstep_586e12
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %smoothstep_586e12
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/smoothstep/66e4bd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/smoothstep/66e4bd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/smoothstep/66e4bd.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/smoothstep/6c4975.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/smoothstep/6c4975.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a17738c
--- /dev/null
+++ b/test/tint/builtins/gen/var/smoothstep/6c4975.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%smoothstep_6c4975 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 2.0f
+    %arg_1:ptr<function, f32, read_write> = var, 4.0f
+    %arg_2:ptr<function, f32, read_write> = var, 3.0f
+    %6:f32 = load %arg_0
+    %7:f32 = load %arg_1
+    %8:f32 = load %arg_2
+    %9:f32 = smoothstep %6, %7, %8
+    %res:ptr<function, f32, read_write> = var, %9
+    %11:f32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %smoothstep_6c4975
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %smoothstep_6c4975
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %smoothstep_6c4975
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/smoothstep/6e7a74.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/smoothstep/6e7a74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9e1a26e
--- /dev/null
+++ b/test/tint/builtins/gen/var/smoothstep/6e7a74.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%smoothstep_6e7a74 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(2.0h)
+    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(4.0h)
+    %arg_2:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(3.0h)
+    %6:vec3<f16> = load %arg_0
+    %7:vec3<f16> = load %arg_1
+    %8:vec3<f16> = load %arg_2
+    %9:vec3<f16> = smoothstep %6, %7, %8
+    %res:ptr<function, vec3<f16>, read_write> = var, %9
+    %11:vec3<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %smoothstep_6e7a74
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %smoothstep_6e7a74
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %smoothstep_6e7a74
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/smoothstep/a80fff.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/smoothstep/a80fff.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/smoothstep/a80fff.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/smoothstep/aad1db.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/smoothstep/aad1db.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1338da7
--- /dev/null
+++ b/test/tint/builtins/gen/var/smoothstep/aad1db.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%smoothstep_aad1db = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(2.0f)
+    %arg_1:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(4.0f)
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(3.0f)
+    %6:vec3<f32> = load %arg_0
+    %7:vec3<f32> = load %arg_1
+    %8:vec3<f32> = load %arg_2
+    %9:vec3<f32> = smoothstep %6, %7, %8
+    %res:ptr<function, vec3<f32>, read_write> = var, %9
+    %11:vec3<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %smoothstep_aad1db
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %smoothstep_aad1db
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %smoothstep_aad1db
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/smoothstep/c43ebd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/smoothstep/c43ebd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b6dbeaa
--- /dev/null
+++ b/test/tint/builtins/gen/var/smoothstep/c43ebd.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%smoothstep_c43ebd = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(2.0h)
+    %arg_1:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(4.0h)
+    %arg_2:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(3.0h)
+    %6:vec4<f16> = load %arg_0
+    %7:vec4<f16> = load %arg_1
+    %8:vec4<f16> = load %arg_2
+    %9:vec4<f16> = smoothstep %6, %7, %8
+    %res:ptr<function, vec4<f16>, read_write> = var, %9
+    %11:vec4<f16> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %smoothstep_c43ebd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %smoothstep_c43ebd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %smoothstep_c43ebd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sqrt/072192.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sqrt/072192.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sqrt/072192.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sqrt/20c74e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sqrt/20c74e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fa391059
--- /dev/null
+++ b/test/tint/builtins/gen/var/sqrt/20c74e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%sqrt_20c74e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = sqrt %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sqrt_20c74e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sqrt_20c74e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sqrt_20c74e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sqrt/4ac2c5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sqrt/4ac2c5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sqrt/4ac2c5.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sqrt/803d1c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sqrt/803d1c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..00cf74f
--- /dev/null
+++ b/test/tint/builtins/gen/var/sqrt/803d1c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sqrt_803d1c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = sqrt %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sqrt_803d1c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sqrt_803d1c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sqrt_803d1c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sqrt/895a0c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sqrt/895a0c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bc8c285
--- /dev/null
+++ b/test/tint/builtins/gen/var/sqrt/895a0c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sqrt_895a0c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = sqrt %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sqrt_895a0c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sqrt_895a0c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sqrt_895a0c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sqrt/8c7024.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sqrt/8c7024.wgsl.expected.ir.msl
new file mode 100644
index 0000000..051feee
--- /dev/null
+++ b/test/tint/builtins/gen/var/sqrt/8c7024.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sqrt_8c7024 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = sqrt %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sqrt_8c7024
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sqrt_8c7024
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sqrt_8c7024
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sqrt/8da177.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sqrt/8da177.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sqrt/8da177.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sqrt/9c5cbe.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sqrt/9c5cbe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/sqrt/9c5cbe.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/sqrt/aa0d7a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sqrt/aa0d7a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..da164d7
--- /dev/null
+++ b/test/tint/builtins/gen/var/sqrt/aa0d7a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sqrt_aa0d7a = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = sqrt %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sqrt_aa0d7a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sqrt_aa0d7a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sqrt_aa0d7a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sqrt/d9ab4d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sqrt/d9ab4d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..09681b1
--- /dev/null
+++ b/test/tint/builtins/gen/var/sqrt/d9ab4d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%sqrt_d9ab4d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = sqrt %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sqrt_d9ab4d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sqrt_d9ab4d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sqrt_d9ab4d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sqrt/ec33e9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sqrt/ec33e9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ffa0997
--- /dev/null
+++ b/test/tint/builtins/gen/var/sqrt/ec33e9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%sqrt_ec33e9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %arg_0
+    %5:f16 = sqrt %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sqrt_ec33e9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sqrt_ec33e9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sqrt_ec33e9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/sqrt/f8c59a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/sqrt/f8c59a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e01f5b7
--- /dev/null
+++ b/test/tint/builtins/gen/var/sqrt/f8c59a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%sqrt_f8c59a = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = sqrt %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %sqrt_f8c59a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %sqrt_f8c59a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %sqrt_f8c59a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/step/07cb06.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/step/07cb06.wgsl.expected.ir.msl
new file mode 100644
index 0000000..79ad963
--- /dev/null
+++ b/test/tint/builtins/gen/var/step/07cb06.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%step_07cb06 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %arg_1:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %5:vec2<f16> = load %arg_0
+    %6:vec2<f16> = load %arg_1
+    %7:vec2<f16> = step %5, %6
+    %res:ptr<function, vec2<f16>, read_write> = var, %7
+    %9:vec2<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %step_07cb06
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %step_07cb06
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %step_07cb06
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/step/0b073b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/step/0b073b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f1b7be5
--- /dev/null
+++ b/test/tint/builtins/gen/var/step/0b073b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%step_0b073b = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %arg_1:ptr<function, f32, read_write> = var, 1.0f
+    %5:f32 = load %arg_0
+    %6:f32 = load %arg_1
+    %7:f32 = step %5, %6
+    %res:ptr<function, f32, read_write> = var, %7
+    %9:f32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %step_0b073b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %step_0b073b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %step_0b073b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/step/19accd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/step/19accd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..baef7c3
--- /dev/null
+++ b/test/tint/builtins/gen/var/step/19accd.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%step_19accd = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_1:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %5:vec2<f32> = load %arg_0
+    %6:vec2<f32> = load %arg_1
+    %7:vec2<f32> = step %5, %6
+    %res:ptr<function, vec2<f32>, read_write> = var, %7
+    %9:vec2<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %step_19accd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %step_19accd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %step_19accd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/step/334303.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/step/334303.wgsl.expected.ir.msl
new file mode 100644
index 0000000..507ac89
--- /dev/null
+++ b/test/tint/builtins/gen/var/step/334303.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%step_334303 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_1:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %5:vec3<f32> = load %arg_0
+    %6:vec3<f32> = load %arg_1
+    %7:vec3<f32> = step %5, %6
+    %res:ptr<function, vec3<f32>, read_write> = var, %7
+    %9:vec3<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %step_334303
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %step_334303
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %step_334303
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/step/38cd79.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/step/38cd79.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/step/38cd79.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/step/415879.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/step/415879.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/step/415879.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/step/630d07.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/step/630d07.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f35afce
--- /dev/null
+++ b/test/tint/builtins/gen/var/step/630d07.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%step_630d07 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %arg_1:ptr<function, f16, read_write> = var, 1.0h
+    %5:f16 = load %arg_0
+    %6:f16 = load %arg_1
+    %7:f16 = step %5, %6
+    %res:ptr<function, f16, read_write> = var, %7
+    %9:f16 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %step_630d07
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %step_630d07
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %step_630d07
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/step/7c7e5c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/step/7c7e5c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/step/7c7e5c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/step/baa320.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/step/baa320.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bc14e3c
--- /dev/null
+++ b/test/tint/builtins/gen/var/step/baa320.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%step_baa320 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %arg_1:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %5:vec4<f16> = load %arg_0
+    %6:vec4<f16> = load %arg_1
+    %7:vec4<f16> = step %5, %6
+    %res:ptr<function, vec4<f16>, read_write> = var, %7
+    %9:vec4<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %step_baa320
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %step_baa320
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %step_baa320
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/step/cc6b61.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/step/cc6b61.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c109c07
--- /dev/null
+++ b/test/tint/builtins/gen/var/step/cc6b61.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%step_cc6b61 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %5:vec3<f16> = load %arg_0
+    %6:vec3<f16> = load %arg_1
+    %7:vec3<f16> = step %5, %6
+    %res:ptr<function, vec3<f16>, read_write> = var, %7
+    %9:vec3<f16> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %step_cc6b61
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %step_cc6b61
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %step_cc6b61
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/step/e2b337.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/step/e2b337.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a855678
--- /dev/null
+++ b/test/tint/builtins/gen/var/step/e2b337.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%step_e2b337 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %arg_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:vec4<f32> = load %arg_0
+    %6:vec4<f32> = load %arg_1
+    %7:vec4<f32> = step %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %step_e2b337
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %step_e2b337
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %step_e2b337
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/step/f9b70c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/step/f9b70c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/step/f9b70c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/storageBarrier/d87211.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/storageBarrier/d87211.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/storageBarrier/d87211.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/subgroupBallot/7e6d0e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupBallot/7e6d0e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..417d78c8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBallot/7e6d0e.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%subgroupBallot_7e6d0e = func():void -> %b2 {
+  %b2 = block {
+    %3:vec4<u32> = subgroupBallot
+    %res:ptr<function, vec4<u32>, read_write> = var, %3
+    %5:vec4<u32> = load %res
+    store %prevent_dce, %5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %subgroupBallot_7e6d0e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0e4fd0e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%subgroupBroadcast_08beca = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = subgroupBroadcast %4, 1u
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %subgroupBroadcast_08beca
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..86687be
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%subgroupBroadcast_1d79c7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, i32, read_write> = var, 1i
+    %4:i32 = load %arg_0
+    %5:i32 = subgroupBroadcast %4, 1u
+    %res:ptr<function, i32, read_write> = var, %5
+    %7:i32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %subgroupBroadcast_1d79c7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ebd95d3
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%subgroupBroadcast_c36fe1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %4:u32 = load %arg_0
+    %5:u32 = subgroupBroadcast %4, 1u
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %9:void = call %subgroupBroadcast_c36fe1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/tan/244e2a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tan/244e2a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..243f273
--- /dev/null
+++ b/test/tint/builtins/gen/var/tan/244e2a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%tan_244e2a = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = tan %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %tan_244e2a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %tan_244e2a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %tan_244e2a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/tan/2f030e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tan/2f030e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..10d82fa
--- /dev/null
+++ b/test/tint/builtins/gen/var/tan/2f030e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%tan_2f030e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = tan %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %tan_2f030e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %tan_2f030e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %tan_2f030e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/tan/311400.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tan/311400.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/tan/311400.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/tan/539e54.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tan/539e54.wgsl.expected.ir.msl
new file mode 100644
index 0000000..25d240b
--- /dev/null
+++ b/test/tint/builtins/gen/var/tan/539e54.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%tan_539e54 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = tan %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %tan_539e54
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %tan_539e54
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %tan_539e54
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/tan/7be368.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/tan/7ea104.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tan/7ea104.wgsl.expected.ir.msl
new file mode 100644
index 0000000..682b779
--- /dev/null
+++ b/test/tint/builtins/gen/var/tan/7ea104.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%tan_7ea104 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = tan %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %tan_7ea104
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %tan_7ea104
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %tan_7ea104
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/tan/8ce3e9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tan/8ce3e9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ce9fac3
--- /dev/null
+++ b/test/tint/builtins/gen/var/tan/8ce3e9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%tan_8ce3e9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = tan %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %tan_8ce3e9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %tan_8ce3e9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %tan_8ce3e9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/tan/9f7c9c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tan/9f7c9c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..01dad7a
--- /dev/null
+++ b/test/tint/builtins/gen/var/tan/9f7c9c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%tan_9f7c9c = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = tan %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %tan_9f7c9c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %tan_9f7c9c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %tan_9f7c9c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/tan/a0966f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/tan/d4d491.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tan/d4d491.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ddaea17
--- /dev/null
+++ b/test/tint/builtins/gen/var/tan/d4d491.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%tan_d4d491 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %arg_0
+    %5:f16 = tan %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %tan_d4d491
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %tan_d4d491
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %tan_d4d491
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/tan/db0456.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tan/db0456.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ece5706
--- /dev/null
+++ b/test/tint/builtins/gen/var/tan/db0456.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%tan_db0456 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = tan %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %tan_db0456
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %tan_db0456
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %tan_db0456
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/tanh/06a4fe.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tanh/06a4fe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bb4df9b
--- /dev/null
+++ b/test/tint/builtins/gen/var/tanh/06a4fe.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%tanh_06a4fe = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = tanh %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %tanh_06a4fe
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %tanh_06a4fe
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %tanh_06a4fe
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/tanh/5663c5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tanh/5663c5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fc3fa1a
--- /dev/null
+++ b/test/tint/builtins/gen/var/tanh/5663c5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%tanh_5663c5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = tanh %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %tanh_5663c5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %tanh_5663c5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %tanh_5663c5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/tanh/5724b3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tanh/5724b3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..db4c42a
--- /dev/null
+++ b/test/tint/builtins/gen/var/tanh/5724b3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%tanh_5724b3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = tanh %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %tanh_5724b3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %tanh_5724b3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %tanh_5724b3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/tanh/5b19af.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tanh/5b19af.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3d0457e
--- /dev/null
+++ b/test/tint/builtins/gen/var/tanh/5b19af.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%tanh_5b19af = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.0h
+    %4:f16 = load %arg_0
+    %5:f16 = tanh %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %tanh_5b19af
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %tanh_5b19af
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %tanh_5b19af
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/tanh/6d105a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tanh/6d105a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f392e0d
--- /dev/null
+++ b/test/tint/builtins/gen/var/tanh/6d105a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%tanh_6d105a = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = tanh %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %tanh_6d105a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %tanh_6d105a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %tanh_6d105a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/tanh/9f9fb9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tanh/9f9fb9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2fe3bd4
--- /dev/null
+++ b/test/tint/builtins/gen/var/tanh/9f9fb9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%tanh_9f9fb9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = tanh %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %tanh_9f9fb9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %tanh_9f9fb9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %tanh_9f9fb9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/tanh/c15fdb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tanh/c15fdb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ad8e822
--- /dev/null
+++ b/test/tint/builtins/gen/var/tanh/c15fdb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%tanh_c15fdb = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.0f
+    %4:f32 = load %arg_0
+    %5:f32 = tanh %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %tanh_c15fdb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %tanh_c15fdb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %tanh_c15fdb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/tanh/e8efb3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/tanh/e8efb3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8837583
--- /dev/null
+++ b/test/tint/builtins/gen/var/tanh/e8efb3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%tanh_e8efb3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.0h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = tanh %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %tanh_e8efb3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %tanh_e8efb3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %tanh_e8efb3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/00348c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/00348c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0c7e03e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/00348c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_00348c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<i32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_00348c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_00348c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_00348c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/01e21e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/01e21e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3d6213a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/01e21e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_01e21e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32uint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_01e21e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_01e21e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_01e21e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/01edb1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/01edb1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1613b80
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/01edb1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_01edb1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8uint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_01edb1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_01edb1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_01edb1
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/022903.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/022903.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4a5851b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/022903.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_022903 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_1d<i32> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:u32 = textureDimensions %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_022903
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_022903
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_022903
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/0276ec.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/0276ec.wgsl.expected.ir.msl
new file mode 100644
index 0000000..38c1a30
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/0276ec.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_0276ec = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16uint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_0276ec
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_0276ec
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_0276ec
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/029589.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/029589.wgsl.expected.ir.msl
new file mode 100644
index 0000000..925e89e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/029589.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_029589 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_029589
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_029589
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_029589
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/0329b0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/0329b0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..533bc3e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/0329b0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_0329b0 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16sint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_0329b0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_0329b0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_0329b0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/033195.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/033195.wgsl.expected.ir.msl
new file mode 100644
index 0000000..395def0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/033195.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_033195 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16float, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_033195
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_033195
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_033195
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/033ea7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/033ea7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..70b1052
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/033ea7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_033ea7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8unorm, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_033ea7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_033ea7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_033ea7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/038847.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/038847.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3acb5bb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/038847.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_038847 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8sint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_038847
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_038847
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_038847
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/03f81e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/03f81e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4df50ff
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/03f81e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_03f81e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8snorm, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_03f81e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_03f81e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_03f81e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/07f1ba.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/07f1ba.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3f00be3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/07f1ba.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_07f1ba = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16float, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_07f1ba
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_07f1ba
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_07f1ba
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/088918.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/088918.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e239cd5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/088918.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_088918 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8unorm, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_088918
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_088918
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_088918
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/0890c6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/0890c6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b8374dc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/0890c6.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_0890c6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_3d<f32> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec3<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec3<u32>, read_write> = var, %7
+    %9:vec3<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_0890c6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_0890c6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_0890c6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/08e371.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/08e371.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f2c7f0d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/08e371.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_08e371 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_08e371
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_08e371
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_08e371
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/09140b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/09140b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9df585c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/09140b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_09140b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32uint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_09140b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_09140b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_09140b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/0973c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/0973c9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8f3d6e7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/0973c9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_0973c9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_0973c9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_0973c9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_0973c9
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/0baa0d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/0baa0d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..99d2672
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/0baa0d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_0baa0d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32float, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_0baa0d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_0baa0d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_0baa0d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/0c0b0c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/0c0b0c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..791b5e1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/0c0b0c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_0c0b0c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16float, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_0c0b0c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_0c0b0c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_0c0b0c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/0d4a7c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/0d4a7c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f1f5aa7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/0d4a7c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_0d4a7c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_0d4a7c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_0d4a7c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_0d4a7c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/0de70c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/0de70c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d9da2b5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/0de70c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_0de70c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8unorm, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_0de70c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_0de70c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_0de70c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/0ff9a4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/0ff9a4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..89ce9e4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/0ff9a4.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_0ff9a4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_depth_cube_array = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_0ff9a4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_0ff9a4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_0ff9a4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/135176.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/135176.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2ac8564
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/135176.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_135176 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_135176
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_135176
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_135176
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/13f8db.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/13f8db.wgsl.expected.ir.msl
new file mode 100644
index 0000000..08157dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/13f8db.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_13f8db = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_2d<f32> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_13f8db
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_13f8db
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_13f8db
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/1417dd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/1417dd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c1d4923
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/1417dd.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_1417dd = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_1417dd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_1417dd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_1417dd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/15aa17.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/15aa17.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5520728
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/15aa17.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_15aa17 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32sint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_15aa17
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_15aa17
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_15aa17
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/15b577.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/15b577.wgsl.expected.ir.msl
new file mode 100644
index 0000000..18099e7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/15b577.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_15b577 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_2d<u32> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_15b577
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_15b577
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_15b577
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/1a2be7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/1a2be7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..540b2ed
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/1a2be7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_1a2be7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<i32> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_1a2be7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_1a2be7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_1a2be7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/1b720f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/1b720f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ce4354b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/1b720f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_1b720f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16sint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_1b720f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_1b720f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_1b720f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/1bc428.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/1bc428.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e5508a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/1bc428.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_1bc428 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_3d<f32> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec3<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec3<u32>, read_write> = var, %7
+    %9:vec3<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_1bc428
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_1bc428
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_1bc428
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/1bd78c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/1bd78c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eb9bb74
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/1bd78c.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_1bd78c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_2d<f32> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_1bd78c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_1bd78c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_1bd78c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/1e4024.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/1e4024.wgsl.expected.ir.msl
new file mode 100644
index 0000000..89d2f1c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/1e4024.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_1e4024 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32float, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_1e4024
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_1e4024
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_1e4024
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/20eaad.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/20eaad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2d62641
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/20eaad.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_20eaad = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16sint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_20eaad
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_20eaad
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_20eaad
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/20ecef.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/20ecef.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8660b9c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/20ecef.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_20ecef = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32float, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_20ecef
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_20ecef
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_20ecef
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/212362.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/212362.wgsl.expected.ir.msl
new file mode 100644
index 0000000..337d1f8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/212362.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_212362 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32float, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_212362
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_212362
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_212362
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/224113.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/224113.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bb22616
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/224113.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_224113 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8unorm, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_224113
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_224113
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_224113
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/22b5b6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/22b5b6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ff63e1d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/22b5b6.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_22b5b6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_cube_array<u32> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_22b5b6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_22b5b6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_22b5b6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/24db07.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/24db07.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9672aab
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/24db07.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_24db07 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<f32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_24db07
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_24db07
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_24db07
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/2674d8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/2674d8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..90f4848
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/2674d8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_2674d8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_2674d8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_2674d8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_2674d8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/268ddb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/268ddb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f5d558b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/268ddb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_268ddb = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32uint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_268ddb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_268ddb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_268ddb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/26d6bf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/26d6bf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b2d616a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/26d6bf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_26d6bf = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<f32> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_26d6bf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_26d6bf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_26d6bf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/283b58.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/283b58.wgsl.expected.ir.msl
new file mode 100644
index 0000000..43d62ac
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/283b58.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_283b58 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32float, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_283b58
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_283b58
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_283b58
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/284c27.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/284c27.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3ca5940
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/284c27.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_284c27 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32float, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_284c27
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_284c27
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_284c27
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/2a58b7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/2a58b7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b4c5ce2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/2a58b7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_2a58b7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_2a58b7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_2a58b7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_2a58b7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/2bafdf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/2bafdf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d1d90f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/2bafdf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_2bafdf = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<bgra8unorm, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_2bafdf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_2bafdf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_2bafdf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/2dc5c5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/2dc5c5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fbb18b1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/2dc5c5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_2dc5c5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8uint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_2dc5c5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_2dc5c5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_2dc5c5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/2e443d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/2e443d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5a768b3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/2e443d.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_2e443d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_2d<i32> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_2e443d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_2e443d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_2e443d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/2fd2a4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/2fd2a4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e33a052
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/2fd2a4.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_2fd2a4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_2d_array<f32> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_2fd2a4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_2fd2a4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_2fd2a4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/2ff32a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/2ff32a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6553bc1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/2ff32a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_2ff32a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32float, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_2ff32a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_2ff32a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_2ff32a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/305dd5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/305dd5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cad56e3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/305dd5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_305dd5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_305dd5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_305dd5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_305dd5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/31799c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/31799c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cb24ca4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/31799c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_31799c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32uint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_31799c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_31799c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_31799c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/31d00d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/31d00d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..809ceb3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/31d00d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_31d00d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32uint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_31d00d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_31d00d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_31d00d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/325338.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/325338.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c5313d9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/325338.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_325338 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_325338
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_325338
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_325338
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/346fee.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/346fee.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9e89fd1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/346fee.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_346fee = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_cube_array<u32> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_346fee
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_346fee
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_346fee
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/35a7e5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/35a7e5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..68c9ebc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/35a7e5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_35a7e5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16uint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_35a7e5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_35a7e5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_35a7e5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/35ee69.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/35ee69.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ad28676
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/35ee69.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_35ee69 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32uint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_35ee69
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_35ee69
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_35ee69
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/36eeb7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/36eeb7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..77c37ed
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/36eeb7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_36eeb7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_36eeb7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_36eeb7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_36eeb7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/378a65.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/378a65.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2f12d51
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/378a65.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_378a65 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_378a65
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_378a65
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_378a65
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/382b16.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/382b16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..43ef3e2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/382b16.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_382b16 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_cube<f32> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_382b16
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_382b16
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_382b16
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/3834f8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/3834f8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1151498
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/3834f8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3834f8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3834f8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3834f8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3834f8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/38c9ca.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/38c9ca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dd78a43
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/38c9ca.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_38c9ca = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_38c9ca
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_38c9ca
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_38c9ca
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/3963d0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/3963d0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a91e149
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/3963d0.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3963d0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_cube_array<i32> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_3963d0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_3963d0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_3963d0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/397dab.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/397dab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..67386b2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/397dab.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_397dab = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_397dab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_397dab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_397dab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/3a5bb1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/3a5bb1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4778968
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/3a5bb1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3a5bb1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32float, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3a5bb1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3a5bb1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3a5bb1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/3a7b69.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/3a7b69.wgsl.expected.ir.msl
new file mode 100644
index 0000000..783a7cf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/3a7b69.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3a7b69 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3a7b69
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3a7b69
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3a7b69
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/3af3e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/3af3e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6b8c935
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/3af3e7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3af3e7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8unorm, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3af3e7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3af3e7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3af3e7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/3b38f6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/3b38f6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3a8dc54
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/3b38f6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3b38f6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3b38f6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3b38f6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3b38f6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/3baab5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/3baab5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..00b6676
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/3baab5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3baab5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3baab5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3baab5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3baab5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/3bf12a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/3bf12a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bd37561
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/3bf12a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3bf12a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3bf12a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3bf12a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3bf12a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/3c66f0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/3c66f0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4f2e843
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/3c66f0.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3c66f0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_cube_array<i32> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_3c66f0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_3c66f0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_3c66f0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/3f3474.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/3f3474.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0f80283
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/3f3474.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3f3474 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<f32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3f3474
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3f3474
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3f3474
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/3fc3dc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/3fc3dc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8ef56ad
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/3fc3dc.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3fc3dc = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_2d_array<f32> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_3fc3dc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_3fc3dc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_3fc3dc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/3ff0a5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/3ff0a5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a1b17ce
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/3ff0a5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_3ff0a5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_3ff0a5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_3ff0a5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_3ff0a5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/40c671.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/40c671.wgsl.expected.ir.msl
new file mode 100644
index 0000000..58c933e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/40c671.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_40c671 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8sint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_40c671
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_40c671
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_40c671
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/40ecf4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/40ecf4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..df7abfb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/40ecf4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_40ecf4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_40ecf4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_40ecf4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_40ecf4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/41545f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/41545f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2be0132
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/41545f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_41545f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_41545f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_41545f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_41545f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/423519.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/423519.wgsl.expected.ir.msl
new file mode 100644
index 0000000..976fcee
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/423519.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_423519 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32uint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_423519
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_423519
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_423519
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/427f92.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/427f92.wgsl.expected.ir.msl
new file mode 100644
index 0000000..74ca2f2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/427f92.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_427f92 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_427f92
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_427f92
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_427f92
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/439651.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/439651.wgsl.expected.ir.msl
new file mode 100644
index 0000000..87f8f75
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/439651.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_439651 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_439651
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_439651
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_439651
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/445376.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/445376.wgsl.expected.ir.msl
new file mode 100644
index 0000000..79e94b9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/445376.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_445376 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<u32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_445376
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_445376
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_445376
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/44b358.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/44b358.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7801093
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/44b358.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_44b358 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32uint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_44b358
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_44b358
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_44b358
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/452fc1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/452fc1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a097e86
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/452fc1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_452fc1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_452fc1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_452fc1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_452fc1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/46f0fc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/46f0fc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..94edec8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/46f0fc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_46f0fc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<f32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_46f0fc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_46f0fc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_46f0fc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/4716a4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/4716a4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fab0404
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/4716a4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_4716a4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_4716a4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_4716a4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_4716a4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/475c10.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/475c10.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3b7f000
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/475c10.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_475c10 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8uint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_475c10
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_475c10
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_475c10
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/49a067.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/49a067.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e3aa3dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/49a067.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_49a067 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_cube<f32> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_49a067
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_49a067
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_49a067
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/4acec7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/4acec7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b204664
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/4acec7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_4acec7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_4acec7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_4acec7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_4acec7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/4b26ef.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/4b26ef.wgsl.expected.ir.msl
new file mode 100644
index 0000000..12e5394
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/4b26ef.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_4b26ef = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8unorm, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_4b26ef
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_4b26ef
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_4b26ef
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/4be71b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/4be71b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..be6b386
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/4be71b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_4be71b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<u32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_4be71b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_4be71b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_4be71b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/4d1f71.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/4d1f71.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d430fdd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/4d1f71.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_4d1f71 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_4d1f71
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_4d1f71
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_4d1f71
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/4d27b3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/4d27b3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d7fb249
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/4d27b3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_4d27b3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32sint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_4d27b3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_4d27b3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_4d27b3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/4df14c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/4df14c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9815e47
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/4df14c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_4df14c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32uint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_4df14c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_4df14c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_4df14c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/4e540a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/4e540a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28d77f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/4e540a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_4e540a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32sint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_4e540a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_4e540a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_4e540a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/528c0e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/528c0e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2d8ca5e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/528c0e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_528c0e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_2d_array<u32> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_528c0e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_528c0e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_528c0e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/52cf60.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/52cf60.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4ddb4f1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/52cf60.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_52cf60 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32float, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_52cf60
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_52cf60
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_52cf60
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/534ef8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/534ef8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..83aa738
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/534ef8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_534ef8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_534ef8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_534ef8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_534ef8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/55fdeb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/55fdeb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..04fe015
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/55fdeb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_55fdeb = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<bgra8unorm, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_55fdeb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_55fdeb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_55fdeb
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/5703b3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/5703b3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0d6aa84
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/5703b3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_5703b3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<bgra8unorm, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_5703b3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_5703b3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_5703b3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/579eee.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/579eee.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4a8115d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/579eee.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_579eee = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_579eee
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_579eee
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_579eee
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/58a82d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/58a82d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4b46aa8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/58a82d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_58a82d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16uint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_58a82d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_58a82d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_58a82d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/591981.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/591981.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c1347f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/591981.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_591981 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16sint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_591981
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_591981
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_591981
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/599ab5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/599ab5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f005736
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/599ab5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_599ab5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16float, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_599ab5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_599ab5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_599ab5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/5b4b10.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/5b4b10.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4ab2044
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/5b4b10.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<bgra8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_5b4b10 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<bgra8unorm, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_5b4b10
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_5b4b10
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_5b4b10
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/5df042.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/5df042.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b5d0295
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/5df042.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_5df042 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<i32> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_5df042
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_5df042
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_5df042
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/607979.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/607979.wgsl.expected.ir.msl
new file mode 100644
index 0000000..72d662c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/607979.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_607979 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32sint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_607979
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_607979
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_607979
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/609d34.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/609d34.wgsl.expected.ir.msl
new file mode 100644
index 0000000..815d261
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/609d34.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_609d34 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_609d34
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_609d34
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_609d34
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/617dc8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/617dc8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dd1fe8d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/617dc8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_617dc8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32float, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_617dc8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_617dc8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_617dc8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/62cb5a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/62cb5a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fad2853
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/62cb5a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_62cb5a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<i32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_62cb5a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_62cb5a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_62cb5a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/62e7ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/62e7ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3736c4a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/62e7ae.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_62e7ae = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_62e7ae
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_62e7ae
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_62e7ae
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/64dc74.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/64dc74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..db10dc9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/64dc74.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_64dc74 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_cube<i32> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_64dc74
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_64dc74
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_64dc74
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/674058.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/674058.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d0113bd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/674058.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_674058 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_674058
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_674058
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_674058
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/6dae40.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/6dae40.wgsl.expected.ir.msl
new file mode 100644
index 0000000..14d5150
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/6dae40.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_6dae40 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32float, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_6dae40
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_6dae40
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_6dae40
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/6dbef4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/6dbef4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e05051e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/6dbef4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_6dbef4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32sint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_6dbef4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_6dbef4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_6dbef4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/6e6c7a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/6e6c7a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9869317
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/6e6c7a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_6e6c7a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_3d<u32> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec3<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec3<u32>, read_write> = var, %7
+    %9:vec3<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_6e6c7a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_6e6c7a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_6e6c7a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/6e72c5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/6e72c5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..acd94bb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/6e72c5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_6e72c5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32float, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_6e72c5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_6e72c5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_6e72c5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/6f1b5d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/6f1b5d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..78386b6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/6f1b5d.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_6f1b5d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_depth_2d = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_6f1b5d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_6f1b5d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_6f1b5d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/709357.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/709357.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5cec4e5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/709357.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_709357 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16uint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_709357
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_709357
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_709357
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/70dd33.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/70dd33.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e4a3430
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/70dd33.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_70dd33 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32sint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_70dd33
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_70dd33
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_70dd33
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/715917.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/715917.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d605f15
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/715917.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_715917 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_715917
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_715917
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_715917
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/7228de.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/7228de.wgsl.expected.ir.msl
new file mode 100644
index 0000000..65eea71
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/7228de.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_7228de = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32uint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_7228de
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_7228de
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_7228de
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/7327fa.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/7327fa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b28a659
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/7327fa.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_7327fa = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8snorm, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_7327fa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_7327fa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_7327fa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/740e7c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/740e7c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5c9c45a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/740e7c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_740e7c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32sint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_740e7c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_740e7c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_740e7c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/756031.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/756031.wgsl.expected.ir.msl
new file mode 100644
index 0000000..676a783
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/756031.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_756031 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_3d<i32> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec3<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec3<u32>, read_write> = var, %7
+    %9:vec3<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_756031
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_756031
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_756031
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/756304.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/756304.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3a70931
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/756304.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_756304 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_756304
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_756304
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_756304
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/790e57.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/790e57.wgsl.expected.ir.msl
new file mode 100644
index 0000000..44dcc1d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/790e57.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_790e57 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8sint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_790e57
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_790e57
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_790e57
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/795fbb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/795fbb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c6bb41a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/795fbb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_795fbb = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_795fbb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_795fbb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_795fbb
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/797c30.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/797c30.wgsl.expected.ir.msl
new file mode 100644
index 0000000..32c9df5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/797c30.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_797c30 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32uint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_797c30
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_797c30
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_797c30
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/79d168.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/79d168.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9305afb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/79d168.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_79d168 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_depth_cube = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_79d168
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_79d168
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_79d168
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/7a3890.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/7a3890.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28863fd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/7a3890.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_7a3890 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<u32> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_7a3890
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_7a3890
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_7a3890
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/7a9e30.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/7a9e30.wgsl.expected.ir.msl
new file mode 100644
index 0000000..74dc445
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/7a9e30.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_7a9e30 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube<u32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_7a9e30
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_7a9e30
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_7a9e30
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/7c753b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/7c753b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3a25ee1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/7c753b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_7c753b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32float, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_7c753b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_7c753b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_7c753b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/7c7c64.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/7c7c64.wgsl.expected.ir.msl
new file mode 100644
index 0000000..98f63d5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/7c7c64.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_7c7c64 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_7c7c64
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_7c7c64
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_7c7c64
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/7d8439.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/7d8439.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0c0b24a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/7d8439.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_7d8439 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32uint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_7d8439
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_7d8439
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_7d8439
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/7ea4b5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/7ea4b5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cc51472
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/7ea4b5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_7ea4b5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8sint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_7ea4b5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_7ea4b5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_7ea4b5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/7edb05.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/7edb05.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0a768d4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/7edb05.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_7edb05 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_7edb05
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_7edb05
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_7edb05
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/8057cb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/8057cb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bd43007
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/8057cb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_8057cb = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<bgra8unorm, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_8057cb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_8057cb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_8057cb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/8243a1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/8243a1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2a7ae87
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/8243a1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_8243a1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<bgra8unorm, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_8243a1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_8243a1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_8243a1
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/835f90.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/835f90.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ace061c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/835f90.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_835f90 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_835f90
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_835f90
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_835f90
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/841ebe.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/841ebe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c1668f9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/841ebe.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_841ebe = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8sint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_841ebe
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_841ebe
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_841ebe
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/84f363.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/84f363.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a2f6952
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/84f363.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<bgra8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_84f363 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<bgra8unorm, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_84f363
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_84f363
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_84f363
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/867ead.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/867ead.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8c5e17c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/867ead.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_867ead = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_867ead
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_867ead
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_867ead
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/879b73.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/879b73.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a48137a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/879b73.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_879b73 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<f32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_879b73
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_879b73
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_879b73
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/87b42d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/87b42d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dfc6994
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/87b42d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_87b42d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_87b42d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_87b42d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_87b42d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/881dd4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/881dd4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f5110b9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/881dd4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_881dd4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_881dd4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_881dd4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_881dd4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/8a2b17.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/8a2b17.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6614e6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/8a2b17.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_8a2b17 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32sint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_8a2b17
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_8a2b17
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_8a2b17
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/8a35f9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/8a35f9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e5dfe4e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/8a35f9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_8a35f9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32float, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_8a35f9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_8a35f9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_8a35f9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/8b9906.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/8b9906.wgsl.expected.ir.msl
new file mode 100644
index 0000000..186ff82
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/8b9906.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_8b9906 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8uint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_8b9906
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_8b9906
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_8b9906
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/8bd369.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/8bd369.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3c23d67
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/8bd369.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_8bd369 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_8bd369
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_8bd369
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_8bd369
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/8e15f4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/8e15f4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e47cee8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/8e15f4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_8e15f4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_8e15f4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_8e15f4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_8e15f4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/8e5de6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/8e5de6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..63f56e2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/8e5de6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_8e5de6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32sint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_8e5de6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_8e5de6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_8e5de6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/8efd47.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/8efd47.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b421b56
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/8efd47.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_8efd47 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32sint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_8efd47
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_8efd47
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_8efd47
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/902179.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/902179.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3985cbc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/902179.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_902179 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32float, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_902179
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_902179
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_902179
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/904b0f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/904b0f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d349359
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/904b0f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_904b0f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_904b0f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_904b0f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_904b0f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/90dd74.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/90dd74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b66d442
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/90dd74.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_90dd74 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_90dd74
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_90dd74
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_90dd74
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/91e3b4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/91e3b4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f391d12
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/91e3b4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_91e3b4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32sint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_91e3b4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_91e3b4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_91e3b4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/920006.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/920006.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d5dc3eb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/920006.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_920006 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_1d<u32> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:u32 = textureDimensions %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_920006
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_920006
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_920006
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/92552e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/92552e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d2b8237
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/92552e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_92552e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8sint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_92552e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_92552e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_92552e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/9573f3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/9573f3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0ec14a2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/9573f3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9573f3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9573f3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9573f3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9573f3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/965645.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/965645.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e9a006f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/965645.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_965645 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<u32> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_965645
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_965645
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_965645
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/98b2d3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/98b2d3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a8d3da0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/98b2d3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_98b2d3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<i32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_98b2d3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_98b2d3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_98b2d3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/991ea9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/991ea9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0084dd8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/991ea9.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_991ea9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_depth_2d = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_991ea9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_991ea9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_991ea9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/9944d5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/9944d5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7c9fbfc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/9944d5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9944d5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32uint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9944d5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9944d5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9944d5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/9b10a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/9b10a0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d512af7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/9b10a0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9b10a0 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9b10a0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9b10a0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9b10a0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/9b223b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/9b223b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3abb068
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/9b223b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9b223b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube<f32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9b223b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9b223b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9b223b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/9baf27.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/9baf27.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6e7c3af
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/9baf27.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9baf27 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_cube<u32> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_9baf27
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_9baf27
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_9baf27
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/9c7a00.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/9c7a00.wgsl.expected.ir.msl
new file mode 100644
index 0000000..77fc203
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/9c7a00.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9c7a00 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_1d<u32> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:u32 = textureDimensions %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_9c7a00
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_9c7a00
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_9c7a00
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/9cd4ca.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/9cd4ca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..255fa0c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/9cd4ca.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9cd4ca = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_cube<u32> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_9cd4ca
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_9cd4ca
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_9cd4ca
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/9cd8ad.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/9cd8ad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ddf86bf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/9cd8ad.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9cd8ad = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32float, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9cd8ad
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9cd8ad
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9cd8ad
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/9d0bac.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/9d0bac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0f9d421
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/9d0bac.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9d0bac = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32float, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9d0bac
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9d0bac
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9d0bac
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/9d68b8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/9d68b8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..04f5d97
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/9d68b8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9d68b8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8snorm, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9d68b8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9d68b8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9d68b8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/9dc27a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/9dc27a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0d94e5a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/9dc27a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9dc27a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9dc27a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9dc27a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9dc27a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/9e0794.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/9e0794.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7eea893
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/9e0794.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9e0794 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_2d_array<u32> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_9e0794
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_9e0794
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_9e0794
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/9fcc3b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/9fcc3b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..17032a6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/9fcc3b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_9fcc3b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_cube_array = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_9fcc3b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_9fcc3b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_9fcc3b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/a105a5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/a105a5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2f8e969
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/a105a5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a105a5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32uint, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_a105a5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_a105a5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_a105a5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/a14386.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/a14386.wgsl.expected.ir.msl
new file mode 100644
index 0000000..15cfe67
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/a14386.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a14386 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16float, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_a14386
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_a14386
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_a14386
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/a1598a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/a1598a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7576994
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/a1598a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a1598a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<u32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_a1598a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_a1598a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_a1598a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/a25d9b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/a25d9b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6edf059
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/a25d9b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a25d9b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8unorm, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_a25d9b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_a25d9b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_a25d9b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/a2ba5e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/a2ba5e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..76d9864
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/a2ba5e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a2ba5e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_cube<i32> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_a2ba5e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_a2ba5e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_a2ba5e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/a3ea91.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/a3ea91.wgsl.expected.ir.msl
new file mode 100644
index 0000000..554a29e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/a3ea91.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a3ea91 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16float, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_a3ea91
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_a3ea91
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_a3ea91
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/a48049.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/a48049.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6792ccf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/a48049.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a48049 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_2d<i32> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_a48049
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_a48049
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_a48049
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/a4cd56.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/a4cd56.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c08d746
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/a4cd56.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a4cd56 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d_array = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_a4cd56
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_a4cd56
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_a4cd56
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/a65776.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/a65776.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2f6099e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/a65776.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a65776 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_a65776
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_a65776
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_a65776
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/a7ae4c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/a7ae4c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0b992a6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/a7ae4c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_a7ae4c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8snorm, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_a7ae4c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_a7ae4c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_a7ae4c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/aa4353.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/aa4353.wgsl.expected.ir.msl
new file mode 100644
index 0000000..52772f3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/aa4353.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_aa4353 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_aa4353
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_aa4353
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_aa4353
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/aac604.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/aac604.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a257bad
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/aac604.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_aac604 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_1d<f32> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:u32 = textureDimensions %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_aac604
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_aac604
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_aac604
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/ad7d3b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/ad7d3b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..724f756
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/ad7d3b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_ad7d3b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8uint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_ad7d3b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_ad7d3b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_ad7d3b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/ae4595.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/ae4595.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a2d3c0e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/ae4595.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_ae4595 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32float, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_ae4595
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_ae4595
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_ae4595
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/ae75a7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/ae75a7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c1943a4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/ae75a7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_ae75a7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16uint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_ae75a7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_ae75a7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_ae75a7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/af46ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/af46ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..035b0f2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/af46ab.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_af46ab = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_af46ab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_af46ab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_af46ab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/b16352.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/b16352.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d263ce5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/b16352.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b16352 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b16352
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b16352
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b16352
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/b284b8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/b284b8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cf8f9ca
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/b284b8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b284b8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b284b8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b284b8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b284b8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/b3ab5e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/b3ab5e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3ecdc91
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/b3ab5e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b3ab5e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_cube_array<f32> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_b3ab5e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_b3ab5e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_b3ab5e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/b46d97.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/b46d97.wgsl.expected.ir.msl
new file mode 100644
index 0000000..64a24db
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/b46d97.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b46d97 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_1d<i32> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:u32 = textureDimensions %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_b46d97
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_b46d97
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_b46d97
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/b51345.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/b51345.wgsl.expected.ir.msl
new file mode 100644
index 0000000..588584a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/b51345.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b51345 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32float, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b51345
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b51345
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b51345
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/b56112.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/b56112.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c3ce5c5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/b56112.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b56112 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b56112
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b56112
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b56112
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/b5ba03.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/b5ba03.wgsl.expected.ir.msl
new file mode 100644
index 0000000..df2706c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/b5ba03.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b5ba03 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16float, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b5ba03
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b5ba03
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b5ba03
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/b5d68e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/b5d68e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fe700f2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/b5d68e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b5d68e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b5d68e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b5d68e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b5d68e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/b6bbf4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/b6bbf4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..140934e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/b6bbf4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b6bbf4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16uint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b6bbf4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b6bbf4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b6bbf4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/b8287f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/b8287f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0c878b0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/b8287f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b8287f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b8287f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b8287f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b8287f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/b9e7ef.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/b9e7ef.wgsl.expected.ir.msl
new file mode 100644
index 0000000..db7cb144
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/b9e7ef.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_b9e7ef = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32sint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_b9e7ef
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_b9e7ef
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_b9e7ef
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/bb95d9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/bb95d9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7a637e9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/bb95d9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_bb95d9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<f32> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_bb95d9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_bb95d9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_bb95d9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/bbe285.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/bbe285.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3a30cd4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/bbe285.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_bbe285 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_bbe285
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_bbe285
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_bbe285
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/bc96f6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/bc96f6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0eb3b44
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/bc96f6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_bc96f6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_bc96f6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_bc96f6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_bc96f6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/bd94c8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/bd94c8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1ee2108
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/bd94c8.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_bd94c8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_depth_cube_array = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_bd94c8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_bd94c8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_bd94c8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/bec716.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/bec716.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cfbdd83
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/bec716.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_bec716 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32float, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_bec716
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_bec716
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_bec716
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/bf9170.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/bf9170.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2367fb2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/bf9170.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_bf9170 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8snorm, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_bf9170
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_bf9170
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_bf9170
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/c1189e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/c1189e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e86df01
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/c1189e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c1189e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_c1189e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_c1189e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_c1189e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/c1dbf6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/c1dbf6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..920de1e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/c1dbf6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c1dbf6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_c1dbf6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_c1dbf6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_c1dbf6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/c27466.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/c27466.wgsl.expected.ir.msl
new file mode 100644
index 0000000..48f508a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/c27466.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c27466 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16sint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_c27466
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_c27466
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_c27466
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/c2cdd3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/c2cdd3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..673b3af
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/c2cdd3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_multisampled_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c2cdd3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_multisampled_2d = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_c2cdd3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_c2cdd3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_c2cdd3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/c44fc1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/c44fc1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..58e50b9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/c44fc1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c44fc1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_c44fc1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_c44fc1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_c44fc1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/c5a36e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/c5a36e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ca62b29
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/c5a36e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c5a36e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_cube = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_c5a36e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_c5a36e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_c5a36e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/c6b44c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/c6b44c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f05d60d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/c6b44c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c6b44c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_c6b44c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_c6b44c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_c6b44c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/c7ea63.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/c7ea63.wgsl.expected.ir.msl
new file mode 100644
index 0000000..61f596a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/c7ea63.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c7ea63 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32float, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_c7ea63
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_c7ea63
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_c7ea63
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/c82420.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/c82420.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5513299
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/c82420.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c82420 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_c82420
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_c82420
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_c82420
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/c871f3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/c871f3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3468e2f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/c871f3.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_c871f3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_3d<i32> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec3<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec3<u32>, read_write> = var, %7
+    %9:vec3<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_c871f3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_c871f3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_c871f3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/ca10cc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/ca10cc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..161fedc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/ca10cc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_ca10cc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_ca10cc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_ca10cc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_ca10cc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/cad3b7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/cad3b7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f3a7100
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/cad3b7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_cad3b7 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32sint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_cad3b7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_cad3b7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_cad3b7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/cc947b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/cc947b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47b542e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/cc947b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8snorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_cc947b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8snorm, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_cc947b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_cc947b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_cc947b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/cd3033.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/cd3033.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b6a45c9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/cd3033.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_cd3033 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_cd3033
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_cd3033
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_cd3033
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..93b2dd5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:626 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_external, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_cdc6c9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_external = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_cdc6c9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_cdc6c9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_cdc6c9
+    ret
+  }
+}
+
+Multiplanar external texture transform was not run.
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/cedabd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/cedabd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a2ed8df
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/cedabd.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_cedabd = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32sint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_cedabd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_cedabd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_cedabd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/cf2b50.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/cf2b50.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c4d8aa7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/cf2b50.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_cf2b50 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_cube_array<f32> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_cf2b50
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_cf2b50
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_cf2b50
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/d0778e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/d0778e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..38da4ee
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/d0778e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d0778e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32uint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_d0778e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_d0778e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_d0778e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/d08a94.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/d08a94.wgsl.expected.ir.msl
new file mode 100644
index 0000000..75d396d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/d08a94.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d08a94 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba16sint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_d08a94
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_d08a94
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_d08a94
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/d1b882.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/d1b882.wgsl.expected.ir.msl
new file mode 100644
index 0000000..410768b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/d1b882.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d1b882 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_d1b882
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_d1b882
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_d1b882
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/d3accd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/d3accd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e3c46a6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/d3accd.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d3accd = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_depth_cube = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_d3accd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_d3accd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_d3accd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/d44ac3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/d44ac3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2f25461
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/d44ac3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d44ac3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<bgra8unorm, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_d44ac3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_d44ac3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_d44ac3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/d44dd1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/d44dd1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b58195f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/d44dd1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d44dd1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16uint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_d44dd1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_d44dd1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_d44dd1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/d63c28.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/d63c28.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1e3ff88
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/d63c28.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d63c28 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_d63c28
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_d63c28
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_d63c28
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/d6f3cf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/d6f3cf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..78c1037
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/d6f3cf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d6f3cf = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_d6f3cf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_d6f3cf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_d6f3cf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/d8ba68.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/d8ba68.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e1b7a46
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/d8ba68.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d8ba68 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_d8ba68
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_d8ba68
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_d8ba68
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/d8f887.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/d8f887.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9790a45
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/d8f887.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_d8f887 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8uint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_d8f887
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_d8f887
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_d8f887
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/da30d2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/da30d2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0030b1b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/da30d2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_da30d2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32float, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_da30d2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_da30d2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_da30d2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/daf0fe.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/daf0fe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..85c6223
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/daf0fe.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_daf0fe = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_daf0fe
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_daf0fe
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_daf0fe
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/db7131.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/db7131.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6e195ec
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/db7131.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_db7131 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32sint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_db7131
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_db7131
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_db7131
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/dc83ce.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/dc83ce.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b3cb17b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/dc83ce.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_dc83ce = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_dc83ce
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_dc83ce
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_dc83ce
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/de03c6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/de03c6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b46352e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/de03c6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_de03c6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32uint, read> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_de03c6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_de03c6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_de03c6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/deb3c0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/deb3c0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..425a613
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/deb3c0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_deb3c0 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16float, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_deb3c0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_deb3c0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_deb3c0
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/dee461.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/dee461.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cac0bee
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/dee461.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8snorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_dee461 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8snorm, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_dee461
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_dee461
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_dee461
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/dfdc32.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/dfdc32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..10a77dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/dfdc32.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_dfdc32 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_depth_2d_array = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_dfdc32
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_dfdc32
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_dfdc32
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/e122fe.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/e122fe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3a0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/e122fe.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8snorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e122fe = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8snorm, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_e122fe
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_e122fe
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_e122fe
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/e18a8b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/e18a8b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efd736c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/e18a8b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e18a8b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_2d<u32> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_e18a8b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_e18a8b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_e18a8b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/e4bfd2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/e4bfd2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0f16875
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/e4bfd2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e4bfd2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<u32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_e4bfd2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_e4bfd2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_e4bfd2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/e4e310.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/e4e310.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b0efa6f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/e4e310.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e4e310 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_2d_array<i32> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_e4e310
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_e4e310
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_e4e310
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/e4f021.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/e4f021.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b2bcd42
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/e4f021.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e4f021 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32float, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_e4f021
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_e4f021
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_e4f021
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/e50eb8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/e50eb8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2c7ed53
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/e50eb8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e50eb8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_e50eb8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_e50eb8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_e50eb8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/e5a203.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/e5a203.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dba45c1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/e5a203.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e5a203 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_3d<u32> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec3<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec3<u32>, read_write> = var, %7
+    %9:vec3<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_e5a203
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_e5a203
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_e5a203
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/e738f4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/e738f4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9c1b109
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/e738f4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e738f4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rg32sint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_e738f4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_e738f4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_e738f4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/e824b6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/e824b6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c7ffd9a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/e824b6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e824b6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_e824b6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_e824b6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_e824b6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/e99308.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/e99308.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9dc92fc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/e99308.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_e99308 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba16uint, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_e99308
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_e99308
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_e99308
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/ea066c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/ea066c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..530a84f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/ea066c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_ea066c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<r32float, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_ea066c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_ea066c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_ea066c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/ea25bc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/ea25bc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d2a32b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/ea25bc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_ea25bc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32uint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_ea25bc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_ea25bc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_ea25bc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/eafe19.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/eafe19.wgsl.expected.ir.msl
new file mode 100644
index 0000000..869c017
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/eafe19.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_eafe19 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_depth_2d_array = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_eafe19
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_eafe19
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_eafe19
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/eb03b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/eb03b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..403db14
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/eb03b1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_eb03b1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_eb03b1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_eb03b1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_eb03b1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/eb10d6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/eb10d6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c72bf46
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/eb10d6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_eb10d6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba8unorm, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_eb10d6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_eb10d6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_eb10d6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/eb1249.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/eb1249.wgsl.expected.ir.msl
new file mode 100644
index 0000000..449b3cb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/eb1249.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_eb1249 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba32uint, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_eb1249
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_eb1249
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_eb1249
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/eb9f4d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/eb9f4d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..71e21aa
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/eb9f4d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_eb9f4d = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_eb9f4d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_eb9f4d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_eb9f4d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/ed1030.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/ed1030.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f39979f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/ed1030.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_ed1030 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<r32uint, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_ed1030
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_ed1030
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_ed1030
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/ef2e58.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/ef2e58.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d3974d5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/ef2e58.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_ef2e58 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<r32sint, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_ef2e58
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_ef2e58
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_ef2e58
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/f17acd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/f17acd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a2ea851
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/f17acd.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f17acd = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_1d<f32> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:u32 = textureDimensions %5, %6
+    %res:ptr<function, u32, read_write> = var, %7
+    %9:u32 = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_f17acd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_f17acd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_f17acd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/f264a3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/f264a3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..97f70de
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/f264a3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f264a3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rg32sint, write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f264a3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f264a3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f264a3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/f3a2ac.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/f3a2ac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f57bc31
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/f3a2ac.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f3a2ac = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba16float, write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f3a2ac
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f3a2ac
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f3a2ac
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/f406ff.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/f406ff.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a402e7a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/f406ff.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f406ff = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_1d<rgba8unorm, read_write> = load %arg_0
+    %5:u32 = textureDimensions %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f406ff
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f406ff
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f406ff
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/f4321c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/f4321c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9aa7043
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/f4321c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f4321c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32sint, read> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f4321c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f4321c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f4321c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/f48886.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/f48886.wgsl.expected.ir.msl
new file mode 100644
index 0000000..33146ca
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/f48886.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f48886 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f48886
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f48886
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f48886
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/f4e469.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/f4e469.wgsl.expected.ir.msl
new file mode 100644
index 0000000..189c080
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/f4e469.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f4e469 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rgba32float, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f4e469
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f4e469
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f4e469
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/f55a94.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/f55a94.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f0b5c2c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/f55a94.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f55a94 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba8snorm, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f55a94
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f55a94
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f55a94
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/f626b3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/f626b3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5f23178
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/f626b3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f626b3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube<i32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f626b3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f626b3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f626b3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/f7bac5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/f7bac5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5100361
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/f7bac5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f7bac5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, read> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f7bac5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f7bac5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f7bac5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/f8522e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/f8522e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c540c2d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/f8522e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f8522e = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<i32> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f8522e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f8522e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f8522e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/f93ece.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/f93ece.wgsl.expected.ir.msl
new file mode 100644
index 0000000..69b47f0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/f93ece.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec3<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f93ece = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_3d<rgba32float, read_write> = load %arg_0
+    %5:vec3<u32> = textureDimensions %4
+    %res:ptr<function, vec3<u32>, read_write> = var, %5
+    %7:vec3<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f93ece
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f93ece
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f93ece
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/f94e55.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/f94e55.wgsl.expected.ir.msl
new file mode 100644
index 0000000..39d732b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/f94e55.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_f94e55 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<rg32float, read_write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_f94e55
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_f94e55
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_f94e55
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/fbb15a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/fbb15a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..823466c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/fbb15a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<bgra8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_fbb15a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d<bgra8unorm, write> = load %arg_0
+    %5:vec2<u32> = textureDimensions %4
+    %res:ptr<function, vec2<u32>, read_write> = var, %5
+    %7:vec2<u32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureDimensions_fbb15a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureDimensions_fbb15a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureDimensions_fbb15a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureDimensions/fdf6e9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureDimensions/fdf6e9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4ed87f2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureDimensions/fdf6e9.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec2<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureDimensions_fdf6e9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_2d_array<i32> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec2<u32> = textureDimensions %5, %6
+    %res:ptr<function, vec2<u32>, read_write> = var, %7
+    %9:vec2<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureDimensions_fdf6e9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureDimensions_fdf6e9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureDimensions_fdf6e9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/0166ec.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/0166ec.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5eae2fb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/0166ec.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_0166ec = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %6:texture_cube<i32> = load %arg_1
+    %7:sampler = load %arg_2
+    %8:vec3<f32> = load %arg_3
+    %9:vec4<i32> = textureGather 1u, %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_0166ec
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_0166ec
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_0166ec
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/04fa78.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/04fa78.wgsl.expected.ir.msl
new file mode 100644
index 0000000..14a4958
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/04fa78.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_04fa78 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %7:texture_cube_array<i32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec3<f32> = load %arg_3
+    %10:u32 = load %arg_4
+    %11:vec4<i32> = textureGather 1u, %7, %8, %9, %10
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_04fa78
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_04fa78
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_04fa78
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/10c554.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/10c554.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ed50c5f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/10c554.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_10c554 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %6:texture_depth_cube = load %arg_0
+    %7:sampler = load %arg_1
+    %8:vec3<f32> = load %arg_2
+    %9:vec4<f32> = textureGather %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_10c554
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_10c554
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_10c554
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/11b2db.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/11b2db.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7932c09
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/11b2db.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_11b2db = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %6:texture_cube<f32> = load %arg_1
+    %7:sampler = load %arg_2
+    %8:vec3<f32> = load %arg_3
+    %9:vec4<f32> = textureGather 1u, %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_11b2db
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_11b2db
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_11b2db
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/17baac.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/17baac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a560b02
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/17baac.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_17baac = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<f32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:u32 = load %arg_4
+    %11:vec4<f32> = textureGather 1i, %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_17baac
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_17baac
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_17baac
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/1bf0ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/1bf0ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b0b8cf2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/1bf0ab.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_1bf0ab = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<u32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:u32 = load %arg_4
+    %11:vec4<u32> = textureGather 1u, %7, %8, %9, %10
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_1bf0ab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_1bf0ab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_1bf0ab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/1f7f6b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/1f7f6b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..884954a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/1f7f6b.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_1f7f6b = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_depth_2d = load %arg_0
+    %7:sampler = load %arg_1
+    %8:vec2<f32> = load %arg_2
+    %9:vec4<f32> = textureGather %6, %7, %8, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_1f7f6b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_1f7f6b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_1f7f6b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/22e930.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/22e930.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c31de98
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/22e930.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_22e930 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<f32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:i32 = load %arg_4
+    %11:vec4<f32> = textureGather 1i, %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_22e930
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_22e930
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_22e930
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/238ec4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/238ec4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a4078da
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/238ec4.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_238ec4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<f32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:u32 = load %arg_4
+    %11:vec4<f32> = textureGather 1u, %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_238ec4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_238ec4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_238ec4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/24b0bd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/24b0bd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..da174d3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/24b0bd.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_24b0bd = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<f32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:i32 = load %arg_4
+    %11:vec4<f32> = textureGather 1u, %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_24b0bd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_24b0bd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_24b0bd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/269250.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/269250.wgsl.expected.ir.msl
new file mode 100644
index 0000000..160ae1f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/269250.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_269250 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<i32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:u32 = load %arg_4
+    %11:vec4<i32> = textureGather 1u, %7, %8, %9, %10
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_269250
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_269250
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_269250
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/2a4f40.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/2a4f40.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4482d64
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/2a4f40.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_2a4f40 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_depth_2d_array = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<f32> = textureGather %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_2a4f40
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_2a4f40
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_2a4f40
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/2cc066.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/2cc066.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5c1dc3c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/2cc066.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_2cc066 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<u32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:i32 = load %arg_4
+    %11:vec4<u32> = textureGather 1i, %7, %8, %9, %10
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_2cc066
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_2cc066
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_2cc066
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/2e0ed5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/2e0ed5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e45699c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/2e0ed5.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_2e0ed5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_depth_2d = load %arg_0
+    %7:sampler = load %arg_1
+    %8:vec2<f32> = load %arg_2
+    %9:vec4<f32> = textureGather %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_2e0ed5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_2e0ed5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_2e0ed5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/32c4e8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/32c4e8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..38da98a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/32c4e8.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_32c4e8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %6:texture_cube<f32> = load %arg_1
+    %7:sampler = load %arg_2
+    %8:vec3<f32> = load %arg_3
+    %9:vec4<f32> = textureGather 1i, %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_32c4e8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_32c4e8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_32c4e8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/3b32cc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/3b32cc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..84a3b69
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/3b32cc.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_3b32cc = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %6:texture_cube<u32> = load %arg_1
+    %7:sampler = load %arg_2
+    %8:vec3<f32> = load %arg_3
+    %9:vec4<u32> = textureGather 1i, %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_3b32cc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_3b32cc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_3b32cc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/43025d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/43025d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6435797
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/43025d.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_43025d = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_depth_cube_array = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec3<f32> = load %arg_2
+    %10:i32 = load %arg_3
+    %11:vec4<f32> = textureGather %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_43025d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_43025d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_43025d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/445793.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/445793.wgsl.expected.ir.msl
new file mode 100644
index 0000000..594897b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/445793.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_445793 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<i32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:i32 = load %arg_4
+    %11:vec4<i32> = textureGather 1u, %7, %8, %9, %10
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_445793
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_445793
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_445793
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/49b07f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/49b07f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8fe4347
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/49b07f.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_49b07f = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_2d<u32> = load %arg_1
+    %7:sampler = load %arg_2
+    %8:vec2<f32> = load %arg_3
+    %9:vec4<u32> = textureGather 1i, %6, %7, %8, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_49b07f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_49b07f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_49b07f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/4b8103.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/4b8103.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b46a724
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/4b8103.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_4b8103 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<f32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:i32 = load %arg_4
+    %11:vec4<f32> = textureGather 1i, %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_4b8103
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_4b8103
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_4b8103
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/4e8ac5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/4e8ac5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c7508a0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/4e8ac5.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_4e8ac5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<i32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:u32 = load %arg_4
+    %11:vec4<i32> = textureGather 1i, %7, %8, %9, %10
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_4e8ac5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_4e8ac5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_4e8ac5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/5266da.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/5266da.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ccaf89b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/5266da.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_5266da = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_2d<f32> = load %arg_1
+    %7:sampler = load %arg_2
+    %8:vec2<f32> = load %arg_3
+    %9:vec4<f32> = textureGather 1i, %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_5266da
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_5266da
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_5266da
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/59372a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/59372a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..753f4c7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/59372a.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_59372a = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<f32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:u32 = load %arg_4
+    %11:vec4<f32> = textureGather 1i, %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_59372a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_59372a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_59372a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/5ba85f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/5ba85f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fa1b535
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/5ba85f.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_5ba85f = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %6:texture_cube<i32> = load %arg_1
+    %7:sampler = load %arg_2
+    %8:vec3<f32> = load %arg_3
+    %9:vec4<i32> = textureGather 1i, %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_5ba85f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_5ba85f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_5ba85f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/5bd491.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/5bd491.wgsl.expected.ir.msl
new file mode 100644
index 0000000..177b100
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/5bd491.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_5bd491 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_2d<u32> = load %arg_1
+    %7:sampler = load %arg_2
+    %8:vec2<f32> = load %arg_3
+    %9:vec4<u32> = textureGather 1i, %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_5bd491
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_5bd491
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_5bd491
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/6b7b74.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/6b7b74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6e63efb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/6b7b74.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_6b7b74 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<u32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:u32 = load %arg_4
+    %11:vec4<u32> = textureGather 1u, %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_6b7b74
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_6b7b74
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_6b7b74
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/751f8a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/751f8a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0d8f31e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/751f8a.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_751f8a = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %7:texture_cube_array<f32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec3<f32> = load %arg_3
+    %10:i32 = load %arg_4
+    %11:vec4<f32> = textureGather 1i, %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_751f8a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_751f8a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_751f8a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/788010.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/788010.wgsl.expected.ir.msl
new file mode 100644
index 0000000..27daf40
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/788010.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_788010 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %7:texture_cube_array<i32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec3<f32> = load %arg_3
+    %10:u32 = load %arg_4
+    %11:vec4<i32> = textureGather 1i, %7, %8, %9, %10
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_788010
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_788010
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_788010
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/7c3828.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/7c3828.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bb817d9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/7c3828.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_7c3828 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_2d<i32> = load %arg_1
+    %7:sampler = load %arg_2
+    %8:vec2<f32> = load %arg_3
+    %9:vec4<i32> = textureGather 1i, %6, %7, %8, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_7c3828
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_7c3828
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_7c3828
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/7dd226.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/7dd226.wgsl.expected.ir.msl
new file mode 100644
index 0000000..05d7c57
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/7dd226.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_7dd226 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_depth_cube_array = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec3<f32> = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<f32> = textureGather %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_7dd226
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_7dd226
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_7dd226
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/829357.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/829357.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdacce3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/829357.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_829357 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %7:texture_cube_array<f32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec3<f32> = load %arg_3
+    %10:u32 = load %arg_4
+    %11:vec4<f32> = textureGather 1i, %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_829357
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_829357
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_829357
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/831549.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/831549.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1627e64
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/831549.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_831549 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<f32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:i32 = load %arg_4
+    %11:vec4<f32> = textureGather 1u, %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_831549
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_831549
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_831549
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/8578bc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/8578bc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5d900e2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/8578bc.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_8578bc = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %7:texture_cube_array<f32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec3<f32> = load %arg_3
+    %10:u32 = load %arg_4
+    %11:vec4<f32> = textureGather 1u, %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_8578bc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_8578bc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_8578bc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/89680f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/89680f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2323cfd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/89680f.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_89680f = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %6:texture_cube<u32> = load %arg_1
+    %7:sampler = load %arg_2
+    %8:vec3<f32> = load %arg_3
+    %9:vec4<u32> = textureGather 1u, %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_89680f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_89680f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_89680f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/8b754c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/8b754c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d58c3bf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/8b754c.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_8b754c = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<i32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:i32 = load %arg_4
+    %11:vec4<i32> = textureGather 1i, %7, %8, %9, %10
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_8b754c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_8b754c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_8b754c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/8fae00.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/8fae00.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3dfcde2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/8fae00.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_8fae00 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_2d<u32> = load %arg_1
+    %7:sampler = load %arg_2
+    %8:vec2<f32> = load %arg_3
+    %9:vec4<u32> = textureGather 1u, %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_8fae00
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_8fae00
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_8fae00
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/92ea47.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/92ea47.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e0f7b24
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/92ea47.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_92ea47 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<u32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:i32 = load %arg_4
+    %11:vec4<u32> = textureGather 1u, %7, %8, %9, %10
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_92ea47
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_92ea47
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_92ea47
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/986700.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/986700.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9f72d12
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/986700.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_986700 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_2d<u32> = load %arg_1
+    %7:sampler = load %arg_2
+    %8:vec2<f32> = load %arg_3
+    %9:vec4<u32> = textureGather 1u, %6, %7, %8, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_986700
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_986700
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_986700
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/9a6358.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/9a6358.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1da557f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/9a6358.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_9a6358 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_depth_2d_array = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:i32 = load %arg_3
+    %11:vec4<f32> = textureGather %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_9a6358
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_9a6358
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_9a6358
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/9ab41e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/9ab41e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bac4e78
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/9ab41e.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_9ab41e = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<i32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:i32 = load %arg_4
+    %11:vec4<i32> = textureGather 1u, %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_9ab41e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_9ab41e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_9ab41e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/a0372b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/a0372b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1b1987c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/a0372b.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_a0372b = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<u32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:u32 = load %arg_4
+    %11:vec4<u32> = textureGather 1i, %7, %8, %9, %10
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_a0372b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_a0372b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_a0372b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/a68027.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/a68027.wgsl.expected.ir.msl
new file mode 100644
index 0000000..30b7bff
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/a68027.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_a68027 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_depth_2d_array = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<f32> = textureGather %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_a68027
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_a68027
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_a68027
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/aaf6bd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/aaf6bd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ce9c16e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/aaf6bd.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_aaf6bd = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %7:texture_cube_array<i32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec3<f32> = load %arg_3
+    %10:i32 = load %arg_4
+    %11:vec4<i32> = textureGather 1u, %7, %8, %9, %10
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_aaf6bd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_aaf6bd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_aaf6bd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/af55b3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/af55b3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..19e3c22
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/af55b3.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_af55b3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_2d<f32> = load %arg_1
+    %7:sampler = load %arg_2
+    %8:vec2<f32> = load %arg_3
+    %9:vec4<f32> = textureGather 1i, %6, %7, %8, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_af55b3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_af55b3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_af55b3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/bb3ac5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/bb3ac5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d13e4b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/bb3ac5.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_bb3ac5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_2d<i32> = load %arg_1
+    %7:sampler = load %arg_2
+    %8:vec2<f32> = load %arg_3
+    %9:vec4<i32> = textureGather 1i, %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_bb3ac5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_bb3ac5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_bb3ac5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/bd33b6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/bd33b6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d081eca
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/bd33b6.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_bd33b6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<i32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:u32 = load %arg_4
+    %11:vec4<i32> = textureGather 1i, %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_bd33b6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_bd33b6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_bd33b6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/be276f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/be276f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a96a57d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/be276f.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_be276f = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %7:texture_cube_array<u32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec3<f32> = load %arg_3
+    %10:u32 = load %arg_4
+    %11:vec4<u32> = textureGather 1i, %7, %8, %9, %10
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_be276f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_be276f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_be276f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/c0640c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/c0640c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3743e3a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/c0640c.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_c0640c = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %7:texture_cube_array<i32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec3<f32> = load %arg_3
+    %10:i32 = load %arg_4
+    %11:vec4<i32> = textureGather 1i, %7, %8, %9, %10
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_c0640c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_c0640c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_c0640c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/ccadde.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/ccadde.wgsl.expected.ir.msl
new file mode 100644
index 0000000..da6b181
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/ccadde.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_ccadde = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_2d<i32> = load %arg_1
+    %7:sampler = load %arg_2
+    %8:vec2<f32> = load %arg_3
+    %9:vec4<i32> = textureGather 1u, %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_ccadde
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_ccadde
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_ccadde
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/ce5578.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/ce5578.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b8f91e5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/ce5578.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_ce5578 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<u32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:u32 = load %arg_4
+    %11:vec4<u32> = textureGather 1i, %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_ce5578
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_ce5578
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_ce5578
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/cf9112.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/cf9112.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eaab7a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/cf9112.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_cf9112 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<i32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:u32 = load %arg_4
+    %11:vec4<i32> = textureGather 1u, %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_cf9112
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_cf9112
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_cf9112
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/d1f187.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/d1f187.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5686581
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/d1f187.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_d1f187 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<u32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:i32 = load %arg_4
+    %11:vec4<u32> = textureGather 1i, %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_d1f187
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_d1f187
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_d1f187
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/d4b5c6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/d4b5c6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..49b15e5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/d4b5c6.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_d4b5c6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %7:texture_cube_array<u32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec3<f32> = load %arg_3
+    %10:i32 = load %arg_4
+    %11:vec4<u32> = textureGather 1u, %7, %8, %9, %10
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_d4b5c6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_d4b5c6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_d4b5c6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/d6507c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/d6507c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5f9e151
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/d6507c.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_d6507c = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_2d<f32> = load %arg_1
+    %7:sampler = load %arg_2
+    %8:vec2<f32> = load %arg_3
+    %9:vec4<f32> = textureGather 1u, %6, %7, %8, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_d6507c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_d6507c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_d6507c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/d8e958.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/d8e958.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ccdd60e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/d8e958.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_d8e958 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_2d<f32> = load %arg_1
+    %7:sampler = load %arg_2
+    %8:vec2<f32> = load %arg_3
+    %9:vec4<f32> = textureGather 1u, %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_d8e958
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_d8e958
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_d8e958
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/d90605.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/d90605.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f9b4b77
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/d90605.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_d90605 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_depth_2d_array = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:i32 = load %arg_3
+    %11:vec4<f32> = textureGather %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_d90605
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_d90605
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_d90605
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/d98d59.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/d98d59.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fc5be17
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/d98d59.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_d98d59 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %7:texture_cube_array<f32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec3<f32> = load %arg_3
+    %10:i32 = load %arg_4
+    %11:vec4<f32> = textureGather 1u, %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_d98d59
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_d98d59
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_d98d59
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/dc6661.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/dc6661.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4e82e4e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/dc6661.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_dc6661 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_2d<i32> = load %arg_1
+    %7:sampler = load %arg_2
+    %8:vec2<f32> = load %arg_3
+    %9:vec4<i32> = textureGather 1u, %6, %7, %8, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureGather_dc6661
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureGather_dc6661
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureGather_dc6661
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/e2acac.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/e2acac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b19d359
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/e2acac.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_e2acac = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %7:texture_cube_array<u32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec3<f32> = load %arg_3
+    %10:u32 = load %arg_4
+    %11:vec4<u32> = textureGather 1u, %7, %8, %9, %10
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_e2acac
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_e2acac
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_e2acac
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/e3165f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/e3165f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b584f8e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/e3165f.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_e3165f = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<u32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:i32 = load %arg_4
+    %11:vec4<u32> = textureGather 1u, %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_e3165f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_e3165f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_e3165f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/e9d390.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/e9d390.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f8a63e2c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/e9d390.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_e9d390 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<i32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:i32 = load %arg_4
+    %11:vec4<i32> = textureGather 1i, %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_e9d390
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_e9d390
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_e9d390
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/ea8eb4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/ea8eb4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ed167c2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/ea8eb4.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_ea8eb4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<f32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec2<f32> = load %arg_3
+    %10:u32 = load %arg_4
+    %11:vec4<f32> = textureGather 1u, %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_ea8eb4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_ea8eb4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_ea8eb4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGather/f2c6e3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0bb7c27
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_1:ptr<handle, texture_cube_array<u32>, read> = var @binding_point(1, 1)
+  %arg_2:ptr<handle, sampler, read> = var @binding_point(1, 2)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGather_f2c6e3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %7:texture_cube_array<u32> = load %arg_1
+    %8:sampler = load %arg_2
+    %9:vec3<f32> = load %arg_3
+    %10:i32 = load %arg_4
+    %11:vec4<u32> = textureGather 1i, %7, %8, %9, %10
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGather_f2c6e3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGather_f2c6e3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGather_f2c6e3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGatherCompare/144a9a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGatherCompare/144a9a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3f95be8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGatherCompare/144a9a.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGatherCompare_144a9a = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler_comparison = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:vec4<f32> = textureGatherCompare %8, %9, %10, %11, %12, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureGatherCompare_144a9a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureGatherCompare_144a9a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureGatherCompare_144a9a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGatherCompare/182fd4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGatherCompare/182fd4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3bccb91
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGatherCompare/182fd4.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGatherCompare_182fd4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, f32, read_write> = var, 1.0f
+    %7:texture_depth_cube = load %arg_0
+    %8:sampler_comparison = load %arg_1
+    %9:vec3<f32> = load %arg_2
+    %10:f32 = load %arg_3
+    %11:vec4<f32> = textureGatherCompare %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGatherCompare_182fd4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGatherCompare_182fd4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGatherCompare_182fd4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGatherCompare/2e409c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGatherCompare/2e409c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..318ad02
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGatherCompare/2e409c.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGatherCompare_2e409c = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_depth_cube_array = load %arg_0
+    %9:sampler_comparison = load %arg_1
+    %10:vec3<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:vec4<f32> = textureGatherCompare %8, %9, %10, %11, %12
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureGatherCompare_2e409c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureGatherCompare_2e409c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureGatherCompare_2e409c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGatherCompare/313add.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGatherCompare/313add.wgsl.expected.ir.msl
new file mode 100644
index 0000000..76bfb54
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGatherCompare/313add.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGatherCompare_313add = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, f32, read_write> = var, 1.0f
+    %7:texture_depth_2d = load %arg_0
+    %8:sampler_comparison = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:f32 = load %arg_3
+    %11:vec4<f32> = textureGatherCompare %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGatherCompare_313add
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGatherCompare_313add
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGatherCompare_313add
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGatherCompare/60d2d1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGatherCompare/60d2d1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7368101
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGatherCompare/60d2d1.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGatherCompare_60d2d1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_depth_cube_array = load %arg_0
+    %9:sampler_comparison = load %arg_1
+    %10:vec3<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:vec4<f32> = textureGatherCompare %8, %9, %10, %11, %12
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureGatherCompare_60d2d1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureGatherCompare_60d2d1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureGatherCompare_60d2d1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGatherCompare/6d9352.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGatherCompare/6d9352.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5660987
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGatherCompare/6d9352.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGatherCompare_6d9352 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, f32, read_write> = var, 1.0f
+    %7:texture_depth_2d = load %arg_0
+    %8:sampler_comparison = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:f32 = load %arg_3
+    %11:vec4<f32> = textureGatherCompare %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureGatherCompare_6d9352
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureGatherCompare_6d9352
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureGatherCompare_6d9352
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGatherCompare/783e65.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGatherCompare/783e65.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f236b68
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGatherCompare/783e65.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGatherCompare_783e65 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler_comparison = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:vec4<f32> = textureGatherCompare %8, %9, %10, %11, %12
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureGatherCompare_783e65
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureGatherCompare_783e65
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureGatherCompare_783e65
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGatherCompare/b5bc43.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGatherCompare/b5bc43.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d1f4389
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGatherCompare/b5bc43.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGatherCompare_b5bc43 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler_comparison = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:vec4<f32> = textureGatherCompare %8, %9, %10, %11, %12
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureGatherCompare_b5bc43
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureGatherCompare_b5bc43
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureGatherCompare_b5bc43
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureGatherCompare/f585cc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureGatherCompare/f585cc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d890ac0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureGatherCompare/f585cc.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureGatherCompare_f585cc = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler_comparison = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:vec4<f32> = textureGatherCompare %8, %9, %10, %11, %12, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureGatherCompare_f585cc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureGatherCompare_f585cc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureGatherCompare_f585cc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/012e11.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/012e11.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5c673d7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/012e11.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_012e11 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba8unorm, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_012e11
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_012e11
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_012e11
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/019da0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/019da0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cb37d45
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/019da0.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_019da0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_3d<f32> = load %arg_0
+    %7:vec3<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_019da0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_019da0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_019da0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/01cd01.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/01cd01.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3d52b69
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/01cd01.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_01cd01 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_01cd01
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_01cd01
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_01cd01
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/026217.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/026217.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1a1b86c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/026217.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_026217 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<u32> = load %arg_0
+    %8:vec2<u32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:i32 = load %arg_3
+    %11:vec4<u32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_026217
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_026217
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_026217
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/02c48d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/02c48d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0299859
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/02c48d.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_02c48d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba16uint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_02c48d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_02c48d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_02c48d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/02ef1f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/02ef1f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9693f4d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/02ef1f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_02ef1f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<r32uint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_02ef1f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_02ef1f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_02ef1f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/03e03e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/03e03e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..534813a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/03e03e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_03e03e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba16sint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_03e03e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_03e03e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_03e03e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/045ec9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/045ec9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..43f5b00
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/045ec9.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_045ec9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba8sint, read> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_045ec9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_045ec9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_045ec9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/04b911.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/04b911.wgsl.expected.ir.msl
new file mode 100644
index 0000000..00e2ba9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/04b911.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_04b911 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_depth_2d_array = load %arg_0
+    %8:vec2<u32> = load %arg_1
+    %9:i32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:f32 = textureLoad %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_04b911
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_04b911
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_04b911
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/050c33.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/050c33.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0dc5e24
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/050c33.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_050c33 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rg32uint, read> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_050c33
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_050c33
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_050c33
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/054350.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/054350.wgsl.expected.ir.msl
new file mode 100644
index 0000000..911f6b9b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/054350.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_054350 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba8uint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_054350
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_054350
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_054350
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/0674b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/0674b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ef622b6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/0674b1.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_0674b1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba8snorm, read> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_0674b1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_0674b1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_0674b1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/06ac37.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/06ac37.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8038fab
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/06ac37.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_06ac37 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba32float, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_06ac37
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_06ac37
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_06ac37
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/072e26.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/072e26.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e940d70
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/072e26.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_072e26 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba8snorm, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_072e26
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_072e26
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_072e26
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/078bc4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/078bc4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3be313b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/078bc4.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_078bc4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba8snorm, read> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_078bc4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_078bc4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_078bc4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/0b515a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/0b515a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bdf816f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/0b515a.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_0b515a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_0b515a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_0b515a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_0b515a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/0cb698.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/0cb698.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b237eb83
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/0cb698.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_0cb698 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_1d<i32> = load %arg_0
+    %7:u32 = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_0cb698
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_0cb698
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_0cb698
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/10db82.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/10db82.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8e38d04
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/10db82.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_10db82 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba16float, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_10db82
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_10db82
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_10db82
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/126466.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/126466.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b3afe96
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/126466.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_126466 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rg32float, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_126466
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_126466
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_126466
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/127e12.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/127e12.wgsl.expected.ir.msl
new file mode 100644
index 0000000..409e25a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/127e12.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_127e12 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba16uint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_127e12
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_127e12
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_127e12
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/1373dc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/1373dc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1dc88f5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/1373dc.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1373dc = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_1d<f32> = load %arg_0
+    %7:u32 = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_1373dc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_1373dc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_1373dc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/13d539.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/13d539.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3e743c6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/13d539.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_13d539 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba16sint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_13d539
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_13d539
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_13d539
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/13e90c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/13e90c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..49e693b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/13e90c.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_13e90c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba16float, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_13e90c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_13e90c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_13e90c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/143d84.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/143d84.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a994b8e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/143d84.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_143d84 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rg32float, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_143d84
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_143d84
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_143d84
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/1471b8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/1471b8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6b74a24
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/1471b8.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1471b8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba32sint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_1471b8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_1471b8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_1471b8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/14cc4c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/14cc4c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0069b4b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/14cc4c.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_14cc4c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba8unorm, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_14cc4c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_14cc4c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_14cc4c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/1561a7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/1561a7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e76bb5b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/1561a7.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1561a7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<r32uint, read> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_1561a7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_1561a7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_1561a7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/15e675.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/15e675.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0206a7b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/15e675.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_15e675 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba8uint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_15e675
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_15e675
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_15e675
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/1619bf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/1619bf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8bb37a9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/1619bf.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1619bf = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_1619bf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_1619bf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_1619bf
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/168dc8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/168dc8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0b9d843
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/168dc8.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_168dc8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<i32> = load %arg_0
+    %8:vec2<u32> = load %arg_1
+    %9:i32 = load %arg_2
+    %10:i32 = load %arg_3
+    %11:vec4<i32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_168dc8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_168dc8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_168dc8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/170593.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/170593.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b13f254
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/170593.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_170593 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba32uint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_170593
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_170593
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_170593
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/17095b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/17095b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8ed38a2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/17095b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_17095b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba32uint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_17095b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_17095b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_17095b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/18ac11.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/18ac11.wgsl.expected.ir.msl
new file mode 100644
index 0000000..425308e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/18ac11.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_18ac11 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rg32sint, read> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_18ac11
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_18ac11
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_18ac11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/19cf87.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/19cf87.wgsl.expected.ir.msl
new file mode 100644
index 0000000..623da86
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/19cf87.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_19cf87 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_depth_2d = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:f32 = textureLoad %6, %7, %8
+    %res:ptr<function, f32, read_write> = var, %9
+    %11:f32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_19cf87
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_19cf87
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_19cf87
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/19d6be.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/19d6be.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0da7cc8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/19d6be.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_19d6be = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<r32uint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_19d6be
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_19d6be
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_19d6be
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/1a062f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/1a062f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..390aaa0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/1a062f.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1a062f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba16float, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_1a062f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_1a062f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_1a062f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/1a8452.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/1a8452.wgsl.expected.ir.msl
new file mode 100644
index 0000000..50b85f6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/1a8452.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1a8452 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba8uint, read> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_1a8452
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_1a8452
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_1a8452
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/1aa950.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/1aa950.wgsl.expected.ir.msl
new file mode 100644
index 0000000..358c56d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/1aa950.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1aa950 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba32sint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_1aa950
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_1aa950
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_1aa950
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/1b051f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/1b051f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d58edca
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/1b051f.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1b051f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<u32> = load %arg_0
+    %8:vec2<i32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<u32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_1b051f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_1b051f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_1b051f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/1b4332.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/1b4332.wgsl.expected.ir.msl
new file mode 100644
index 0000000..918397f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/1b4332.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1b4332 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<r32uint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_1b4332
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_1b4332
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_1b4332
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/1b8588.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/1b8588.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3aa5245
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/1b8588.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1b8588 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_1d<u32> = load %arg_0
+    %7:i32 = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_1b8588
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_1b8588
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_1b8588
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/1bc5ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/1bc5ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..369da2f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/1bc5ab.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1bc5ab = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba8snorm, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_1bc5ab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_1bc5ab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_1bc5ab
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..49adede
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:626 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_external, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1bfdfb = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_external = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_1bfdfb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_1bfdfb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_1bfdfb
+    ret
+  }
+}
+
+Multiplanar external texture transform was not run.
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/1c562a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/1c562a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bae2fe8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/1c562a.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1c562a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_3d<u32> = load %arg_0
+    %7:vec3<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_1c562a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_1c562a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_1c562a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/1d43ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/1d43ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d64378d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/1d43ae.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1d43ae = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba32sint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_1d43ae
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_1d43ae
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_1d43ae
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/1e6baa.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/1e6baa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..80fddd5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/1e6baa.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1e6baa = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rg32float, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_1e6baa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_1e6baa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_1e6baa
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/1eb93f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/1eb93f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..628f34c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/1eb93f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1eb93f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rg32float, read> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_1eb93f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_1eb93f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_1eb93f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/1f2016.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/1f2016.wgsl.expected.ir.msl
new file mode 100644
index 0000000..91e4235
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/1f2016.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_1f2016 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_3d<f32> = load %arg_0
+    %7:vec3<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_1f2016
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_1f2016
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_1f2016
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/206a08.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/206a08.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3cb323d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/206a08.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_206a08 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba8uint, read> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_206a08
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_206a08
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_206a08
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/20fa2f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/20fa2f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..96388c7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/20fa2f.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_20fa2f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rg32float, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_20fa2f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_20fa2f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_20fa2f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/216c37.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/216c37.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4b39907
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/216c37.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_216c37 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_1d<u32> = load %arg_0
+    %7:u32 = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_216c37
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_216c37
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_216c37
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/21d1c4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/21d1c4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8c25daa
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/21d1c4.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_21d1c4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_3d<f32> = load %arg_0
+    %7:vec3<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_21d1c4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_21d1c4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_21d1c4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/223246.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/223246.wgsl.expected.ir.msl
new file mode 100644
index 0000000..125c9b7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/223246.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_223246 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_3d<i32> = load %arg_0
+    %7:vec3<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_223246
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_223246
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_223246
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/22e963.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/22e963.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aa46bb7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/22e963.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_22e963 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<r32uint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_22e963
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_22e963
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_22e963
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/23007a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/23007a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3c202ec
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/23007a.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_23007a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rg32float, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_23007a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_23007a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_23007a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/2363be.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/2363be.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e5e8508
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/2363be.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2363be = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<i32> = load %arg_0
+    %8:vec2<u32> = load %arg_1
+    %9:i32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<i32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_2363be
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_2363be
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_2363be
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/23ff89.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/23ff89.wgsl.expected.ir.msl
new file mode 100644
index 0000000..abb863a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/23ff89.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_23ff89 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba16uint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_23ff89
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_23ff89
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_23ff89
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/25b67f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/25b67f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..50581e4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/25b67f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_25b67f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba8uint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_25b67f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_25b67f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_25b67f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/26b8f6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/26b8f6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c07b021
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/26b8f6.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_26b8f6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba8uint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_26b8f6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_26b8f6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_26b8f6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/26c4f8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/26c4f8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d0a8dbe
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/26c4f8.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_26c4f8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<bgra8unorm, read> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_26c4f8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_26c4f8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_26c4f8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/26d7f1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/26d7f1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..70ee08f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/26d7f1.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_26d7f1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rg32uint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_26d7f1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_26d7f1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_26d7f1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/272e7a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/272e7a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..68ad02e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/272e7a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_272e7a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<r32float, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_272e7a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_272e7a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_272e7a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/276a2c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/276a2c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f511240
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/276a2c.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_276a2c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba32uint, read> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_276a2c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_276a2c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_276a2c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/2887d7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/2887d7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9ac4e4a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/2887d7.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2887d7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba32float, read> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_2887d7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_2887d7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_2887d7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/2a82d9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/2a82d9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cc23681
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/2a82d9.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2a82d9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba32sint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_2a82d9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_2a82d9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_2a82d9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/2ae485.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/2ae485.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ce1b1f1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/2ae485.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2ae485 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba16sint, read> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_2ae485
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_2ae485
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_2ae485
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/2c72ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/2c72ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..22b2969
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/2c72ae.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2c72ae = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba32sint, read> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_2c72ae
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_2c72ae
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_2c72ae
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/2cee30.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/2cee30.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1545759
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/2cee30.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2cee30 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_2cee30
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_2cee30
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_2cee30
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/2d479c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/2d479c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a7c605a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/2d479c.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2d479c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_2d<f32> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_2d479c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_2d479c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_2d479c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/2d6cf7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/2d6cf7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7ae3793
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/2d6cf7.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2d6cf7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rg32sint, read> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_2d6cf7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_2d6cf7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_2d6cf7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/2dbfc2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/2dbfc2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e55552a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/2dbfc2.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2dbfc2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_2dbfc2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_2dbfc2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_2dbfc2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/2e09aa.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/2e09aa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..504947a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/2e09aa.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2e09aa = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_multisampled_2d<f32> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_2e09aa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_2e09aa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_2e09aa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/2e3552.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/2e3552.wgsl.expected.ir.msl
new file mode 100644
index 0000000..55e3db7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/2e3552.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2e3552 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<r32float, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_2e3552
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_2e3552
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_2e3552
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/2eaf31.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/2eaf31.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d008abd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/2eaf31.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_2eaf31 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rg32sint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_2eaf31
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_2eaf31
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_2eaf31
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/313c73.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/313c73.wgsl.expected.ir.msl
new file mode 100644
index 0000000..043424a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/313c73.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_313c73 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba16sint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_313c73
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_313c73
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_313c73
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/31db4b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/31db4b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a7c566f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/31db4b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_31db4b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<r32uint, read> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_31db4b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_31db4b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_31db4b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/321210.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/321210.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e6c2379
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/321210.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_321210 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba16uint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_321210
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_321210
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_321210
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/32a7b8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/32a7b8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fdefc23
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/32a7b8.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_32a7b8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_32a7b8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_32a7b8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_32a7b8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/33d3aa.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/33d3aa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5b21114
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/33d3aa.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_33d3aa = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba32sint, read> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_33d3aa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_33d3aa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_33d3aa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/348827.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/348827.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bcbf21b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/348827.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_348827 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba32uint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_348827
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_348827
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_348827
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/34d97c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/34d97c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..672b907
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/34d97c.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_34d97c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_34d97c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_34d97c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_34d97c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/374351.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/374351.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a3f11c2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/374351.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_374351 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba16uint, read> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_374351
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_374351
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_374351
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/388688.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/388688.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2275234
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/388688.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_388688 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba8snorm, read> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_388688
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_388688
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_388688
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/38f8ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/38f8ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4a34cd8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/38f8ab.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_38f8ab = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_multisampled_2d<i32> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_38f8ab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_38f8ab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_38f8ab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/39016c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/39016c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d926ff0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/39016c.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_39016c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba8snorm, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_39016c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_39016c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_39016c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/395447.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/395447.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a14d9fb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/395447.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_395447 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba32float, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_395447
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_395447
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_395447
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/39ef40.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/39ef40.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eb3cdd6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/39ef40.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_39ef40 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba16float, read> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_39ef40
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_39ef40
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_39ef40
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/3a2350.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/3a2350.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b6be499
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/3a2350.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3a2350 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_3a2350
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_3a2350
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_3a2350
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/3aea13.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/3aea13.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ee47a92
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/3aea13.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3aea13 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_3aea13
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_3aea13
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_3aea13
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/3bbc2b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/3bbc2b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7446674
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/3bbc2b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3bbc2b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<r32float, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_3bbc2b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_3bbc2b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_3bbc2b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/3c0d9e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/3c0d9e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4bc2bcd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/3c0d9e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3c0d9e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba8uint, read> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_3c0d9e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_3c0d9e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_3c0d9e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/3c9587.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/3c9587.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5ccfe4d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/3c9587.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3c9587 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba8unorm, read> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_3c9587
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_3c9587
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_3c9587
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/3c96e8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/3c96e8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bfacfca
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/3c96e8.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3c96e8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<f32> = load %arg_0
+    %8:vec2<i32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<f32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_3c96e8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_3c96e8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_3c96e8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/3cfb9c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/3cfb9c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..535bade
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/3cfb9c.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3cfb9c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba8uint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_3cfb9c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_3cfb9c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_3cfb9c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/3d001b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/3d001b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3094563
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/3d001b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3d001b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba8sint, read> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_3d001b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_3d001b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_3d001b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/3d3fd1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/3d3fd1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1080702
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/3d3fd1.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3d3fd1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<i32> = load %arg_0
+    %8:vec2<u32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:i32 = load %arg_3
+    %11:vec4<i32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_3d3fd1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_3d3fd1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_3d3fd1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/3d9c90.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/3d9c90.wgsl.expected.ir.msl
new file mode 100644
index 0000000..81e9e3e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/3d9c90.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3d9c90 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba32float, read> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_3d9c90
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_3d9c90
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_3d9c90
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/3da3ed.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/3da3ed.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b9c286f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/3da3ed.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3da3ed = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_1d<f32> = load %arg_0
+    %7:i32 = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_3da3ed
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_3da3ed
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_3da3ed
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/3e5f6a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/3e5f6a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9ada9f8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/3e5f6a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_3e5f6a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba16float, read> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_3e5f6a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_3e5f6a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_3e5f6a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/40ee8b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/40ee8b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..340cdff
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/40ee8b.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_40ee8b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_40ee8b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_40ee8b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_40ee8b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/4212a1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/4212a1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c099de0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/4212a1.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4212a1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba32sint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_4212a1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_4212a1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_4212a1
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/424afd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/424afd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b49bb5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/424afd.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_424afd = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_424afd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_424afd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_424afd
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/42a631.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/42a631.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d768bc8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/42a631.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_42a631 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba16float, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_42a631
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_42a631
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_42a631
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/43484a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/43484a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..354fb18
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/43484a.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_43484a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_43484a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_43484a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_43484a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/439e2a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/439e2a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8a55307
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/439e2a.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_439e2a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_2d<f32> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_439e2a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_439e2a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_439e2a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/43cd86.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/43cd86.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8202e1d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/43cd86.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_43cd86 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba8snorm, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_43cd86
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_43cd86
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_43cd86
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/44c826.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/44c826.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a6adb82
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/44c826.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_44c826 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rg32uint, read> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_44c826
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_44c826
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_44c826
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/4542ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/4542ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8a5cd39
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/4542ae.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4542ae = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_4542ae
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_4542ae
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_4542ae
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/454347.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/454347.wgsl.expected.ir.msl
new file mode 100644
index 0000000..da26bc3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/454347.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_454347 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba32uint, read> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_454347
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_454347
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_454347
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/4638a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/4638a0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0d467ee
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/4638a0.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4638a0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba16sint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_4638a0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_4638a0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_4638a0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/469912.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/469912.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6e50918
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/469912.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_469912 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rg32sint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_469912
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_469912
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_469912
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/46a93f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/46a93f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4d190c3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/46a93f.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_46a93f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<f32> = load %arg_0
+    %8:vec2<u32> = load %arg_1
+    %9:i32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<f32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_46a93f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_46a93f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_46a93f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/46dbf5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/46dbf5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b7e772c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/46dbf5.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_46dbf5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba8unorm, read> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_46dbf5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_46dbf5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_46dbf5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/473d3e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/473d3e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..852acea
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/473d3e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_473d3e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba32float, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_473d3e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_473d3e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_473d3e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/47e818.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/47e818.wgsl.expected.ir.msl
new file mode 100644
index 0000000..38a9f11
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/47e818.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_47e818 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_3d<i32> = load %arg_0
+    %7:vec3<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_47e818
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_47e818
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_47e818
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/482627.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/482627.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d941d6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/482627.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_482627 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_482627
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_482627
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_482627
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/484344.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/484344.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7341517
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/484344.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_484344 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_2d<f32> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_484344
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_484344
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_484344
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/49f76f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/49f76f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e5aac6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/49f76f.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_49f76f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_multisampled_2d<u32> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_49f76f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_49f76f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_49f76f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/4a5c55.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/4a5c55.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fddf567
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/4a5c55.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4a5c55 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba8sint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_4a5c55
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_4a5c55
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_4a5c55
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/4acb64.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/4acb64.wgsl.expected.ir.msl
new file mode 100644
index 0000000..873626a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/4acb64.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4acb64 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<f32> = load %arg_0
+    %8:vec2<i32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:i32 = load %arg_3
+    %11:vec4<f32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_4acb64
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_4acb64
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_4acb64
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/4c15b2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/4c15b2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..399061f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/4c15b2.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4c15b2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_4c15b2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_4c15b2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_4c15b2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/4c1a1e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/4c1a1e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bab2ac0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/4c1a1e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4c1a1e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rg32uint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_4c1a1e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_4c1a1e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_4c1a1e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/4c423f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/4c423f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8dc2c47
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/4c423f.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4c423f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_1d<i32> = load %arg_0
+    %7:u32 = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_4c423f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_4c423f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_4c423f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/4c67be.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/4c67be.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e4c8213
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/4c67be.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4c67be = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<r32float, read> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_4c67be
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_4c67be
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_4c67be
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/4ccf9a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/4ccf9a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fad4493
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/4ccf9a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4ccf9a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rg32uint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_4ccf9a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_4ccf9a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_4ccf9a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/4cdca5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/4cdca5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1539811
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/4cdca5.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4cdca5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba8sint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_4cdca5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_4cdca5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_4cdca5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/4db25c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/4db25c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b3eb558
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/4db25c.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_multisampled_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4db25c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_depth_multisampled_2d = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:f32 = textureLoad %6, %7, %8
+    %res:ptr<function, f32, read_write> = var, %9
+    %11:f32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_4db25c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_4db25c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_4db25c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/4e2c5c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/4e2c5c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3da5627
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/4e2c5c.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4e2c5c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_4e2c5c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_4e2c5c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_4e2c5c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/4f5496.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/4f5496.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a6a723c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/4f5496.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4f5496 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_4f5496
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_4f5496
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_4f5496
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/4f90bb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/4f90bb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9c95216
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/4f90bb.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4f90bb = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<bgra8unorm, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_4f90bb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_4f90bb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_4f90bb
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/4fa6ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/4fa6ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a0f3fd9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/4fa6ae.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4fa6ae = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<bgra8unorm, read> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_4fa6ae
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_4fa6ae
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_4fa6ae
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/4fd803.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/4fd803.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d948362
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/4fd803.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_4fd803 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_3d<i32> = load %arg_0
+    %7:vec3<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_4fd803
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_4fd803
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_4fd803
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/505aa2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/505aa2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2f47cc3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/505aa2.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_505aa2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<r32sint, read> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_505aa2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_505aa2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_505aa2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/50915c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/50915c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a060d18
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/50915c.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_50915c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba8uint, read> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_50915c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_50915c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_50915c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/5154e1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/5154e1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3b7dd97
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/5154e1.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5154e1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba32float, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_5154e1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_5154e1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_5154e1
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/519ab5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/519ab5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0747c87
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/519ab5.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_519ab5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba8unorm, read> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_519ab5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_519ab5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_519ab5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/53378a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/53378a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d803ef1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/53378a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_53378a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rg32sint, read> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_53378a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_53378a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_53378a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/53941c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/53941c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f5e4669
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/53941c.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_53941c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_53941c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_53941c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_53941c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/53e142.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/53e142.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0513f1e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/53e142.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_53e142 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<u32> = load %arg_0
+    %8:vec2<u32> = load %arg_1
+    %9:i32 = load %arg_2
+    %10:i32 = load %arg_3
+    %11:vec4<u32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_53e142
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_53e142
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_53e142
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/54a59b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/54a59b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..960d78c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/54a59b.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_54a59b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<f32> = load %arg_0
+    %8:vec2<u32> = load %arg_1
+    %9:i32 = load %arg_2
+    %10:i32 = load %arg_3
+    %11:vec4<f32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_54a59b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_54a59b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_54a59b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/54e0ce.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/54e0ce.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d41c6f0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/54e0ce.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_54e0ce = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<bgra8unorm, read> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_54e0ce
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_54e0ce
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_54e0ce
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/54fb38.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/54fb38.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3afdecc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/54fb38.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_54fb38 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_54fb38
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_54fb38
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_54fb38
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/55e745.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/55e745.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a596bf6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/55e745.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_55e745 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<r32sint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_55e745
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_55e745
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_55e745
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/560573.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/560573.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ec31
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/560573.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_560573 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<r32sint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_560573
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_560573
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_560573
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/56a000.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/56a000.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1b91a58
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/56a000.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_56a000 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rg32float, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_56a000
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_56a000
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_56a000
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/582015.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/582015.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8f9d240
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/582015.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_582015 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba8sint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_582015
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_582015
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_582015
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/589eaa.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/589eaa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0bab6bc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/589eaa.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_589eaa = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba16float, read> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_589eaa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_589eaa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_589eaa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/5a2f9d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/5a2f9d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..130156a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/5a2f9d.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5a2f9d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_1d<i32> = load %arg_0
+    %7:i32 = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_5a2f9d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_5a2f9d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_5a2f9d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/5abbf2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/5abbf2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d732680
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/5abbf2.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5abbf2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rg32float, read> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_5abbf2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_5abbf2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_5abbf2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/5b0f5b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/5b0f5b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..91a8fa8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/5b0f5b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5b0f5b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba16uint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_5b0f5b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_5b0f5b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_5b0f5b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/5b4947.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/5b4947.wgsl.expected.ir.msl
new file mode 100644
index 0000000..214ef39
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/5b4947.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5b4947 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<bgra8unorm, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_5b4947
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_5b4947
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_5b4947
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/5bb7fb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/5bb7fb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..40c5e0f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/5bb7fb.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5bb7fb = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rg32uint, read> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_5bb7fb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_5bb7fb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_5bb7fb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/5c69f8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/5c69f8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..306bc12
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/5c69f8.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5c69f8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<bgra8unorm, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_5c69f8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_5c69f8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_5c69f8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/5cd3fc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/5cd3fc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f516b73
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/5cd3fc.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5cd3fc = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<r32sint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_5cd3fc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_5cd3fc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_5cd3fc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/5cee3b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/5cee3b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0c1aa70
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/5cee3b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5cee3b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<r32uint, read> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_5cee3b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_5cee3b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_5cee3b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/5d0a2f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/5d0a2f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c16c83f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/5d0a2f.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5d0a2f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<r32uint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_5d0a2f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_5d0a2f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_5d0a2f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/5d4042.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/5d4042.wgsl.expected.ir.msl
new file mode 100644
index 0000000..338c13e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/5d4042.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5d4042 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba32float, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_5d4042
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_5d4042
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_5d4042
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/5e17a7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/5e17a7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a09ce5d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/5e17a7.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5e17a7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba8sint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_5e17a7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_5e17a7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_5e17a7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/5e1843.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/5e1843.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7fc7492
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/5e1843.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5e1843 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_5e1843
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_5e1843
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_5e1843
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/5e8d3f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/5e8d3f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e2faa2f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/5e8d3f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5e8d3f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<r32sint, read> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_5e8d3f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_5e8d3f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_5e8d3f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/5f4473.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/5f4473.wgsl.expected.ir.msl
new file mode 100644
index 0000000..269566b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/5f4473.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5f4473 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba32uint, read> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_5f4473
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_5f4473
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_5f4473
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/5feb4d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/5feb4d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8485d8f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/5feb4d.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_5feb4d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<r32float, read> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_5feb4d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_5feb4d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_5feb4d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/6154d4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/6154d4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cfdf81f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/6154d4.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6154d4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_2d<u32> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_6154d4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_6154d4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_6154d4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/61e2e8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/61e2e8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..04f17a7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/61e2e8.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_61e2e8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rg32sint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_61e2e8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_61e2e8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_61e2e8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/620caa.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/620caa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e2eb91b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/620caa.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_620caa = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rg32sint, read> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_620caa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_620caa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_620caa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/622278.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/622278.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d2999d6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/622278.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_622278 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba32uint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_622278
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_622278
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_622278
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/6273b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/6273b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6c32063
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/6273b1.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_multisampled_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6273b1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_depth_multisampled_2d = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:f32 = textureLoad %6, %7, %8
+    %res:ptr<function, f32, read_write> = var, %9
+    %11:f32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_6273b1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_6273b1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_6273b1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/62d125.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/62d125.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4c0f937
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/62d125.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_62d125 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba8snorm, read> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_62d125
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_62d125
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_62d125
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/62d1de.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/62d1de.wgsl.expected.ir.msl
new file mode 100644
index 0000000..11c5a43
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/62d1de.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_62d1de = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_1d<i32> = load %arg_0
+    %7:i32 = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_62d1de
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_62d1de
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_62d1de
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/639962.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/639962.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f2af054
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/639962.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_639962 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_multisampled_2d<i32> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_639962
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_639962
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_639962
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/63be18.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/63be18.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7f4b459
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/63be18.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_63be18 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rg32sint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_63be18
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_63be18
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_63be18
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/64c372.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/64c372.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e538426
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/64c372.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_64c372 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_64c372
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_64c372
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_64c372
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/656d76.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/656d76.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bfd385f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/656d76.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_656d76 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<u32> = load %arg_0
+    %8:vec2<i32> = load %arg_1
+    %9:i32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<u32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_656d76
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_656d76
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_656d76
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/65a4d0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/65a4d0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2ca0758
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/65a4d0.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_65a4d0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba8unorm, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_65a4d0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_65a4d0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_65a4d0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/666010.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/666010.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f576a78
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/666010.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_666010 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba8unorm, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_666010
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_666010
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_666010
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/6678b6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/6678b6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..63e2dfe
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/6678b6.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6678b6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba16sint, read> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_6678b6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_6678b6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_6678b6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/66be47.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/66be47.wgsl.expected.ir.msl
new file mode 100644
index 0000000..799d2d9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/66be47.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_66be47 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_depth_2d_array = load %arg_0
+    %8:vec2<i32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:f32 = textureLoad %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_66be47
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_66be47
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_66be47
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/67d826.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/67d826.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c52a981
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/67d826.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_67d826 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_67d826
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_67d826
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_67d826
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/67edca.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/67edca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9dbe52e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/67edca.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_67edca = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba32uint, read> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_67edca
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_67edca
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_67edca
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/68d273.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/68d273.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3ced285
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/68d273.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_68d273 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba16sint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_68d273
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_68d273
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_68d273
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/6925bc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/6925bc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e4edd50
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/6925bc.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_multisampled_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6925bc = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_depth_multisampled_2d = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:f32 = textureLoad %6, %7, %8
+    %res:ptr<function, f32, read_write> = var, %9
+    %11:f32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_6925bc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_6925bc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_6925bc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/69fee5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/69fee5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..06e8e80
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/69fee5.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_69fee5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_69fee5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_69fee5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_69fee5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/6a6871.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/6a6871.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a541ac4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/6a6871.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6a6871 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba32float, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_6a6871
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_6a6871
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_6a6871
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/6b77d4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/6b77d4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..19ba478
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/6b77d4.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6b77d4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_1d<u32> = load %arg_0
+    %7:i32 = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_6b77d4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_6b77d4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_6b77d4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/6b8ba6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/6b8ba6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b0360e9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/6b8ba6.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6b8ba6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_6b8ba6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_6b8ba6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_6b8ba6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/6ba9ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/6ba9ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f2ef02f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/6ba9ab.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6ba9ab = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_6ba9ab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_6ba9ab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_6ba9ab
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/6bf3e2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/6bf3e2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c273b59
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/6bf3e2.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6bf3e2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_6bf3e2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_6bf3e2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_6bf3e2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/6bf4b7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/6bf4b7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8d198a9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/6bf4b7.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6bf4b7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_3d<u32> = load %arg_0
+    %7:vec3<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_6bf4b7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_6bf4b7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_6bf4b7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/6d1fb4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/6d1fb4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8f2ffef
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/6d1fb4.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6d1fb4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_6d1fb4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_6d1fb4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_6d1fb4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/6d376a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/6d376a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5cfed98
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/6d376a.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6d376a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_1d<f32> = load %arg_0
+    %7:u32 = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_6d376a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_6d376a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_6d376a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/6d7bb5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/6d7bb5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..43589a7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/6d7bb5.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6d7bb5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_6d7bb5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_6d7bb5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_6d7bb5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/6e903f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/6e903f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9cf3e48
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/6e903f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6e903f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba8sint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_6e903f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_6e903f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_6e903f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/6f0ea8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/6f0ea8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2d24ab2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/6f0ea8.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6f0ea8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba16float, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_6f0ea8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_6f0ea8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_6f0ea8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/6f1750.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/6f1750.wgsl.expected.ir.msl
new file mode 100644
index 0000000..647b43f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/6f1750.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6f1750 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<r32float, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_6f1750
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_6f1750
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_6f1750
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/6f8927.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/6f8927.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3b70d35
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/6f8927.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_6f8927 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_6f8927
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_6f8927
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_6f8927
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/714471.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/714471.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2501ca2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/714471.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_714471 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_2d<i32> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_714471
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_714471
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_714471
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/72bb3c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/72bb3c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6dd36be
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/72bb3c.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_72bb3c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba8snorm, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_72bb3c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_72bb3c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_72bb3c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/742f1b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/742f1b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e50fbcd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/742f1b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_742f1b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba16float, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_742f1b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_742f1b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_742f1b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/749704.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/749704.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ced17c2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/749704.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_749704 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<r32uint, read> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_749704
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_749704
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_749704
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/74a387.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/74a387.wgsl.expected.ir.msl
new file mode 100644
index 0000000..53b76a2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/74a387.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_74a387 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba8sint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_74a387
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_74a387
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_74a387
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/773c46.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/773c46.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7ce979f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/773c46.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_773c46 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rg32uint, read> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_773c46
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_773c46
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_773c46
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/789045.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/789045.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ed85080
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/789045.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_789045 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<f32> = load %arg_0
+    %8:vec2<i32> = load %arg_1
+    %9:i32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<f32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_789045
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_789045
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_789045
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/79e697.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/79e697.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3387a22
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/79e697.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_79e697 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<i32> = load %arg_0
+    %8:vec2<i32> = load %arg_1
+    %9:i32 = load %arg_2
+    %10:i32 = load %arg_3
+    %11:vec4<i32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_79e697
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_79e697
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_79e697
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/7ab4df.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/7ab4df.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8084b52
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/7ab4df.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_7ab4df = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<u32> = load %arg_0
+    %8:vec2<i32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:i32 = load %arg_3
+    %11:vec4<u32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_7ab4df
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_7ab4df
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_7ab4df
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/7b63e0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/7b63e0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dc8db05
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/7b63e0.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_7b63e0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_depth_2d_array = load %arg_0
+    %8:vec2<u32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:f32 = textureLoad %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_7b63e0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_7b63e0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_7b63e0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/7bee94.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/7bee94.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e882352
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/7bee94.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_7bee94 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_multisampled_2d<i32> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_7bee94
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_7bee94
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_7bee94
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/7c90e5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/7c90e5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3a294ba
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/7c90e5.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_7c90e5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<u32> = load %arg_0
+    %8:vec2<i32> = load %arg_1
+    %9:i32 = load %arg_2
+    %10:i32 = load %arg_3
+    %11:vec4<u32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_7c90e5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_7c90e5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_7c90e5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/7dab57.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/7dab57.wgsl.expected.ir.msl
new file mode 100644
index 0000000..011e5d6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/7dab57.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_7dab57 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rg32sint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_7dab57
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_7dab57
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_7dab57
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/7e5cbc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/7e5cbc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9b0e3a1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/7e5cbc.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_7e5cbc = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<bgra8unorm, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_7e5cbc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_7e5cbc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_7e5cbc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/7fd822.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/7fd822.wgsl.expected.ir.msl
new file mode 100644
index 0000000..351776b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/7fd822.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_7fd822 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_depth_2d = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:f32 = textureLoad %6, %7, %8
+    %res:ptr<function, f32, read_write> = var, %9
+    %11:f32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_7fd822
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_7fd822
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_7fd822
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/80dae1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/80dae1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..45f989c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/80dae1.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_80dae1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba16sint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_80dae1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_80dae1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_80dae1
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/81c381.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/81c381.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f0975c0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/81c381.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_81c381 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_1d<f32> = load %arg_0
+    %7:i32 = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_81c381
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_81c381
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_81c381
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/83162f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/83162f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..002837f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/83162f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_83162f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rg32float, read> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_83162f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_83162f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_83162f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/83cea4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/83cea4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..206c8e5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/83cea4.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_83cea4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba16uint, read> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_83cea4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_83cea4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_83cea4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/83d6e3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/83d6e3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0eb8acd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/83d6e3.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_83d6e3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<r32uint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_83d6e3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_83d6e3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_83d6e3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/848d85.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/848d85.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f7a46e6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/848d85.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_848d85 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba16float, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_848d85
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_848d85
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_848d85
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/84a438.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/84a438.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2ace678
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/84a438.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_84a438 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba8uint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_84a438
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_84a438
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_84a438
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/84c728.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/84c728.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f2e3c3e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/84c728.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_84c728 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba32float, read> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_84c728
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_84c728
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_84c728
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/84dee1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/84dee1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f64216e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/84dee1.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_84dee1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_2d<f32> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_84dee1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_84dee1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_84dee1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/8527b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/8527b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5f9f856
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/8527b1.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8527b1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<u32> = load %arg_0
+    %8:vec2<u32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<u32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_8527b1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_8527b1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_8527b1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/862833.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/862833.wgsl.expected.ir.msl
new file mode 100644
index 0000000..39294f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/862833.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_862833 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba32float, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_862833
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_862833
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_862833
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/878e24.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/878e24.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3e2256b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/878e24.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_878e24 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_878e24
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_878e24
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_878e24
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/87be85.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/87be85.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a4bcfad
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/87be85.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_87be85 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<f32> = load %arg_0
+    %8:vec2<i32> = load %arg_1
+    %9:i32 = load %arg_2
+    %10:i32 = load %arg_3
+    %11:vec4<f32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_87be85
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_87be85
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_87be85
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/87f0a6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/87f0a6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9f8bd64
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/87f0a6.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_87f0a6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_87f0a6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_87f0a6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_87f0a6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/881349.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/881349.wgsl.expected.ir.msl
new file mode 100644
index 0000000..20d4650
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/881349.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_881349 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_881349
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_881349
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_881349
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/89620b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/89620b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bf95eb1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/89620b.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_89620b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<bgra8unorm, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_89620b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_89620b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_89620b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/897cf3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/897cf3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..94af526
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/897cf3.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_897cf3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_2d<u32> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_897cf3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_897cf3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_897cf3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/8a291b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/8a291b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9f8e0ff
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/8a291b.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8a291b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<bgra8unorm, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_8a291b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_8a291b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_8a291b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/8a9988.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/8a9988.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9438c78
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/8a9988.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8a9988 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rg32sint, read> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_8a9988
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_8a9988
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_8a9988
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.ir.msl
new file mode 100644
index 0000000..364d2e1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:626 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_external, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8acf41 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_external = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_8acf41
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_8acf41
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_8acf41
+    ret
+  }
+}
+
+Multiplanar external texture transform was not run.
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/8b62fb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/8b62fb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..64a562a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/8b62fb.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8b62fb = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<bgra8unorm, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_8b62fb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_8b62fb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_8b62fb
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/8bf8c2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/8bf8c2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5247986
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/8bf8c2.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8bf8c2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<r32float, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_8bf8c2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_8bf8c2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_8bf8c2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/8c6176.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/8c6176.wgsl.expected.ir.msl
new file mode 100644
index 0000000..79d9a0a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/8c6176.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8c6176 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rg32uint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_8c6176
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_8c6176
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_8c6176
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/8ccbe3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/8ccbe3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..18d3072
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/8ccbe3.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8ccbe3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_depth_2d = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:f32 = textureLoad %6, %7, %8
+    %res:ptr<function, f32, read_write> = var, %9
+    %11:f32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_8ccbe3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_8ccbe3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_8ccbe3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/8d64c3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/8d64c3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..308c061
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/8d64c3.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8d64c3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rg32uint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_8d64c3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_8d64c3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_8d64c3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/8db0ce.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/8db0ce.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5088479
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/8db0ce.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8db0ce = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<r32sint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_8db0ce
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_8db0ce
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_8db0ce
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/8e5032.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/8e5032.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2602155
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/8e5032.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8e5032 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rg32uint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_8e5032
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_8e5032
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_8e5032
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/8e68c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/8e68c9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..56559be
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/8e68c9.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8e68c9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba32sint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_8e68c9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_8e68c9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_8e68c9
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/8fc29b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/8fc29b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2dd800e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/8fc29b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8fc29b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba8unorm, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_8fc29b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_8fc29b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_8fc29b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/8ff033.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/8ff033.wgsl.expected.ir.msl
new file mode 100644
index 0000000..baa7512
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/8ff033.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_8ff033 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba8snorm, read> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_8ff033
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_8ff033
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_8ff033
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/91ede5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/91ede5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bbc38b0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/91ede5.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_91ede5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rg32float, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_91ede5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_91ede5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_91ede5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/9242e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/9242e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..72722f2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/9242e7.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9242e7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba16uint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_9242e7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_9242e7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_9242e7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/92eb1f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/92eb1f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..571aa0c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/92eb1f.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_92eb1f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_3d<u32> = load %arg_0
+    %7:vec3<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_92eb1f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_92eb1f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_92eb1f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/936952.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/936952.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2d676ec
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/936952.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_936952 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba32float, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_936952
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_936952
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_936952
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/93f23e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/93f23e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..96cc0e0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/93f23e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_93f23e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<r32uint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_93f23e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_93f23e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_93f23e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/96efd5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/96efd5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..72503fc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/96efd5.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_96efd5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<f32> = load %arg_0
+    %8:vec2<u32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<f32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_96efd5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_96efd5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_96efd5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/970308.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/970308.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c0c6f85
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/970308.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_970308 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<r32uint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_970308
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_970308
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_970308
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/9885b0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/9885b0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..75b97f2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/9885b0.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9885b0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<i32> = load %arg_0
+    %8:vec2<u32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<i32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_9885b0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_9885b0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_9885b0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/9a7c90.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/9a7c90.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fb7c242
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/9a7c90.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9a7c90 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba8uint, read> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_9a7c90
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_9a7c90
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_9a7c90
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/9a8c1e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/9a8c1e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d1e4a20
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/9a8c1e.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9a8c1e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba8sint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_9a8c1e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_9a8c1e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_9a8c1e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/9aa733.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/9aa733.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e104dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/9aa733.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9aa733 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_2d<i32> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_9aa733
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_9aa733
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_9aa733
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/9b2667.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/9b2667.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1e1b6f3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/9b2667.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9b2667 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_depth_2d_array = load %arg_0
+    %8:vec2<i32> = load %arg_1
+    %9:i32 = load %arg_2
+    %10:i32 = load %arg_3
+    %11:f32 = textureLoad %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_9b2667
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_9b2667
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_9b2667
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/9b5343.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/9b5343.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d7866c9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/9b5343.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9b5343 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba16uint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_9b5343
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_9b5343
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_9b5343
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/9c2376.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/9c2376.wgsl.expected.ir.msl
new file mode 100644
index 0000000..77185cf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/9c2376.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9c2376 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<r32float, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_9c2376
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_9c2376
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_9c2376
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/9c2a14.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/9c2a14.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b37fbbb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/9c2a14.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9c2a14 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rg32float, read> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_9c2a14
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_9c2a14
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_9c2a14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/9cf7df.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/9cf7df.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9b632de
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/9cf7df.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9cf7df = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rg32sint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_9cf7df
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_9cf7df
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_9cf7df
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/9d70e9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/9d70e9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e2a64ed
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/9d70e9.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9d70e9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<i32> = load %arg_0
+    %8:vec2<i32> = load %arg_1
+    %9:i32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<i32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_9d70e9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_9d70e9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_9d70e9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/9de6f5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/9de6f5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..61246d6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/9de6f5.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9de6f5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba8snorm, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_9de6f5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_9de6f5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_9de6f5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/9ed19e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/9ed19e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..19dba73
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/9ed19e.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9ed19e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_depth_2d = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:f32 = textureLoad %6, %7, %8
+    %res:ptr<function, f32, read_write> = var, %9
+    %11:f32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_9ed19e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_9ed19e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_9ed19e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/9fa9fd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/9fa9fd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..882c5bf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/9fa9fd.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9fa9fd = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba32uint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_9fa9fd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_9fa9fd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_9fa9fd
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/9fbfd9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/9fbfd9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..347ecb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/9fbfd9.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9fbfd9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<i32> = load %arg_0
+    %8:vec2<i32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<i32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_9fbfd9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_9fbfd9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_9fbfd9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/9fd7be.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/9fd7be.wgsl.expected.ir.msl
new file mode 100644
index 0000000..20dcbcd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/9fd7be.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_9fd7be = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_9fd7be
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_9fd7be
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_9fd7be
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a03af1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a03af1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..487d2fe
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a03af1.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a03af1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba8unorm, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_a03af1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_a03af1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_a03af1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a24be1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a24be1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0801fb3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a24be1.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a24be1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<u32> = load %arg_0
+    %8:vec2<u32> = load %arg_1
+    %9:i32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<u32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<u32>, read_write> = var, %11
+    %13:vec4<u32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_a24be1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_a24be1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_a24be1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a2b3f4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a2b3f4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7bef177
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a2b3f4.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a2b3f4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_a2b3f4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_a2b3f4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_a2b3f4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a3733f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a3733f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..626aa5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a3733f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a3733f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba16uint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_a3733f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_a3733f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_a3733f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a3f122.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a3f122.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d1e90f8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a3f122.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a3f122 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_a3f122
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_a3f122
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_a3f122
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a548a8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a548a8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8aa5c3e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a548a8.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a548a8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba8uint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_a548a8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_a548a8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_a548a8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a54e11.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a54e11.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9c0a2e0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a54e11.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a54e11 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_a54e11
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_a54e11
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_a54e11
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a583c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a583c9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3241c3a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a583c9.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a583c9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_multisampled_2d<f32> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_a583c9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_a583c9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_a583c9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a5c4e2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a5c4e2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..42c36f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a5c4e2.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a5c4e2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rg32uint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_a5c4e2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_a5c4e2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_a5c4e2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a5e0a5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a5e0a5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e458102
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a5e0a5.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a5e0a5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<r32float, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_a5e0a5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_a5e0a5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_a5e0a5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a64b1d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a64b1d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..52919a0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a64b1d.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a64b1d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba8unorm, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_a64b1d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_a64b1d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_a64b1d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a6a85a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a6a85a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a23a4c8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a6a85a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a6a85a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba8unorm, read> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_a6a85a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_a6a85a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_a6a85a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a6b61d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a6b61d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1714943
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a6b61d.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a6b61d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba32sint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_a6b61d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_a6b61d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_a6b61d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a7444c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a7444c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b954f21
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a7444c.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a7444c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba8uint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_a7444c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_a7444c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_a7444c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a7a3c3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a7a3c3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..08d0e1c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a7a3c3.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a7a3c3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba16sint, read> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_a7a3c3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_a7a3c3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_a7a3c3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a7bcb4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a7bcb4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a297486
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a7bcb4.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a7bcb4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba8snorm, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_a7bcb4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_a7bcb4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_a7bcb4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a7c171.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a7c171.wgsl.expected.ir.msl
new file mode 100644
index 0000000..81f000b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a7c171.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a7c171 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba16sint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_a7c171
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_a7c171
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_a7c171
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a8549b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a8549b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f33c28f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a8549b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a8549b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba32float, read> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_a8549b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_a8549b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_a8549b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a92b18.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a92b18.wgsl.expected.ir.msl
new file mode 100644
index 0000000..19e7f69
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a92b18.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a92b18 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_a92b18
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_a92b18
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_a92b18
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/a9a9f5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/a9a9f5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..192744d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/a9a9f5.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_a9a9f5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_3d<u32> = load %arg_0
+    %7:vec3<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_a9a9f5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_a9a9f5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_a9a9f5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/aa2579.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/aa2579.wgsl.expected.ir.msl
new file mode 100644
index 0000000..29d68e2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/aa2579.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_aa2579 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_aa2579
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_aa2579
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_aa2579
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/aa6130.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/aa6130.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e32de8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/aa6130.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_aa6130 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rg32sint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_aa6130
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_aa6130
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_aa6130
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/aa8a0d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/aa8a0d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f6f69f7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/aa8a0d.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_aa8a0d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba16uint, read> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_aa8a0d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_aa8a0d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_aa8a0d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/aae7f6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/aae7f6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c6690ea
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/aae7f6.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_aae7f6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<r32sint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_aae7f6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_aae7f6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_aae7f6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/aae9c3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/aae9c3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c29d202
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/aae9c3.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_aae9c3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_aae9c3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_aae9c3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_aae9c3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/ac64f7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/ac64f7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6c750d9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/ac64f7.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ac64f7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<bgra8unorm, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_ac64f7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_ac64f7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_ac64f7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/acf22f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/acf22f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..206343d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/acf22f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_acf22f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba16float, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_acf22f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_acf22f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_acf22f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/ad551e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/ad551e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5548d20
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/ad551e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ad551e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<r32uint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_ad551e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_ad551e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_ad551e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/aeae73.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/aeae73.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fe3d214
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/aeae73.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_aeae73 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<r32uint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_aeae73
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_aeae73
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_aeae73
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/aebc09.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/aebc09.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ab96512
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/aebc09.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_aebc09 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba16uint, read> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_aebc09
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_aebc09
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_aebc09
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/af0507.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/af0507.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5fac487
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/af0507.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_af0507 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_af0507
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_af0507
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_af0507
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/b1bf79.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/b1bf79.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3e82b8d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/b1bf79.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b1bf79 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba32sint, read> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_b1bf79
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_b1bf79
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_b1bf79
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/b1ca35.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/b1ca35.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e52ca83
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/b1ca35.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b1ca35 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_b1ca35
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_b1ca35
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_b1ca35
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/b24d27.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/b24d27.wgsl.expected.ir.msl
new file mode 100644
index 0000000..584eeb3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/b24d27.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b24d27 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba8sint, read> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_b24d27
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_b24d27
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_b24d27
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/b25644.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/b25644.wgsl.expected.ir.msl
new file mode 100644
index 0000000..23d3b47
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/b25644.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b25644 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_b25644
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_b25644
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_b25644
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/b27c33.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/b27c33.wgsl.expected.ir.msl
new file mode 100644
index 0000000..17c8bbf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/b27c33.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b27c33 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<r32sint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_b27c33
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_b27c33
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_b27c33
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/b29f71.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/b29f71.wgsl.expected.ir.msl
new file mode 100644
index 0000000..18b0178
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/b29f71.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b29f71 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<i32> = load %arg_0
+    %8:vec2<i32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:i32 = load %arg_3
+    %11:vec4<i32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<i32>, read_write> = var, %11
+    %13:vec4<i32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_b29f71
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_b29f71
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_b29f71
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/b4d6c4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/b4d6c4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f0ac28a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/b4d6c4.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b4d6c4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rg32float, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_b4d6c4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_b4d6c4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_b4d6c4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/b58c6d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/b58c6d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c8cd1da
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/b58c6d.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b58c6d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<r32float, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_b58c6d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_b58c6d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_b58c6d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/b60a86.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/b60a86.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1d179e2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/b60a86.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b60a86 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba32uint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_b60a86
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_b60a86
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_b60a86
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/b60db7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/b60db7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6429e20
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/b60db7.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b60db7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_b60db7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_b60db7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_b60db7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/b6ba5d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/b6ba5d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..69e5fb9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/b6ba5d.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b6ba5d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_depth_2d_array = load %arg_0
+    %8:vec2<u32> = load %arg_1
+    %9:i32 = load %arg_2
+    %10:i32 = load %arg_3
+    %11:f32 = textureLoad %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_b6ba5d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_b6ba5d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_b6ba5d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/b6c458.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/b6c458.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9addeb9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/b6c458.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b6c458 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba32uint, read> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_b6c458
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_b6c458
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_b6c458
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/b73f6b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/b73f6b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8e618fb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/b73f6b.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b73f6b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_2d<u32> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_b73f6b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_b73f6b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_b73f6b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/b75c8f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/b75c8f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e2cede
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/b75c8f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b75c8f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<r32sint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_b75c8f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_b75c8f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_b75c8f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/b75d4a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/b75d4a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c1c69ad
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/b75d4a.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b75d4a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_multisampled_2d<f32> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_b75d4a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_b75d4a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_b75d4a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/b7f74f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/b7f74f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8522dba
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/b7f74f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b7f74f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<bgra8unorm, read> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_b7f74f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_b7f74f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_b7f74f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/b80e7e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/b80e7e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3d85ed6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/b80e7e.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b80e7e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba16float, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_b80e7e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_b80e7e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_b80e7e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/b94d15.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/b94d15.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c513b14
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/b94d15.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_b94d15 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba8uint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_b94d15
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_b94d15
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_b94d15
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/ba023a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/ba023a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dd3e55d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/ba023a.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ba023a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_ba023a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_ba023a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_ba023a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/ba74b2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/ba74b2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fb3578c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/ba74b2.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ba74b2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_ba74b2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_ba74b2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_ba74b2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/babdf3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/babdf3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d9c4ae2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/babdf3.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_babdf3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba16uint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_babdf3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_babdf3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_babdf3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/bba04a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/bba04a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..09d1742
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/bba04a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_bba04a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rg32uint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_bba04a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_bba04a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_bba04a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/bbb762.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/bbb762.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6ea959b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/bbb762.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_bbb762 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba32sint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_bbb762
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_bbb762
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_bbb762
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/bc3201.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/bc3201.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ebc9a65
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/bc3201.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_bc3201 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_1d<u32> = load %arg_0
+    %7:u32 = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_bc3201
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_bc3201
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_bc3201
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/bcbb3c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/bcbb3c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..04d41b7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/bcbb3c.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_bcbb3c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_3d<f32> = load %arg_0
+    %7:vec3<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_bcbb3c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_bcbb3c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_bcbb3c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/bd990a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/bd990a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1b81911
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/bd990a.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_bd990a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_bd990a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_bd990a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_bd990a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/bdc67a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/bdc67a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8ad44e9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/bdc67a.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_bdc67a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_bdc67a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_bdc67a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_bdc67a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/bfd154.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/bfd154.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a92eb7d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/bfd154.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_bfd154 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<r32uint, read> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_bfd154
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_bfd154
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_bfd154
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c02b74.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c02b74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4aeae8f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c02b74.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c02b74 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba16float, read> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_c02b74
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_c02b74
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_c02b74
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c07013.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c07013.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c8aeb8d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c07013.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c07013 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<r32float, read> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_c07013
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_c07013
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_c07013
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c16e00.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c16e00.wgsl.expected.ir.msl
new file mode 100644
index 0000000..683f1d8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c16e00.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c16e00 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_depth_2d_array = load %arg_0
+    %8:vec2<i32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:i32 = load %arg_3
+    %11:f32 = textureLoad %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_c16e00
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_c16e00
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_c16e00
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c21b33.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c21b33.wgsl.expected.ir.msl
new file mode 100644
index 0000000..48cd461
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c21b33.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c21b33 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba32uint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_c21b33
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_c21b33
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_c21b33
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c2a480.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c2a480.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0330ca8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c2a480.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c2a480 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_2d<i32> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_c2a480
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_c2a480
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_c2a480
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c2d09a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c2d09a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..de4b30a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c2d09a.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c2d09a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_c2d09a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_c2d09a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_c2d09a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c378ee.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c378ee.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a877828
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c378ee.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c378ee = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_multisampled_2d<u32> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_c378ee
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_c378ee
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_c378ee
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c40dcb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c40dcb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..db756cd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c40dcb.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c40dcb = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba32uint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_c40dcb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_c40dcb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_c40dcb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c456bc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c456bc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7325fbf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c456bc.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c456bc = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<r32float, read> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_c456bc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_c456bc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_c456bc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c5791b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c5791b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eeb48e23
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c5791b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c5791b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba16sint, read> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_c5791b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_c5791b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_c5791b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c5c86d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c5c86d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3b1f8eb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c5c86d.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c5c86d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_c5c86d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_c5c86d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_c5c86d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c66b20.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c66b20.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e393c12
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c66b20.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c66b20 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<r32sint, read> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_c66b20
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_c66b20
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_c66b20
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c7cbed.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c7cbed.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9eb08a6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c7cbed.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c7cbed = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<r32float, read> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_c7cbed
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_c7cbed
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_c7cbed
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c7e313.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c7e313.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d06c61e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c7e313.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c7e313 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba32uint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_c7e313
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_c7e313
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_c7e313
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c80691.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c80691.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8c18199
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c80691.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c80691 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<r32sint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_c80691
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_c80691
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_c80691
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c8ed19.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c8ed19.wgsl.expected.ir.msl
new file mode 100644
index 0000000..83383da
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c8ed19.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c8ed19 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rg32uint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_c8ed19
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_c8ed19
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_c8ed19
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c98bf4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c98bf4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0f60c15
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c98bf4.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c98bf4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba8snorm, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_c98bf4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_c98bf4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_c98bf4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c9b083.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c9b083.wgsl.expected.ir.msl
new file mode 100644
index 0000000..453d5a9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c9b083.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c9b083 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_c9b083
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_c9b083
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_c9b083
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c9cc40.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c9cc40.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b8315b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c9cc40.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c9cc40 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba8sint, read> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_c9cc40
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_c9cc40
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_c9cc40
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/c9f310.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/c9f310.wgsl.expected.ir.msl
new file mode 100644
index 0000000..585b610
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/c9f310.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_c9f310 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<r32sint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_c9f310
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_c9f310
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_c9f310
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/cac876.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/cac876.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eaf0a97
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/cac876.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_cac876 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba32sint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_cac876
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_cac876
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_cac876
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/cad5f2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/cad5f2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8f45d7c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/cad5f2.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_cad5f2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_multisampled_2d<u32> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_cad5f2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_cad5f2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_cad5f2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/cb57c2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/cb57c2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4d9a0be
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/cb57c2.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_cb57c2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_depth_2d_array = load %arg_0
+    %8:vec2<u32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:i32 = load %arg_3
+    %11:f32 = textureLoad %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_cb57c2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_cb57c2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_cb57c2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/cdbcf6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/cdbcf6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8a91de8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/cdbcf6.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_cdbcf6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_cdbcf6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_cdbcf6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_cdbcf6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/cdccd2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/cdccd2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..03a7f1b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/cdccd2.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_cdccd2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_cdccd2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_cdccd2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_cdccd2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/cdd343.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/cdd343.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0e11c34
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/cdd343.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_cdd343 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba32uint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_cdd343
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_cdd343
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_cdd343
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/cddf6b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/cddf6b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5b77e90
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/cddf6b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_cddf6b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba8unorm, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_cddf6b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_cddf6b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_cddf6b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/cec477.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/cec477.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0f9f7d1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/cec477.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_cec477 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<r32sint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_cec477
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_cec477
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_cec477
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/d02afc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/d02afc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..72ab7d0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/d02afc.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d02afc = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba32sint, read> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_d02afc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_d02afc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_d02afc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/d0e351.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/d0e351.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4517ebd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/d0e351.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d0e351 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_d0e351
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_d0e351
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_d0e351
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/d357bb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/d357bb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6b59bd7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/d357bb.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d357bb = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<bgra8unorm, read> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_d357bb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_d357bb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_d357bb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/d37a08.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/d37a08.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c77b46b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/d37a08.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d37a08 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_d37a08
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_d37a08
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_d37a08
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/d3d8fc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/d3d8fc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..af4b81d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/d3d8fc.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d3d8fc = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_d3d8fc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_d3d8fc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_d3d8fc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/d41c72.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/d41c72.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5101d84
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/d41c72.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d41c72 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rg32sint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_d41c72
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_d41c72
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_d41c72
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/d4df19.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/d4df19.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e93aec1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/d4df19.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d4df19 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<r32uint, read> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_d4df19
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_d4df19
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_d4df19
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/d5c48d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/d5c48d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6ef852f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/d5c48d.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d5c48d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba32float, read> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_d5c48d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_d5c48d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_d5c48d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/d72de9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/d72de9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3575a81
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/d72de9.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d72de9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba8sint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_d72de9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_d72de9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_d72de9
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/d7996a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/d7996a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdf74fe
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/d7996a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d7996a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba32sint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_d7996a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_d7996a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_d7996a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/d79c5c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/d79c5c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e69511c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/d79c5c.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d79c5c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba16uint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_d79c5c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_d79c5c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_d79c5c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/d80ff3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/d80ff3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c074d8d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/d80ff3.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d80ff3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<bgra8unorm, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_d80ff3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_d80ff3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_d80ff3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/d81c57.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/d81c57.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5cb1342
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/d81c57.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d81c57 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rg32float, read> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_d81c57
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_d81c57
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_d81c57
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/d85d61.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/d85d61.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b8bda72
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/d85d61.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d85d61 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba32uint, read> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_d85d61
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_d85d61
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_d85d61
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/d8617f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/d8617f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aa442f6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/d8617f.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d8617f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rg32sint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_d8617f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_d8617f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_d8617f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/d8be5a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/d8be5a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3169078
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/d8be5a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d8be5a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba16sint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_d8be5a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_d8be5a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_d8be5a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/d91f37.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/d91f37.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3b00b3c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/d91f37.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_d91f37 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_d91f37
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_d91f37
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_d91f37
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/dab04f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/dab04f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f4bcfec
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/dab04f.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_dab04f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_dab04f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_dab04f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_dab04f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/dbd554.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/dbd554.wgsl.expected.ir.msl
new file mode 100644
index 0000000..00a6875
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/dbd554.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_dbd554 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba32sint, read> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_dbd554
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_dbd554
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_dbd554
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/dd5859.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/dd5859.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0f5ca15
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/dd5859.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_dd5859 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_dd5859
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_dd5859
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_dd5859
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/dd8776.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/dd8776.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f6a69b0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/dd8776.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_dd8776 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rg32float, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_dd8776
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_dd8776
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_dd8776
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/ddeed3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/ddeed3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dae3837
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/ddeed3.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ddeed3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba32sint, read> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_ddeed3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_ddeed3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_ddeed3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/de5a0e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/de5a0e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3d75a46
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/de5a0e.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_de5a0e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_de5a0e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_de5a0e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_de5a0e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/dee8e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/dee8e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a1b9342
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/dee8e7.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_dee8e7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba8sint, read> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_dee8e7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_dee8e7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_dee8e7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/defd9a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/defd9a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2ec830d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/defd9a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_defd9a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rg32float, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_defd9a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_defd9a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_defd9a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/dfdf3b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/dfdf3b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eaaddd5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/dfdf3b.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_dfdf3b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba8sint, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_dfdf3b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_dfdf3b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_dfdf3b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/e1c3cf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/e1c3cf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..594d5a9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/e1c3cf.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e1c3cf = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba16float, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_e1c3cf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_e1c3cf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_e1c3cf
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/e2292f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/e2292f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1c9efe4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/e2292f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e2292f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<r32sint, read> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_e2292f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_e2292f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_e2292f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/e2b3a1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/e2b3a1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..506c4ff8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/e2b3a1.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e2b3a1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_e2b3a1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_e2b3a1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_e2b3a1
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/e2d7da.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/e2d7da.wgsl.expected.ir.msl
new file mode 100644
index 0000000..713a308
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/e2d7da.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e2d7da = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_e2d7da
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_e2d7da
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_e2d7da
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/e33285.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/e33285.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aa75a77
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/e33285.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e33285 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba16sint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_e33285
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_e33285
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_e33285
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/e35f72.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/e35f72.wgsl.expected.ir.msl
new file mode 100644
index 0000000..016d7fc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/e35f72.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e35f72 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_3d<i32> = load %arg_0
+    %7:vec3<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_e35f72
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_e35f72
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_e35f72
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/e3b08b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/e3b08b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..00c1a0c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/e3b08b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e3b08b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<r32float, read> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_e3b08b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_e3b08b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_e3b08b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/e3d2cc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/e3d2cc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2f48176
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/e3d2cc.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e3d2cc = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_multisampled_2d<i32> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_e3d2cc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_e3d2cc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_e3d2cc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/e57e92.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/e57e92.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4cd1772
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/e57e92.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e57e92 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<bgra8unorm, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_e57e92
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_e57e92
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_e57e92
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/e59fdf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/e59fdf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eb1ce5d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/e59fdf.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e59fdf = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rg32uint, read> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_e59fdf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_e59fdf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_e59fdf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/e65916.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/e65916.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6e14ac2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/e65916.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e65916 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rg32sint, read> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_e65916
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_e65916
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_e65916
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/e893d7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/e893d7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e996d92
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/e893d7.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e893d7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba16float, read> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_e893d7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_e893d7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_e893d7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/e92dd0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/e92dd0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..82bce93
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/e92dd0.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e92dd0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba8unorm, read> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_e92dd0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_e92dd0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_e92dd0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/e9eb65.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/e9eb65.wgsl.expected.ir.msl
new file mode 100644
index 0000000..03c0535
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/e9eb65.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_e9eb65 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_e9eb65
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_e9eb65
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_e9eb65
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/ea2abd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/ea2abd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b83e8b9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/ea2abd.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ea2abd = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba32float, read> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_ea2abd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_ea2abd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_ea2abd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/eb573b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/eb573b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a29096b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/eb573b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_eb573b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<r32sint, read> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_eb573b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_eb573b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_eb573b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/ebfb92.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/ebfb92.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4647df6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/ebfb92.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ebfb92 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_2d<u32> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_ebfb92
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_ebfb92
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_ebfb92
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/ecc823.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/ecc823.wgsl.expected.ir.msl
new file mode 100644
index 0000000..006a24e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/ecc823.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ecc823 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<rgba16uint, read> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_ecc823
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_ecc823
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_ecc823
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/ed55a8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/ed55a8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9d391f7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/ed55a8.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ed55a8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_ed55a8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_ed55a8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_ed55a8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/ee33c5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/ee33c5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..18b2ba1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/ee33c5.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ee33c5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %5:texture_storage_3d<rgba16sint, read> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_ee33c5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_ee33c5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_ee33c5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/eecf7d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/eecf7d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..310adea
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/eecf7d.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_eecf7d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rg32uint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_eecf7d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_eecf7d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_eecf7d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/ef2ec3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/ef2ec3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..52258e5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/ef2ec3.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ef2ec3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rg32sint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_ef2ec3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_ef2ec3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_ef2ec3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/ef5405.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/ef5405.wgsl.expected.ir.msl
new file mode 100644
index 0000000..625c343
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/ef5405.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ef5405 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rg32uint, read> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_ef5405
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_ef5405
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_ef5405
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/efa787.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/efa787.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ec0855f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/efa787.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_efa787 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba8unorm, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_efa787
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_efa787
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_efa787
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f0514a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f0514a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..44b32bb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f0514a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f0514a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba32float, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_f0514a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_f0514a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_f0514a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f06b69.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f06b69.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1500ca1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f06b69.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f06b69 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<r32sint, read> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_f06b69
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_f06b69
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_f06b69
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f0abad.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f0abad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..51ddfe2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f0abad.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f0abad = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_multisampled_2d<f32> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_f0abad
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_f0abad
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_f0abad
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f1c549.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f1c549.wgsl.expected.ir.msl
new file mode 100644
index 0000000..24482f2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f1c549.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f1c549 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<r32float, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_f1c549
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_f1c549
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_f1c549
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f2a7ff.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f2a7ff.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b276e1b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f2a7ff.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f2a7ff = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba8unorm, read> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_f2a7ff
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_f2a7ff
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_f2a7ff
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f2c311.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f2c311.wgsl.expected.ir.msl
new file mode 100644
index 0000000..46bf7ca
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f2c311.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f2c311 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_f2c311
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_f2c311
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_f2c311
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f348d9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f348d9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..09b89e3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f348d9.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f348d9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<f32> = load %arg_0
+    %8:vec2<u32> = load %arg_1
+    %9:u32 = load %arg_2
+    %10:i32 = load %arg_3
+    %11:vec4<f32> = textureLoad %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_f348d9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_f348d9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_f348d9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f35ac7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f35ac7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..df04a6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f35ac7.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f35ac7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba8sint, read> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_f35ac7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_f35ac7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_f35ac7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f379e2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f379e2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9eb46ec
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f379e2.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f379e2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba8unorm, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_f379e2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_f379e2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_f379e2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f56e6f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f56e6f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e08aa2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f56e6f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f56e6f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba16uint, read> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_f56e6f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_f56e6f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_f56e6f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f5fbc6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f5fbc6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..96aa29b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f5fbc6.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f5fbc6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_f5fbc6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_f5fbc6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_f5fbc6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f74bd8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f74bd8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d034382
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f74bd8.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f74bd8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rg32float, read> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_f74bd8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_f74bd8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_f74bd8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f7f3bc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f7f3bc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0842f8f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f7f3bc.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f7f3bc = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba8snorm, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_f7f3bc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_f7f3bc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_f7f3bc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f7f936.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f7f936.wgsl.expected.ir.msl
new file mode 100644
index 0000000..083f37c9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f7f936.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f7f936 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba8snorm, read> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_f7f936
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_f7f936
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_f7f936
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f81792.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f81792.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a473af6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f81792.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f81792 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_f81792
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_f81792
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_f81792
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f82eb2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f82eb2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7dc4d77
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f82eb2.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f82eb2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba32float, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_f82eb2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_f82eb2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_f82eb2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f85291.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f85291.wgsl.expected.ir.msl
new file mode 100644
index 0000000..46da90a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f85291.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f85291 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_2d<i32> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_f85291
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_f85291
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_f85291
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f8a2e8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f8a2e8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eceb01b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f8a2e8.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f8a2e8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<bgra8unorm, read> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_f8a2e8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_f8a2e8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_f8a2e8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f92c2d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f92c2d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d04f7a5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f92c2d.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f92c2d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %5:texture_storage_2d<r32float, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_f92c2d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_f92c2d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_f92c2d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/f9eaaf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/f9eaaf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6a6d961
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/f9eaaf.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_f9eaaf = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %5:texture_storage_1d<rgba16sint, read> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_f9eaaf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_f9eaaf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_f9eaaf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/fc47ff.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/fc47ff.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b427a65
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/fc47ff.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_fc47ff = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba8sint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<i32> = textureLoad %5, %6
+    %res:ptr<function, vec4<i32>, read_write> = var, %7
+    %9:vec4<i32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_fc47ff
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_fc47ff
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_fc47ff
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/fc6d36.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/fc6d36.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c505d38
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/fc6d36.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<i32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_fc6d36 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba16sint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<i32>, read_write> = var, %9
+    %11:vec4<i32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_fc6d36
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_fc6d36
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_fc6d36
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/fcd23d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/fcd23d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c4cc918
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/fcd23d.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_multisampled_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_fcd23d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_depth_multisampled_2d = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:f32 = textureLoad %6, %7, %8
+    %res:ptr<function, f32, read_write> = var, %9
+    %11:f32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_fcd23d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_fcd23d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_fcd23d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/fd6442.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/fd6442.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b2a241e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/fd6442.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_fd6442 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %5:texture_storage_2d<rgba8uint, read> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<u32> = textureLoad %5, %6
+    %res:ptr<function, vec4<u32>, read_write> = var, %7
+    %9:vec4<u32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_fd6442
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_fd6442
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_fd6442
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/fd9606.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/fd9606.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a585ea5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/fd9606.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_fd9606 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_fd9606
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_fd9606
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_fd9606
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/fdebd0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/fdebd0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..888bcaa
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/fdebd0.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_fdebd0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_storage_2d_array<rgba8uint, read> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_fdebd0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_fdebd0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_fdebd0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/fe0565.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/fe0565.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6aa62aa
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/fe0565.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_fe0565 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %6:texture_multisampled_2d<u32> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_fe0565
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_fe0565
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_fe0565
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/fe222a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/fe222a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9e35e1d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/fe222a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_fe222a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %5:texture_storage_1d<rgba8snorm, read> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_fe222a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_fe222a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_fe222a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/fe2c1b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/fe2c1b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..abafe22
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/fe2c1b.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<u32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_fe2c1b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %6:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = textureLoad %6, %7, %8
+    %res:ptr<function, vec4<u32>, read_write> = var, %9
+    %11:vec4<u32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureLoad_fe2c1b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureLoad_fe2c1b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureLoad_fe2c1b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/feab99.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/feab99.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c164576
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/feab99.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_feab99 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %5:texture_storage_3d<rgba16float, read> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = textureLoad %5, %6
+    %res:ptr<function, vec4<f32>, read_write> = var, %7
+    %9:vec4<f32> = load %res
+    store %prevent_dce, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %11:void = call %textureLoad_feab99
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %13:void = call %textureLoad_feab99
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %15:void = call %textureLoad_feab99
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureLoad/ff1119.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureLoad/ff1119.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c50fce5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureLoad/ff1119.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureLoad_ff1119 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_depth_2d_array = load %arg_0
+    %8:vec2<i32> = load %arg_1
+    %9:i32 = load %arg_2
+    %10:u32 = load %arg_3
+    %11:f32 = textureLoad %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureLoad_ff1119
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureLoad_ff1119
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureLoad_ff1119
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f07b440
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_014a3b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_014a3b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_014a3b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_014a3b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..39a1614
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_071ebc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_071ebc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_071ebc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_071ebc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..199f16d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_0856ae = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_0856ae
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_0856ae
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_0856ae
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b7bbc4a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_0ec222 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<f32> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_0ec222
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_0ec222
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_0ec222
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/0fe8dc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/0fe8dc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e777301
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/0fe8dc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_0fe8dc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_0fe8dc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_0fe8dc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_0fe8dc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f1bf0ef
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_17ccad = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_17ccad
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_17ccad
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_17ccad
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/1f858a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/1f858a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0c3ea76
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/1f858a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_1f858a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_1f858a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_1f858a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_1f858a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ea559ad
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_24d572 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_24d572
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_24d572
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_24d572
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/26c9f9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/26c9f9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f3e96cd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/26c9f9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_26c9f9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_26c9f9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_26c9f9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_26c9f9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7606d4e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_2a48dc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_2a48dc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_2a48dc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_2a48dc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/2d95ea.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/2d95ea.wgsl.expected.ir.msl
new file mode 100644
index 0000000..495e07f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/2d95ea.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_2d95ea = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32uint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_2d95ea
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_2d95ea
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_2d95ea
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3b10bb9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_327d70 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_327d70
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_327d70
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_327d70
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c7106f5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_32ca10 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_32ca10
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_32ca10
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_32ca10
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.ir.msl
new file mode 100644
index 0000000..58361e2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_3465ec = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_3465ec
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_3465ec
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_3465ec
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a33f6a5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_34cefa = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<f32> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_34cefa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_34cefa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_34cefa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3c817e5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_3580ab = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_3580ab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_3580ab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_3580ab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/379cc5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/379cc5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..af207db
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/379cc5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_379cc5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_379cc5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_379cc5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_379cc5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5056c30
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_37bc8a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_37bc8a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_37bc8a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_37bc8a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3e993fe
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_380a60 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_380a60
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_380a60
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_380a60
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/3ad143.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/3ad143.wgsl.expected.ir.msl
new file mode 100644
index 0000000..26fba61
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/3ad143.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_3ad143 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_3ad143
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_3ad143
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_3ad143
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/3eff89.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/3eff89.wgsl.expected.ir.msl
new file mode 100644
index 0000000..38745b3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/3eff89.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_3eff89 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_3eff89
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_3eff89
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_3eff89
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/485774.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/485774.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b6a1cd2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/485774.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_485774 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_485774
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_485774
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_485774
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.ir.msl
new file mode 100644
index 0000000..27ba8af
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_48ef47 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_cube_array = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_48ef47
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_48ef47
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_48ef47
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/4adaad.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/4adaad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..87c7bed
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/4adaad.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_4adaad = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_4adaad
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_4adaad
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_4adaad
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f4ea374
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_4c4333 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_4c4333
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_4c4333
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_4c4333
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b362d6b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_520086 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_520086
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_520086
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_520086
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/52dfc5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/52dfc5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8a7c43b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/52dfc5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_52dfc5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_52dfc5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_52dfc5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_52dfc5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.ir.msl
new file mode 100644
index 0000000..684d552
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_54a654 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_54a654
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_54a654
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_54a654
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/555f67.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/555f67.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b88e37e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/555f67.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_555f67 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16uint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_555f67
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_555f67
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_555f67
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.ir.msl
new file mode 100644
index 0000000..08f8255
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_59eb57 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_59eb57
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_59eb57
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_59eb57
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9aa6417
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_5ee8f2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_5ee8f2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_5ee8f2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_5ee8f2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/5f20d1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/5f20d1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6be5a60
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/5f20d1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_5f20d1 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_5f20d1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_5f20d1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_5f20d1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5275648
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_61bd23 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_61bd23
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_61bd23
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_61bd23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8d48fda
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_622aa2 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_622aa2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_622aa2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_622aa2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f6ad1e9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_6b4321 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<i32> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_6b4321
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_6b4321
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_6b4321
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a422cd9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_6da0eb = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_6da0eb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_6da0eb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_6da0eb
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b885127
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_77be7b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<i32> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_77be7b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_77be7b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_77be7b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/7895f4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/7895f4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..77f5aae
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/7895f4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_7895f4 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_7895f4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_7895f4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_7895f4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f28162b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_7f28cf = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_7f28cf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_7f28cf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_7f28cf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.ir.msl
new file mode 100644
index 0000000..522fa8a6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_878dea = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8sint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_878dea
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_878dea
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_878dea
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1ad65ca
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_87faad = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32uint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_87faad
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_87faad
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_87faad
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eea2924
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_8ac32a = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<u32> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_8ac32a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_8ac32a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_8ac32a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3d169ea
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_8bd987 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_8bd987
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_8bd987
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_8bd987
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a3cad19
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_8dbf23 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8unorm, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_8dbf23
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_8dbf23
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_8dbf23
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..75282c7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_8e1bd0 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_8e1bd0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_8e1bd0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_8e1bd0
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/90b8cc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/90b8cc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..513199b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/90b8cc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_90b8cc = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32float, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_90b8cc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_90b8cc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_90b8cc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8f213e7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_9695c6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_9695c6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_9695c6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_9695c6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bfb3eb0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_98a9cf = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_98a9cf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_98a9cf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_98a9cf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/9c60e3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/9c60e3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c6ae270
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/9c60e3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_9c60e3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32uint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_9c60e3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_9c60e3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_9c60e3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.ir.msl
new file mode 100644
index 0000000..74486de
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_a54655 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_a54655
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_a54655
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_a54655
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..96c917c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_a9d3f5 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d_array = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_a9d3f5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_a9d3f5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_a9d3f5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/bf2f76.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/bf2f76.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8f67ad1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/bf2f76.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_bf2f76 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rg32sint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_bf2f76
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_bf2f76
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_bf2f76
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2b54222
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_c1eca9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<u32> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_c1eca9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_c1eca9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_c1eca9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/d3e21f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/d3e21f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..71cac35
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/d3e21f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_d3e21f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8uint, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_d3e21f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_d3e21f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_d3e21f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e75a181
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_d3f655 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_d3f655
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_d3f655
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_d3f655
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e8263ac
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_d75a0b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba32float, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_d75a0b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_d75a0b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_d75a0b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d41bdd9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_de8087 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16sint, write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_de8087
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_de8087
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_de8087
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8fc96fb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_e47aac = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_e47aac
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_e47aac
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_e47aac
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLayers/f1783f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLayers/f1783f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e882280
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/f1783f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLayers_f1783f = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_storage_2d_array<rgba16float, read> = load %arg_0
+    %5:u32 = textureNumLayers %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLayers_f1783f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLayers_f1783f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLayers_f1783f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/181090.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/181090.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e02dce7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/181090.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_181090 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<u32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_181090
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_181090
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_181090
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/1a3fa9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/1a3fa9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d969be1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/1a3fa9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_1a3fa9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<i32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_1a3fa9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_1a3fa9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_1a3fa9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/1a7fc3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/1a7fc3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..45cb73e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/1a7fc3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_1a7fc3 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<u32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_1a7fc3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_1a7fc3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_1a7fc3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/2267d8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/2267d8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a3bd139
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/2267d8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_2267d8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube<i32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_2267d8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_2267d8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_2267d8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/24b2c6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/24b2c6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bf578a3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/24b2c6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_24b2c6 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<f32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_24b2c6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_24b2c6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_24b2c6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/2bea6c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/2bea6c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bfb1bda
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/2bea6c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_2bea6c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_cube_array = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_2bea6c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_2bea6c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_2bea6c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/2df1ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/2df1ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..22b80d2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/2df1ab.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_2df1ab = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube<f32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_2df1ab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_2df1ab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_2df1ab
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/46dbd8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/46dbd8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b1901b9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/46dbd8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_46dbd8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<f32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_46dbd8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_46dbd8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_46dbd8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/60d9b8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/60d9b8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e1b3d63
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/60d9b8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_60d9b8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<u32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_60d9b8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_60d9b8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_60d9b8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/903920.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/903920.wgsl.expected.ir.msl
new file mode 100644
index 0000000..295ff41
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/903920.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_903920 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<i32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_903920
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_903920
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_903920
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/9a1a65.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/9a1a65.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cba68a8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/9a1a65.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_9a1a65 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<i32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_9a1a65
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_9a1a65
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_9a1a65
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/adc783.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/adc783.wgsl.expected.ir.msl
new file mode 100644
index 0000000..808c9f2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/adc783.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_adc783 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d_array<i32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_adc783
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_adc783
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_adc783
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/ae911c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/ae911c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f53d7df
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/ae911c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_ae911c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d_array = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_ae911c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_ae911c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_ae911c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/c386c8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/c386c8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b27413e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/c386c8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_c386c8 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube<u32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_c386c8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_c386c8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_c386c8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/c399f9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/c399f9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aeff09d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/c399f9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_c399f9 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<f32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_c399f9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_c399f9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_c399f9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/c8c25c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/c8c25c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..920460e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/c8c25c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_c8c25c = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_cube = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_c8c25c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_c8c25c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_c8c25c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/d63126.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/d63126.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9888865
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/d63126.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_d63126 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_2d = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_d63126
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_d63126
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_d63126
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/d8f73b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/d8f73b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dedca70
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/d8f73b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_d8f73b = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<f32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_d8f73b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_d8f73b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_d8f73b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/ef7944.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/ef7944.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2c3b05b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/ef7944.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_ef7944 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_3d<f32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_ef7944
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_ef7944
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_ef7944
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/efd6df.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/efd6df.wgsl.expected.ir.msl
new file mode 100644
index 0000000..687d98f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/efd6df.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_efd6df = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_2d<u32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_efd6df
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_efd6df
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_efd6df
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/f742c0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/f742c0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3c05d08
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/f742c0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_f742c0 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_1d<i32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_f742c0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_f742c0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_f742c0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumLevels/fe2171.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumLevels/fe2171.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e39e952
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLevels/fe2171.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumLevels_fe2171 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_cube_array<u32> = load %arg_0
+    %5:u32 = textureNumLevels %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumLevels_fe2171
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumLevels_fe2171
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumLevels_fe2171
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumSamples/50f399.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumSamples/50f399.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dd2dc07
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumSamples/50f399.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<u32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumSamples_50f399 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<u32> = load %arg_0
+    %5:u32 = textureNumSamples %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumSamples_50f399
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumSamples_50f399
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumSamples_50f399
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumSamples/c1a777.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumSamples/c1a777.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28de74c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumSamples/c1a777.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<i32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumSamples_c1a777 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<i32> = load %arg_0
+    %5:u32 = textureNumSamples %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumSamples_c1a777
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumSamples_c1a777
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumSamples_c1a777
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumSamples/dbb799.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumSamples/dbb799.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b12692e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumSamples/dbb799.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_multisampled_2d<f32>, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumSamples_dbb799 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_multisampled_2d<f32> = load %arg_0
+    %5:u32 = textureNumSamples %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumSamples_dbb799
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumSamples_dbb799
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumSamples_dbb799
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureNumSamples/ecd321.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureNumSamples/ecd321.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2f8220e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumSamples/ecd321.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_multisampled_2d, read> = var @binding_point(1, 0)
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%textureNumSamples_ecd321 = func():void -> %b2 {
+  %b2 = block {
+    %4:texture_depth_multisampled_2d = load %arg_0
+    %5:u32 = textureNumSamples %4
+    %res:ptr<function, u32, read_write> = var, %5
+    %7:u32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %textureNumSamples_ecd321
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %textureNumSamples_ecd321
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %textureNumSamples_ecd321
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/0dff6c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6a157a5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_0dff6c = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_depth_2d = load %arg_0
+    %7:sampler = load %arg_1
+    %8:vec2<f32> = load %arg_2
+    %9:f32 = textureSample %6, %7, %8, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %9
+    %11:f32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %13:void = call %textureSample_0dff6c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/17e988.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/17e988.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f71bbeb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/17e988.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_17e988 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<f32> = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:i32 = load %arg_3
+    %11:vec4<f32> = textureSample %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSample_17e988
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/193203.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/193203.wgsl.expected.ir.msl
new file mode 100644
index 0000000..247e037
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/193203.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_193203 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<f32> = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<f32> = textureSample %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSample_193203
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/1a4e1b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/1a4e1b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..73e76c9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/1a4e1b.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_1a4e1b = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_depth_2d_array = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:u32 = load %arg_3
+    %11:f32 = textureSample %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSample_1a4e1b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/2149ec.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/2149ec.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1be19d4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/2149ec.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_2149ec = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %6:texture_3d<f32> = load %arg_0
+    %7:sampler = load %arg_1
+    %8:vec3<f32> = load %arg_2
+    %9:vec4<f32> = textureSample %6, %7, %8, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %13:void = call %textureSample_2149ec
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/38bbb9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/38bbb9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2d4636f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/38bbb9.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_38bbb9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_depth_2d = load %arg_0
+    %7:sampler = load %arg_1
+    %8:vec2<f32> = load %arg_2
+    %9:f32 = textureSample %6, %7, %8
+    %res:ptr<function, f32, read_write> = var, %9
+    %11:f32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %13:void = call %textureSample_38bbb9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/3b50bd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/3b50bd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..94c7219
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/3b50bd.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_3b50bd = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %6:texture_3d<f32> = load %arg_0
+    %7:sampler = load %arg_1
+    %8:vec3<f32> = load %arg_2
+    %9:vec4<f32> = textureSample %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %13:void = call %textureSample_3b50bd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..864468c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_4703d0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_depth_2d_array = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:u32 = load %arg_3
+    %11:f32 = textureSample %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSample_4703d0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/4dd1bf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/4dd1bf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..be69544
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/4dd1bf.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_4dd1bf = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_cube_array<f32> = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec3<f32> = load %arg_2
+    %10:i32 = load %arg_3
+    %11:vec4<f32> = textureSample %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSample_4dd1bf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/51b514.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/51b514.wgsl.expected.ir.msl
new file mode 100644
index 0000000..33e5a75
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/51b514.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_51b514 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_2d<f32> = load %arg_0
+    %7:sampler = load %arg_1
+    %8:vec2<f32> = load %arg_2
+    %9:vec4<f32> = textureSample %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %13:void = call %textureSample_51b514
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8d84c86
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_60bf45 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_depth_2d_array = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:i32 = load %arg_3
+    %11:f32 = textureSample %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSample_60bf45
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/6717ca.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/6717ca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..08d25d1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/6717ca.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_6717ca = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_2d_array<f32> = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:i32 = load %arg_3
+    %11:vec4<f32> = textureSample %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSample_6717ca
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/6e64fb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/6e64fb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b18abfc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/6e64fb.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_1d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_6e64fb = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, f32, read_write> = var, 1.0f
+    %6:texture_1d<f32> = load %arg_0
+    %7:sampler = load %arg_1
+    %8:f32 = load %arg_2
+    %9:vec4<f32> = textureSample %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %13:void = call %textureSample_6e64fb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/7e9ffd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/7e9ffd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..131bdcc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/7e9ffd.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_7e9ffd = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_depth_2d_array = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:i32 = load %arg_3
+    %11:f32 = textureSample %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSample_7e9ffd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/7fd8cb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/7fd8cb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ef16143
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/7fd8cb.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_7fd8cb = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_depth_cube_array = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec3<f32> = load %arg_2
+    %10:u32 = load %arg_3
+    %11:f32 = textureSample %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSample_7fd8cb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/85c4ba.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/85c4ba.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7ed04c9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/85c4ba.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_85c4ba = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_2d<f32> = load %arg_0
+    %7:sampler = load %arg_1
+    %8:vec2<f32> = load %arg_2
+    %9:vec4<f32> = textureSample %6, %7, %8, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %13:void = call %textureSample_85c4ba
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/bc7477.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/bc7477.wgsl.expected.ir.msl
new file mode 100644
index 0000000..83fbe77
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/bc7477.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_bc7477 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_cube_array<f32> = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec3<f32> = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<f32> = textureSample %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSample_bc7477
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d3819bf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_c2f4e8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_depth_cube_array = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec3<f32> = load %arg_2
+    %10:i32 = load %arg_3
+    %11:f32 = textureSample %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSample_c2f4e8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/d6b281.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/d6b281.wgsl.expected.ir.msl
new file mode 100644
index 0000000..78759d0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/d6b281.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_d6b281 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_2d_array<f32> = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:u32 = load %arg_3
+    %11:vec4<f32> = textureSample %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSample_d6b281
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/e53267.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/e53267.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b25621c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/e53267.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_e53267 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %6:texture_cube<f32> = load %arg_0
+    %7:sampler = load %arg_1
+    %8:vec3<f32> = load %arg_2
+    %9:vec4<f32> = textureSample %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %13:void = call %textureSample_e53267
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSample/ea7030.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSample/ea7030.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d66da4a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSample/ea7030.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSample_ea7030 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %6:texture_depth_cube = load %arg_0
+    %7:sampler = load %arg_1
+    %8:vec3<f32> = load %arg_2
+    %9:f32 = textureSample %6, %7, %8
+    %res:ptr<function, f32, read_write> = var, %9
+    %11:f32 = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %13:void = call %textureSample_ea7030
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9c80f47
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:626 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_external, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBaseClampToEdge_7c04e6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_external = load %arg_0
+    %7:sampler = load %arg_1
+    %8:vec2<f32> = load %arg_2
+    %9:vec4<f32> = textureSampleBaseClampToEdge %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureSampleBaseClampToEdge_7c04e6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureSampleBaseClampToEdge_7c04e6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureSampleBaseClampToEdge_7c04e6
+    ret
+  }
+}
+
+Multiplanar external texture transform was not run.
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dbe9f6d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.msl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBaseClampToEdge_9ca02c = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %6:texture_2d<f32> = load %arg_0
+    %7:sampler = load %arg_1
+    %8:vec2<f32> = load %arg_2
+    %9:vec4<f32> = textureSampleBaseClampToEdge %6, %7, %8
+    %res:ptr<function, vec4<f32>, read_write> = var, %9
+    %11:vec4<f32> = load %res
+    store %prevent_dce, %11
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %13:void = call %textureSampleBaseClampToEdge_9ca02c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %15:void = call %textureSampleBaseClampToEdge_9ca02c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %textureSampleBaseClampToEdge_9ca02c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleBias/1c707e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleBias/1c707e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ff26f4c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleBias/1c707e.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_1c707e = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_2d_array<f32> = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:vec4<f32> = textureSampleBias %8, %9, %10, %11, %12
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleBias_1c707e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleBias/53b9f7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleBias/53b9f7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c9037ee
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleBias/53b9f7.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_53b9f7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, f32, read_write> = var, 1.0f
+    %7:texture_cube<f32> = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec3<f32> = load %arg_2
+    %10:f32 = load %arg_3
+    %11:vec4<f32> = textureSampleBias %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleBias_53b9f7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleBias/594824.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleBias/594824.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c2b670b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleBias/594824.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_594824 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, f32, read_write> = var, 1.0f
+    %7:texture_3d<f32> = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec3<f32> = load %arg_2
+    %10:f32 = load %arg_3
+    %11:vec4<f32> = textureSampleBias %7, %8, %9, %10, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleBias_594824
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleBias/6a9113.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleBias/6a9113.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5c72ee2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleBias/6a9113.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_6a9113 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, f32, read_write> = var, 1.0f
+    %7:texture_2d<f32> = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:f32 = load %arg_3
+    %11:vec4<f32> = textureSampleBias %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleBias_6a9113
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleBias/80e579.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleBias/80e579.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3f2e331
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleBias/80e579.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_80e579 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_2d_array<f32> = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:vec4<f32> = textureSampleBias %8, %9, %10, %11, %12
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleBias_80e579
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleBias/87915c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleBias/87915c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b9a76d8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleBias/87915c.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_87915c = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_2d_array<f32> = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:vec4<f32> = textureSampleBias %8, %9, %10, %11, %12, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleBias_87915c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleBias/9dbb51.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleBias/9dbb51.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e568faa
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleBias/9dbb51.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_9dbb51 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_2d_array<f32> = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:vec4<f32> = textureSampleBias %8, %9, %10, %11, %12, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleBias_9dbb51
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleBias/a161cf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleBias/a161cf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b1e1e67
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleBias/a161cf.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_a161cf = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, f32, read_write> = var, 1.0f
+    %7:texture_2d<f32> = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:f32 = load %arg_3
+    %11:vec4<f32> = textureSampleBias %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleBias_a161cf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleBias/c6953d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleBias/c6953d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5dcb6fa
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleBias/c6953d.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_c6953d = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_cube_array<f32> = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec3<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:vec4<f32> = textureSampleBias %8, %9, %10, %11, %12
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleBias_c6953d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleBias/d3fa1b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleBias/d3fa1b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f418c83
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleBias/d3fa1b.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_d3fa1b = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, f32, read_write> = var, 1.0f
+    %7:texture_3d<f32> = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec3<f32> = load %arg_2
+    %10:f32 = load %arg_3
+    %11:vec4<f32> = textureSampleBias %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleBias_d3fa1b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleBias/eed7c4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleBias/eed7c4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b7de122
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleBias/eed7c4.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleBias_eed7c4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_cube_array<f32> = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec3<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:vec4<f32> = textureSampleBias %8, %9, %10, %11, %12
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleBias_eed7c4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleCompare/1912e5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleCompare/1912e5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..56b252b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleCompare/1912e5.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompare_1912e5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_depth_cube_array = load %arg_0
+    %9:sampler_comparison = load %arg_1
+    %10:vec3<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:f32 = textureSampleCompare %8, %9, %10, %11, %12
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleCompare_1912e5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleCompare/3a5923.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleCompare/3a5923.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6add2d9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleCompare/3a5923.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompare_3a5923 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, f32, read_write> = var, 1.0f
+    %7:texture_depth_2d = load %arg_0
+    %8:sampler_comparison = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:f32 = load %arg_3
+    %11:f32 = textureSampleCompare %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleCompare_3a5923
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleCompare/63fb83.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleCompare/63fb83.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cba4568
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleCompare/63fb83.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompare_63fb83 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, f32, read_write> = var, 1.0f
+    %7:texture_depth_cube = load %arg_0
+    %8:sampler_comparison = load %arg_1
+    %9:vec3<f32> = load %arg_2
+    %10:f32 = load %arg_3
+    %11:f32 = textureSampleCompare %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleCompare_63fb83
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleCompare/7b5025.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleCompare/7b5025.wgsl.expected.ir.msl
new file mode 100644
index 0000000..88a6482
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleCompare/7b5025.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompare_7b5025 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler_comparison = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:f32 = textureSampleCompare %8, %9, %10, %11, %12, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleCompare_7b5025
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleCompare/90ae56.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleCompare/90ae56.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6a2223a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleCompare/90ae56.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompare_90ae56 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler_comparison = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:f32 = textureSampleCompare %8, %9, %10, %11, %12
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleCompare_90ae56
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleCompare/a3ca7e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleCompare/a3ca7e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7374ff6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleCompare/a3ca7e.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompare_a3ca7e = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_depth_cube_array = load %arg_0
+    %9:sampler_comparison = load %arg_1
+    %10:vec3<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:f32 = textureSampleCompare %8, %9, %10, %11, %12
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleCompare_a3ca7e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8da2568
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompare_af1051 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler_comparison = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:f32 = textureSampleCompare %8, %9, %10, %11, %12, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleCompare_af1051
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleCompare/dd431d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleCompare/dd431d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..04e4a07
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleCompare/dd431d.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompare_dd431d = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler_comparison = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:f32 = textureSampleCompare %8, %9, %10, %11, %12
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleCompare_dd431d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleCompare/dec064.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleCompare/dec064.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3f07e62
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleCompare/dec064.wgsl.expected.ir.msl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompare_dec064 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, f32, read_write> = var, 1.0f
+    %7:texture_depth_2d = load %arg_0
+    %8:sampler_comparison = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:f32 = load %arg_3
+    %11:f32 = textureSampleCompare %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%fragment_main = @fragment func():void -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleCompare_dec064
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleCompareLevel/1116ed.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleCompareLevel/1116ed.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eea99b5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/1116ed.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompareLevel_1116ed = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler_comparison = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:f32 = textureSampleCompareLevel %8, %9, %10, %11, %12
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleCompareLevel_1116ed
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleCompareLevel_1116ed
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleCompareLevel_1116ed
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleCompareLevel/1568e3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleCompareLevel/1568e3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b0e14e5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/1568e3.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompareLevel_1568e3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, f32, read_write> = var, 1.0f
+    %7:texture_depth_cube = load %arg_0
+    %8:sampler_comparison = load %arg_1
+    %9:vec3<f32> = load %arg_2
+    %10:f32 = load %arg_3
+    %11:f32 = textureSampleCompareLevel %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleCompareLevel_1568e3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureSampleCompareLevel_1568e3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureSampleCompareLevel_1568e3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleCompareLevel/2ad2b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleCompareLevel/2ad2b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7d7cf57
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/2ad2b1.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompareLevel_2ad2b1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, f32, read_write> = var, 1.0f
+    %7:texture_depth_2d = load %arg_0
+    %8:sampler_comparison = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:f32 = load %arg_3
+    %11:f32 = textureSampleCompareLevel %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleCompareLevel_2ad2b1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureSampleCompareLevel_2ad2b1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureSampleCompareLevel_2ad2b1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleCompareLevel/4cf3a2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleCompareLevel/4cf3a2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..642703a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/4cf3a2.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompareLevel_4cf3a2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_depth_cube_array = load %arg_0
+    %9:sampler_comparison = load %arg_1
+    %10:vec3<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:f32 = textureSampleCompareLevel %8, %9, %10, %11, %12
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleCompareLevel_4cf3a2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleCompareLevel_4cf3a2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleCompareLevel_4cf3a2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleCompareLevel/7dc3c0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleCompareLevel/7dc3c0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0e8fc6b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/7dc3c0.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompareLevel_7dc3c0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler_comparison = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:f32 = textureSampleCompareLevel %8, %9, %10, %11, %12
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleCompareLevel_7dc3c0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleCompareLevel_7dc3c0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleCompareLevel_7dc3c0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleCompareLevel/7f2b9a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleCompareLevel/7f2b9a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bbf191e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/7f2b9a.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompareLevel_7f2b9a = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, f32, read_write> = var, 1.0f
+    %7:texture_depth_2d = load %arg_0
+    %8:sampler_comparison = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:f32 = load %arg_3
+    %11:f32 = textureSampleCompareLevel %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleCompareLevel_7f2b9a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureSampleCompareLevel_7f2b9a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureSampleCompareLevel_7f2b9a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleCompareLevel/958c87.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleCompareLevel/958c87.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6fb9784
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/958c87.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompareLevel_958c87 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_depth_cube_array = load %arg_0
+    %9:sampler_comparison = load %arg_1
+    %10:vec3<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:f32 = textureSampleCompareLevel %8, %9, %10, %11, %12
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleCompareLevel_958c87
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleCompareLevel_958c87
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleCompareLevel_958c87
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9b3ec76
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompareLevel_b6e47c = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler_comparison = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:f32 = textureSampleCompareLevel %8, %9, %10, %11, %12, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleCompareLevel_b6e47c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleCompareLevel_b6e47c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleCompareLevel_b6e47c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleCompareLevel/bcb3dd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleCompareLevel/bcb3dd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0d2250e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/bcb3dd.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleCompareLevel_bcb3dd = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler_comparison = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:f32 = textureSampleCompareLevel %8, %9, %10, %11, %12, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleCompareLevel_bcb3dd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleCompareLevel_bcb3dd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleCompareLevel_bcb3dd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleGrad/21402b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleGrad/21402b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e470b5d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleGrad/21402b.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_21402b = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_4:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %8:texture_3d<f32> = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec3<f32> = load %arg_2
+    %11:vec3<f32> = load %arg_3
+    %12:vec3<f32> = load %arg_4
+    %13:vec4<f32> = textureSampleGrad %8, %9, %10, %11, %12
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleGrad_21402b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleGrad_21402b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleGrad_21402b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleGrad/2ecd8f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleGrad/2ecd8f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..524f775
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleGrad/2ecd8f.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_2ecd8f = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_5:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %9:texture_2d_array<f32> = load %arg_0
+    %10:sampler = load %arg_1
+    %11:vec2<f32> = load %arg_2
+    %12:i32 = load %arg_3
+    %13:vec2<f32> = load %arg_4
+    %14:vec2<f32> = load %arg_5
+    %15:vec4<f32> = textureSampleGrad %9, %10, %11, %12, %13, %14
+    %res:ptr<function, vec4<f32>, read_write> = var, %15
+    %17:vec4<f32> = load %res
+    store %prevent_dce, %17
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %19:void = call %textureSampleGrad_2ecd8f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %21:void = call %textureSampleGrad_2ecd8f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %23:void = call %textureSampleGrad_2ecd8f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleGrad/521263.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleGrad/521263.wgsl.expected.ir.msl
new file mode 100644
index 0000000..90d90cc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleGrad/521263.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_521263 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %8:texture_2d<f32> = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:vec2<f32> = load %arg_3
+    %12:vec2<f32> = load %arg_4
+    %13:vec4<f32> = textureSampleGrad %8, %9, %10, %11, %12
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleGrad_521263
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleGrad_521263
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleGrad_521263
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleGrad/5312f4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleGrad/5312f4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b0a22b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleGrad/5312f4.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_5312f4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_4:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %8:texture_cube<f32> = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec3<f32> = load %arg_2
+    %11:vec3<f32> = load %arg_3
+    %12:vec3<f32> = load %arg_4
+    %13:vec4<f32> = textureSampleGrad %8, %9, %10, %11, %12
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleGrad_5312f4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleGrad_5312f4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleGrad_5312f4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleGrad/5884dd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleGrad/5884dd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..178faed
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleGrad/5884dd.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_5884dd = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_4:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %8:texture_3d<f32> = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec3<f32> = load %arg_2
+    %11:vec3<f32> = load %arg_3
+    %12:vec3<f32> = load %arg_4
+    %13:vec4<f32> = textureSampleGrad %8, %9, %10, %11, %12, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleGrad_5884dd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleGrad_5884dd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleGrad_5884dd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleGrad/7cd6de.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleGrad/7cd6de.wgsl.expected.ir.msl
new file mode 100644
index 0000000..161721a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleGrad/7cd6de.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_7cd6de = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_5:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %9:texture_2d_array<f32> = load %arg_0
+    %10:sampler = load %arg_1
+    %11:vec2<f32> = load %arg_2
+    %12:u32 = load %arg_3
+    %13:vec2<f32> = load %arg_4
+    %14:vec2<f32> = load %arg_5
+    %15:vec4<f32> = textureSampleGrad %9, %10, %11, %12, %13, %14, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %15
+    %17:vec4<f32> = load %res
+    store %prevent_dce, %17
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %19:void = call %textureSampleGrad_7cd6de
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %21:void = call %textureSampleGrad_7cd6de
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %23:void = call %textureSampleGrad_7cd6de
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleGrad/a09131.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleGrad/a09131.wgsl.expected.ir.msl
new file mode 100644
index 0000000..16ffa35
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleGrad/a09131.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_a09131 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_5:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %9:texture_2d_array<f32> = load %arg_0
+    %10:sampler = load %arg_1
+    %11:vec2<f32> = load %arg_2
+    %12:u32 = load %arg_3
+    %13:vec2<f32> = load %arg_4
+    %14:vec2<f32> = load %arg_5
+    %15:vec4<f32> = textureSampleGrad %9, %10, %11, %12, %13, %14
+    %res:ptr<function, vec4<f32>, read_write> = var, %15
+    %17:vec4<f32> = load %res
+    store %prevent_dce, %17
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %19:void = call %textureSampleGrad_a09131
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %21:void = call %textureSampleGrad_a09131
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %23:void = call %textureSampleGrad_a09131
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleGrad/bbb58f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleGrad/bbb58f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d05dfe9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleGrad/bbb58f.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_bbb58f = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_5:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %9:texture_cube_array<f32> = load %arg_0
+    %10:sampler = load %arg_1
+    %11:vec3<f32> = load %arg_2
+    %12:u32 = load %arg_3
+    %13:vec3<f32> = load %arg_4
+    %14:vec3<f32> = load %arg_5
+    %15:vec4<f32> = textureSampleGrad %9, %10, %11, %12, %13, %14
+    %res:ptr<function, vec4<f32>, read_write> = var, %15
+    %17:vec4<f32> = load %res
+    store %prevent_dce, %17
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %19:void = call %textureSampleGrad_bbb58f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %21:void = call %textureSampleGrad_bbb58f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %23:void = call %textureSampleGrad_bbb58f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleGrad/d4e3c5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleGrad/d4e3c5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2d2681d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleGrad/d4e3c5.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_d4e3c5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_4:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %8:texture_2d<f32> = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:vec2<f32> = load %arg_3
+    %12:vec2<f32> = load %arg_4
+    %13:vec4<f32> = textureSampleGrad %8, %9, %10, %11, %12, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleGrad_d4e3c5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleGrad_d4e3c5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleGrad_d4e3c5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleGrad/d65515.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleGrad/d65515.wgsl.expected.ir.msl
new file mode 100644
index 0000000..433f747
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleGrad/d65515.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_d65515 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_5:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %9:texture_2d_array<f32> = load %arg_0
+    %10:sampler = load %arg_1
+    %11:vec2<f32> = load %arg_2
+    %12:i32 = load %arg_3
+    %13:vec2<f32> = load %arg_4
+    %14:vec2<f32> = load %arg_5
+    %15:vec4<f32> = textureSampleGrad %9, %10, %11, %12, %13, %14, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %15
+    %17:vec4<f32> = load %res
+    store %prevent_dce, %17
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %19:void = call %textureSampleGrad_d65515
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %21:void = call %textureSampleGrad_d65515
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %23:void = call %textureSampleGrad_d65515
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleGrad/e383db.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleGrad/e383db.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1df4cc9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleGrad/e383db.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleGrad_e383db = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_5:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %9:texture_cube_array<f32> = load %arg_0
+    %10:sampler = load %arg_1
+    %11:vec3<f32> = load %arg_2
+    %12:i32 = load %arg_3
+    %13:vec3<f32> = load %arg_4
+    %14:vec3<f32> = load %arg_5
+    %15:vec4<f32> = textureSampleGrad %9, %10, %11, %12, %13, %14
+    %res:ptr<function, vec4<f32>, read_write> = var, %15
+    %17:vec4<f32> = load %res
+    store %prevent_dce, %17
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %19:void = call %textureSampleGrad_e383db
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %21:void = call %textureSampleGrad_e383db
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %23:void = call %textureSampleGrad_e383db
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/02be59.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/02be59.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c907f33
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/02be59.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_02be59 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_depth_2d = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:i32 = load %arg_3
+    %11:f32 = textureSampleLevel %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleLevel_02be59
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureSampleLevel_02be59
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureSampleLevel_02be59
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/0b0a1b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/0b0a1b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e4ff2d3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/0b0a1b.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_0b0a1b = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, f32, read_write> = var, 1.0f
+    %7:texture_2d<f32> = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:f32 = load %arg_3
+    %11:vec4<f32> = textureSampleLevel %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleLevel_0b0a1b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureSampleLevel_0b0a1b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureSampleLevel_0b0a1b
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/0bdd9a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/0bdd9a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..464e098
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/0bdd9a.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_0bdd9a = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_cube_array<f32> = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec3<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:vec4<f32> = textureSampleLevel %8, %9, %10, %11, %12
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleLevel_0bdd9a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleLevel_0bdd9a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleLevel_0bdd9a
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.ir.msl
new file mode 100644
index 0000000..de4db7f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_1b0291 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_depth_cube = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec3<f32> = load %arg_2
+    %10:i32 = load %arg_3
+    %11:f32 = textureSampleLevel %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleLevel_1b0291
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureSampleLevel_1b0291
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureSampleLevel_1b0291
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f48961d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_1bf73e = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:i32 = load %arg_4
+    %13:f32 = textureSampleLevel %8, %9, %10, %11, %12
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleLevel_1bf73e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleLevel_1bf73e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleLevel_1bf73e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/265cc7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/265cc7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cbb4828
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/265cc7.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_265cc7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_2d_array<f32> = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:vec4<f32> = textureSampleLevel %8, %9, %10, %11, %12
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleLevel_265cc7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleLevel_265cc7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleLevel_265cc7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/2974eb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/2974eb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b8a3895
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/2974eb.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_2974eb = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:u32 = load %arg_4
+    %13:f32 = textureSampleLevel %8, %9, %10, %11, %12
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleLevel_2974eb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleLevel_2974eb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleLevel_2974eb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/302be4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/302be4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bdf94ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/302be4.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_302be4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_2d_array<f32> = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:vec4<f32> = textureSampleLevel %8, %9, %10, %11, %12
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleLevel_302be4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleLevel_302be4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleLevel_302be4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3b2e719
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_36780e = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:i32 = load %arg_4
+    %13:f32 = textureSampleLevel %8, %9, %10, %11, %12, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleLevel_36780e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleLevel_36780e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleLevel_36780e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f19ccb5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_36f0d3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:u32 = load %arg_4
+    %13:f32 = textureSampleLevel %8, %9, %10, %11, %12, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleLevel_36f0d3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleLevel_36f0d3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleLevel_36f0d3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/3c3442.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/3c3442.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b18400d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/3c3442.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_3c3442 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:i32 = load %arg_4
+    %13:f32 = textureSampleLevel %8, %9, %10, %11, %12
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleLevel_3c3442
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleLevel_3c3442
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleLevel_3c3442
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/615583.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/615583.wgsl.expected.ir.msl
new file mode 100644
index 0000000..442e1ff
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/615583.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_615583 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:u32 = load %arg_4
+    %13:f32 = textureSampleLevel %8, %9, %10, %11, %12
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleLevel_615583
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleLevel_615583
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleLevel_615583
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/73e892.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/73e892.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6d0c5ff
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/73e892.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_73e892 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_depth_2d = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:u32 = load %arg_3
+    %11:f32 = textureSampleLevel %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleLevel_73e892
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureSampleLevel_73e892
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureSampleLevel_73e892
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..70def53
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_749baf = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %7:texture_depth_2d = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:i32 = load %arg_3
+    %11:f32 = textureSampleLevel %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleLevel_749baf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureSampleLevel_749baf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureSampleLevel_749baf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/941a53.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/941a53.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6dc314e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/941a53.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_941a53 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %8:texture_depth_cube_array = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec3<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:u32 = load %arg_4
+    %13:f32 = textureSampleLevel %8, %9, %10, %11, %12
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleLevel_941a53
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleLevel_941a53
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleLevel_941a53
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/a12142.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/a12142.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e00a25e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/a12142.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_a12142 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %8:texture_depth_cube_array = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec3<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:u32 = load %arg_4
+    %13:f32 = textureSampleLevel %8, %9, %10, %11, %12
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleLevel_a12142
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleLevel_a12142
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleLevel_a12142
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/aab3b9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/aab3b9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ccc14bc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/aab3b9.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_aab3b9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_cube_array<f32> = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec3<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:vec4<f32> = textureSampleLevel %8, %9, %10, %11, %12
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleLevel_aab3b9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleLevel_aab3b9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleLevel_aab3b9
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/abfcc0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/abfcc0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..936a2b1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/abfcc0.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_abfcc0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, f32, read_write> = var, 1.0f
+    %7:texture_3d<f32> = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec3<f32> = load %arg_2
+    %10:f32 = load %arg_3
+    %11:vec4<f32> = textureSampleLevel %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleLevel_abfcc0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureSampleLevel_abfcc0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureSampleLevel_abfcc0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.ir.msl
new file mode 100644
index 0000000..24793c3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_ae5e39 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %8:texture_depth_cube_array = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec3<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:i32 = load %arg_4
+    %13:f32 = textureSampleLevel %8, %9, %10, %11, %12
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleLevel_ae5e39
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleLevel_ae5e39
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleLevel_ae5e39
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/ae92a2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/ae92a2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d762b04
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/ae92a2.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_ae92a2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_depth_cube = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec3<f32> = load %arg_2
+    %10:u32 = load %arg_3
+    %11:f32 = textureSampleLevel %7, %8, %9, %10
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleLevel_ae92a2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureSampleLevel_ae92a2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureSampleLevel_ae92a2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/b7c55c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/b7c55c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0ca40a5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/b7c55c.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_b7c55c = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, i32, read_write> = var, 1i
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_2d_array<f32> = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:i32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:vec4<f32> = textureSampleLevel %8, %9, %10, %11, %12, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleLevel_b7c55c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleLevel_b7c55c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleLevel_b7c55c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/c32df7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/c32df7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cd33e10
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/c32df7.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_cube<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_c32df7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, f32, read_write> = var, 1.0f
+    %7:texture_cube<f32> = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec3<f32> = load %arg_2
+    %10:f32 = load %arg_3
+    %11:vec4<f32> = textureSampleLevel %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleLevel_c32df7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureSampleLevel_c32df7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureSampleLevel_c32df7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/c6aca6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/c6aca6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1b4716a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/c6aca6.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_c6aca6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, f32, read_write> = var, 1.0f
+    %7:texture_2d<f32> = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:f32 = load %arg_3
+    %11:vec4<f32> = textureSampleLevel %7, %8, %9, %10
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleLevel_c6aca6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureSampleLevel_c6aca6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureSampleLevel_c6aca6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c7e7fb1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_cdfe0f = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, u32, read_write> = var, 1u
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:u32 = load %arg_4
+    %13:f32 = textureSampleLevel %8, %9, %10, %11, %12, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleLevel_cdfe0f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleLevel_cdfe0f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleLevel_cdfe0f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/dcbecb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/dcbecb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..030a1ff
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/dcbecb.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_dcbecb = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, f32, read_write> = var, 1.0f
+    %7:texture_3d<f32> = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec3<f32> = load %arg_2
+    %10:f32 = load %arg_3
+    %11:vec4<f32> = textureSampleLevel %7, %8, %9, %10, vec3<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %11
+    %13:vec4<f32> = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleLevel_dcbecb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureSampleLevel_dcbecb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureSampleLevel_dcbecb
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cb2bf4e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_e6ce9e = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %8:texture_depth_2d_array = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:i32 = load %arg_4
+    %13:f32 = textureSampleLevel %8, %9, %10, %11, %12, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleLevel_e6ce9e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleLevel_e6ce9e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleLevel_e6ce9e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/f3b2c8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/f3b2c8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8431ccf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/f3b2c8.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_2d, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_f3b2c8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %7:texture_depth_2d = load %arg_0
+    %8:sampler = load %arg_1
+    %9:vec2<f32> = load %arg_2
+    %10:u32 = load %arg_3
+    %11:f32 = textureSampleLevel %7, %8, %9, %10, vec2<i32>(1i)
+    %res:ptr<function, f32, read_write> = var, %11
+    %13:f32 = load %res
+    store %prevent_dce, %13
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %15:void = call %textureSampleLevel_f3b2c8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %17:void = call %textureSampleLevel_f3b2c8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %19:void = call %textureSampleLevel_f3b2c8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/faa6d7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/faa6d7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b531d2c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/faa6d7.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_2d_array<f32>, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_faa6d7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, f32, read_write> = var, 1.0f
+    %8:texture_2d_array<f32> = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec2<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:f32 = load %arg_4
+    %13:vec4<f32> = textureSampleLevel %8, %9, %10, %11, %12, vec2<i32>(1i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %13
+    %15:vec4<f32> = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleLevel_faa6d7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleLevel_faa6d7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleLevel_faa6d7
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureSampleLevel/ff11bc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureSampleLevel/ff11bc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3d29edc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureSampleLevel/ff11bc.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_depth_cube_array, read> = var @binding_point(1, 0)
+  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%textureSampleLevel_ff11bc = func():void -> %b2 {
+  %b2 = block {
+    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
+    %arg_3:ptr<function, u32, read_write> = var, 1u
+    %arg_4:ptr<function, i32, read_write> = var, 1i
+    %8:texture_depth_cube_array = load %arg_0
+    %9:sampler = load %arg_1
+    %10:vec3<f32> = load %arg_2
+    %11:u32 = load %arg_3
+    %12:i32 = load %arg_4
+    %13:f32 = textureSampleLevel %8, %9, %10, %11, %12
+    %res:ptr<function, f32, read_write> = var, %13
+    %15:f32 = load %res
+    store %prevent_dce, %15
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %17:void = call %textureSampleLevel_ff11bc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %19:void = call %textureSampleLevel_ff11bc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %textureSampleLevel_ff11bc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/031506.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1a457ea
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_031506 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_2d<r32float, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_031506
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_031506
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_031506
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..42b8f17
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_036d0e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_3d<rgba8unorm, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_036d0e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_036d0e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_036d0e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ca6e9b2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_03e7a0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_2d<rgba16uint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_03e7a0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_03e7a0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_03e7a0
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.ir.msl
new file mode 100644
index 0000000..20e90f3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_042b06 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_042b06
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_042b06
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_042b06
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d3c77e4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_052a4e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_1d<rgba8unorm, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_052a4e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_052a4e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_052a4e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/053664.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ba36418
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_053664 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_053664
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_053664
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_053664
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/068641.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a03a8a4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_09e4d5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_1d<bgra8unorm, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_09e4d5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_09e4d5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_09e4d5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..58978ec
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_0ade9a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_0ade9a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_0ade9a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_0ade9a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2a68fdb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_0ff97a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_0ff97a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_0ff97a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_0ff97a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/101325.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5446faa
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_101325 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_3d<rgba16uint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_101325
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_101325
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_101325
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/102722.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/145061.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3b7b742
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_145061 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_2d<rgba16uint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_145061
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_145061
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_145061
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.ir.msl
new file mode 100644
index 0000000..62804c9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_178e69 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_1d<bgra8unorm, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_178e69
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_178e69
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_178e69
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..79a688e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_195d1b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_3d<rgba32float, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_195d1b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_195d1b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_195d1b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/197637.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6517c8e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_197637 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_1d<rgba32float, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_197637
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_197637
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_197637
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5b1321a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_1a6c0b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_1a6c0b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_1a6c0b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_1a6c0b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.ir.msl
new file mode 100644
index 0000000..07f9031
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_1af236 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_1af236
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_1af236
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_1af236
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f856a33
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_1e9fbd = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_1e9fbd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_1e9fbd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_1e9fbd
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/1efc36.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/1efc36.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1efc36.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4ec5ba9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_1fef04 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_1d<r32sint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_1fef04
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_1fef04
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_1fef04
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0343de8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_2046db = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_2046db
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_2046db
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_2046db
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4db98b0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_2173fd = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_1d<rgba32uint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_2173fd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_2173fd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_2173fd
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4ae243c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_24e6b7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_3d<r32sint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_24e6b7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_24e6b7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_24e6b7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..653420c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_26a26d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_1d<rgba8snorm, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_26a26d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_26a26d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_26a26d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/27063a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/27063a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/27063a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/285218.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.ir.msl
new file mode 100644
index 0000000..93ab0c9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_28e109 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_2d<rgba8sint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_28e109
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_28e109
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_28e109
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e2fe1cf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_2a60c9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_2a60c9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_2a60c9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_2a60c9
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6f67589
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_2addd6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_2addd6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_2addd6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_2addd6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6235bbe
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_2c76db = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_2d<rgba8snorm, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_2c76db
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_2c76db
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_2c76db
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/2e4245.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2e4245.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2e4245.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.ir.msl
new file mode 100644
index 0000000..94e1a70
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_2f29ea = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_2d<rgba32sint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_2f29ea
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_2f29ea
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_2f29ea
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3b391c0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_312f27 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_312f27
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_312f27
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_312f27
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/319029.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/319029.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/319029.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..83001b3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_32d3d6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_1d<r32uint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_32d3d6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_32d3d6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_32d3d6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e206a46
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_3310d3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_3310d3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_3310d3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_3310d3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/345332.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8d1d5cd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_345332 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_2d<rgba8uint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_345332
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_345332
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_345332
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7164782
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_3d1ebe = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_2d<r32float, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_3d1ebe
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_3d1ebe
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_3d1ebe
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..46a000a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_3d96a4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_3d<rgba32sint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_3d96a4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_3d96a4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_3d96a4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..59f218f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_3e0dc4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_3e0dc4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_3e0dc4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_3e0dc4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.ir.msl
new file mode 100644
index 0000000..44ff03c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_3f61ca = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_3d<rgba8snorm, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_3f61ca
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_3f61ca
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_3f61ca
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/3fb31f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/3fb31f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3fb31f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/441222.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b8d0400
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_441222 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_2d<rgba32sint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_441222
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_441222
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_441222
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c325f74
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_4483e7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_1d<rgba32sint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_4483e7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_4483e7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_4483e7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.ir.msl
new file mode 100644
index 0000000..063fc0b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_44b372 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_2d<rgba16sint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_44b372
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_44b372
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_44b372
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.ir.msl
new file mode 100644
index 0000000..86b8cc9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_473ead = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_3d<rg32uint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_473ead
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_473ead
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_473ead
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b614f44
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_47bd70 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_2d<rgba8unorm, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_47bd70
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_47bd70
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_47bd70
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/486500.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.ir.msl
new file mode 100644
index 0000000..98d2b7b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_48cb56 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_48cb56
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_48cb56
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_48cb56
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..77cc18d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_4bf1fd = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_2d<r32uint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_4bf1fd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_4bf1fd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_4bf1fd
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c467559
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_4c76b7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_4c76b7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_4c76b7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_4c76b7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ade60d4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_4cce74 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_1d<rg32uint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_4cce74
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_4cce74
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_4cce74
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6c04f96
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_4ddf52 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_2d<rgba16sint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_4ddf52
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_4ddf52
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_4ddf52
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..463f4b5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_4e2b3a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_4e2b3a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_4e2b3a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_4e2b3a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdac4c2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_5030f5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_5030f5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_5030f5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_5030f5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3299566
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_51ec82 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_1d<rg32float, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_51ec82
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_51ec82
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_51ec82
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a81517f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_5246b4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_3d<r32uint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_5246b4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_5246b4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_5246b4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f88bc5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_53a68b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_3d<r32uint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_53a68b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_53a68b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_53a68b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9f7bb75
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_5425ab = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_2d<rg32uint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_5425ab
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_5425ab
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_5425ab
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3c67019
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_544f06 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_2d<bgra8unorm, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_544f06
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_544f06
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_544f06
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..601d3c5d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_55f9dc = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_55f9dc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_55f9dc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_55f9dc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.ir.msl
new file mode 100644
index 0000000..df6b49d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_574a31 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_1d<rg32sint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_574a31
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_574a31
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_574a31
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bc2ab96
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_579b93 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_2d<r32uint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_579b93
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_579b93
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_579b93
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4b55758
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_58fc35 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_1d<rgba16float, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_58fc35
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_58fc35
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_58fc35
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c392c0e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_5a8b41 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_5a8b41
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_5a8b41
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_5a8b41
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..58691ea
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_5b17eb = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_2d<rg32float, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_5b17eb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_5b17eb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_5b17eb
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ac654b9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_5b4522 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_1d<rgba8uint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_5b4522
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_5b4522
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_5b4522
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d7fbd25
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_5ec6b2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_3d<r32float, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_5ec6b2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_5ec6b2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_5ec6b2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.ir.msl
new file mode 100644
index 0000000..033429b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_5ee194 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_5ee194
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_5ee194
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_5ee194
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a1667fb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_614b58 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_614b58
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_614b58
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_614b58
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/635584.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3976ef0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_635584 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_1d<rg32float, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_635584
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_635584
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_635584
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c0e3a59
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_63f34a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_2d<rg32sint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_63f34a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_63f34a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_63f34a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4c647ec
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_646dbc = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_3d<rgba32sint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_646dbc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_646dbc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_646dbc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a157fe7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_65b6aa = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_1d<rgba8sint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_65b6aa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_65b6aa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_65b6aa
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6ef9979
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_6be9e0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_3d<r32float, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_6be9e0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_6be9e0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_6be9e0
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4919398
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_6c4a70 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_2d<r32sint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_6c4a70
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_6c4a70
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_6c4a70
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6809b30
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_6d1809 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_6d1809
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_6d1809
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_6d1809
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bf8a751
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_6d259f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_2d<rgba32uint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_6d259f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_6d259f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_6d259f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cbdee5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_6e6cc0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_1d<r32float, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_6e6cc0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_6e6cc0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_6e6cc0
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c6588fd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_6f3542 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_3d<rgba16uint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_6f3542
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_6f3542
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_6f3542
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..261fd23
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_6fb99b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_3d<rgba16float, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_6fb99b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_6fb99b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_6fb99b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a86c781
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_704e1f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_704e1f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_704e1f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_704e1f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/706236.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.ir.msl
new file mode 100644
index 0000000..970b0f8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_706236 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_1d<rgba8unorm, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_706236
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_706236
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_706236
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/706560.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f2d567e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_706560 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_706560
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_706560
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_706560
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/726472.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a4a6ab0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_726d6d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_2d<rgba16float, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_726d6d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_726d6d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_726d6d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/731349.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.ir.msl
new file mode 100644
index 0000000..91bb4ec
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_73a735 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_73a735
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_73a735
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_73a735
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/751256.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.ir.msl
new file mode 100644
index 0000000..650d804
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_751256 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_1d<rgba32uint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_751256
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_751256
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_751256
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e855004
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_75bbd5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_75bbd5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_75bbd5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_75bbd5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/76affd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/76affd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/76affd.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e289f57
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_7792fa = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_3d<rg32sint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_7792fa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_7792fa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_7792fa
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.ir.msl
new file mode 100644
index 0000000..13b9037
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_7b8f86 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_3d<rg32float, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_7b8f86
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_7b8f86
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_7b8f86
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5645c4a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_7d10e0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_1d<rgba32float, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_7d10e0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_7d10e0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_7d10e0
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ceba492
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_7dd042 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_7dd042
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_7dd042
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_7dd042
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cf98fddb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_7e787a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_3d<rgba32float, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_7e787a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_7e787a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_7e787a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/804942.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..08f4327
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_80bf1d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_2d<rg32sint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_80bf1d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_80bf1d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_80bf1d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3e1dec2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_818df6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_3d<rgba16float, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_818df6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_818df6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_818df6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.ir.msl
new file mode 100644
index 0000000..112564c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_81ae31 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_81ae31
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_81ae31
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_81ae31
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/820272.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5737d8a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_820272 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_820272
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_820272
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_820272
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c6256a7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_84d435 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_84d435
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_84d435
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_84d435
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a750e0a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_84f4f4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_84f4f4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_84f4f4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_84f4f4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0663be1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_8676c9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_1d<r32uint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_8676c9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_8676c9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_8676c9
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.ir.msl
new file mode 100644
index 0000000..636b4b5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_86f713 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_3d<rgba16sint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_86f713
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_86f713
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_86f713
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/872747.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5ddec6a2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_877c92 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_1d<rgba8snorm, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_877c92
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_877c92
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_877c92
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..58fee51
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_8815b1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<rgba16sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_8815b1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_8815b1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_8815b1
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/885921.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4fa8724
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_885921 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_3d<rgba8unorm, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_885921
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_885921
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_885921
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f67bfcf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_88ce7e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_3d<rgba8sint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_88ce7e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_88ce7e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_88ce7e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c2d6bc1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_8a16b0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_8a16b0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_8a16b0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_8a16b0
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9e0d3f5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_8a46ff = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_2d<rgba16float, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_8a46ff
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_8a46ff
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_8a46ff
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f2dbd93
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_8a85b9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_8a85b9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_8a85b9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_8a85b9
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.ir.msl
new file mode 100644
index 0000000..691f9f8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_8a8681 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_2d<rg32uint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_8a8681
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_8a8681
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_8a8681
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..44e5389
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_8ae0bc = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_8ae0bc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_8ae0bc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_8ae0bc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.ir.msl
new file mode 100644
index 0000000..76f0c4c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_8cd841 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_8cd841
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_8cd841
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_8cd841
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7c4dd7d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_8ebdc9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_8ebdc9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_8ebdc9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_8ebdc9
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..16a883d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_90960e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_1d<rgba16float, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_90960e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_90960e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_90960e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8ebf5c4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_90a553 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<rgba8sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_90a553
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_90a553
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_90a553
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/958353.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/969534.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/976636.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ab9b889
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_976636 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_1d<rgba8sint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_976636
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_976636
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_976636
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/9aedd3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/9aedd3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9aedd3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5793bf4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_9ba5c1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_1d<rgba16uint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_9ba5c1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_9ba5c1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_9ba5c1
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3f9e49e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_9cea9e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_9cea9e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_9cea9e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_9cea9e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3acfd10
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_9d7c62 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_1d<rgba8uint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_9d7c62
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_9d7c62
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_9d7c62
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3ad9607
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_a0022f = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_a0022f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_a0022f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_a0022f
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.ir.msl
new file mode 100644
index 0000000..abf60b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_a14041 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_1d<rgba32sint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_a14041
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_a14041
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_a14041
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/a165b8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a165b8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a165b8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b74a754
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_a19a12 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_3d<rgba32uint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_a19a12
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_a19a12
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_a19a12
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cd58994
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_a24491 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_2d<rgba32uint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_a24491
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_a24491
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_a24491
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..95e22d1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_a5b88e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_3d<rgba16sint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_a5b88e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_a5b88e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_a5b88e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9c08788
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_a5c925 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_3d<rgba8sint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_a5c925
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_a5c925
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_a5c925
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bacf524
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_a66ca4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_3d<bgra8unorm, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_a66ca4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_a66ca4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_a66ca4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ff3cd5e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_a702b6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_a702b6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_a702b6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_a702b6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ea87e70
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_a9298c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_1d<rg32uint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_a9298c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_a9298c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_a9298c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a165d3a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_ab03b6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_3d<rgba8uint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_ab03b6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_ab03b6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_ab03b6
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..27f870b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_ab788e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_2d<rg32float, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_ab788e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_ab788e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_ab788e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d3f5ba6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_abdd21 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_abdd21
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_abdd21
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_abdd21
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1c46877
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_ac0a55 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_ac0a55
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_ac0a55
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_ac0a55
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c22baa4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_aedea3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_aedea3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_aedea3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_aedea3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a345bc1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_b16110 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_b16110
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_b16110
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_b16110
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2aa7b8b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_b286b4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_b286b4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_b286b4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_b286b4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..49a2fb0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_b36bc1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_3d<rgba8uint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_b36bc1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_b36bc1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_b36bc1
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..845986e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_b4389e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_3d<bgra8unorm, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_b4389e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_b4389e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_b4389e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.ir.msl
new file mode 100644
index 0000000..18eed73
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_b71c13 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rg32float, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_b71c13
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_b71c13
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_b71c13
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7601c12
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_b7232c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_1d<r32float, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_b7232c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_b7232c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_b7232c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5fbf7c5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_b89ffb = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_b89ffb
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_b89ffb
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_b89ffb
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a19ae64
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_b9c81a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_3d<rg32uint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_b9c81a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_b9c81a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_b9c81a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.ir.msl
new file mode 100644
index 0000000..29c8d74
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_b9d863 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_b9d863
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_b9d863
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_b9d863
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ca4e926
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_bc1423 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_bc1423
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_bc1423
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_bc1423
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b657a23
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_bcc97a = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_2d<r32sint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_bcc97a
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_bcc97a
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_bcc97a
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d52f22a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_bd6602 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<rg32uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_bd6602
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_bd6602
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_bd6602
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/bedbfc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/bedbfc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bedbfc.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.ir.msl
new file mode 100644
index 0000000..68c9fb6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_c06463 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<bgra8unorm, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_c06463
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_c06463
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_c06463
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.ir.msl
new file mode 100644
index 0000000..982ac4c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_c1c664 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_2d<rgba32float, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_c1c664
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_c1c664
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_c1c664
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.ir.msl
new file mode 100644
index 0000000..77df960
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_c1f760 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_c1f760
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_c1f760
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_c1f760
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.ir.msl
new file mode 100644
index 0000000..db88a5e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_c33478 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_3d<rg32float, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_c33478
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_c33478
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_c33478
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b95c0a2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_c35268 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<r32uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_c35268
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_c35268
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_c35268
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a8c1404
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_c63f05 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_c63f05
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_c63f05
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_c63f05
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.ir.msl
new file mode 100644
index 0000000..83e7a70
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_c79451 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, u32, read_write> = var, 1u
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_1d<rgba16sint, read_write> = load %arg_0
+    %6:u32 = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_c79451
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_c79451
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_c79451
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/c9d780.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c9d780.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c9d780.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2b3dfab
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_ccac20 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_2d<rgba32float, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_ccac20
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_ccac20
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_ccac20
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/cd6755.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/cd6755.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/cd6755.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9d591e5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_ceb832 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<r32sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_ceb832
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_ceb832
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_ceb832
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..26b392f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_d0d62c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_2d<rgba8uint, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_d0d62c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_d0d62c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_d0d62c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9398b6f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_d0fadc = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_d0fadc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_d0fadc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_d0fadc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..18d9f0a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_d19db4 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<i32>, read_write> = var, vec3<i32>(1i)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_3d<rg32sint, read_write> = load %arg_0
+    %6:vec3<i32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_d19db4
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_d19db4
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_d19db4
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.ir.msl
new file mode 100644
index 0000000..109cba2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_d1ab82 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_2d<rgba8unorm, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_d1ab82
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_d1ab82
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_d1ab82
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/d2b565.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/d2b565.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d2b565.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f04b958
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_d3a22b = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_3d<rgba32uint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_d3a22b
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_d3a22b
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_d3a22b
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/d4aa95.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/d4aa95.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d4aa95.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9d5a2dc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_d86d33 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rgba8snorm, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_d86d33
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_d86d33
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_d86d33
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6cfa0af
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_da530c = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_2d<rgba8sint, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_da530c
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_da530c
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_da530c
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e647363
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_db5128 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<rgba16uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_db5128
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_db5128
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_db5128
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f20a778
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<r32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_dce0e2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<r32float, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_dce0e2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_dce0e2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_dce0e2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a84925c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_dd8b29 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<rgba8uint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_dd8b29
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_dd8b29
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_dd8b29
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..78220d5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_de38e5 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_3d<rgba8snorm, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_de38e5
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_de38e5
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_de38e5
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b88e231
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_3d<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_df0c51 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec3<u32>, read_write> = var, vec3<u32>(1u)
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_3d<r32sint, read_write> = load %arg_0
+    %6:vec3<u32> = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_df0c51
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_df0c51
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_df0c51
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..03dede7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_e077e7 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_1d<rg32sint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_e077e7
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_e077e7
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_e077e7
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/e0b666.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/e0b666.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e0b666.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9e3e923
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_e1784d = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rgba32float, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_e1784d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_e1784d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_e1784d
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/e38281.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/e38281.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e38281.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..49bcfa5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<bgra8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_e46fd8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_2d<bgra8unorm, read_write> = load %arg_0
+    %6:vec2<u32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_e46fd8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_e46fd8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_e46fd8
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..02483a7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba16float, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_e72bdc = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rgba16float, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_e72bdc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_e72bdc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_e72bdc
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e77e708
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_e87f6e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_1d<rgba16sint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_e87f6e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_e87f6e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_e87f6e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3e55084
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rg32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_ea30d2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<rg32sint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_ea30d2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_ea30d2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_ea30d2
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.ir.msl
new file mode 100644
index 0000000..98ed3ee
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_f05928 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, u32, read_write> = var, 1u
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:u32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_f05928
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_f05928
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_f05928
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ce2442b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<r32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_f64d69 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %5:texture_storage_1d<r32sint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<i32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_f64d69
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_f64d69
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_f64d69
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8fc976c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba8unorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_f6f392 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %6:texture_storage_2d_array<rgba8unorm, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<f32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_f6f392
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_f6f392
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_f6f392
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ce1df346
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_f8aaf9 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<i32>, read_write> = var, vec4<i32>(1i)
+    %6:texture_storage_2d_array<rgba32sint, read_write> = load %arg_0
+    %7:vec2<i32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<i32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_f8aaf9
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_f8aaf9
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_f8aaf9
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..69ceb7c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d<rgba8snorm, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_f975a0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<i32>, read_write> = var, vec2<i32>(1i)
+    %arg_2:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.0f)
+    %5:texture_storage_2d<rgba8snorm, read_write> = load %arg_0
+    %6:vec2<i32> = load %arg_1
+    %7:vec4<f32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_f975a0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_f975a0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_f975a0
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c5d9a44
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_2d_array<rgba32uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_fc916e = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
+    %arg_2:ptr<function, i32, read_write> = var, 1i
+    %arg_3:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %6:texture_storage_2d_array<rgba32uint, read_write> = load %arg_0
+    %7:vec2<u32> = load %arg_1
+    %8:i32 = load %arg_2
+    %9:vec4<u32> = load %arg_3
+    %10:void = textureStore %6, %7, %8, %9
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %12:void = call %textureStore_fc916e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %14:void = call %textureStore_fc916e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %16:void = call %textureStore_fc916e
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..827e8d3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_storage_1d<rgba16uint, read_write>, read> = var @binding_point(1, 0)
+}
+
+%textureStore_ff23b3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_1:ptr<function, i32, read_write> = var, 1i
+    %arg_2:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
+    %5:texture_storage_1d<rgba16uint, read_write> = load %arg_0
+    %6:i32 = load %arg_1
+    %7:vec4<u32> = load %arg_2
+    %8:void = textureStore %5, %6, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %10:void = call %textureStore_ff23b3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %12:void = call %textureStore_ff23b3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %14:void = call %textureStore_ff23b3
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/06794e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/06794e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bfbfa79
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/06794e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat3x3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_06794e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat3x3<f16>, read_write> = var, mat3x3<f16>(vec3<f16>(1.0h))
+    %4:mat3x3<f16> = load %arg_0
+    %5:mat3x3<f16> = transpose %4
+    %res:ptr<function, mat3x3<f16>, read_write> = var, %5
+    %7:mat3x3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %transpose_06794e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %transpose_06794e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %transpose_06794e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/2585cd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/2585cd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c46215f
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/2585cd.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_2585cd = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat4x3<f32>, read_write> = var, mat4x3<f32>(vec3<f32>(1.0f))
+    %4:mat4x3<f32> = load %arg_0
+    %5:mat3x4<f32> = transpose %4
+    %res:ptr<function, mat3x4<f32>, read_write> = var, %5
+    %7:mat3x4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %transpose_2585cd
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %transpose_2585cd
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %transpose_2585cd
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/31d679.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/31d679.wgsl.expected.ir.msl
new file mode 100644
index 0000000..50c03e9
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/31d679.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_31d679 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat2x2<f32>, read_write> = var, mat2x2<f32>(vec2<f32>(1.0f))
+    %4:mat2x2<f32> = load %arg_0
+    %5:mat2x2<f32> = transpose %4
+    %res:ptr<function, mat2x2<f32>, read_write> = var, %5
+    %7:mat2x2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %transpose_31d679
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %transpose_31d679
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %transpose_31d679
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/31e37e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/31e37e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..880caed
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/31e37e.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_31e37e = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat4x2<f32>, read_write> = var, mat4x2<f32>(vec2<f32>(1.0f))
+    %4:mat4x2<f32> = load %arg_0
+    %5:mat2x4<f32> = transpose %4
+    %res:ptr<function, mat2x4<f32>, read_write> = var, %5
+    %7:mat2x4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %transpose_31e37e
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %transpose_31e37e
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %transpose_31e37e
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/32dd64.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/32dd64.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/32dd64.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/4ce359.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/4ce359.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5b4fb3a
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/4ce359.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_4ce359 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat2x4<f32>, read_write> = var, mat2x4<f32>(vec4<f32>(1.0f))
+    %4:mat2x4<f32> = load %arg_0
+    %5:mat4x2<f32> = transpose %4
+    %res:ptr<function, mat4x2<f32>, read_write> = var, %5
+    %7:mat4x2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %transpose_4ce359
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %transpose_4ce359
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %transpose_4ce359
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/4dc9a1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/4dc9a1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..43a89bd
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/4dc9a1.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_4dc9a1 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat2x3<f32>, read_write> = var, mat2x3<f32>(vec3<f32>(1.0f))
+    %4:mat2x3<f32> = load %arg_0
+    %5:mat3x2<f32> = transpose %4
+    %res:ptr<function, mat3x2<f32>, read_write> = var, %5
+    %7:mat3x2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %transpose_4dc9a1
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %transpose_4dc9a1
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %transpose_4dc9a1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/553e90.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/553e90.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/553e90.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/5c133c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/5c133c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/5c133c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/5edd96.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/5edd96.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7f0a6be
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/5edd96.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat2x4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_5edd96 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat4x2<f16>, read_write> = var, mat4x2<f16>(vec2<f16>(1.0h))
+    %4:mat4x2<f16> = load %arg_0
+    %5:mat2x4<f16> = transpose %4
+    %res:ptr<function, mat2x4<f16>, read_write> = var, %5
+    %7:mat2x4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %transpose_5edd96
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %transpose_5edd96
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %transpose_5edd96
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/5f36bf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/5f36bf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..deccb96
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/5f36bf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat3x4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_5f36bf = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat4x3<f16>, read_write> = var, mat4x3<f16>(vec3<f16>(1.0h))
+    %4:mat4x3<f16> = load %arg_0
+    %5:mat3x4<f16> = transpose %4
+    %res:ptr<function, mat3x4<f16>, read_write> = var, %5
+    %7:mat3x4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %transpose_5f36bf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %transpose_5f36bf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %transpose_5f36bf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/66fce8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/66fce8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/66fce8.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/70ca11.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/70ca11.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/70ca11.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/7be8b2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/7be8b2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8ca76d1
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/7be8b2.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat2x2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_7be8b2 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat2x2<f16>, read_write> = var, mat2x2<f16>(vec2<f16>(1.0h))
+    %4:mat2x2<f16> = load %arg_0
+    %5:mat2x2<f16> = transpose %4
+    %res:ptr<function, mat2x2<f16>, read_write> = var, %5
+    %7:mat2x2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %transpose_7be8b2
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %transpose_7be8b2
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %transpose_7be8b2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/7eb2c5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/7eb2c5.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/7eb2c5.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/844869.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/844869.wgsl.expected.ir.msl
new file mode 100644
index 0000000..84a4256
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/844869.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat4x4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_844869 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat4x4<f16>, read_write> = var, mat4x4<f16>(vec4<f16>(1.0h))
+    %4:mat4x4<f16> = load %arg_0
+    %5:mat4x4<f16> = transpose %4
+    %res:ptr<function, mat4x4<f16>, read_write> = var, %5
+    %7:mat4x4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %transpose_844869
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %transpose_844869
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %transpose_844869
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/84a763.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/84a763.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/84a763.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/854336.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/854336.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e0e82d8
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/854336.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_854336 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat3x3<f32>, read_write> = var, mat3x3<f32>(vec3<f32>(1.0f))
+    %4:mat3x3<f32> = load %arg_0
+    %5:mat3x3<f32> = transpose %4
+    %res:ptr<function, mat3x3<f32>, read_write> = var, %5
+    %7:mat3x3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %transpose_854336
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %transpose_854336
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %transpose_854336
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/8c06ce.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/8c06ce.wgsl.expected.ir.msl
new file mode 100644
index 0000000..01acf83
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/8c06ce.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat4x3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_8c06ce = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat3x4<f16>, read_write> = var, mat3x4<f16>(vec4<f16>(1.0h))
+    %4:mat3x4<f16> = load %arg_0
+    %5:mat4x3<f16> = transpose %4
+    %res:ptr<function, mat4x3<f16>, read_write> = var, %5
+    %7:mat4x3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %transpose_8c06ce
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %transpose_8c06ce
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %transpose_8c06ce
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/ace596.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/ace596.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/ace596.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/b9ad1f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/b9ad1f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..446971e
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/b9ad1f.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat2x3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_b9ad1f = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat3x2<f16>, read_write> = var, mat3x2<f16>(vec2<f16>(1.0h))
+    %4:mat3x2<f16> = load %arg_0
+    %5:mat2x3<f16> = transpose %4
+    %res:ptr<function, mat2x3<f16>, read_write> = var, %5
+    %7:mat2x3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %transpose_b9ad1f
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %transpose_b9ad1f
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %transpose_b9ad1f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/c1b600.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/c1b600.wgsl.expected.ir.msl
new file mode 100644
index 0000000..93df925
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/c1b600.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_c1b600 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat4x4<f32>, read_write> = var, mat4x4<f32>(vec4<f32>(1.0f))
+    %4:mat4x4<f32> = load %arg_0
+    %5:mat4x4<f32> = transpose %4
+    %res:ptr<function, mat4x4<f32>, read_write> = var, %5
+    %7:mat4x4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %transpose_c1b600
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %transpose_c1b600
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %transpose_c1b600
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/d6faec.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/d6faec.wgsl.expected.ir.msl
new file mode 100644
index 0000000..285596b
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/d6faec.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat3x2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_d6faec = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat2x3<f16>, read_write> = var, mat2x3<f16>(vec3<f16>(1.0h))
+    %4:mat2x3<f16> = load %arg_0
+    %5:mat3x2<f16> = transpose %4
+    %res:ptr<function, mat3x2<f16>, read_write> = var, %5
+    %7:mat3x2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %transpose_d6faec
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %transpose_d6faec
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %transpose_d6faec
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/d8f8ba.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/d8f8ba.wgsl.expected.ir.msl
new file mode 100644
index 0000000..02d6452
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/d8f8ba.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_d8f8ba = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat3x4<f32>, read_write> = var, mat3x4<f32>(vec4<f32>(1.0f))
+    %4:mat3x4<f32> = load %arg_0
+    %5:mat4x3<f32> = transpose %4
+    %res:ptr<function, mat4x3<f32>, read_write> = var, %5
+    %7:mat4x3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %transpose_d8f8ba
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %transpose_d8f8ba
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %transpose_d8f8ba
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/dc671a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/dc671a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/dc671a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/ed4bdc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/ed4bdc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..433155e
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/ed4bdc.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_ed4bdc = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat3x2<f32>, read_write> = var, mat3x2<f32>(vec2<f32>(1.0f))
+    %4:mat3x2<f32> = load %arg_0
+    %5:mat2x3<f32> = transpose %4
+    %res:ptr<function, mat2x3<f32>, read_write> = var, %5
+    %7:mat2x3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %transpose_ed4bdc
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %transpose_ed4bdc
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %transpose_ed4bdc
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/transpose/faeb05.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/transpose/faeb05.wgsl.expected.ir.msl
new file mode 100644
index 0000000..078c423
--- /dev/null
+++ b/test/tint/builtins/gen/var/transpose/faeb05.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, mat4x2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%transpose_faeb05 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, mat2x4<f16>, read_write> = var, mat2x4<f16>(vec4<f16>(1.0h))
+    %4:mat2x4<f16> = load %arg_0
+    %5:mat4x2<f16> = transpose %4
+    %res:ptr<function, mat4x2<f16>, read_write> = var, %5
+    %7:mat4x2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %transpose_faeb05
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %transpose_faeb05
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %transpose_faeb05
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/trunc/103ab8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/trunc/103ab8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9f1b926
--- /dev/null
+++ b/test/tint/builtins/gen/var/trunc/103ab8.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%trunc_103ab8 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.5h)
+    %4:vec3<f16> = load %arg_0
+    %5:vec3<f16> = trunc %4
+    %res:ptr<function, vec3<f16>, read_write> = var, %5
+    %7:vec3<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %trunc_103ab8
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %trunc_103ab8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %trunc_103ab8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/trunc/117396.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/trunc/117396.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/trunc/117396.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/trunc/562d05.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/trunc/562d05.wgsl.expected.ir.msl
new file mode 100644
index 0000000..59f3332
--- /dev/null
+++ b/test/tint/builtins/gen/var/trunc/562d05.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%trunc_562d05 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.5f)
+    %4:vec3<f32> = load %arg_0
+    %5:vec3<f32> = trunc %4
+    %res:ptr<function, vec3<f32>, read_write> = var, %5
+    %7:vec3<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %trunc_562d05
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %trunc_562d05
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %trunc_562d05
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/trunc/7d6ded.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/trunc/7d6ded.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/trunc/7d6ded.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/trunc/a56109.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/trunc/a56109.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bc24a11
--- /dev/null
+++ b/test/tint/builtins/gen/var/trunc/a56109.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%trunc_a56109 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.5h)
+    %4:vec2<f16> = load %arg_0
+    %5:vec2<f16> = trunc %4
+    %res:ptr<function, vec2<f16>, read_write> = var, %5
+    %7:vec2<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %trunc_a56109
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %trunc_a56109
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %trunc_a56109
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/trunc/c12555.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/trunc/c12555.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/trunc/c12555.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/trunc/cc2b0d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/trunc/cc2b0d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1ece098
--- /dev/null
+++ b/test/tint/builtins/gen/var/trunc/cc2b0d.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%trunc_cc2b0d = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f16, read_write> = var, 1.5h
+    %4:f16 = load %arg_0
+    %5:f16 = trunc %4
+    %res:ptr<function, f16, read_write> = var, %5
+    %7:f16 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %trunc_cc2b0d
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %trunc_cc2b0d
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %trunc_cc2b0d
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/trunc/ce7c17.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/trunc/ce7c17.wgsl.expected.ir.msl
new file mode 100644
index 0000000..801e7f1
--- /dev/null
+++ b/test/tint/builtins/gen/var/trunc/ce7c17.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f16>, read_write> = var @binding_point(2, 0)
+}
+
+%trunc_ce7c17 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f16>, read_write> = var, vec4<f16>(1.5h)
+    %4:vec4<f16> = load %arg_0
+    %5:vec4<f16> = trunc %4
+    %res:ptr<function, vec4<f16>, read_write> = var, %5
+    %7:vec4<f16> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %trunc_ce7c17
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %trunc_ce7c17
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %trunc_ce7c17
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/trunc/e183aa.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/trunc/e183aa.wgsl.expected.ir.msl
new file mode 100644
index 0000000..33e29cb
--- /dev/null
+++ b/test/tint/builtins/gen/var/trunc/e183aa.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%trunc_e183aa = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(1.5f)
+    %4:vec4<f32> = load %arg_0
+    %5:vec4<f32> = trunc %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %trunc_e183aa
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %trunc_e183aa
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %trunc_e183aa
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/trunc/eb83df.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/trunc/eb83df.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c244059
--- /dev/null
+++ b/test/tint/builtins/gen/var/trunc/eb83df.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%trunc_eb83df = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, f32, read_write> = var, 1.5f
+    %4:f32 = load %arg_0
+    %5:f32 = trunc %4
+    %res:ptr<function, f32, read_write> = var, %5
+    %7:f32 = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %trunc_eb83df
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %trunc_eb83df
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %trunc_eb83df
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/trunc/f0f1a1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/trunc/f0f1a1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/builtins/gen/var/trunc/f0f1a1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/builtins/gen/var/trunc/f370d3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/trunc/f370d3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..94e05d1
--- /dev/null
+++ b/test/tint/builtins/gen/var/trunc/f370d3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%trunc_f370d3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.5f)
+    %4:vec2<f32> = load %arg_0
+    %5:vec2<f32> = trunc %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %trunc_f370d3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %trunc_f370d3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %trunc_f370d3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/unpack2x16float/32a5cf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/unpack2x16float/32a5cf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5c62c51
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack2x16float/32a5cf.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%unpack2x16float_32a5cf = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %4:u32 = load %arg_0
+    %5:vec2<f32> = unpack2x16float %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %unpack2x16float_32a5cf
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %unpack2x16float_32a5cf
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %unpack2x16float_32a5cf
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/unpack2x16snorm/b4aea6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/unpack2x16snorm/b4aea6.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e0711bc
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack2x16snorm/b4aea6.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%unpack2x16snorm_b4aea6 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %4:u32 = load %arg_0
+    %5:vec2<f32> = unpack2x16snorm %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %unpack2x16snorm_b4aea6
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %unpack2x16snorm_b4aea6
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %unpack2x16snorm_b4aea6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/unpack2x16unorm/7699c0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/unpack2x16unorm/7699c0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..407d4b5
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack2x16unorm/7699c0.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec2<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%unpack2x16unorm_7699c0 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %4:u32 = load %arg_0
+    %5:vec2<f32> = unpack2x16unorm %4
+    %res:ptr<function, vec2<f32>, read_write> = var, %5
+    %7:vec2<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %unpack2x16unorm_7699c0
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %unpack2x16unorm_7699c0
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %unpack2x16unorm_7699c0
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/unpack4x8snorm/523fb3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/unpack4x8snorm/523fb3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..147e1f2
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack4x8snorm/523fb3.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%unpack4x8snorm_523fb3 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %4:u32 = load %arg_0
+    %5:vec4<f32> = unpack4x8snorm %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %unpack4x8snorm_523fb3
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %unpack4x8snorm_523fb3
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %unpack4x8snorm_523fb3
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/unpack4x8unorm/750c74.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/unpack4x8unorm/750c74.wgsl.expected.ir.msl
new file mode 100644
index 0000000..19cf2e6
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack4x8unorm/750c74.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
+}
+
+%unpack4x8unorm_750c74 = func():void -> %b2 {
+  %b2 = block {
+    %arg_0:ptr<function, u32, read_write> = var, 1u
+    %4:u32 = load %arg_0
+    %5:vec4<f32> = unpack4x8unorm %4
+    %res:ptr<function, vec4<f32>, read_write> = var, %5
+    %7:vec4<f32> = load %res
+    store %prevent_dce, %7
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
+  %b3 = block {
+    %9:void = call %unpack4x8unorm_750c74
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b4 {
+  %b4 = block {
+    %11:void = call %unpack4x8unorm_750c74
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %unpack4x8unorm_750c74
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/workgroupBarrier/a17f7f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/workgroupBarrier/a17f7f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/gen/var/workgroupBarrier/a17f7f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/gen/var/workgroupUniformLoad/37307c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/workgroupUniformLoad/37307c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1cea43c
--- /dev/null
+++ b/test/tint/builtins/gen/var/workgroupUniformLoad/37307c.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, u32, read_write> = var
+  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
+}
+
+%workgroupUniformLoad_37307c = func():void -> %b2 {
+  %b2 = block {
+    %4:void = workgroupBarrier
+    %5:u32 = load %arg_0
+    %6:void = workgroupBarrier
+    %res:ptr<function, u32, read_write> = var, %5
+    %8:u32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %workgroupUniformLoad_37307c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/workgroupUniformLoad/7a857c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/workgroupUniformLoad/7a857c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c099224
--- /dev/null
+++ b/test/tint/builtins/gen/var/workgroupUniformLoad/7a857c.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, f32, read_write> = var
+  %prevent_dce:ptr<storage, f32, read_write> = var @binding_point(2, 0)
+}
+
+%workgroupUniformLoad_7a857c = func():void -> %b2 {
+  %b2 = block {
+    %4:void = workgroupBarrier
+    %5:f32 = load %arg_0
+    %6:void = workgroupBarrier
+    %res:ptr<function, f32, read_write> = var, %5
+    %8:f32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %workgroupUniformLoad_7a857c
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/workgroupUniformLoad/9d33de.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/workgroupUniformLoad/9d33de.wgsl.expected.ir.msl
new file mode 100644
index 0000000..44c439c
--- /dev/null
+++ b/test/tint/builtins/gen/var/workgroupUniformLoad/9d33de.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, i32, read_write> = var
+  %prevent_dce:ptr<storage, i32, read_write> = var @binding_point(2, 0)
+}
+
+%workgroupUniformLoad_9d33de = func():void -> %b2 {
+  %b2 = block {
+    %4:void = workgroupBarrier
+    %5:i32 = load %arg_0
+    %6:void = workgroupBarrier
+    %res:ptr<function, i32, read_write> = var, %5
+    %8:i32 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %workgroupUniformLoad_9d33de
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/gen/var/workgroupUniformLoad/e07d08.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/workgroupUniformLoad/e07d08.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0724ae1
--- /dev/null
+++ b/test/tint/builtins/gen/var/workgroupUniformLoad/e07d08.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<workgroup, f16, read_write> = var
+  %prevent_dce:ptr<storage, f16, read_write> = var @binding_point(2, 0)
+}
+
+%workgroupUniformLoad_e07d08 = func():void -> %b2 {
+  %b2 = block {
+    %4:void = workgroupBarrier
+    %5:f16 = load %arg_0
+    %6:void = workgroupBarrier
+    %res:ptr<function, f16, read_write> = var, %5
+    %8:f16 = load %res
+    store %prevent_dce, %8
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %10:void = call %workgroupUniformLoad_e07d08
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/builtins/insertBits/scalar/i32.spvasm.expected.ir.msl b/test/tint/builtins/insertBits/scalar/i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/insertBits/scalar/i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/insertBits/scalar/u32.spvasm.expected.ir.msl b/test/tint/builtins/insertBits/scalar/u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/insertBits/scalar/u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/insertBits/vec3/i32.spvasm.expected.ir.msl b/test/tint/builtins/insertBits/vec3/i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/insertBits/vec3/i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/insertBits/vec3/u32.spvasm.expected.ir.msl b/test/tint/builtins/insertBits/vec3/u32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/insertBits/vec3/u32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/modf/scalar/const.wgsl.expected.ir.msl b/test/tint/builtins/modf/scalar/const.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/builtins/modf/scalar/const.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/builtins/modf/scalar/mixed.wgsl.expected.ir.msl b/test/tint/builtins/modf/scalar/mixed.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/modf/scalar/mixed.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/modf/scalar/runtime.wgsl.expected.ir.msl b/test/tint/builtins/modf/scalar/runtime.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/modf/scalar/runtime.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/modf/vector/const.wgsl.expected.ir.msl b/test/tint/builtins/modf/vector/const.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/builtins/modf/vector/const.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/builtins/modf/vector/mixed.wgsl.expected.ir.msl b/test/tint/builtins/modf/vector/mixed.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/modf/vector/mixed.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/modf/vector/runtime.wgsl.expected.ir.msl b/test/tint/builtins/modf/vector/runtime.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/modf/vector/runtime.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/radians.spvasm.expected.ir.msl b/test/tint/builtins/radians.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/builtins/radians.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/builtins/repeated_use.wgsl.expected.ir.msl b/test/tint/builtins/repeated_use.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/repeated_use.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/textureDimensions/depth_ms.spvasm.expected.ir.msl b/test/tint/builtins/textureDimensions/depth_ms.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/textureDimensions/depth_ms.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/textureGather/f32/alpha.wgsl.expected.ir.msl b/test/tint/builtins/textureGather/f32/alpha.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/textureGather/f32/alpha.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/textureGather/f32/blue.wgsl.expected.ir.msl b/test/tint/builtins/textureGather/f32/blue.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/textureGather/f32/blue.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/textureGather/f32/green.wgsl.expected.ir.msl b/test/tint/builtins/textureGather/f32/green.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/textureGather/f32/green.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/textureGather/f32/red.wgsl.expected.ir.msl b/test/tint/builtins/textureGather/f32/red.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/textureGather/f32/red.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/textureGather/i32/alpha.wgsl.expected.ir.msl b/test/tint/builtins/textureGather/i32/alpha.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/textureGather/i32/alpha.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/textureGather/i32/blue.wgsl.expected.ir.msl b/test/tint/builtins/textureGather/i32/blue.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/textureGather/i32/blue.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/textureGather/i32/green.wgsl.expected.ir.msl b/test/tint/builtins/textureGather/i32/green.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/textureGather/i32/green.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/textureGather/i32/red.wgsl.expected.ir.msl b/test/tint/builtins/textureGather/i32/red.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/textureGather/i32/red.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/textureGather/u32/alpha.wgsl.expected.ir.msl b/test/tint/builtins/textureGather/u32/alpha.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/textureGather/u32/alpha.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/textureGather/u32/blue.wgsl.expected.ir.msl b/test/tint/builtins/textureGather/u32/blue.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/textureGather/u32/blue.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/textureGather/u32/green.wgsl.expected.ir.msl b/test/tint/builtins/textureGather/u32/green.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/textureGather/u32/green.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/textureGather/u32/red.wgsl.expected.ir.msl b/test/tint/builtins/textureGather/u32/red.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/textureGather/u32/red.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/textureLoad/depth_ms.spvasm.expected.ir.msl b/test/tint/builtins/textureLoad/depth_ms.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/textureLoad/depth_ms.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/textureLoad/texture_external_param.wgsl.expected.ir.msl b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a0f4566
--- /dev/null
+++ b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.ir.msl
@@ -0,0 +1,46 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:626 internal compiler error: %b1 = block {  # root
+  %arg_0:ptr<handle, texture_external, read> = var @binding_point(1, 0)
+}
+
+%textureLoad2d = func(%tint_symbol:texture_external, %coords:vec2<i32>):vec4<f32> -> %b2 {
+  %b2 = block {
+    %5:vec4<f32> = textureLoad %tint_symbol, %coords
+    ret %5
+  }
+}
+%doTextureLoad = func():void -> %b3 {
+  %b3 = block {
+    %7:texture_external = load %arg_0
+    %8:vec4<f32> = call %textureLoad2d, %7, vec2<i32>(0i)
+    %res:ptr<function, vec4<f32>, read_write> = var, %8
+    ret
+  }
+}
+%vertex_main = @vertex func():vec4<f32> [@position] -> %b4 {
+  %b4 = block {
+    %11:void = call %doTextureLoad
+    ret vec4<f32>(0.0f)
+  }
+}
+%fragment_main = @fragment func():void -> %b5 {
+  %b5 = block {
+    %13:void = call %doTextureLoad
+    ret
+  }
+}
+%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %15:void = call %doTextureLoad
+    ret
+  }
+}
+
+Multiplanar external texture transform was not run.
+********************************************************************
+*  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/tint/builtins/textureLoad/texture_param.wgsl.expected.ir.msl b/test/tint/builtins/textureLoad/texture_param.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/textureLoad/texture_param.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.ir.msl b/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/textureStore/bgraunorm.wgsl.expected.ir.msl b/test/tint/builtins/textureStore/bgraunorm.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/textureStore/bgraunorm.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/textureStore/loop_continuing_read_write_texture.wgsl.expected.ir.msl b/test/tint/builtins/textureStore/loop_continuing_read_write_texture.wgsl.expected.ir.msl
new file mode 100644
index 0000000..534ddf0
--- /dev/null
+++ b/test/tint/builtins/textureStore/loop_continuing_read_write_texture.wgsl.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:679 internal compiler error: %b1 = block {  # root
+  %tex:ptr<handle, texture_storage_2d<r32sint, read_write>, read> = var @binding_point(0, 2)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    loop [i: %b3, b: %b4, c: %b5] {  # loop_1
+      %b3 = block {  # initializer
+        %i:ptr<function, i32, read_write> = var, 0i
+        next_iteration %b4
+      }
+      %b4 = block {  # body
+        %4:i32 = load %i
+        %5:bool = lt %4, 3i
+        if %5 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %6:texture_storage_2d<r32sint, read_write> = load %tex
+        %7:void = textureStore %6, vec2<i32>(0i), vec4<i32>(0i)
+        next_iteration %b4
+      }
+    }
+    ret
+  }
+}
+
+invalid access control for storage texture
+********************************************************************
+*  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/tint/builtins/workgroupUniformLoad/array.wgsl.expected.ir.msl b/test/tint/builtins/workgroupUniformLoad/array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/workgroupUniformLoad/array.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/workgroupUniformLoad/array_overridable_count.wgsl.expected.ir.msl b/test/tint/builtins/workgroupUniformLoad/array_overridable_count.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/workgroupUniformLoad/array_overridable_count.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/workgroupUniformLoad/array_overridable_count_aliased.wgsl.expected.ir.msl b/test/tint/builtins/workgroupUniformLoad/array_overridable_count_aliased.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/workgroupUniformLoad/array_overridable_count_aliased.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/workgroupUniformLoad/bool.wgsl.expected.ir.msl b/test/tint/builtins/workgroupUniformLoad/bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/workgroupUniformLoad/bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/workgroupUniformLoad/for_loop.wgsl.expected.ir.msl b/test/tint/builtins/workgroupUniformLoad/for_loop.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/builtins/workgroupUniformLoad/for_loop.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/builtins/workgroupUniformLoad/if_condition.wgsl.expected.ir.msl b/test/tint/builtins/workgroupUniformLoad/if_condition.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/workgroupUniformLoad/if_condition.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/workgroupUniformLoad/matrix.wgsl.expected.ir.msl b/test/tint/builtins/workgroupUniformLoad/matrix.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/workgroupUniformLoad/matrix.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/workgroupUniformLoad/structures.wgsl.expected.ir.msl b/test/tint/builtins/workgroupUniformLoad/structures.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/workgroupUniformLoad/structures.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/workgroupUniformLoad/vec.wgsl.expected.ir.msl b/test/tint/builtins/workgroupUniformLoad/vec.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/workgroupUniformLoad/vec.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.ir.msl b/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/diagnostic_filtering/case_body_attribute.wgsl.expected.ir.msl b/test/tint/diagnostic_filtering/case_body_attribute.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8d9d5ed
--- /dev/null
+++ b/test/tint/diagnostic_filtering/case_body_attribute.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/test/tint/diagnostic_filtering/case_body_attribute.wgsl:8:11 warning: 'textureSample' must only be called from uniform control flow
+      _ = textureSample(t, s, vec2(0, 0));
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/case_body_attribute.wgsl:6:3 note: control flow depends on possibly non-uniform value
+  switch (i32(x)) {
+  ^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/case_body_attribute.wgsl:6:15 note: user-defined input 'x' of 'main' may be non-uniform
+  switch (i32(x)) {
+              ^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/diagnostic_filtering/compound_statement_attribute.wgsl.expected.ir.msl b/test/tint/diagnostic_filtering/compound_statement_attribute.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fba0915
--- /dev/null
+++ b/test/tint/diagnostic_filtering/compound_statement_attribute.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/test/tint/diagnostic_filtering/compound_statement_attribute.wgsl:8:11 warning: 'textureSample' must only be called from uniform control flow
+      _ = textureSample(t, s, vec2(0, 0));
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/compound_statement_attribute.wgsl:7:5 note: control flow depends on possibly non-uniform value
+    if (x > 0) {
+    ^^
+
+<dawn>/test/tint/diagnostic_filtering/compound_statement_attribute.wgsl:7:9 note: user-defined input 'x' of 'main' may be non-uniform
+    if (x > 0) {
+        ^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/diagnostic_filtering/default_case_body_attribute.wgsl.expected.ir.msl b/test/tint/diagnostic_filtering/default_case_body_attribute.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c295ae9
--- /dev/null
+++ b/test/tint/diagnostic_filtering/default_case_body_attribute.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/test/tint/diagnostic_filtering/default_case_body_attribute.wgsl:8:11 warning: 'textureSample' must only be called from uniform control flow
+      _ = textureSample(t, s, vec2(0, 0));
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/default_case_body_attribute.wgsl:6:3 note: control flow depends on possibly non-uniform value
+  switch (i32(x)) {
+  ^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/default_case_body_attribute.wgsl:6:15 note: user-defined input 'x' of 'main' may be non-uniform
+  switch (i32(x)) {
+              ^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/diagnostic_filtering/directive.wgsl.expected.ir.msl b/test/tint/diagnostic_filtering/directive.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c0b06dd
--- /dev/null
+++ b/test/tint/diagnostic_filtering/directive.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/test/tint/diagnostic_filtering/directive.wgsl:9:9 warning: 'textureSample' must only be called from uniform control flow
+    _ = textureSample(t, s, vec2(0, 0));
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/directive.wgsl:8:3 note: control flow depends on possibly non-uniform value
+  if (x > 0) {
+  ^^
+
+<dawn>/test/tint/diagnostic_filtering/directive.wgsl:8:7 note: user-defined input 'x' of 'main' may be non-uniform
+  if (x > 0) {
+      ^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/diagnostic_filtering/else_body_attribute.wgsl.expected.ir.msl b/test/tint/diagnostic_filtering/else_body_attribute.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d67bbbd
--- /dev/null
+++ b/test/tint/diagnostic_filtering/else_body_attribute.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/test/tint/diagnostic_filtering/else_body_attribute.wgsl:8:9 warning: 'textureSample' must only be called from uniform control flow
+    _ = textureSample(t, s, vec2(0, 0));
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/else_body_attribute.wgsl:6:3 note: control flow depends on possibly non-uniform value
+  if (x > 0) {
+  ^^
+
+<dawn>/test/tint/diagnostic_filtering/else_body_attribute.wgsl:6:7 note: user-defined input 'x' of 'main' may be non-uniform
+  if (x > 0) {
+      ^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/diagnostic_filtering/else_if_body_attribute.wgsl.expected.ir.msl b/test/tint/diagnostic_filtering/else_if_body_attribute.wgsl.expected.ir.msl
new file mode 100644
index 0000000..62762b3
--- /dev/null
+++ b/test/tint/diagnostic_filtering/else_if_body_attribute.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/test/tint/diagnostic_filtering/else_if_body_attribute.wgsl:8:9 warning: 'textureSample' must only be called from uniform control flow
+    _ = textureSample(t, s, vec2(0, 0));
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/else_if_body_attribute.wgsl:6:3 note: control flow depends on possibly non-uniform value
+  if (x > 0) {
+  ^^
+
+<dawn>/test/tint/diagnostic_filtering/else_if_body_attribute.wgsl:6:7 note: user-defined input 'x' of 'main' may be non-uniform
+  if (x > 0) {
+      ^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/diagnostic_filtering/for_loop_attribute.wgsl.expected.ir.msl b/test/tint/diagnostic_filtering/for_loop_attribute.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e5392a0
--- /dev/null
+++ b/test/tint/diagnostic_filtering/for_loop_attribute.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/test/tint/diagnostic_filtering/for_loop_attribute.wgsl:5:21 warning: 'dpdx' must only be called from uniform control flow
+  for (; x > v.x && dpdx(1.0) > 0.0; ) {
+                    ^^^^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/for_loop_attribute.wgsl:5:3 note: control flow depends on possibly non-uniform value
+  for (; x > v.x && dpdx(1.0) > 0.0; ) {
+  ^^^
+
+<dawn>/test/tint/diagnostic_filtering/for_loop_attribute.wgsl:5:21 note: return value of 'dpdx' may be non-uniform
+  for (; x > v.x && dpdx(1.0) > 0.0; ) {
+                    ^^^^^^^^^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/diagnostic_filtering/for_loop_body_attribute.wgsl.expected.ir.msl b/test/tint/diagnostic_filtering/for_loop_body_attribute.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7186005
--- /dev/null
+++ b/test/tint/diagnostic_filtering/for_loop_body_attribute.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/test/tint/diagnostic_filtering/for_loop_body_attribute.wgsl:8:9 warning: 'textureSample' must only be called from uniform control flow
+    v = textureSample(t, s, vec2(0, 0));
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/for_loop_body_attribute.wgsl:7:3 note: control flow depends on possibly non-uniform value
+  for (; x > v.x; ) @diagnostic(warning, derivative_uniformity) {
+  ^^^
+
+<dawn>/test/tint/diagnostic_filtering/for_loop_body_attribute.wgsl:8:9 note: return value of 'textureSample' may be non-uniform
+    v = textureSample(t, s, vec2(0, 0));
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/diagnostic_filtering/function_attribute.wgsl.expected.ir.msl b/test/tint/diagnostic_filtering/function_attribute.wgsl.expected.ir.msl
new file mode 100644
index 0000000..747c93d
--- /dev/null
+++ b/test/tint/diagnostic_filtering/function_attribute.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/test/tint/diagnostic_filtering/function_attribute.wgsl:7:9 warning: 'textureSample' must only be called from uniform control flow
+    _ = textureSample(t, s, vec2(0, 0));
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/function_attribute.wgsl:6:3 note: control flow depends on possibly non-uniform value
+  if (x > 0) {
+  ^^
+
+<dawn>/test/tint/diagnostic_filtering/function_attribute.wgsl:6:7 note: user-defined input 'x' of 'main' may be non-uniform
+  if (x > 0) {
+      ^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/diagnostic_filtering/function_body_attribute.wgsl.expected.ir.msl b/test/tint/diagnostic_filtering/function_body_attribute.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b2b4f25
--- /dev/null
+++ b/test/tint/diagnostic_filtering/function_body_attribute.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/test/tint/diagnostic_filtering/function_body_attribute.wgsl:7:9 warning: 'textureSample' must only be called from uniform control flow
+    _ = textureSample(t, s, vec2(0, 0));
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/function_body_attribute.wgsl:6:3 note: control flow depends on possibly non-uniform value
+  if (x > 0) {
+  ^^
+
+<dawn>/test/tint/diagnostic_filtering/function_body_attribute.wgsl:6:7 note: user-defined input 'x' of 'main' may be non-uniform
+  if (x > 0) {
+      ^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/diagnostic_filtering/if_body_attribute.wgsl.expected.ir.msl b/test/tint/diagnostic_filtering/if_body_attribute.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ff99c12
--- /dev/null
+++ b/test/tint/diagnostic_filtering/if_body_attribute.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/test/tint/diagnostic_filtering/if_body_attribute.wgsl:7:9 warning: 'textureSample' must only be called from uniform control flow
+    _ = textureSample(t, s, vec2(0, 0));
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/if_body_attribute.wgsl:6:3 note: control flow depends on possibly non-uniform value
+  if (x > 0) @diagnostic(warning, derivative_uniformity) {
+  ^^
+
+<dawn>/test/tint/diagnostic_filtering/if_body_attribute.wgsl:6:7 note: user-defined input 'x' of 'main' may be non-uniform
+  if (x > 0) @diagnostic(warning, derivative_uniformity) {
+      ^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/diagnostic_filtering/if_statement_attribute.wgsl.expected.ir.msl b/test/tint/diagnostic_filtering/if_statement_attribute.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a07f2cc
--- /dev/null
+++ b/test/tint/diagnostic_filtering/if_statement_attribute.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/test/tint/diagnostic_filtering/if_statement_attribute.wgsl:8:14 warning: 'dpdx' must only be called from uniform control flow
+  } else if (dpdx(1.0) > 0)  {
+             ^^^^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/if_statement_attribute.wgsl:7:3 note: control flow depends on possibly non-uniform value
+  if (x > 0) {
+  ^^
+
+<dawn>/test/tint/diagnostic_filtering/if_statement_attribute.wgsl:7:7 note: user-defined input 'x' of 'main' may be non-uniform
+  if (x > 0) {
+      ^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/diagnostic_filtering/loop_attribute.wgsl.expected.ir.msl b/test/tint/diagnostic_filtering/loop_attribute.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1b4eddd
--- /dev/null
+++ b/test/tint/diagnostic_filtering/loop_attribute.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/test/tint/diagnostic_filtering/loop_attribute.wgsl:5:9 warning: 'dpdx' must only be called from uniform control flow
+    _ = dpdx(1.0);
+        ^^^^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/loop_attribute.wgsl:7:7 note: control flow depends on possibly non-uniform value
+      break if x > 0.0;
+      ^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/loop_attribute.wgsl:7:16 note: user-defined input 'x' of 'main' may be non-uniform
+      break if x > 0.0;
+               ^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/diagnostic_filtering/loop_body_attribute.wgsl.expected.ir.msl b/test/tint/diagnostic_filtering/loop_body_attribute.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0f0f566
--- /dev/null
+++ b/test/tint/diagnostic_filtering/loop_body_attribute.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/test/tint/diagnostic_filtering/loop_body_attribute.wgsl:4:9 warning: 'dpdx' must only be called from uniform control flow
+    _ = dpdx(1.0);
+        ^^^^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/loop_body_attribute.wgsl:6:7 note: control flow depends on possibly non-uniform value
+      break if x > 0.0;
+      ^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/loop_body_attribute.wgsl:6:16 note: user-defined input 'x' of 'main' may be non-uniform
+      break if x > 0.0;
+               ^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/diagnostic_filtering/loop_continuing_attribute.wgsl.expected.ir.msl b/test/tint/diagnostic_filtering/loop_continuing_attribute.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cc7391d
--- /dev/null
+++ b/test/tint/diagnostic_filtering/loop_continuing_attribute.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/test/tint/diagnostic_filtering/loop_continuing_attribute.wgsl:5:11 warning: 'dpdx' must only be called from uniform control flow
+      _ = dpdx(1.0);
+          ^^^^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/loop_continuing_attribute.wgsl:6:7 note: control flow depends on possibly non-uniform value
+      break if x > 0.0;
+      ^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/loop_continuing_attribute.wgsl:6:16 note: user-defined input 'x' of 'main' may be non-uniform
+      break if x > 0.0;
+               ^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/diagnostic_filtering/switch_body_attribute.wgsl.expected.ir.msl b/test/tint/diagnostic_filtering/switch_body_attribute.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3981779
--- /dev/null
+++ b/test/tint/diagnostic_filtering/switch_body_attribute.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/test/tint/diagnostic_filtering/switch_body_attribute.wgsl:5:11 warning: 'dpdx' must only be called from uniform control flow
+      _ = dpdx(1.0);
+          ^^^^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/switch_body_attribute.wgsl:3:3 note: control flow depends on possibly non-uniform value
+  switch (i32(x)) @diagnostic(warning, derivative_uniformity) {
+  ^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/switch_body_attribute.wgsl:3:15 note: user-defined input 'x' of 'main' may be non-uniform
+  switch (i32(x)) @diagnostic(warning, derivative_uniformity) {
+              ^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/diagnostic_filtering/switch_statement_attribute.wgsl.expected.ir.msl b/test/tint/diagnostic_filtering/switch_statement_attribute.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d95b6c4
--- /dev/null
+++ b/test/tint/diagnostic_filtering/switch_statement_attribute.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/test/tint/diagnostic_filtering/switch_statement_attribute.wgsl:7:27 warning: 'dpdx' must only be called from uniform control flow
+  switch (i32(x == 0.0 && dpdx(1.0) == 0.0)) {
+                          ^^^^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/switch_statement_attribute.wgsl:7:24 note: control flow depends on possibly non-uniform value
+  switch (i32(x == 0.0 && dpdx(1.0) == 0.0)) {
+                       ^^
+
+<dawn>/test/tint/diagnostic_filtering/switch_statement_attribute.wgsl:7:15 note: user-defined input 'x' of 'main' may be non-uniform
+  switch (i32(x == 0.0 && dpdx(1.0) == 0.0)) {
+              ^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/diagnostic_filtering/while_loop_attribute.wgsl.expected.ir.msl b/test/tint/diagnostic_filtering/while_loop_attribute.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dd6a23a
--- /dev/null
+++ b/test/tint/diagnostic_filtering/while_loop_attribute.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/test/tint/diagnostic_filtering/while_loop_attribute.wgsl:5:21 warning: 'dpdx' must only be called from uniform control flow
+  while (x > 0.0 && dpdx(1.0) > 0.0)  {
+                    ^^^^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/while_loop_attribute.wgsl:5:3 note: control flow depends on possibly non-uniform value
+  while (x > 0.0 && dpdx(1.0) > 0.0)  {
+  ^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/while_loop_attribute.wgsl:5:21 note: return value of 'dpdx' may be non-uniform
+  while (x > 0.0 && dpdx(1.0) > 0.0)  {
+                    ^^^^^^^^^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/diagnostic_filtering/while_loop_body_attribute.wgsl.expected.ir.msl b/test/tint/diagnostic_filtering/while_loop_body_attribute.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9e9a013
--- /dev/null
+++ b/test/tint/diagnostic_filtering/while_loop_body_attribute.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/test/tint/diagnostic_filtering/while_loop_body_attribute.wgsl:8:9 warning: 'textureSample' must only be called from uniform control flow
+    v = textureSample(t, s, vec2(0, 0));
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/while_loop_body_attribute.wgsl:7:3 note: control flow depends on possibly non-uniform value
+  while (x > v.x) @diagnostic(warning, derivative_uniformity) {
+  ^^^^^
+
+<dawn>/test/tint/diagnostic_filtering/while_loop_body_attribute.wgsl:8:9 note: return value of 'textureSample' may be non-uniform
+    v = textureSample(t, s, vec2(0, 0));
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/expressions/binary/mul/mat3x2-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/mat3x2-vec3/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..422ee89
--- /dev/null
+++ b/test/tint/expressions/binary/mul/mat3x2-vec3/f16.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(8) {
+  tint_symbol:mat3x2<f16> @offset(0)
+  vector:vec3<f16> @offset(16)
+}
+
+%b1 = block {  # root
+  %data:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol_1 = @fragment func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat3x2<f16>, read> = access %data, 0u
+    %4:mat3x2<f16> = load %3
+    %5:ptr<uniform, vec3<f16>, read> = access %data, 1u
+    %6:vec3<f16> = load %5
+    %x:vec2<f16> = mul %4, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..99fa5f6
--- /dev/null
+++ b/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  tint_symbol:mat3x2<f32> @offset(0)
+  vector:vec3<f32> @offset(32)
+}
+
+%b1 = block {  # root
+  %data:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol_1 = @fragment func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat3x2<f32>, read> = access %data, 0u
+    %4:mat3x2<f32> = load %3
+    %5:ptr<uniform, vec3<f32>, read> = access %data, 1u
+    %6:vec3<f32> = load %5
+    %x:vec2<f32> = mul %4, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4e25721
--- /dev/null
+++ b/test/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(8) {
+  tint_symbol:mat3x3<f16> @offset(0)
+  vector:vec3<f16> @offset(24)
+}
+
+%b1 = block {  # root
+  %data:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol_1 = @fragment func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat3x3<f16>, read> = access %data, 0u
+    %4:mat3x3<f16> = load %3
+    %5:ptr<uniform, vec3<f16>, read> = access %data, 1u
+    %6:vec3<f16> = load %5
+    %x:vec3<f16> = mul %4, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..406c210
--- /dev/null
+++ b/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  tint_symbol:mat3x3<f32> @offset(0)
+  vector:vec3<f32> @offset(48)
+}
+
+%b1 = block {  # root
+  %data:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol_1 = @fragment func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, mat3x3<f32>, read> = access %data, 0u
+    %4:mat3x3<f32> = load %3
+    %5:ptr<uniform, vec3<f32>, read> = access %data, 1u
+    %6:vec3<f32> = load %5
+    %x:vec3<f32> = mul %4, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eafe947
--- /dev/null
+++ b/test/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(8) {
+  tint_symbol:mat3x3<f16> @offset(0)
+  vector:vec3<f16> @offset(24)
+}
+
+%b1 = block {  # root
+  %data:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol_1 = @fragment func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, vec3<f16>, read> = access %data, 1u
+    %4:vec3<f16> = load %3
+    %5:ptr<uniform, mat3x3<f16>, read> = access %data, 0u
+    %6:mat3x3<f16> = load %5
+    %x:vec3<f16> = mul %4, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e8e12b2
--- /dev/null
+++ b/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  tint_symbol:mat3x3<f32> @offset(0)
+  vector:vec3<f32> @offset(48)
+}
+
+%b1 = block {  # root
+  %data:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol_1 = @fragment func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, vec3<f32>, read> = access %data, 1u
+    %4:vec3<f32> = load %3
+    %5:ptr<uniform, mat3x3<f32>, read> = access %data, 0u
+    %6:mat3x3<f32> = load %5
+    %x:vec3<f32> = mul %4, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6fe170b
--- /dev/null
+++ b/test/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(8) {
+  tint_symbol:mat4x3<f16> @offset(0)
+  vector:vec3<f16> @offset(32)
+}
+
+%b1 = block {  # root
+  %data:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol_1 = @fragment func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, vec3<f16>, read> = access %data, 1u
+    %4:vec3<f16> = load %3
+    %5:ptr<uniform, mat4x3<f16>, read> = access %data, 0u
+    %6:mat4x3<f16> = load %5
+    %x:vec4<f16> = mul %4, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4f87bfc
--- /dev/null
+++ b/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  tint_symbol:mat4x3<f32> @offset(0)
+  vector:vec3<f32> @offset(64)
+}
+
+%b1 = block {  # root
+  %data:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol_1 = @fragment func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, vec3<f32>, read> = access %data, 1u
+    %4:vec3<f32> = load %3
+    %5:ptr<uniform, mat4x3<f32>, read> = access %data, 0u
+    %6:mat4x3<f32> = load %5
+    %x:vec4<f32> = mul %4, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/bitcast/let/128bit/vec4f32-vec4f32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/128bit/vec4f32-vec4f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/128bit/vec4f32-vec4f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/128bit/vec4f32-vec4i32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/128bit/vec4f32-vec4i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/128bit/vec4f32-vec4i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/128bit/vec4f32-vec4u32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/128bit/vec4f32-vec4u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/128bit/vec4f32-vec4u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/128bit/vec4i32-vec4f32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/128bit/vec4i32-vec4f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/128bit/vec4i32-vec4f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/128bit/vec4i32-vec4i32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/128bit/vec4i32-vec4i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/128bit/vec4i32-vec4i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/128bit/vec4i32-vec4u32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/128bit/vec4i32-vec4u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/128bit/vec4i32-vec4u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/128bit/vec4u32-vec4f32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/128bit/vec4u32-vec4f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/128bit/vec4u32-vec4f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/128bit/vec4u32-vec4i32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/128bit/vec4u32-vec4i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/128bit/vec4u32-vec4i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/128bit/vec4u32-vec4u32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/128bit/vec4u32-vec4u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/128bit/vec4u32-vec4u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/16bit/f16-f16.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/16bit/f16-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/16bit/f16-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/32bit/f32-f32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/32bit/f32-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/32bit/f32-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/32bit/f32-i32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/32bit/f32-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/32bit/f32-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/32bit/f32-u32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/32bit/f32-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/32bit/f32-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/32bit/f32-vec2f16.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/32bit/f32-vec2f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/32bit/f32-vec2f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/32bit/i32-f32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/32bit/i32-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/32bit/i32-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/32bit/i32-i32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/32bit/i32-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/32bit/i32-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/32bit/i32-u32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/32bit/i32-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/32bit/i32-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/32bit/i32-vec2f16.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/32bit/i32-vec2f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/32bit/i32-vec2f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/32bit/u32-f32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/32bit/u32-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/32bit/u32-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/32bit/u32-i32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/32bit/u32-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/32bit/u32-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/32bit/u32-u32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/32bit/u32-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/32bit/u32-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/32bit/u32-vec2f16.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/32bit/u32-vec2f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/32bit/u32-vec2f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/32bit/vec2f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/32bit/vec2f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/32bit/vec2f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/32bit/vec2f16-i32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/32bit/vec2f16-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/32bit/vec2f16-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/32bit/vec2f16-u32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/32bit/vec2f16-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/32bit/vec2f16-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/32bit/vec2f16-vec2f16.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/32bit/vec2f16-vec2f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/32bit/vec2f16-vec2f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/48bit/vec3f16-vec3f16.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/48bit/vec3f16-vec3f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/48bit/vec3f16-vec3f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/64bit/vec2f32-vec2f32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/64bit/vec2f32-vec2f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/64bit/vec2f32-vec2f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/64bit/vec2f32-vec2i32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/64bit/vec2f32-vec2i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/64bit/vec2f32-vec2i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/64bit/vec2f32-vec2u32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/64bit/vec2f32-vec2u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/64bit/vec2f32-vec2u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/64bit/vec2f32-vec4f16.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/64bit/vec2f32-vec4f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/64bit/vec2f32-vec4f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/64bit/vec2i32-vec2f32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/64bit/vec2i32-vec2f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/64bit/vec2i32-vec2f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/64bit/vec2i32-vec2i32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/64bit/vec2i32-vec2i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/64bit/vec2i32-vec2i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/64bit/vec2i32-vec2u32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/64bit/vec2i32-vec2u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/64bit/vec2i32-vec2u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/64bit/vec2i32-vec4f16.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/64bit/vec2i32-vec4f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/64bit/vec2i32-vec4f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/64bit/vec2u32-vec2f32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/64bit/vec2u32-vec2f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/64bit/vec2u32-vec2f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/64bit/vec2u32-vec2i32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/64bit/vec2u32-vec2i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/64bit/vec2u32-vec2i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/64bit/vec2u32-vec2u32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/64bit/vec2u32-vec2u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/64bit/vec2u32-vec2u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/64bit/vec2u32-vec4f16.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/64bit/vec2u32-vec4f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/64bit/vec2u32-vec4f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/64bit/vec4f16-vec2f32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/64bit/vec4f16-vec2i32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/64bit/vec4f16-vec2u32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/64bit/vec4f16-vec4f16.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec4f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec4f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/96bit/vec3f32-vec3f32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/96bit/vec3f32-vec3f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/96bit/vec3f32-vec3f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/96bit/vec3f32-vec3i32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/96bit/vec3f32-vec3i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/96bit/vec3f32-vec3i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/96bit/vec3f32-vec3u32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/96bit/vec3f32-vec3u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/96bit/vec3f32-vec3u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/96bit/vec3i32-vec3f32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/96bit/vec3i32-vec3f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/96bit/vec3i32-vec3f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/96bit/vec3i32-vec3i32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/96bit/vec3i32-vec3i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/96bit/vec3i32-vec3i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/96bit/vec3i32-vec3u32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/96bit/vec3i32-vec3u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/96bit/vec3i32-vec3u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/96bit/vec3u32-vec3f32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/96bit/vec3u32-vec3f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/96bit/vec3u32-vec3f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/96bit/vec3u32-vec3i32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/96bit/vec3u32-vec3i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/96bit/vec3u32-vec3i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/bitcast/let/96bit/vec3u32-vec3u32.wgsl.expected.ir.msl b/test/tint/expressions/bitcast/let/96bit/vec3u32-vec3u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/expressions/bitcast/let/96bit/vec3u32-vec3u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/expressions/index/let/let/literal/array.wgsl.expected.ir.msl b/test/tint/expressions/index/let/let/literal/array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/index/let/let/literal/array.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/index/let/let/literal/matrix.wgsl.expected.ir.msl b/test/tint/expressions/index/let/let/literal/matrix.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/index/let/let/literal/matrix.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/index/let/let/literal/vector.wgsl.expected.ir.msl b/test/tint/expressions/index/let/let/literal/vector.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/index/let/let/literal/vector.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/index/let/let/param/array.wgsl.expected.ir.msl b/test/tint/expressions/index/let/let/param/array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/expressions/index/let/let/param/array.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/expressions/index/let/let/param/matrix.wgsl.expected.ir.msl b/test/tint/expressions/index/let/let/param/matrix.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/expressions/index/let/let/param/matrix.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/expressions/index/let/let/param/vector.wgsl.expected.ir.msl b/test/tint/expressions/index/let/let/param/vector.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/expressions/index/let/let/param/vector.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/expressions/index/let/literal/array.wgsl.expected.ir.msl b/test/tint/expressions/index/let/literal/array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/index/let/literal/array.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/index/let/literal/matrix.wgsl.expected.ir.msl b/test/tint/expressions/index/let/literal/matrix.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/index/let/literal/matrix.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/index/let/literal/vector.wgsl.expected.ir.msl b/test/tint/expressions/index/let/literal/vector.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/index/let/literal/vector.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/index/let/param/array.wgsl.expected.ir.msl b/test/tint/expressions/index/let/param/array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/index/let/param/array.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/index/let/param/matrix.wgsl.expected.ir.msl b/test/tint/expressions/index/let/param/matrix.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/index/let/param/matrix.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/index/let/param/vector.wgsl.expected.ir.msl b/test/tint/expressions/index/let/param/vector.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/index/let/param/vector.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/index/let/var/literal/array.wgsl.expected.ir.msl b/test/tint/expressions/index/let/var/literal/array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/index/let/var/literal/array.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/index/let/var/literal/matrix.wgsl.expected.ir.msl b/test/tint/expressions/index/let/var/literal/matrix.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/index/let/var/literal/matrix.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/index/let/var/literal/vector.wgsl.expected.ir.msl b/test/tint/expressions/index/let/var/literal/vector.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/expressions/index/let/var/literal/vector.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/expressions/index/var/let/literal/array.wgsl.expected.ir.msl b/test/tint/expressions/index/var/let/literal/array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/index/var/let/literal/array.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/index/var/let/literal/matrix.wgsl.expected.ir.msl b/test/tint/expressions/index/var/let/literal/matrix.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/index/var/let/literal/matrix.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/index/var/let/literal/vector.wgsl.expected.ir.msl b/test/tint/expressions/index/var/let/literal/vector.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/expressions/index/var/let/literal/vector.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/expressions/index/var/let/param/array.wgsl.expected.ir.msl b/test/tint/expressions/index/var/let/param/array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/expressions/index/var/let/param/array.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/expressions/index/var/let/param/matrix.wgsl.expected.ir.msl b/test/tint/expressions/index/var/let/param/matrix.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/expressions/index/var/let/param/matrix.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/expressions/index/var/let/param/vector.wgsl.expected.ir.msl b/test/tint/expressions/index/var/let/param/vector.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/expressions/index/var/let/param/vector.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/expressions/index/var/literal/array.wgsl.expected.ir.msl b/test/tint/expressions/index/var/literal/array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/index/var/literal/array.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/index/var/literal/matrix.wgsl.expected.ir.msl b/test/tint/expressions/index/var/literal/matrix.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/index/var/literal/matrix.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/index/var/literal/vector.wgsl.expected.ir.msl b/test/tint/expressions/index/var/literal/vector.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/expressions/index/var/literal/vector.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/expressions/index/var/param/array.wgsl.expected.ir.msl b/test/tint/expressions/index/var/param/array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/index/var/param/array.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/index/var/param/matrix.wgsl.expected.ir.msl b/test/tint/expressions/index/var/param/matrix.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/index/var/param/matrix.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/index/var/param/vector.wgsl.expected.ir.msl b/test/tint/expressions/index/var/param/vector.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/expressions/index/var/param/vector.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/expressions/splat/call/bool.wgsl.expected.ir.msl b/test/tint/expressions/splat/call/bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/expressions/splat/call/bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/expressions/splat/call/f16.wgsl.expected.ir.msl b/test/tint/expressions/splat/call/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/expressions/splat/call/f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/expressions/splat/call/f32.wgsl.expected.ir.msl b/test/tint/expressions/splat/call/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/expressions/splat/call/f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/expressions/splat/call/i32.wgsl.expected.ir.msl b/test/tint/expressions/splat/call/i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/expressions/splat/call/i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/expressions/splat/call/u32.wgsl.expected.ir.msl b/test/tint/expressions/splat/call/u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/expressions/splat/call/u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a3a0b49
--- /dev/null
+++ b/test/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.ir.msl
@@ -0,0 +1,503 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(8) {
+  v:vec3<f16> @offset(0)
+}
+
+%b1 = block {  # root
+  %U:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%f = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %4:vec3<f16> = load %3
+    %v:ptr<function, vec3<f16>, read_write> = var, %4
+    %6:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %7:f16 = load_vector_element %6, 0u
+    %x:ptr<function, f16, read_write> = var, %7
+    %9:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %10:f16 = load_vector_element %9, 1u
+    %y:ptr<function, f16, read_write> = var, %10
+    %12:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %13:f16 = load_vector_element %12, 2u
+    %z:ptr<function, f16, read_write> = var, %13
+    %15:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %16:vec3<f16> = load %15
+    %17:vec2<f16> = swizzle %16, xx
+    %xx:ptr<function, vec2<f16>, read_write> = var, %17
+    %19:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %20:vec3<f16> = load %19
+    %21:vec2<f16> = swizzle %20, xy
+    %xy:ptr<function, vec2<f16>, read_write> = var, %21
+    %23:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %24:vec3<f16> = load %23
+    %25:vec2<f16> = swizzle %24, xz
+    %xz:ptr<function, vec2<f16>, read_write> = var, %25
+    %27:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %28:vec3<f16> = load %27
+    %29:vec2<f16> = swizzle %28, yx
+    %yx:ptr<function, vec2<f16>, read_write> = var, %29
+    %31:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %32:vec3<f16> = load %31
+    %33:vec2<f16> = swizzle %32, yy
+    %yy:ptr<function, vec2<f16>, read_write> = var, %33
+    %35:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %36:vec3<f16> = load %35
+    %37:vec2<f16> = swizzle %36, yz
+    %yz:ptr<function, vec2<f16>, read_write> = var, %37
+    %39:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %40:vec3<f16> = load %39
+    %41:vec2<f16> = swizzle %40, zx
+    %zx:ptr<function, vec2<f16>, read_write> = var, %41
+    %43:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %44:vec3<f16> = load %43
+    %45:vec2<f16> = swizzle %44, zy
+    %zy:ptr<function, vec2<f16>, read_write> = var, %45
+    %47:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %48:vec3<f16> = load %47
+    %49:vec2<f16> = swizzle %48, zz
+    %zz:ptr<function, vec2<f16>, read_write> = var, %49
+    %51:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %52:vec3<f16> = load %51
+    %53:vec3<f16> = swizzle %52, xxx
+    %xxx:ptr<function, vec3<f16>, read_write> = var, %53
+    %55:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %56:vec3<f16> = load %55
+    %57:vec3<f16> = swizzle %56, xxy
+    %xxy:ptr<function, vec3<f16>, read_write> = var, %57
+    %59:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %60:vec3<f16> = load %59
+    %61:vec3<f16> = swizzle %60, xxz
+    %xxz:ptr<function, vec3<f16>, read_write> = var, %61
+    %63:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %64:vec3<f16> = load %63
+    %65:vec3<f16> = swizzle %64, xyx
+    %xyx:ptr<function, vec3<f16>, read_write> = var, %65
+    %67:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %68:vec3<f16> = load %67
+    %69:vec3<f16> = swizzle %68, xyy
+    %xyy:ptr<function, vec3<f16>, read_write> = var, %69
+    %71:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %72:vec3<f16> = load %71
+    %73:vec3<f16> = swizzle %72, xyz
+    %xyz:ptr<function, vec3<f16>, read_write> = var, %73
+    %75:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %76:vec3<f16> = load %75
+    %77:vec3<f16> = swizzle %76, xzx
+    %xzx:ptr<function, vec3<f16>, read_write> = var, %77
+    %79:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %80:vec3<f16> = load %79
+    %81:vec3<f16> = swizzle %80, xzy
+    %xzy:ptr<function, vec3<f16>, read_write> = var, %81
+    %83:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %84:vec3<f16> = load %83
+    %85:vec3<f16> = swizzle %84, xzz
+    %xzz:ptr<function, vec3<f16>, read_write> = var, %85
+    %87:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %88:vec3<f16> = load %87
+    %89:vec3<f16> = swizzle %88, yxx
+    %yxx:ptr<function, vec3<f16>, read_write> = var, %89
+    %91:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %92:vec3<f16> = load %91
+    %93:vec3<f16> = swizzle %92, yxy
+    %yxy:ptr<function, vec3<f16>, read_write> = var, %93
+    %95:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %96:vec3<f16> = load %95
+    %97:vec3<f16> = swizzle %96, yxz
+    %yxz:ptr<function, vec3<f16>, read_write> = var, %97
+    %99:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %100:vec3<f16> = load %99
+    %101:vec3<f16> = swizzle %100, yyx
+    %yyx:ptr<function, vec3<f16>, read_write> = var, %101
+    %103:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %104:vec3<f16> = load %103
+    %105:vec3<f16> = swizzle %104, yyy
+    %yyy:ptr<function, vec3<f16>, read_write> = var, %105
+    %107:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %108:vec3<f16> = load %107
+    %109:vec3<f16> = swizzle %108, yyz
+    %yyz:ptr<function, vec3<f16>, read_write> = var, %109
+    %111:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %112:vec3<f16> = load %111
+    %113:vec3<f16> = swizzle %112, yzx
+    %yzx:ptr<function, vec3<f16>, read_write> = var, %113
+    %115:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %116:vec3<f16> = load %115
+    %117:vec3<f16> = swizzle %116, yzy
+    %yzy:ptr<function, vec3<f16>, read_write> = var, %117
+    %119:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %120:vec3<f16> = load %119
+    %121:vec3<f16> = swizzle %120, yzz
+    %yzz:ptr<function, vec3<f16>, read_write> = var, %121
+    %123:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %124:vec3<f16> = load %123
+    %125:vec3<f16> = swizzle %124, zxx
+    %zxx:ptr<function, vec3<f16>, read_write> = var, %125
+    %127:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %128:vec3<f16> = load %127
+    %129:vec3<f16> = swizzle %128, zxy
+    %zxy:ptr<function, vec3<f16>, read_write> = var, %129
+    %131:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %132:vec3<f16> = load %131
+    %133:vec3<f16> = swizzle %132, zxz
+    %zxz:ptr<function, vec3<f16>, read_write> = var, %133
+    %135:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %136:vec3<f16> = load %135
+    %137:vec3<f16> = swizzle %136, zyx
+    %zyx:ptr<function, vec3<f16>, read_write> = var, %137
+    %139:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %140:vec3<f16> = load %139
+    %141:vec3<f16> = swizzle %140, zyy
+    %zyy:ptr<function, vec3<f16>, read_write> = var, %141
+    %143:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %144:vec3<f16> = load %143
+    %145:vec3<f16> = swizzle %144, zyz
+    %zyz:ptr<function, vec3<f16>, read_write> = var, %145
+    %147:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %148:vec3<f16> = load %147
+    %149:vec3<f16> = swizzle %148, zzx
+    %zzx:ptr<function, vec3<f16>, read_write> = var, %149
+    %151:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %152:vec3<f16> = load %151
+    %153:vec3<f16> = swizzle %152, zzy
+    %zzy:ptr<function, vec3<f16>, read_write> = var, %153
+    %155:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %156:vec3<f16> = load %155
+    %157:vec3<f16> = swizzle %156, zzz
+    %zzz:ptr<function, vec3<f16>, read_write> = var, %157
+    %159:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %160:vec3<f16> = load %159
+    %161:vec4<f16> = swizzle %160, xxxx
+    %xxxx:ptr<function, vec4<f16>, read_write> = var, %161
+    %163:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %164:vec3<f16> = load %163
+    %165:vec4<f16> = swizzle %164, xxxy
+    %xxxy:ptr<function, vec4<f16>, read_write> = var, %165
+    %167:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %168:vec3<f16> = load %167
+    %169:vec4<f16> = swizzle %168, xxxz
+    %xxxz:ptr<function, vec4<f16>, read_write> = var, %169
+    %171:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %172:vec3<f16> = load %171
+    %173:vec4<f16> = swizzle %172, xxyx
+    %xxyx:ptr<function, vec4<f16>, read_write> = var, %173
+    %175:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %176:vec3<f16> = load %175
+    %177:vec4<f16> = swizzle %176, xxyy
+    %xxyy:ptr<function, vec4<f16>, read_write> = var, %177
+    %179:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %180:vec3<f16> = load %179
+    %181:vec4<f16> = swizzle %180, xxyz
+    %xxyz:ptr<function, vec4<f16>, read_write> = var, %181
+    %183:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %184:vec3<f16> = load %183
+    %185:vec4<f16> = swizzle %184, xxzx
+    %xxzx:ptr<function, vec4<f16>, read_write> = var, %185
+    %187:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %188:vec3<f16> = load %187
+    %189:vec4<f16> = swizzle %188, xxzy
+    %xxzy:ptr<function, vec4<f16>, read_write> = var, %189
+    %191:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %192:vec3<f16> = load %191
+    %193:vec4<f16> = swizzle %192, xxzz
+    %xxzz:ptr<function, vec4<f16>, read_write> = var, %193
+    %195:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %196:vec3<f16> = load %195
+    %197:vec4<f16> = swizzle %196, xyxx
+    %xyxx:ptr<function, vec4<f16>, read_write> = var, %197
+    %199:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %200:vec3<f16> = load %199
+    %201:vec4<f16> = swizzle %200, xyxy
+    %xyxy:ptr<function, vec4<f16>, read_write> = var, %201
+    %203:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %204:vec3<f16> = load %203
+    %205:vec4<f16> = swizzle %204, xyxz
+    %xyxz:ptr<function, vec4<f16>, read_write> = var, %205
+    %207:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %208:vec3<f16> = load %207
+    %209:vec4<f16> = swizzle %208, xyyx
+    %xyyx:ptr<function, vec4<f16>, read_write> = var, %209
+    %211:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %212:vec3<f16> = load %211
+    %213:vec4<f16> = swizzle %212, xyyy
+    %xyyy:ptr<function, vec4<f16>, read_write> = var, %213
+    %215:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %216:vec3<f16> = load %215
+    %217:vec4<f16> = swizzle %216, xyyz
+    %xyyz:ptr<function, vec4<f16>, read_write> = var, %217
+    %219:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %220:vec3<f16> = load %219
+    %221:vec4<f16> = swizzle %220, xyzx
+    %xyzx:ptr<function, vec4<f16>, read_write> = var, %221
+    %223:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %224:vec3<f16> = load %223
+    %225:vec4<f16> = swizzle %224, xyzy
+    %xyzy:ptr<function, vec4<f16>, read_write> = var, %225
+    %227:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %228:vec3<f16> = load %227
+    %229:vec4<f16> = swizzle %228, xyzz
+    %xyzz:ptr<function, vec4<f16>, read_write> = var, %229
+    %231:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %232:vec3<f16> = load %231
+    %233:vec4<f16> = swizzle %232, xzxx
+    %xzxx:ptr<function, vec4<f16>, read_write> = var, %233
+    %235:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %236:vec3<f16> = load %235
+    %237:vec4<f16> = swizzle %236, xzxy
+    %xzxy:ptr<function, vec4<f16>, read_write> = var, %237
+    %239:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %240:vec3<f16> = load %239
+    %241:vec4<f16> = swizzle %240, xzxz
+    %xzxz:ptr<function, vec4<f16>, read_write> = var, %241
+    %243:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %244:vec3<f16> = load %243
+    %245:vec4<f16> = swizzle %244, xzyx
+    %xzyx:ptr<function, vec4<f16>, read_write> = var, %245
+    %247:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %248:vec3<f16> = load %247
+    %249:vec4<f16> = swizzle %248, xzyy
+    %xzyy:ptr<function, vec4<f16>, read_write> = var, %249
+    %251:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %252:vec3<f16> = load %251
+    %253:vec4<f16> = swizzle %252, xzyz
+    %xzyz:ptr<function, vec4<f16>, read_write> = var, %253
+    %255:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %256:vec3<f16> = load %255
+    %257:vec4<f16> = swizzle %256, xzzx
+    %xzzx:ptr<function, vec4<f16>, read_write> = var, %257
+    %259:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %260:vec3<f16> = load %259
+    %261:vec4<f16> = swizzle %260, xzzy
+    %xzzy:ptr<function, vec4<f16>, read_write> = var, %261
+    %263:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %264:vec3<f16> = load %263
+    %265:vec4<f16> = swizzle %264, xzzz
+    %xzzz:ptr<function, vec4<f16>, read_write> = var, %265
+    %267:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %268:vec3<f16> = load %267
+    %269:vec4<f16> = swizzle %268, yxxx
+    %yxxx:ptr<function, vec4<f16>, read_write> = var, %269
+    %271:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %272:vec3<f16> = load %271
+    %273:vec4<f16> = swizzle %272, yxxy
+    %yxxy:ptr<function, vec4<f16>, read_write> = var, %273
+    %275:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %276:vec3<f16> = load %275
+    %277:vec4<f16> = swizzle %276, yxxz
+    %yxxz:ptr<function, vec4<f16>, read_write> = var, %277
+    %279:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %280:vec3<f16> = load %279
+    %281:vec4<f16> = swizzle %280, yxyx
+    %yxyx:ptr<function, vec4<f16>, read_write> = var, %281
+    %283:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %284:vec3<f16> = load %283
+    %285:vec4<f16> = swizzle %284, yxyy
+    %yxyy:ptr<function, vec4<f16>, read_write> = var, %285
+    %287:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %288:vec3<f16> = load %287
+    %289:vec4<f16> = swizzle %288, yxyz
+    %yxyz:ptr<function, vec4<f16>, read_write> = var, %289
+    %291:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %292:vec3<f16> = load %291
+    %293:vec4<f16> = swizzle %292, yxzx
+    %yxzx:ptr<function, vec4<f16>, read_write> = var, %293
+    %295:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %296:vec3<f16> = load %295
+    %297:vec4<f16> = swizzle %296, yxzy
+    %yxzy:ptr<function, vec4<f16>, read_write> = var, %297
+    %299:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %300:vec3<f16> = load %299
+    %301:vec4<f16> = swizzle %300, yxzz
+    %yxzz:ptr<function, vec4<f16>, read_write> = var, %301
+    %303:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %304:vec3<f16> = load %303
+    %305:vec4<f16> = swizzle %304, yyxx
+    %yyxx:ptr<function, vec4<f16>, read_write> = var, %305
+    %307:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %308:vec3<f16> = load %307
+    %309:vec4<f16> = swizzle %308, yyxy
+    %yyxy:ptr<function, vec4<f16>, read_write> = var, %309
+    %311:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %312:vec3<f16> = load %311
+    %313:vec4<f16> = swizzle %312, yyxz
+    %yyxz:ptr<function, vec4<f16>, read_write> = var, %313
+    %315:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %316:vec3<f16> = load %315
+    %317:vec4<f16> = swizzle %316, yyyx
+    %yyyx:ptr<function, vec4<f16>, read_write> = var, %317
+    %319:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %320:vec3<f16> = load %319
+    %321:vec4<f16> = swizzle %320, yyyy
+    %yyyy:ptr<function, vec4<f16>, read_write> = var, %321
+    %323:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %324:vec3<f16> = load %323
+    %325:vec4<f16> = swizzle %324, yyyz
+    %yyyz:ptr<function, vec4<f16>, read_write> = var, %325
+    %327:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %328:vec3<f16> = load %327
+    %329:vec4<f16> = swizzle %328, yyzx
+    %yyzx:ptr<function, vec4<f16>, read_write> = var, %329
+    %331:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %332:vec3<f16> = load %331
+    %333:vec4<f16> = swizzle %332, yyzy
+    %yyzy:ptr<function, vec4<f16>, read_write> = var, %333
+    %335:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %336:vec3<f16> = load %335
+    %337:vec4<f16> = swizzle %336, yyzz
+    %yyzz:ptr<function, vec4<f16>, read_write> = var, %337
+    %339:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %340:vec3<f16> = load %339
+    %341:vec4<f16> = swizzle %340, yzxx
+    %yzxx:ptr<function, vec4<f16>, read_write> = var, %341
+    %343:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %344:vec3<f16> = load %343
+    %345:vec4<f16> = swizzle %344, yzxy
+    %yzxy:ptr<function, vec4<f16>, read_write> = var, %345
+    %347:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %348:vec3<f16> = load %347
+    %349:vec4<f16> = swizzle %348, yzxz
+    %yzxz:ptr<function, vec4<f16>, read_write> = var, %349
+    %351:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %352:vec3<f16> = load %351
+    %353:vec4<f16> = swizzle %352, yzyx
+    %yzyx:ptr<function, vec4<f16>, read_write> = var, %353
+    %355:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %356:vec3<f16> = load %355
+    %357:vec4<f16> = swizzle %356, yzyy
+    %yzyy:ptr<function, vec4<f16>, read_write> = var, %357
+    %359:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %360:vec3<f16> = load %359
+    %361:vec4<f16> = swizzle %360, yzyz
+    %yzyz:ptr<function, vec4<f16>, read_write> = var, %361
+    %363:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %364:vec3<f16> = load %363
+    %365:vec4<f16> = swizzle %364, yzzx
+    %yzzx:ptr<function, vec4<f16>, read_write> = var, %365
+    %367:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %368:vec3<f16> = load %367
+    %369:vec4<f16> = swizzle %368, yzzy
+    %yzzy:ptr<function, vec4<f16>, read_write> = var, %369
+    %371:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %372:vec3<f16> = load %371
+    %373:vec4<f16> = swizzle %372, yzzz
+    %yzzz:ptr<function, vec4<f16>, read_write> = var, %373
+    %375:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %376:vec3<f16> = load %375
+    %377:vec4<f16> = swizzle %376, zxxx
+    %zxxx:ptr<function, vec4<f16>, read_write> = var, %377
+    %379:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %380:vec3<f16> = load %379
+    %381:vec4<f16> = swizzle %380, zxxy
+    %zxxy:ptr<function, vec4<f16>, read_write> = var, %381
+    %383:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %384:vec3<f16> = load %383
+    %385:vec4<f16> = swizzle %384, zxxz
+    %zxxz:ptr<function, vec4<f16>, read_write> = var, %385
+    %387:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %388:vec3<f16> = load %387
+    %389:vec4<f16> = swizzle %388, zxyx
+    %zxyx:ptr<function, vec4<f16>, read_write> = var, %389
+    %391:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %392:vec3<f16> = load %391
+    %393:vec4<f16> = swizzle %392, zxyy
+    %zxyy:ptr<function, vec4<f16>, read_write> = var, %393
+    %395:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %396:vec3<f16> = load %395
+    %397:vec4<f16> = swizzle %396, zxyz
+    %zxyz:ptr<function, vec4<f16>, read_write> = var, %397
+    %399:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %400:vec3<f16> = load %399
+    %401:vec4<f16> = swizzle %400, zxzx
+    %zxzx:ptr<function, vec4<f16>, read_write> = var, %401
+    %403:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %404:vec3<f16> = load %403
+    %405:vec4<f16> = swizzle %404, zxzy
+    %zxzy:ptr<function, vec4<f16>, read_write> = var, %405
+    %407:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %408:vec3<f16> = load %407
+    %409:vec4<f16> = swizzle %408, zxzz
+    %zxzz:ptr<function, vec4<f16>, read_write> = var, %409
+    %411:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %412:vec3<f16> = load %411
+    %413:vec4<f16> = swizzle %412, zyxx
+    %zyxx:ptr<function, vec4<f16>, read_write> = var, %413
+    %415:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %416:vec3<f16> = load %415
+    %417:vec4<f16> = swizzle %416, zyxy
+    %zyxy:ptr<function, vec4<f16>, read_write> = var, %417
+    %419:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %420:vec3<f16> = load %419
+    %421:vec4<f16> = swizzle %420, zyxz
+    %zyxz:ptr<function, vec4<f16>, read_write> = var, %421
+    %423:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %424:vec3<f16> = load %423
+    %425:vec4<f16> = swizzle %424, zyyx
+    %zyyx:ptr<function, vec4<f16>, read_write> = var, %425
+    %427:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %428:vec3<f16> = load %427
+    %429:vec4<f16> = swizzle %428, zyyy
+    %zyyy:ptr<function, vec4<f16>, read_write> = var, %429
+    %431:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %432:vec3<f16> = load %431
+    %433:vec4<f16> = swizzle %432, zyyz
+    %zyyz:ptr<function, vec4<f16>, read_write> = var, %433
+    %435:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %436:vec3<f16> = load %435
+    %437:vec4<f16> = swizzle %436, zyzx
+    %zyzx:ptr<function, vec4<f16>, read_write> = var, %437
+    %439:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %440:vec3<f16> = load %439
+    %441:vec4<f16> = swizzle %440, zyzy
+    %zyzy:ptr<function, vec4<f16>, read_write> = var, %441
+    %443:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %444:vec3<f16> = load %443
+    %445:vec4<f16> = swizzle %444, zyzz
+    %zyzz:ptr<function, vec4<f16>, read_write> = var, %445
+    %447:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %448:vec3<f16> = load %447
+    %449:vec4<f16> = swizzle %448, zzxx
+    %zzxx:ptr<function, vec4<f16>, read_write> = var, %449
+    %451:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %452:vec3<f16> = load %451
+    %453:vec4<f16> = swizzle %452, zzxy
+    %zzxy:ptr<function, vec4<f16>, read_write> = var, %453
+    %455:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %456:vec3<f16> = load %455
+    %457:vec4<f16> = swizzle %456, zzxz
+    %zzxz:ptr<function, vec4<f16>, read_write> = var, %457
+    %459:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %460:vec3<f16> = load %459
+    %461:vec4<f16> = swizzle %460, zzyx
+    %zzyx:ptr<function, vec4<f16>, read_write> = var, %461
+    %463:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %464:vec3<f16> = load %463
+    %465:vec4<f16> = swizzle %464, zzyy
+    %zzyy:ptr<function, vec4<f16>, read_write> = var, %465
+    %467:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %468:vec3<f16> = load %467
+    %469:vec4<f16> = swizzle %468, zzyz
+    %zzyz:ptr<function, vec4<f16>, read_write> = var, %469
+    %471:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %472:vec3<f16> = load %471
+    %473:vec4<f16> = swizzle %472, zzzx
+    %zzzx:ptr<function, vec4<f16>, read_write> = var, %473
+    %475:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %476:vec3<f16> = load %475
+    %477:vec4<f16> = swizzle %476, zzzy
+    %zzzy:ptr<function, vec4<f16>, read_write> = var, %477
+    %479:ptr<uniform, vec3<f16>, read> = access %U, 0u
+    %480:vec3<f16> = load %479
+    %481:vec4<f16> = swizzle %480, zzzz
+    %zzzz:ptr<function, vec4<f16>, read_write> = var, %481
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5e5ddee
--- /dev/null
+++ b/test/tint/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.ir.msl
@@ -0,0 +1,503 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  v:vec3<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %U:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%f = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %4:vec3<f32> = load %3
+    %v:ptr<function, vec3<f32>, read_write> = var, %4
+    %6:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %7:f32 = load_vector_element %6, 0u
+    %x:ptr<function, f32, read_write> = var, %7
+    %9:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %10:f32 = load_vector_element %9, 1u
+    %y:ptr<function, f32, read_write> = var, %10
+    %12:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %13:f32 = load_vector_element %12, 2u
+    %z:ptr<function, f32, read_write> = var, %13
+    %15:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %16:vec3<f32> = load %15
+    %17:vec2<f32> = swizzle %16, xx
+    %xx:ptr<function, vec2<f32>, read_write> = var, %17
+    %19:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %20:vec3<f32> = load %19
+    %21:vec2<f32> = swizzle %20, xy
+    %xy:ptr<function, vec2<f32>, read_write> = var, %21
+    %23:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %24:vec3<f32> = load %23
+    %25:vec2<f32> = swizzle %24, xz
+    %xz:ptr<function, vec2<f32>, read_write> = var, %25
+    %27:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %28:vec3<f32> = load %27
+    %29:vec2<f32> = swizzle %28, yx
+    %yx:ptr<function, vec2<f32>, read_write> = var, %29
+    %31:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %32:vec3<f32> = load %31
+    %33:vec2<f32> = swizzle %32, yy
+    %yy:ptr<function, vec2<f32>, read_write> = var, %33
+    %35:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %36:vec3<f32> = load %35
+    %37:vec2<f32> = swizzle %36, yz
+    %yz:ptr<function, vec2<f32>, read_write> = var, %37
+    %39:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %40:vec3<f32> = load %39
+    %41:vec2<f32> = swizzle %40, zx
+    %zx:ptr<function, vec2<f32>, read_write> = var, %41
+    %43:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %44:vec3<f32> = load %43
+    %45:vec2<f32> = swizzle %44, zy
+    %zy:ptr<function, vec2<f32>, read_write> = var, %45
+    %47:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %48:vec3<f32> = load %47
+    %49:vec2<f32> = swizzle %48, zz
+    %zz:ptr<function, vec2<f32>, read_write> = var, %49
+    %51:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %52:vec3<f32> = load %51
+    %53:vec3<f32> = swizzle %52, xxx
+    %xxx:ptr<function, vec3<f32>, read_write> = var, %53
+    %55:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %56:vec3<f32> = load %55
+    %57:vec3<f32> = swizzle %56, xxy
+    %xxy:ptr<function, vec3<f32>, read_write> = var, %57
+    %59:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %60:vec3<f32> = load %59
+    %61:vec3<f32> = swizzle %60, xxz
+    %xxz:ptr<function, vec3<f32>, read_write> = var, %61
+    %63:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %64:vec3<f32> = load %63
+    %65:vec3<f32> = swizzle %64, xyx
+    %xyx:ptr<function, vec3<f32>, read_write> = var, %65
+    %67:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %68:vec3<f32> = load %67
+    %69:vec3<f32> = swizzle %68, xyy
+    %xyy:ptr<function, vec3<f32>, read_write> = var, %69
+    %71:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %72:vec3<f32> = load %71
+    %73:vec3<f32> = swizzle %72, xyz
+    %xyz:ptr<function, vec3<f32>, read_write> = var, %73
+    %75:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %76:vec3<f32> = load %75
+    %77:vec3<f32> = swizzle %76, xzx
+    %xzx:ptr<function, vec3<f32>, read_write> = var, %77
+    %79:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %80:vec3<f32> = load %79
+    %81:vec3<f32> = swizzle %80, xzy
+    %xzy:ptr<function, vec3<f32>, read_write> = var, %81
+    %83:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %84:vec3<f32> = load %83
+    %85:vec3<f32> = swizzle %84, xzz
+    %xzz:ptr<function, vec3<f32>, read_write> = var, %85
+    %87:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %88:vec3<f32> = load %87
+    %89:vec3<f32> = swizzle %88, yxx
+    %yxx:ptr<function, vec3<f32>, read_write> = var, %89
+    %91:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %92:vec3<f32> = load %91
+    %93:vec3<f32> = swizzle %92, yxy
+    %yxy:ptr<function, vec3<f32>, read_write> = var, %93
+    %95:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %96:vec3<f32> = load %95
+    %97:vec3<f32> = swizzle %96, yxz
+    %yxz:ptr<function, vec3<f32>, read_write> = var, %97
+    %99:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %100:vec3<f32> = load %99
+    %101:vec3<f32> = swizzle %100, yyx
+    %yyx:ptr<function, vec3<f32>, read_write> = var, %101
+    %103:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %104:vec3<f32> = load %103
+    %105:vec3<f32> = swizzle %104, yyy
+    %yyy:ptr<function, vec3<f32>, read_write> = var, %105
+    %107:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %108:vec3<f32> = load %107
+    %109:vec3<f32> = swizzle %108, yyz
+    %yyz:ptr<function, vec3<f32>, read_write> = var, %109
+    %111:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %112:vec3<f32> = load %111
+    %113:vec3<f32> = swizzle %112, yzx
+    %yzx:ptr<function, vec3<f32>, read_write> = var, %113
+    %115:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %116:vec3<f32> = load %115
+    %117:vec3<f32> = swizzle %116, yzy
+    %yzy:ptr<function, vec3<f32>, read_write> = var, %117
+    %119:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %120:vec3<f32> = load %119
+    %121:vec3<f32> = swizzle %120, yzz
+    %yzz:ptr<function, vec3<f32>, read_write> = var, %121
+    %123:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %124:vec3<f32> = load %123
+    %125:vec3<f32> = swizzle %124, zxx
+    %zxx:ptr<function, vec3<f32>, read_write> = var, %125
+    %127:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %128:vec3<f32> = load %127
+    %129:vec3<f32> = swizzle %128, zxy
+    %zxy:ptr<function, vec3<f32>, read_write> = var, %129
+    %131:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %132:vec3<f32> = load %131
+    %133:vec3<f32> = swizzle %132, zxz
+    %zxz:ptr<function, vec3<f32>, read_write> = var, %133
+    %135:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %136:vec3<f32> = load %135
+    %137:vec3<f32> = swizzle %136, zyx
+    %zyx:ptr<function, vec3<f32>, read_write> = var, %137
+    %139:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %140:vec3<f32> = load %139
+    %141:vec3<f32> = swizzle %140, zyy
+    %zyy:ptr<function, vec3<f32>, read_write> = var, %141
+    %143:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %144:vec3<f32> = load %143
+    %145:vec3<f32> = swizzle %144, zyz
+    %zyz:ptr<function, vec3<f32>, read_write> = var, %145
+    %147:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %148:vec3<f32> = load %147
+    %149:vec3<f32> = swizzle %148, zzx
+    %zzx:ptr<function, vec3<f32>, read_write> = var, %149
+    %151:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %152:vec3<f32> = load %151
+    %153:vec3<f32> = swizzle %152, zzy
+    %zzy:ptr<function, vec3<f32>, read_write> = var, %153
+    %155:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %156:vec3<f32> = load %155
+    %157:vec3<f32> = swizzle %156, zzz
+    %zzz:ptr<function, vec3<f32>, read_write> = var, %157
+    %159:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %160:vec3<f32> = load %159
+    %161:vec4<f32> = swizzle %160, xxxx
+    %xxxx:ptr<function, vec4<f32>, read_write> = var, %161
+    %163:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %164:vec3<f32> = load %163
+    %165:vec4<f32> = swizzle %164, xxxy
+    %xxxy:ptr<function, vec4<f32>, read_write> = var, %165
+    %167:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %168:vec3<f32> = load %167
+    %169:vec4<f32> = swizzle %168, xxxz
+    %xxxz:ptr<function, vec4<f32>, read_write> = var, %169
+    %171:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %172:vec3<f32> = load %171
+    %173:vec4<f32> = swizzle %172, xxyx
+    %xxyx:ptr<function, vec4<f32>, read_write> = var, %173
+    %175:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %176:vec3<f32> = load %175
+    %177:vec4<f32> = swizzle %176, xxyy
+    %xxyy:ptr<function, vec4<f32>, read_write> = var, %177
+    %179:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %180:vec3<f32> = load %179
+    %181:vec4<f32> = swizzle %180, xxyz
+    %xxyz:ptr<function, vec4<f32>, read_write> = var, %181
+    %183:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %184:vec3<f32> = load %183
+    %185:vec4<f32> = swizzle %184, xxzx
+    %xxzx:ptr<function, vec4<f32>, read_write> = var, %185
+    %187:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %188:vec3<f32> = load %187
+    %189:vec4<f32> = swizzle %188, xxzy
+    %xxzy:ptr<function, vec4<f32>, read_write> = var, %189
+    %191:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %192:vec3<f32> = load %191
+    %193:vec4<f32> = swizzle %192, xxzz
+    %xxzz:ptr<function, vec4<f32>, read_write> = var, %193
+    %195:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %196:vec3<f32> = load %195
+    %197:vec4<f32> = swizzle %196, xyxx
+    %xyxx:ptr<function, vec4<f32>, read_write> = var, %197
+    %199:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %200:vec3<f32> = load %199
+    %201:vec4<f32> = swizzle %200, xyxy
+    %xyxy:ptr<function, vec4<f32>, read_write> = var, %201
+    %203:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %204:vec3<f32> = load %203
+    %205:vec4<f32> = swizzle %204, xyxz
+    %xyxz:ptr<function, vec4<f32>, read_write> = var, %205
+    %207:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %208:vec3<f32> = load %207
+    %209:vec4<f32> = swizzle %208, xyyx
+    %xyyx:ptr<function, vec4<f32>, read_write> = var, %209
+    %211:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %212:vec3<f32> = load %211
+    %213:vec4<f32> = swizzle %212, xyyy
+    %xyyy:ptr<function, vec4<f32>, read_write> = var, %213
+    %215:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %216:vec3<f32> = load %215
+    %217:vec4<f32> = swizzle %216, xyyz
+    %xyyz:ptr<function, vec4<f32>, read_write> = var, %217
+    %219:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %220:vec3<f32> = load %219
+    %221:vec4<f32> = swizzle %220, xyzx
+    %xyzx:ptr<function, vec4<f32>, read_write> = var, %221
+    %223:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %224:vec3<f32> = load %223
+    %225:vec4<f32> = swizzle %224, xyzy
+    %xyzy:ptr<function, vec4<f32>, read_write> = var, %225
+    %227:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %228:vec3<f32> = load %227
+    %229:vec4<f32> = swizzle %228, xyzz
+    %xyzz:ptr<function, vec4<f32>, read_write> = var, %229
+    %231:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %232:vec3<f32> = load %231
+    %233:vec4<f32> = swizzle %232, xzxx
+    %xzxx:ptr<function, vec4<f32>, read_write> = var, %233
+    %235:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %236:vec3<f32> = load %235
+    %237:vec4<f32> = swizzle %236, xzxy
+    %xzxy:ptr<function, vec4<f32>, read_write> = var, %237
+    %239:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %240:vec3<f32> = load %239
+    %241:vec4<f32> = swizzle %240, xzxz
+    %xzxz:ptr<function, vec4<f32>, read_write> = var, %241
+    %243:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %244:vec3<f32> = load %243
+    %245:vec4<f32> = swizzle %244, xzyx
+    %xzyx:ptr<function, vec4<f32>, read_write> = var, %245
+    %247:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %248:vec3<f32> = load %247
+    %249:vec4<f32> = swizzle %248, xzyy
+    %xzyy:ptr<function, vec4<f32>, read_write> = var, %249
+    %251:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %252:vec3<f32> = load %251
+    %253:vec4<f32> = swizzle %252, xzyz
+    %xzyz:ptr<function, vec4<f32>, read_write> = var, %253
+    %255:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %256:vec3<f32> = load %255
+    %257:vec4<f32> = swizzle %256, xzzx
+    %xzzx:ptr<function, vec4<f32>, read_write> = var, %257
+    %259:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %260:vec3<f32> = load %259
+    %261:vec4<f32> = swizzle %260, xzzy
+    %xzzy:ptr<function, vec4<f32>, read_write> = var, %261
+    %263:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %264:vec3<f32> = load %263
+    %265:vec4<f32> = swizzle %264, xzzz
+    %xzzz:ptr<function, vec4<f32>, read_write> = var, %265
+    %267:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %268:vec3<f32> = load %267
+    %269:vec4<f32> = swizzle %268, yxxx
+    %yxxx:ptr<function, vec4<f32>, read_write> = var, %269
+    %271:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %272:vec3<f32> = load %271
+    %273:vec4<f32> = swizzle %272, yxxy
+    %yxxy:ptr<function, vec4<f32>, read_write> = var, %273
+    %275:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %276:vec3<f32> = load %275
+    %277:vec4<f32> = swizzle %276, yxxz
+    %yxxz:ptr<function, vec4<f32>, read_write> = var, %277
+    %279:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %280:vec3<f32> = load %279
+    %281:vec4<f32> = swizzle %280, yxyx
+    %yxyx:ptr<function, vec4<f32>, read_write> = var, %281
+    %283:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %284:vec3<f32> = load %283
+    %285:vec4<f32> = swizzle %284, yxyy
+    %yxyy:ptr<function, vec4<f32>, read_write> = var, %285
+    %287:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %288:vec3<f32> = load %287
+    %289:vec4<f32> = swizzle %288, yxyz
+    %yxyz:ptr<function, vec4<f32>, read_write> = var, %289
+    %291:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %292:vec3<f32> = load %291
+    %293:vec4<f32> = swizzle %292, yxzx
+    %yxzx:ptr<function, vec4<f32>, read_write> = var, %293
+    %295:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %296:vec3<f32> = load %295
+    %297:vec4<f32> = swizzle %296, yxzy
+    %yxzy:ptr<function, vec4<f32>, read_write> = var, %297
+    %299:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %300:vec3<f32> = load %299
+    %301:vec4<f32> = swizzle %300, yxzz
+    %yxzz:ptr<function, vec4<f32>, read_write> = var, %301
+    %303:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %304:vec3<f32> = load %303
+    %305:vec4<f32> = swizzle %304, yyxx
+    %yyxx:ptr<function, vec4<f32>, read_write> = var, %305
+    %307:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %308:vec3<f32> = load %307
+    %309:vec4<f32> = swizzle %308, yyxy
+    %yyxy:ptr<function, vec4<f32>, read_write> = var, %309
+    %311:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %312:vec3<f32> = load %311
+    %313:vec4<f32> = swizzle %312, yyxz
+    %yyxz:ptr<function, vec4<f32>, read_write> = var, %313
+    %315:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %316:vec3<f32> = load %315
+    %317:vec4<f32> = swizzle %316, yyyx
+    %yyyx:ptr<function, vec4<f32>, read_write> = var, %317
+    %319:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %320:vec3<f32> = load %319
+    %321:vec4<f32> = swizzle %320, yyyy
+    %yyyy:ptr<function, vec4<f32>, read_write> = var, %321
+    %323:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %324:vec3<f32> = load %323
+    %325:vec4<f32> = swizzle %324, yyyz
+    %yyyz:ptr<function, vec4<f32>, read_write> = var, %325
+    %327:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %328:vec3<f32> = load %327
+    %329:vec4<f32> = swizzle %328, yyzx
+    %yyzx:ptr<function, vec4<f32>, read_write> = var, %329
+    %331:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %332:vec3<f32> = load %331
+    %333:vec4<f32> = swizzle %332, yyzy
+    %yyzy:ptr<function, vec4<f32>, read_write> = var, %333
+    %335:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %336:vec3<f32> = load %335
+    %337:vec4<f32> = swizzle %336, yyzz
+    %yyzz:ptr<function, vec4<f32>, read_write> = var, %337
+    %339:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %340:vec3<f32> = load %339
+    %341:vec4<f32> = swizzle %340, yzxx
+    %yzxx:ptr<function, vec4<f32>, read_write> = var, %341
+    %343:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %344:vec3<f32> = load %343
+    %345:vec4<f32> = swizzle %344, yzxy
+    %yzxy:ptr<function, vec4<f32>, read_write> = var, %345
+    %347:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %348:vec3<f32> = load %347
+    %349:vec4<f32> = swizzle %348, yzxz
+    %yzxz:ptr<function, vec4<f32>, read_write> = var, %349
+    %351:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %352:vec3<f32> = load %351
+    %353:vec4<f32> = swizzle %352, yzyx
+    %yzyx:ptr<function, vec4<f32>, read_write> = var, %353
+    %355:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %356:vec3<f32> = load %355
+    %357:vec4<f32> = swizzle %356, yzyy
+    %yzyy:ptr<function, vec4<f32>, read_write> = var, %357
+    %359:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %360:vec3<f32> = load %359
+    %361:vec4<f32> = swizzle %360, yzyz
+    %yzyz:ptr<function, vec4<f32>, read_write> = var, %361
+    %363:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %364:vec3<f32> = load %363
+    %365:vec4<f32> = swizzle %364, yzzx
+    %yzzx:ptr<function, vec4<f32>, read_write> = var, %365
+    %367:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %368:vec3<f32> = load %367
+    %369:vec4<f32> = swizzle %368, yzzy
+    %yzzy:ptr<function, vec4<f32>, read_write> = var, %369
+    %371:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %372:vec3<f32> = load %371
+    %373:vec4<f32> = swizzle %372, yzzz
+    %yzzz:ptr<function, vec4<f32>, read_write> = var, %373
+    %375:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %376:vec3<f32> = load %375
+    %377:vec4<f32> = swizzle %376, zxxx
+    %zxxx:ptr<function, vec4<f32>, read_write> = var, %377
+    %379:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %380:vec3<f32> = load %379
+    %381:vec4<f32> = swizzle %380, zxxy
+    %zxxy:ptr<function, vec4<f32>, read_write> = var, %381
+    %383:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %384:vec3<f32> = load %383
+    %385:vec4<f32> = swizzle %384, zxxz
+    %zxxz:ptr<function, vec4<f32>, read_write> = var, %385
+    %387:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %388:vec3<f32> = load %387
+    %389:vec4<f32> = swizzle %388, zxyx
+    %zxyx:ptr<function, vec4<f32>, read_write> = var, %389
+    %391:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %392:vec3<f32> = load %391
+    %393:vec4<f32> = swizzle %392, zxyy
+    %zxyy:ptr<function, vec4<f32>, read_write> = var, %393
+    %395:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %396:vec3<f32> = load %395
+    %397:vec4<f32> = swizzle %396, zxyz
+    %zxyz:ptr<function, vec4<f32>, read_write> = var, %397
+    %399:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %400:vec3<f32> = load %399
+    %401:vec4<f32> = swizzle %400, zxzx
+    %zxzx:ptr<function, vec4<f32>, read_write> = var, %401
+    %403:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %404:vec3<f32> = load %403
+    %405:vec4<f32> = swizzle %404, zxzy
+    %zxzy:ptr<function, vec4<f32>, read_write> = var, %405
+    %407:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %408:vec3<f32> = load %407
+    %409:vec4<f32> = swizzle %408, zxzz
+    %zxzz:ptr<function, vec4<f32>, read_write> = var, %409
+    %411:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %412:vec3<f32> = load %411
+    %413:vec4<f32> = swizzle %412, zyxx
+    %zyxx:ptr<function, vec4<f32>, read_write> = var, %413
+    %415:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %416:vec3<f32> = load %415
+    %417:vec4<f32> = swizzle %416, zyxy
+    %zyxy:ptr<function, vec4<f32>, read_write> = var, %417
+    %419:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %420:vec3<f32> = load %419
+    %421:vec4<f32> = swizzle %420, zyxz
+    %zyxz:ptr<function, vec4<f32>, read_write> = var, %421
+    %423:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %424:vec3<f32> = load %423
+    %425:vec4<f32> = swizzle %424, zyyx
+    %zyyx:ptr<function, vec4<f32>, read_write> = var, %425
+    %427:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %428:vec3<f32> = load %427
+    %429:vec4<f32> = swizzle %428, zyyy
+    %zyyy:ptr<function, vec4<f32>, read_write> = var, %429
+    %431:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %432:vec3<f32> = load %431
+    %433:vec4<f32> = swizzle %432, zyyz
+    %zyyz:ptr<function, vec4<f32>, read_write> = var, %433
+    %435:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %436:vec3<f32> = load %435
+    %437:vec4<f32> = swizzle %436, zyzx
+    %zyzx:ptr<function, vec4<f32>, read_write> = var, %437
+    %439:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %440:vec3<f32> = load %439
+    %441:vec4<f32> = swizzle %440, zyzy
+    %zyzy:ptr<function, vec4<f32>, read_write> = var, %441
+    %443:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %444:vec3<f32> = load %443
+    %445:vec4<f32> = swizzle %444, zyzz
+    %zyzz:ptr<function, vec4<f32>, read_write> = var, %445
+    %447:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %448:vec3<f32> = load %447
+    %449:vec4<f32> = swizzle %448, zzxx
+    %zzxx:ptr<function, vec4<f32>, read_write> = var, %449
+    %451:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %452:vec3<f32> = load %451
+    %453:vec4<f32> = swizzle %452, zzxy
+    %zzxy:ptr<function, vec4<f32>, read_write> = var, %453
+    %455:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %456:vec3<f32> = load %455
+    %457:vec4<f32> = swizzle %456, zzxz
+    %zzxz:ptr<function, vec4<f32>, read_write> = var, %457
+    %459:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %460:vec3<f32> = load %459
+    %461:vec4<f32> = swizzle %460, zzyx
+    %zzyx:ptr<function, vec4<f32>, read_write> = var, %461
+    %463:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %464:vec3<f32> = load %463
+    %465:vec4<f32> = swizzle %464, zzyy
+    %zzyy:ptr<function, vec4<f32>, read_write> = var, %465
+    %467:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %468:vec3<f32> = load %467
+    %469:vec4<f32> = swizzle %468, zzyz
+    %zzyz:ptr<function, vec4<f32>, read_write> = var, %469
+    %471:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %472:vec3<f32> = load %471
+    %473:vec4<f32> = swizzle %472, zzzx
+    %zzzx:ptr<function, vec4<f32>, read_write> = var, %473
+    %475:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %476:vec3<f32> = load %475
+    %477:vec4<f32> = swizzle %476, zzzy
+    %zzzy:ptr<function, vec4<f32>, read_write> = var, %477
+    %479:ptr<uniform, vec3<f32>, read> = access %U, 0u
+    %480:vec3<f32> = load %479
+    %481:vec4<f32> = swizzle %480, zzzz
+    %zzzz:ptr<function, vec4<f32>, read_write> = var, %481
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..13e66a5
--- /dev/null
+++ b/test/tint/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.ir.msl
@@ -0,0 +1,503 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  v:vec3<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %U:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%f = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %4:vec3<i32> = load %3
+    %v:ptr<function, vec3<i32>, read_write> = var, %4
+    %6:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %7:i32 = load_vector_element %6, 0u
+    %x:ptr<function, i32, read_write> = var, %7
+    %9:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %10:i32 = load_vector_element %9, 1u
+    %y:ptr<function, i32, read_write> = var, %10
+    %12:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %13:i32 = load_vector_element %12, 2u
+    %z:ptr<function, i32, read_write> = var, %13
+    %15:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %16:vec3<i32> = load %15
+    %17:vec2<i32> = swizzle %16, xx
+    %xx:ptr<function, vec2<i32>, read_write> = var, %17
+    %19:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %20:vec3<i32> = load %19
+    %21:vec2<i32> = swizzle %20, xy
+    %xy:ptr<function, vec2<i32>, read_write> = var, %21
+    %23:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %24:vec3<i32> = load %23
+    %25:vec2<i32> = swizzle %24, xz
+    %xz:ptr<function, vec2<i32>, read_write> = var, %25
+    %27:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %28:vec3<i32> = load %27
+    %29:vec2<i32> = swizzle %28, yx
+    %yx:ptr<function, vec2<i32>, read_write> = var, %29
+    %31:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %32:vec3<i32> = load %31
+    %33:vec2<i32> = swizzle %32, yy
+    %yy:ptr<function, vec2<i32>, read_write> = var, %33
+    %35:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %36:vec3<i32> = load %35
+    %37:vec2<i32> = swizzle %36, yz
+    %yz:ptr<function, vec2<i32>, read_write> = var, %37
+    %39:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %40:vec3<i32> = load %39
+    %41:vec2<i32> = swizzle %40, zx
+    %zx:ptr<function, vec2<i32>, read_write> = var, %41
+    %43:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %44:vec3<i32> = load %43
+    %45:vec2<i32> = swizzle %44, zy
+    %zy:ptr<function, vec2<i32>, read_write> = var, %45
+    %47:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %48:vec3<i32> = load %47
+    %49:vec2<i32> = swizzle %48, zz
+    %zz:ptr<function, vec2<i32>, read_write> = var, %49
+    %51:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %52:vec3<i32> = load %51
+    %53:vec3<i32> = swizzle %52, xxx
+    %xxx:ptr<function, vec3<i32>, read_write> = var, %53
+    %55:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %56:vec3<i32> = load %55
+    %57:vec3<i32> = swizzle %56, xxy
+    %xxy:ptr<function, vec3<i32>, read_write> = var, %57
+    %59:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %60:vec3<i32> = load %59
+    %61:vec3<i32> = swizzle %60, xxz
+    %xxz:ptr<function, vec3<i32>, read_write> = var, %61
+    %63:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %64:vec3<i32> = load %63
+    %65:vec3<i32> = swizzle %64, xyx
+    %xyx:ptr<function, vec3<i32>, read_write> = var, %65
+    %67:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %68:vec3<i32> = load %67
+    %69:vec3<i32> = swizzle %68, xyy
+    %xyy:ptr<function, vec3<i32>, read_write> = var, %69
+    %71:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %72:vec3<i32> = load %71
+    %73:vec3<i32> = swizzle %72, xyz
+    %xyz:ptr<function, vec3<i32>, read_write> = var, %73
+    %75:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %76:vec3<i32> = load %75
+    %77:vec3<i32> = swizzle %76, xzx
+    %xzx:ptr<function, vec3<i32>, read_write> = var, %77
+    %79:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %80:vec3<i32> = load %79
+    %81:vec3<i32> = swizzle %80, xzy
+    %xzy:ptr<function, vec3<i32>, read_write> = var, %81
+    %83:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %84:vec3<i32> = load %83
+    %85:vec3<i32> = swizzle %84, xzz
+    %xzz:ptr<function, vec3<i32>, read_write> = var, %85
+    %87:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %88:vec3<i32> = load %87
+    %89:vec3<i32> = swizzle %88, yxx
+    %yxx:ptr<function, vec3<i32>, read_write> = var, %89
+    %91:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %92:vec3<i32> = load %91
+    %93:vec3<i32> = swizzle %92, yxy
+    %yxy:ptr<function, vec3<i32>, read_write> = var, %93
+    %95:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %96:vec3<i32> = load %95
+    %97:vec3<i32> = swizzle %96, yxz
+    %yxz:ptr<function, vec3<i32>, read_write> = var, %97
+    %99:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %100:vec3<i32> = load %99
+    %101:vec3<i32> = swizzle %100, yyx
+    %yyx:ptr<function, vec3<i32>, read_write> = var, %101
+    %103:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %104:vec3<i32> = load %103
+    %105:vec3<i32> = swizzle %104, yyy
+    %yyy:ptr<function, vec3<i32>, read_write> = var, %105
+    %107:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %108:vec3<i32> = load %107
+    %109:vec3<i32> = swizzle %108, yyz
+    %yyz:ptr<function, vec3<i32>, read_write> = var, %109
+    %111:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %112:vec3<i32> = load %111
+    %113:vec3<i32> = swizzle %112, yzx
+    %yzx:ptr<function, vec3<i32>, read_write> = var, %113
+    %115:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %116:vec3<i32> = load %115
+    %117:vec3<i32> = swizzle %116, yzy
+    %yzy:ptr<function, vec3<i32>, read_write> = var, %117
+    %119:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %120:vec3<i32> = load %119
+    %121:vec3<i32> = swizzle %120, yzz
+    %yzz:ptr<function, vec3<i32>, read_write> = var, %121
+    %123:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %124:vec3<i32> = load %123
+    %125:vec3<i32> = swizzle %124, zxx
+    %zxx:ptr<function, vec3<i32>, read_write> = var, %125
+    %127:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %128:vec3<i32> = load %127
+    %129:vec3<i32> = swizzle %128, zxy
+    %zxy:ptr<function, vec3<i32>, read_write> = var, %129
+    %131:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %132:vec3<i32> = load %131
+    %133:vec3<i32> = swizzle %132, zxz
+    %zxz:ptr<function, vec3<i32>, read_write> = var, %133
+    %135:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %136:vec3<i32> = load %135
+    %137:vec3<i32> = swizzle %136, zyx
+    %zyx:ptr<function, vec3<i32>, read_write> = var, %137
+    %139:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %140:vec3<i32> = load %139
+    %141:vec3<i32> = swizzle %140, zyy
+    %zyy:ptr<function, vec3<i32>, read_write> = var, %141
+    %143:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %144:vec3<i32> = load %143
+    %145:vec3<i32> = swizzle %144, zyz
+    %zyz:ptr<function, vec3<i32>, read_write> = var, %145
+    %147:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %148:vec3<i32> = load %147
+    %149:vec3<i32> = swizzle %148, zzx
+    %zzx:ptr<function, vec3<i32>, read_write> = var, %149
+    %151:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %152:vec3<i32> = load %151
+    %153:vec3<i32> = swizzle %152, zzy
+    %zzy:ptr<function, vec3<i32>, read_write> = var, %153
+    %155:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %156:vec3<i32> = load %155
+    %157:vec3<i32> = swizzle %156, zzz
+    %zzz:ptr<function, vec3<i32>, read_write> = var, %157
+    %159:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %160:vec3<i32> = load %159
+    %161:vec4<i32> = swizzle %160, xxxx
+    %xxxx:ptr<function, vec4<i32>, read_write> = var, %161
+    %163:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %164:vec3<i32> = load %163
+    %165:vec4<i32> = swizzle %164, xxxy
+    %xxxy:ptr<function, vec4<i32>, read_write> = var, %165
+    %167:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %168:vec3<i32> = load %167
+    %169:vec4<i32> = swizzle %168, xxxz
+    %xxxz:ptr<function, vec4<i32>, read_write> = var, %169
+    %171:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %172:vec3<i32> = load %171
+    %173:vec4<i32> = swizzle %172, xxyx
+    %xxyx:ptr<function, vec4<i32>, read_write> = var, %173
+    %175:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %176:vec3<i32> = load %175
+    %177:vec4<i32> = swizzle %176, xxyy
+    %xxyy:ptr<function, vec4<i32>, read_write> = var, %177
+    %179:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %180:vec3<i32> = load %179
+    %181:vec4<i32> = swizzle %180, xxyz
+    %xxyz:ptr<function, vec4<i32>, read_write> = var, %181
+    %183:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %184:vec3<i32> = load %183
+    %185:vec4<i32> = swizzle %184, xxzx
+    %xxzx:ptr<function, vec4<i32>, read_write> = var, %185
+    %187:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %188:vec3<i32> = load %187
+    %189:vec4<i32> = swizzle %188, xxzy
+    %xxzy:ptr<function, vec4<i32>, read_write> = var, %189
+    %191:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %192:vec3<i32> = load %191
+    %193:vec4<i32> = swizzle %192, xxzz
+    %xxzz:ptr<function, vec4<i32>, read_write> = var, %193
+    %195:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %196:vec3<i32> = load %195
+    %197:vec4<i32> = swizzle %196, xyxx
+    %xyxx:ptr<function, vec4<i32>, read_write> = var, %197
+    %199:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %200:vec3<i32> = load %199
+    %201:vec4<i32> = swizzle %200, xyxy
+    %xyxy:ptr<function, vec4<i32>, read_write> = var, %201
+    %203:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %204:vec3<i32> = load %203
+    %205:vec4<i32> = swizzle %204, xyxz
+    %xyxz:ptr<function, vec4<i32>, read_write> = var, %205
+    %207:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %208:vec3<i32> = load %207
+    %209:vec4<i32> = swizzle %208, xyyx
+    %xyyx:ptr<function, vec4<i32>, read_write> = var, %209
+    %211:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %212:vec3<i32> = load %211
+    %213:vec4<i32> = swizzle %212, xyyy
+    %xyyy:ptr<function, vec4<i32>, read_write> = var, %213
+    %215:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %216:vec3<i32> = load %215
+    %217:vec4<i32> = swizzle %216, xyyz
+    %xyyz:ptr<function, vec4<i32>, read_write> = var, %217
+    %219:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %220:vec3<i32> = load %219
+    %221:vec4<i32> = swizzle %220, xyzx
+    %xyzx:ptr<function, vec4<i32>, read_write> = var, %221
+    %223:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %224:vec3<i32> = load %223
+    %225:vec4<i32> = swizzle %224, xyzy
+    %xyzy:ptr<function, vec4<i32>, read_write> = var, %225
+    %227:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %228:vec3<i32> = load %227
+    %229:vec4<i32> = swizzle %228, xyzz
+    %xyzz:ptr<function, vec4<i32>, read_write> = var, %229
+    %231:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %232:vec3<i32> = load %231
+    %233:vec4<i32> = swizzle %232, xzxx
+    %xzxx:ptr<function, vec4<i32>, read_write> = var, %233
+    %235:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %236:vec3<i32> = load %235
+    %237:vec4<i32> = swizzle %236, xzxy
+    %xzxy:ptr<function, vec4<i32>, read_write> = var, %237
+    %239:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %240:vec3<i32> = load %239
+    %241:vec4<i32> = swizzle %240, xzxz
+    %xzxz:ptr<function, vec4<i32>, read_write> = var, %241
+    %243:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %244:vec3<i32> = load %243
+    %245:vec4<i32> = swizzle %244, xzyx
+    %xzyx:ptr<function, vec4<i32>, read_write> = var, %245
+    %247:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %248:vec3<i32> = load %247
+    %249:vec4<i32> = swizzle %248, xzyy
+    %xzyy:ptr<function, vec4<i32>, read_write> = var, %249
+    %251:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %252:vec3<i32> = load %251
+    %253:vec4<i32> = swizzle %252, xzyz
+    %xzyz:ptr<function, vec4<i32>, read_write> = var, %253
+    %255:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %256:vec3<i32> = load %255
+    %257:vec4<i32> = swizzle %256, xzzx
+    %xzzx:ptr<function, vec4<i32>, read_write> = var, %257
+    %259:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %260:vec3<i32> = load %259
+    %261:vec4<i32> = swizzle %260, xzzy
+    %xzzy:ptr<function, vec4<i32>, read_write> = var, %261
+    %263:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %264:vec3<i32> = load %263
+    %265:vec4<i32> = swizzle %264, xzzz
+    %xzzz:ptr<function, vec4<i32>, read_write> = var, %265
+    %267:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %268:vec3<i32> = load %267
+    %269:vec4<i32> = swizzle %268, yxxx
+    %yxxx:ptr<function, vec4<i32>, read_write> = var, %269
+    %271:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %272:vec3<i32> = load %271
+    %273:vec4<i32> = swizzle %272, yxxy
+    %yxxy:ptr<function, vec4<i32>, read_write> = var, %273
+    %275:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %276:vec3<i32> = load %275
+    %277:vec4<i32> = swizzle %276, yxxz
+    %yxxz:ptr<function, vec4<i32>, read_write> = var, %277
+    %279:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %280:vec3<i32> = load %279
+    %281:vec4<i32> = swizzle %280, yxyx
+    %yxyx:ptr<function, vec4<i32>, read_write> = var, %281
+    %283:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %284:vec3<i32> = load %283
+    %285:vec4<i32> = swizzle %284, yxyy
+    %yxyy:ptr<function, vec4<i32>, read_write> = var, %285
+    %287:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %288:vec3<i32> = load %287
+    %289:vec4<i32> = swizzle %288, yxyz
+    %yxyz:ptr<function, vec4<i32>, read_write> = var, %289
+    %291:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %292:vec3<i32> = load %291
+    %293:vec4<i32> = swizzle %292, yxzx
+    %yxzx:ptr<function, vec4<i32>, read_write> = var, %293
+    %295:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %296:vec3<i32> = load %295
+    %297:vec4<i32> = swizzle %296, yxzy
+    %yxzy:ptr<function, vec4<i32>, read_write> = var, %297
+    %299:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %300:vec3<i32> = load %299
+    %301:vec4<i32> = swizzle %300, yxzz
+    %yxzz:ptr<function, vec4<i32>, read_write> = var, %301
+    %303:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %304:vec3<i32> = load %303
+    %305:vec4<i32> = swizzle %304, yyxx
+    %yyxx:ptr<function, vec4<i32>, read_write> = var, %305
+    %307:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %308:vec3<i32> = load %307
+    %309:vec4<i32> = swizzle %308, yyxy
+    %yyxy:ptr<function, vec4<i32>, read_write> = var, %309
+    %311:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %312:vec3<i32> = load %311
+    %313:vec4<i32> = swizzle %312, yyxz
+    %yyxz:ptr<function, vec4<i32>, read_write> = var, %313
+    %315:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %316:vec3<i32> = load %315
+    %317:vec4<i32> = swizzle %316, yyyx
+    %yyyx:ptr<function, vec4<i32>, read_write> = var, %317
+    %319:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %320:vec3<i32> = load %319
+    %321:vec4<i32> = swizzle %320, yyyy
+    %yyyy:ptr<function, vec4<i32>, read_write> = var, %321
+    %323:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %324:vec3<i32> = load %323
+    %325:vec4<i32> = swizzle %324, yyyz
+    %yyyz:ptr<function, vec4<i32>, read_write> = var, %325
+    %327:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %328:vec3<i32> = load %327
+    %329:vec4<i32> = swizzle %328, yyzx
+    %yyzx:ptr<function, vec4<i32>, read_write> = var, %329
+    %331:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %332:vec3<i32> = load %331
+    %333:vec4<i32> = swizzle %332, yyzy
+    %yyzy:ptr<function, vec4<i32>, read_write> = var, %333
+    %335:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %336:vec3<i32> = load %335
+    %337:vec4<i32> = swizzle %336, yyzz
+    %yyzz:ptr<function, vec4<i32>, read_write> = var, %337
+    %339:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %340:vec3<i32> = load %339
+    %341:vec4<i32> = swizzle %340, yzxx
+    %yzxx:ptr<function, vec4<i32>, read_write> = var, %341
+    %343:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %344:vec3<i32> = load %343
+    %345:vec4<i32> = swizzle %344, yzxy
+    %yzxy:ptr<function, vec4<i32>, read_write> = var, %345
+    %347:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %348:vec3<i32> = load %347
+    %349:vec4<i32> = swizzle %348, yzxz
+    %yzxz:ptr<function, vec4<i32>, read_write> = var, %349
+    %351:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %352:vec3<i32> = load %351
+    %353:vec4<i32> = swizzle %352, yzyx
+    %yzyx:ptr<function, vec4<i32>, read_write> = var, %353
+    %355:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %356:vec3<i32> = load %355
+    %357:vec4<i32> = swizzle %356, yzyy
+    %yzyy:ptr<function, vec4<i32>, read_write> = var, %357
+    %359:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %360:vec3<i32> = load %359
+    %361:vec4<i32> = swizzle %360, yzyz
+    %yzyz:ptr<function, vec4<i32>, read_write> = var, %361
+    %363:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %364:vec3<i32> = load %363
+    %365:vec4<i32> = swizzle %364, yzzx
+    %yzzx:ptr<function, vec4<i32>, read_write> = var, %365
+    %367:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %368:vec3<i32> = load %367
+    %369:vec4<i32> = swizzle %368, yzzy
+    %yzzy:ptr<function, vec4<i32>, read_write> = var, %369
+    %371:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %372:vec3<i32> = load %371
+    %373:vec4<i32> = swizzle %372, yzzz
+    %yzzz:ptr<function, vec4<i32>, read_write> = var, %373
+    %375:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %376:vec3<i32> = load %375
+    %377:vec4<i32> = swizzle %376, zxxx
+    %zxxx:ptr<function, vec4<i32>, read_write> = var, %377
+    %379:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %380:vec3<i32> = load %379
+    %381:vec4<i32> = swizzle %380, zxxy
+    %zxxy:ptr<function, vec4<i32>, read_write> = var, %381
+    %383:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %384:vec3<i32> = load %383
+    %385:vec4<i32> = swizzle %384, zxxz
+    %zxxz:ptr<function, vec4<i32>, read_write> = var, %385
+    %387:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %388:vec3<i32> = load %387
+    %389:vec4<i32> = swizzle %388, zxyx
+    %zxyx:ptr<function, vec4<i32>, read_write> = var, %389
+    %391:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %392:vec3<i32> = load %391
+    %393:vec4<i32> = swizzle %392, zxyy
+    %zxyy:ptr<function, vec4<i32>, read_write> = var, %393
+    %395:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %396:vec3<i32> = load %395
+    %397:vec4<i32> = swizzle %396, zxyz
+    %zxyz:ptr<function, vec4<i32>, read_write> = var, %397
+    %399:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %400:vec3<i32> = load %399
+    %401:vec4<i32> = swizzle %400, zxzx
+    %zxzx:ptr<function, vec4<i32>, read_write> = var, %401
+    %403:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %404:vec3<i32> = load %403
+    %405:vec4<i32> = swizzle %404, zxzy
+    %zxzy:ptr<function, vec4<i32>, read_write> = var, %405
+    %407:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %408:vec3<i32> = load %407
+    %409:vec4<i32> = swizzle %408, zxzz
+    %zxzz:ptr<function, vec4<i32>, read_write> = var, %409
+    %411:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %412:vec3<i32> = load %411
+    %413:vec4<i32> = swizzle %412, zyxx
+    %zyxx:ptr<function, vec4<i32>, read_write> = var, %413
+    %415:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %416:vec3<i32> = load %415
+    %417:vec4<i32> = swizzle %416, zyxy
+    %zyxy:ptr<function, vec4<i32>, read_write> = var, %417
+    %419:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %420:vec3<i32> = load %419
+    %421:vec4<i32> = swizzle %420, zyxz
+    %zyxz:ptr<function, vec4<i32>, read_write> = var, %421
+    %423:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %424:vec3<i32> = load %423
+    %425:vec4<i32> = swizzle %424, zyyx
+    %zyyx:ptr<function, vec4<i32>, read_write> = var, %425
+    %427:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %428:vec3<i32> = load %427
+    %429:vec4<i32> = swizzle %428, zyyy
+    %zyyy:ptr<function, vec4<i32>, read_write> = var, %429
+    %431:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %432:vec3<i32> = load %431
+    %433:vec4<i32> = swizzle %432, zyyz
+    %zyyz:ptr<function, vec4<i32>, read_write> = var, %433
+    %435:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %436:vec3<i32> = load %435
+    %437:vec4<i32> = swizzle %436, zyzx
+    %zyzx:ptr<function, vec4<i32>, read_write> = var, %437
+    %439:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %440:vec3<i32> = load %439
+    %441:vec4<i32> = swizzle %440, zyzy
+    %zyzy:ptr<function, vec4<i32>, read_write> = var, %441
+    %443:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %444:vec3<i32> = load %443
+    %445:vec4<i32> = swizzle %444, zyzz
+    %zyzz:ptr<function, vec4<i32>, read_write> = var, %445
+    %447:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %448:vec3<i32> = load %447
+    %449:vec4<i32> = swizzle %448, zzxx
+    %zzxx:ptr<function, vec4<i32>, read_write> = var, %449
+    %451:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %452:vec3<i32> = load %451
+    %453:vec4<i32> = swizzle %452, zzxy
+    %zzxy:ptr<function, vec4<i32>, read_write> = var, %453
+    %455:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %456:vec3<i32> = load %455
+    %457:vec4<i32> = swizzle %456, zzxz
+    %zzxz:ptr<function, vec4<i32>, read_write> = var, %457
+    %459:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %460:vec3<i32> = load %459
+    %461:vec4<i32> = swizzle %460, zzyx
+    %zzyx:ptr<function, vec4<i32>, read_write> = var, %461
+    %463:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %464:vec3<i32> = load %463
+    %465:vec4<i32> = swizzle %464, zzyy
+    %zzyy:ptr<function, vec4<i32>, read_write> = var, %465
+    %467:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %468:vec3<i32> = load %467
+    %469:vec4<i32> = swizzle %468, zzyz
+    %zzyz:ptr<function, vec4<i32>, read_write> = var, %469
+    %471:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %472:vec3<i32> = load %471
+    %473:vec4<i32> = swizzle %472, zzzx
+    %zzzx:ptr<function, vec4<i32>, read_write> = var, %473
+    %475:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %476:vec3<i32> = load %475
+    %477:vec4<i32> = swizzle %476, zzzy
+    %zzzy:ptr<function, vec4<i32>, read_write> = var, %477
+    %479:ptr<uniform, vec3<i32>, read> = access %U, 0u
+    %480:vec3<i32> = load %479
+    %481:vec4<i32> = swizzle %480, zzzz
+    %zzzz:ptr<function, vec4<i32>, read_write> = var, %481
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..06b60c6
--- /dev/null
+++ b/test/tint/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.ir.msl
@@ -0,0 +1,503 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  v:vec3<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %U:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%f = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %4:vec3<u32> = load %3
+    %v:ptr<function, vec3<u32>, read_write> = var, %4
+    %6:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %7:u32 = load_vector_element %6, 0u
+    %x:ptr<function, u32, read_write> = var, %7
+    %9:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %10:u32 = load_vector_element %9, 1u
+    %y:ptr<function, u32, read_write> = var, %10
+    %12:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %13:u32 = load_vector_element %12, 2u
+    %z:ptr<function, u32, read_write> = var, %13
+    %15:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %16:vec3<u32> = load %15
+    %17:vec2<u32> = swizzle %16, xx
+    %xx:ptr<function, vec2<u32>, read_write> = var, %17
+    %19:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %20:vec3<u32> = load %19
+    %21:vec2<u32> = swizzle %20, xy
+    %xy:ptr<function, vec2<u32>, read_write> = var, %21
+    %23:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %24:vec3<u32> = load %23
+    %25:vec2<u32> = swizzle %24, xz
+    %xz:ptr<function, vec2<u32>, read_write> = var, %25
+    %27:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %28:vec3<u32> = load %27
+    %29:vec2<u32> = swizzle %28, yx
+    %yx:ptr<function, vec2<u32>, read_write> = var, %29
+    %31:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %32:vec3<u32> = load %31
+    %33:vec2<u32> = swizzle %32, yy
+    %yy:ptr<function, vec2<u32>, read_write> = var, %33
+    %35:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %36:vec3<u32> = load %35
+    %37:vec2<u32> = swizzle %36, yz
+    %yz:ptr<function, vec2<u32>, read_write> = var, %37
+    %39:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %40:vec3<u32> = load %39
+    %41:vec2<u32> = swizzle %40, zx
+    %zx:ptr<function, vec2<u32>, read_write> = var, %41
+    %43:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %44:vec3<u32> = load %43
+    %45:vec2<u32> = swizzle %44, zy
+    %zy:ptr<function, vec2<u32>, read_write> = var, %45
+    %47:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %48:vec3<u32> = load %47
+    %49:vec2<u32> = swizzle %48, zz
+    %zz:ptr<function, vec2<u32>, read_write> = var, %49
+    %51:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %52:vec3<u32> = load %51
+    %53:vec3<u32> = swizzle %52, xxx
+    %xxx:ptr<function, vec3<u32>, read_write> = var, %53
+    %55:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %56:vec3<u32> = load %55
+    %57:vec3<u32> = swizzle %56, xxy
+    %xxy:ptr<function, vec3<u32>, read_write> = var, %57
+    %59:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %60:vec3<u32> = load %59
+    %61:vec3<u32> = swizzle %60, xxz
+    %xxz:ptr<function, vec3<u32>, read_write> = var, %61
+    %63:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %64:vec3<u32> = load %63
+    %65:vec3<u32> = swizzle %64, xyx
+    %xyx:ptr<function, vec3<u32>, read_write> = var, %65
+    %67:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %68:vec3<u32> = load %67
+    %69:vec3<u32> = swizzle %68, xyy
+    %xyy:ptr<function, vec3<u32>, read_write> = var, %69
+    %71:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %72:vec3<u32> = load %71
+    %73:vec3<u32> = swizzle %72, xyz
+    %xyz:ptr<function, vec3<u32>, read_write> = var, %73
+    %75:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %76:vec3<u32> = load %75
+    %77:vec3<u32> = swizzle %76, xzx
+    %xzx:ptr<function, vec3<u32>, read_write> = var, %77
+    %79:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %80:vec3<u32> = load %79
+    %81:vec3<u32> = swizzle %80, xzy
+    %xzy:ptr<function, vec3<u32>, read_write> = var, %81
+    %83:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %84:vec3<u32> = load %83
+    %85:vec3<u32> = swizzle %84, xzz
+    %xzz:ptr<function, vec3<u32>, read_write> = var, %85
+    %87:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %88:vec3<u32> = load %87
+    %89:vec3<u32> = swizzle %88, yxx
+    %yxx:ptr<function, vec3<u32>, read_write> = var, %89
+    %91:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %92:vec3<u32> = load %91
+    %93:vec3<u32> = swizzle %92, yxy
+    %yxy:ptr<function, vec3<u32>, read_write> = var, %93
+    %95:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %96:vec3<u32> = load %95
+    %97:vec3<u32> = swizzle %96, yxz
+    %yxz:ptr<function, vec3<u32>, read_write> = var, %97
+    %99:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %100:vec3<u32> = load %99
+    %101:vec3<u32> = swizzle %100, yyx
+    %yyx:ptr<function, vec3<u32>, read_write> = var, %101
+    %103:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %104:vec3<u32> = load %103
+    %105:vec3<u32> = swizzle %104, yyy
+    %yyy:ptr<function, vec3<u32>, read_write> = var, %105
+    %107:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %108:vec3<u32> = load %107
+    %109:vec3<u32> = swizzle %108, yyz
+    %yyz:ptr<function, vec3<u32>, read_write> = var, %109
+    %111:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %112:vec3<u32> = load %111
+    %113:vec3<u32> = swizzle %112, yzx
+    %yzx:ptr<function, vec3<u32>, read_write> = var, %113
+    %115:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %116:vec3<u32> = load %115
+    %117:vec3<u32> = swizzle %116, yzy
+    %yzy:ptr<function, vec3<u32>, read_write> = var, %117
+    %119:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %120:vec3<u32> = load %119
+    %121:vec3<u32> = swizzle %120, yzz
+    %yzz:ptr<function, vec3<u32>, read_write> = var, %121
+    %123:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %124:vec3<u32> = load %123
+    %125:vec3<u32> = swizzle %124, zxx
+    %zxx:ptr<function, vec3<u32>, read_write> = var, %125
+    %127:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %128:vec3<u32> = load %127
+    %129:vec3<u32> = swizzle %128, zxy
+    %zxy:ptr<function, vec3<u32>, read_write> = var, %129
+    %131:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %132:vec3<u32> = load %131
+    %133:vec3<u32> = swizzle %132, zxz
+    %zxz:ptr<function, vec3<u32>, read_write> = var, %133
+    %135:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %136:vec3<u32> = load %135
+    %137:vec3<u32> = swizzle %136, zyx
+    %zyx:ptr<function, vec3<u32>, read_write> = var, %137
+    %139:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %140:vec3<u32> = load %139
+    %141:vec3<u32> = swizzle %140, zyy
+    %zyy:ptr<function, vec3<u32>, read_write> = var, %141
+    %143:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %144:vec3<u32> = load %143
+    %145:vec3<u32> = swizzle %144, zyz
+    %zyz:ptr<function, vec3<u32>, read_write> = var, %145
+    %147:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %148:vec3<u32> = load %147
+    %149:vec3<u32> = swizzle %148, zzx
+    %zzx:ptr<function, vec3<u32>, read_write> = var, %149
+    %151:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %152:vec3<u32> = load %151
+    %153:vec3<u32> = swizzle %152, zzy
+    %zzy:ptr<function, vec3<u32>, read_write> = var, %153
+    %155:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %156:vec3<u32> = load %155
+    %157:vec3<u32> = swizzle %156, zzz
+    %zzz:ptr<function, vec3<u32>, read_write> = var, %157
+    %159:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %160:vec3<u32> = load %159
+    %161:vec4<u32> = swizzle %160, xxxx
+    %xxxx:ptr<function, vec4<u32>, read_write> = var, %161
+    %163:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %164:vec3<u32> = load %163
+    %165:vec4<u32> = swizzle %164, xxxy
+    %xxxy:ptr<function, vec4<u32>, read_write> = var, %165
+    %167:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %168:vec3<u32> = load %167
+    %169:vec4<u32> = swizzle %168, xxxz
+    %xxxz:ptr<function, vec4<u32>, read_write> = var, %169
+    %171:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %172:vec3<u32> = load %171
+    %173:vec4<u32> = swizzle %172, xxyx
+    %xxyx:ptr<function, vec4<u32>, read_write> = var, %173
+    %175:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %176:vec3<u32> = load %175
+    %177:vec4<u32> = swizzle %176, xxyy
+    %xxyy:ptr<function, vec4<u32>, read_write> = var, %177
+    %179:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %180:vec3<u32> = load %179
+    %181:vec4<u32> = swizzle %180, xxyz
+    %xxyz:ptr<function, vec4<u32>, read_write> = var, %181
+    %183:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %184:vec3<u32> = load %183
+    %185:vec4<u32> = swizzle %184, xxzx
+    %xxzx:ptr<function, vec4<u32>, read_write> = var, %185
+    %187:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %188:vec3<u32> = load %187
+    %189:vec4<u32> = swizzle %188, xxzy
+    %xxzy:ptr<function, vec4<u32>, read_write> = var, %189
+    %191:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %192:vec3<u32> = load %191
+    %193:vec4<u32> = swizzle %192, xxzz
+    %xxzz:ptr<function, vec4<u32>, read_write> = var, %193
+    %195:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %196:vec3<u32> = load %195
+    %197:vec4<u32> = swizzle %196, xyxx
+    %xyxx:ptr<function, vec4<u32>, read_write> = var, %197
+    %199:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %200:vec3<u32> = load %199
+    %201:vec4<u32> = swizzle %200, xyxy
+    %xyxy:ptr<function, vec4<u32>, read_write> = var, %201
+    %203:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %204:vec3<u32> = load %203
+    %205:vec4<u32> = swizzle %204, xyxz
+    %xyxz:ptr<function, vec4<u32>, read_write> = var, %205
+    %207:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %208:vec3<u32> = load %207
+    %209:vec4<u32> = swizzle %208, xyyx
+    %xyyx:ptr<function, vec4<u32>, read_write> = var, %209
+    %211:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %212:vec3<u32> = load %211
+    %213:vec4<u32> = swizzle %212, xyyy
+    %xyyy:ptr<function, vec4<u32>, read_write> = var, %213
+    %215:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %216:vec3<u32> = load %215
+    %217:vec4<u32> = swizzle %216, xyyz
+    %xyyz:ptr<function, vec4<u32>, read_write> = var, %217
+    %219:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %220:vec3<u32> = load %219
+    %221:vec4<u32> = swizzle %220, xyzx
+    %xyzx:ptr<function, vec4<u32>, read_write> = var, %221
+    %223:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %224:vec3<u32> = load %223
+    %225:vec4<u32> = swizzle %224, xyzy
+    %xyzy:ptr<function, vec4<u32>, read_write> = var, %225
+    %227:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %228:vec3<u32> = load %227
+    %229:vec4<u32> = swizzle %228, xyzz
+    %xyzz:ptr<function, vec4<u32>, read_write> = var, %229
+    %231:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %232:vec3<u32> = load %231
+    %233:vec4<u32> = swizzle %232, xzxx
+    %xzxx:ptr<function, vec4<u32>, read_write> = var, %233
+    %235:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %236:vec3<u32> = load %235
+    %237:vec4<u32> = swizzle %236, xzxy
+    %xzxy:ptr<function, vec4<u32>, read_write> = var, %237
+    %239:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %240:vec3<u32> = load %239
+    %241:vec4<u32> = swizzle %240, xzxz
+    %xzxz:ptr<function, vec4<u32>, read_write> = var, %241
+    %243:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %244:vec3<u32> = load %243
+    %245:vec4<u32> = swizzle %244, xzyx
+    %xzyx:ptr<function, vec4<u32>, read_write> = var, %245
+    %247:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %248:vec3<u32> = load %247
+    %249:vec4<u32> = swizzle %248, xzyy
+    %xzyy:ptr<function, vec4<u32>, read_write> = var, %249
+    %251:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %252:vec3<u32> = load %251
+    %253:vec4<u32> = swizzle %252, xzyz
+    %xzyz:ptr<function, vec4<u32>, read_write> = var, %253
+    %255:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %256:vec3<u32> = load %255
+    %257:vec4<u32> = swizzle %256, xzzx
+    %xzzx:ptr<function, vec4<u32>, read_write> = var, %257
+    %259:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %260:vec3<u32> = load %259
+    %261:vec4<u32> = swizzle %260, xzzy
+    %xzzy:ptr<function, vec4<u32>, read_write> = var, %261
+    %263:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %264:vec3<u32> = load %263
+    %265:vec4<u32> = swizzle %264, xzzz
+    %xzzz:ptr<function, vec4<u32>, read_write> = var, %265
+    %267:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %268:vec3<u32> = load %267
+    %269:vec4<u32> = swizzle %268, yxxx
+    %yxxx:ptr<function, vec4<u32>, read_write> = var, %269
+    %271:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %272:vec3<u32> = load %271
+    %273:vec4<u32> = swizzle %272, yxxy
+    %yxxy:ptr<function, vec4<u32>, read_write> = var, %273
+    %275:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %276:vec3<u32> = load %275
+    %277:vec4<u32> = swizzle %276, yxxz
+    %yxxz:ptr<function, vec4<u32>, read_write> = var, %277
+    %279:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %280:vec3<u32> = load %279
+    %281:vec4<u32> = swizzle %280, yxyx
+    %yxyx:ptr<function, vec4<u32>, read_write> = var, %281
+    %283:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %284:vec3<u32> = load %283
+    %285:vec4<u32> = swizzle %284, yxyy
+    %yxyy:ptr<function, vec4<u32>, read_write> = var, %285
+    %287:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %288:vec3<u32> = load %287
+    %289:vec4<u32> = swizzle %288, yxyz
+    %yxyz:ptr<function, vec4<u32>, read_write> = var, %289
+    %291:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %292:vec3<u32> = load %291
+    %293:vec4<u32> = swizzle %292, yxzx
+    %yxzx:ptr<function, vec4<u32>, read_write> = var, %293
+    %295:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %296:vec3<u32> = load %295
+    %297:vec4<u32> = swizzle %296, yxzy
+    %yxzy:ptr<function, vec4<u32>, read_write> = var, %297
+    %299:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %300:vec3<u32> = load %299
+    %301:vec4<u32> = swizzle %300, yxzz
+    %yxzz:ptr<function, vec4<u32>, read_write> = var, %301
+    %303:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %304:vec3<u32> = load %303
+    %305:vec4<u32> = swizzle %304, yyxx
+    %yyxx:ptr<function, vec4<u32>, read_write> = var, %305
+    %307:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %308:vec3<u32> = load %307
+    %309:vec4<u32> = swizzle %308, yyxy
+    %yyxy:ptr<function, vec4<u32>, read_write> = var, %309
+    %311:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %312:vec3<u32> = load %311
+    %313:vec4<u32> = swizzle %312, yyxz
+    %yyxz:ptr<function, vec4<u32>, read_write> = var, %313
+    %315:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %316:vec3<u32> = load %315
+    %317:vec4<u32> = swizzle %316, yyyx
+    %yyyx:ptr<function, vec4<u32>, read_write> = var, %317
+    %319:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %320:vec3<u32> = load %319
+    %321:vec4<u32> = swizzle %320, yyyy
+    %yyyy:ptr<function, vec4<u32>, read_write> = var, %321
+    %323:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %324:vec3<u32> = load %323
+    %325:vec4<u32> = swizzle %324, yyyz
+    %yyyz:ptr<function, vec4<u32>, read_write> = var, %325
+    %327:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %328:vec3<u32> = load %327
+    %329:vec4<u32> = swizzle %328, yyzx
+    %yyzx:ptr<function, vec4<u32>, read_write> = var, %329
+    %331:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %332:vec3<u32> = load %331
+    %333:vec4<u32> = swizzle %332, yyzy
+    %yyzy:ptr<function, vec4<u32>, read_write> = var, %333
+    %335:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %336:vec3<u32> = load %335
+    %337:vec4<u32> = swizzle %336, yyzz
+    %yyzz:ptr<function, vec4<u32>, read_write> = var, %337
+    %339:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %340:vec3<u32> = load %339
+    %341:vec4<u32> = swizzle %340, yzxx
+    %yzxx:ptr<function, vec4<u32>, read_write> = var, %341
+    %343:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %344:vec3<u32> = load %343
+    %345:vec4<u32> = swizzle %344, yzxy
+    %yzxy:ptr<function, vec4<u32>, read_write> = var, %345
+    %347:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %348:vec3<u32> = load %347
+    %349:vec4<u32> = swizzle %348, yzxz
+    %yzxz:ptr<function, vec4<u32>, read_write> = var, %349
+    %351:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %352:vec3<u32> = load %351
+    %353:vec4<u32> = swizzle %352, yzyx
+    %yzyx:ptr<function, vec4<u32>, read_write> = var, %353
+    %355:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %356:vec3<u32> = load %355
+    %357:vec4<u32> = swizzle %356, yzyy
+    %yzyy:ptr<function, vec4<u32>, read_write> = var, %357
+    %359:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %360:vec3<u32> = load %359
+    %361:vec4<u32> = swizzle %360, yzyz
+    %yzyz:ptr<function, vec4<u32>, read_write> = var, %361
+    %363:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %364:vec3<u32> = load %363
+    %365:vec4<u32> = swizzle %364, yzzx
+    %yzzx:ptr<function, vec4<u32>, read_write> = var, %365
+    %367:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %368:vec3<u32> = load %367
+    %369:vec4<u32> = swizzle %368, yzzy
+    %yzzy:ptr<function, vec4<u32>, read_write> = var, %369
+    %371:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %372:vec3<u32> = load %371
+    %373:vec4<u32> = swizzle %372, yzzz
+    %yzzz:ptr<function, vec4<u32>, read_write> = var, %373
+    %375:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %376:vec3<u32> = load %375
+    %377:vec4<u32> = swizzle %376, zxxx
+    %zxxx:ptr<function, vec4<u32>, read_write> = var, %377
+    %379:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %380:vec3<u32> = load %379
+    %381:vec4<u32> = swizzle %380, zxxy
+    %zxxy:ptr<function, vec4<u32>, read_write> = var, %381
+    %383:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %384:vec3<u32> = load %383
+    %385:vec4<u32> = swizzle %384, zxxz
+    %zxxz:ptr<function, vec4<u32>, read_write> = var, %385
+    %387:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %388:vec3<u32> = load %387
+    %389:vec4<u32> = swizzle %388, zxyx
+    %zxyx:ptr<function, vec4<u32>, read_write> = var, %389
+    %391:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %392:vec3<u32> = load %391
+    %393:vec4<u32> = swizzle %392, zxyy
+    %zxyy:ptr<function, vec4<u32>, read_write> = var, %393
+    %395:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %396:vec3<u32> = load %395
+    %397:vec4<u32> = swizzle %396, zxyz
+    %zxyz:ptr<function, vec4<u32>, read_write> = var, %397
+    %399:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %400:vec3<u32> = load %399
+    %401:vec4<u32> = swizzle %400, zxzx
+    %zxzx:ptr<function, vec4<u32>, read_write> = var, %401
+    %403:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %404:vec3<u32> = load %403
+    %405:vec4<u32> = swizzle %404, zxzy
+    %zxzy:ptr<function, vec4<u32>, read_write> = var, %405
+    %407:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %408:vec3<u32> = load %407
+    %409:vec4<u32> = swizzle %408, zxzz
+    %zxzz:ptr<function, vec4<u32>, read_write> = var, %409
+    %411:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %412:vec3<u32> = load %411
+    %413:vec4<u32> = swizzle %412, zyxx
+    %zyxx:ptr<function, vec4<u32>, read_write> = var, %413
+    %415:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %416:vec3<u32> = load %415
+    %417:vec4<u32> = swizzle %416, zyxy
+    %zyxy:ptr<function, vec4<u32>, read_write> = var, %417
+    %419:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %420:vec3<u32> = load %419
+    %421:vec4<u32> = swizzle %420, zyxz
+    %zyxz:ptr<function, vec4<u32>, read_write> = var, %421
+    %423:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %424:vec3<u32> = load %423
+    %425:vec4<u32> = swizzle %424, zyyx
+    %zyyx:ptr<function, vec4<u32>, read_write> = var, %425
+    %427:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %428:vec3<u32> = load %427
+    %429:vec4<u32> = swizzle %428, zyyy
+    %zyyy:ptr<function, vec4<u32>, read_write> = var, %429
+    %431:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %432:vec3<u32> = load %431
+    %433:vec4<u32> = swizzle %432, zyyz
+    %zyyz:ptr<function, vec4<u32>, read_write> = var, %433
+    %435:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %436:vec3<u32> = load %435
+    %437:vec4<u32> = swizzle %436, zyzx
+    %zyzx:ptr<function, vec4<u32>, read_write> = var, %437
+    %439:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %440:vec3<u32> = load %439
+    %441:vec4<u32> = swizzle %440, zyzy
+    %zyzy:ptr<function, vec4<u32>, read_write> = var, %441
+    %443:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %444:vec3<u32> = load %443
+    %445:vec4<u32> = swizzle %444, zyzz
+    %zyzz:ptr<function, vec4<u32>, read_write> = var, %445
+    %447:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %448:vec3<u32> = load %447
+    %449:vec4<u32> = swizzle %448, zzxx
+    %zzxx:ptr<function, vec4<u32>, read_write> = var, %449
+    %451:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %452:vec3<u32> = load %451
+    %453:vec4<u32> = swizzle %452, zzxy
+    %zzxy:ptr<function, vec4<u32>, read_write> = var, %453
+    %455:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %456:vec3<u32> = load %455
+    %457:vec4<u32> = swizzle %456, zzxz
+    %zzxz:ptr<function, vec4<u32>, read_write> = var, %457
+    %459:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %460:vec3<u32> = load %459
+    %461:vec4<u32> = swizzle %460, zzyx
+    %zzyx:ptr<function, vec4<u32>, read_write> = var, %461
+    %463:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %464:vec3<u32> = load %463
+    %465:vec4<u32> = swizzle %464, zzyy
+    %zzyy:ptr<function, vec4<u32>, read_write> = var, %465
+    %467:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %468:vec3<u32> = load %467
+    %469:vec4<u32> = swizzle %468, zzyz
+    %zzyz:ptr<function, vec4<u32>, read_write> = var, %469
+    %471:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %472:vec3<u32> = load %471
+    %473:vec4<u32> = swizzle %472, zzzx
+    %zzzx:ptr<function, vec4<u32>, read_write> = var, %473
+    %475:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %476:vec3<u32> = load %475
+    %477:vec4<u32> = swizzle %476, zzzy
+    %zzzy:ptr<function, vec4<u32>, read_write> = var, %477
+    %479:ptr<uniform, vec3<u32>, read> = access %U, 0u
+    %480:vec3<u32> = load %479
+    %481:vec4<u32> = swizzle %480, zzzz
+    %zzzz:ptr<function, vec4<u32>, read_write> = var, %481
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/swizzle/read/vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/swizzle/read/vec3/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/swizzle/read/vec3/f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/swizzle/read/vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/swizzle/read/vec3/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/swizzle/read/vec3/f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/swizzle/read/vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/swizzle/read/vec3/i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/swizzle/read/vec3/i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/swizzle/read/vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/swizzle/read/vec3/u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/swizzle/read/vec3/u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/swizzle/write/packed_vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/swizzle/write/packed_vec3/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..171a7c5
--- /dev/null
+++ b/test/tint/expressions/swizzle/write/packed_vec3/f16.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(8) {
+  v:vec3<f16> @offset(0)
+}
+
+%b1 = block {  # root
+  %U:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%f = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec3<f16>, read_write> = access %U, 0u
+    store %3, vec3<f16>(1.0h, 2.0h, 3.0h)
+    %4:ptr<storage, vec3<f16>, read_write> = access %U, 0u
+    store_vector_element %4, 0u, 1.0h
+    %5:ptr<storage, vec3<f16>, read_write> = access %U, 0u
+    store_vector_element %5, 1u, 2.0h
+    %6:ptr<storage, vec3<f16>, read_write> = access %U, 0u
+    store_vector_element %6, 2u, 3.0h
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..556ac75
--- /dev/null
+++ b/test/tint/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  v:vec3<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %U:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%f = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec3<f32>, read_write> = access %U, 0u
+    store %3, vec3<f32>(1.0f, 2.0f, 3.0f)
+    %4:ptr<storage, vec3<f32>, read_write> = access %U, 0u
+    store_vector_element %4, 0u, 1.0f
+    %5:ptr<storage, vec3<f32>, read_write> = access %U, 0u
+    store_vector_element %5, 1u, 2.0f
+    %6:ptr<storage, vec3<f32>, read_write> = access %U, 0u
+    store_vector_element %6, 2u, 3.0f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..11eb721
--- /dev/null
+++ b/test/tint/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  v:vec3<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %U:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%f = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec3<i32>, read_write> = access %U, 0u
+    store %3, vec3<i32>(1i, 2i, 3i)
+    %4:ptr<storage, vec3<i32>, read_write> = access %U, 0u
+    store_vector_element %4, 0u, 1i
+    %5:ptr<storage, vec3<i32>, read_write> = access %U, 0u
+    store_vector_element %5, 1u, 2i
+    %6:ptr<storage, vec3<i32>, read_write> = access %U, 0u
+    store_vector_element %6, 2u, 3i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3374c6f
--- /dev/null
+++ b/test/tint/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  v:vec3<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %U:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%f = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec3<u32>, read_write> = access %U, 0u
+    store %3, vec3<u32>(1u, 2u, 3u)
+    %4:ptr<storage, vec3<u32>, read_write> = access %U, 0u
+    store_vector_element %4, 0u, 1u
+    %5:ptr<storage, vec3<u32>, read_write> = access %U, 0u
+    store_vector_element %5, 1u, 2u
+    %6:ptr<storage, vec3<u32>, read_write> = access %U, 0u
+    store_vector_element %6, 2u, 3u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/expressions/type_conv/mat2x2/function/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat2x2/function/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat2x2/function/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/mat2x2/function/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat2x2/function/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat2x2/function/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/mat2x2/var/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat2x2/var/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat2x2/var/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/mat2x2/var/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat2x2/var/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat2x2/var/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/mat2x3/function/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat2x3/function/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat2x3/function/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/mat2x3/function/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat2x3/function/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat2x3/function/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/mat2x3/var/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat2x3/var/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat2x3/var/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/mat2x3/var/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat2x3/var/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat2x3/var/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/mat2x4/function/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat2x4/function/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat2x4/function/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/mat2x4/function/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat2x4/function/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat2x4/function/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/mat2x4/var/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat2x4/var/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat2x4/var/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/mat2x4/var/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat2x4/var/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat2x4/var/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/mat3x2/function/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat3x2/function/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat3x2/function/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/mat3x2/function/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat3x2/function/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat3x2/function/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/mat3x2/var/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat3x2/var/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat3x2/var/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/mat3x2/var/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat3x2/var/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat3x2/var/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/mat3x3/function/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat3x3/function/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat3x3/function/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/mat3x3/function/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat3x3/function/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat3x3/function/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/mat3x3/var/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat3x3/var/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat3x3/var/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/mat3x3/var/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat3x3/var/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat3x3/var/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/mat3x4/function/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat3x4/function/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat3x4/function/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/mat3x4/function/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat3x4/function/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat3x4/function/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/mat3x4/var/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat3x4/var/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat3x4/var/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/mat3x4/var/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat3x4/var/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat3x4/var/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/mat4x2/function/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat4x2/function/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat4x2/function/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/mat4x2/function/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat4x2/function/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat4x2/function/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/mat4x2/var/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat4x2/var/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat4x2/var/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/mat4x2/var/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat4x2/var/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat4x2/var/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/mat4x3/function/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat4x3/function/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat4x3/function/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/mat4x3/function/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat4x3/function/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat4x3/function/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/mat4x3/var/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat4x3/var/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat4x3/var/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/mat4x3/var/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat4x3/var/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat4x3/var/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/mat4x4/function/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat4x4/function/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat4x4/function/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/mat4x4/function/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat4x4/function/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat4x4/function/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/mat4x4/var/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat4x4/var/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat4x4/var/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/mat4x4/var/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/mat4x4/var/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/mat4x4/var/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/bool-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/bool-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/bool-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/bool-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/bool-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/bool-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/bool-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/bool-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/bool-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/bool-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/bool-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/bool-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/f16-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/f16-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/f16-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/f16-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/f16-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/f16-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/f16-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/f16-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/f16-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/f32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/f32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/f32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/f32-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/f32-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/f32-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/f32-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/f32-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/f32-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/i32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/i32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/i32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/i32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/i32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/i32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/i32-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/i32-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/i32-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/i32-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/i32-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/i32-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/u32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/u32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/u32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/u32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/u32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/u32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/u32-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/u32-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/u32-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/function/u32-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/function/u32-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/function/u32-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/bool-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/bool-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/bool-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/bool-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/bool-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/bool-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/bool-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/bool-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/bool-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/bool-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/bool-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/bool-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/f16-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/f16-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/f16-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/f16-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/f16-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/f16-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/f16-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/f16-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/f16-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/f32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/f32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/f32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/f32-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/f32-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/f32-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/f32-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/f32-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/f32-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/i32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/i32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/i32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/i32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/i32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/i32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/i32-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/i32-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/i32-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/i32-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/i32-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/i32-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/u32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/u32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/u32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/u32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/u32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/u32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/u32-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/u32-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/u32-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/scalar/var/u32-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/scalar/var/u32-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/scalar/var/u32-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/bool-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/bool-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/bool-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/bool-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/bool-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/bool-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/bool-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/bool-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/bool-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/bool-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/bool-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/bool-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/f16-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/f16-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/f16-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/f16-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/f16-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/f16-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/f16-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/f16-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/f16-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/f32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/f32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/f32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/f32-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/f32-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/f32-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/f32-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/f32-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/f32-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/i32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/i32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/i32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/i32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/i32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/i32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/i32-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/i32-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/i32-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/i32-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/i32-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/i32-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/u32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/u32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/u32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/u32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/u32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/u32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/u32-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/u32-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/u32-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/function/u32-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/function/u32-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/function/u32-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/bool-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/bool-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/bool-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/bool-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/bool-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/bool-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/bool-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/bool-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/bool-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/bool-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/bool-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/bool-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/f16-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/f16-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/f16-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/f16-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/f16-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/f16-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/f16-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/f16-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/f16-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/f32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/f32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/f32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/f32-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/f32-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/f32-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/f32-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/f32-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/f32-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/i32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/i32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/i32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/i32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/i32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/i32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/i32-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/i32-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/i32-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/i32-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/i32-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/i32-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/u32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/u32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/u32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/u32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/u32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/u32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/u32-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/u32-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/u32-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec2/var/u32-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec2/var/u32-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec2/var/u32-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/bool-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/bool-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/bool-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/bool-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/bool-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/bool-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/bool-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/bool-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/bool-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/bool-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/bool-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/bool-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/f16-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/f16-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/f16-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/f16-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/f16-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/f16-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/f16-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/f16-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/f16-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/f32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/f32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/f32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/f32-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/f32-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/f32-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/f32-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/f32-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/f32-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/i32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/i32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/i32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/i32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/i32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/i32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/i32-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/i32-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/i32-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/i32-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/i32-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/i32-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/u32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/u32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/u32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/u32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/u32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/u32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/u32-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/u32-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/u32-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/function/u32-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/function/u32-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/function/u32-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/bool-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/bool-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/bool-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/bool-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/bool-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/bool-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/bool-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/bool-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/bool-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/bool-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/bool-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/bool-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/f16-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/f16-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/f16-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/f16-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/f16-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/f16-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/f16-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/f16-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/f16-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/f32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/f32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/f32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/f32-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/f32-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/f32-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/f32-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/f32-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/f32-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/i32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/i32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/i32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/i32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/i32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/i32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/i32-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/i32-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/i32-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/i32-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/i32-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/i32-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/u32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/u32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/u32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/u32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/u32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/u32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/u32-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/u32-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/u32-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec3/var/u32-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec3/var/u32-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec3/var/u32-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/bool-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/bool-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/bool-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/bool-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/bool-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/bool-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/bool-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/bool-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/bool-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/bool-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/bool-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/bool-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/f16-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/f16-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/f16-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/f16-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/f16-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/f16-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/f16-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/f16-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/f16-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/f32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/f32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/f32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/f32-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/f32-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/f32-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/f32-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/f32-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/f32-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/i32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/i32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/i32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/i32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/i32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/i32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/i32-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/i32-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/i32-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/i32-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/i32-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/i32-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/u32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/u32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/u32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/u32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/u32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/u32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/u32-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/u32-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/u32-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/function/u32-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/function/u32-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/function/u32-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/bool-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/bool-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/bool-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/bool-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/bool-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/bool-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/bool-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/bool-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/bool-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/bool-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/bool-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/bool-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/f16-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/f16-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/f16-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/f16-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/f16-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/f16-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/f16-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/f16-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/f16-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/f16-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/f16-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/f16-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/f32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/f32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/f32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/f32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/f32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/f32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/f32-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/f32-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/f32-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/f32-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/f32-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/f32-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/i32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/i32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/i32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/i32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/i32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/i32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/i32-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/i32-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/i32-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/i32-u32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/i32-u32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/i32-u32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/u32-bool.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/u32-bool.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/u32-bool.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/u32-f16.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/u32-f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/u32-f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/u32-f32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/u32-f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/u32-f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_conv/vec4/var/u32-i32.wgsl.expected.ir.msl b/test/tint/expressions/type_conv/vec4/var/u32-i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/expressions/type_conv/vec4/var/u32-i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x2/explicit/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1b8138d
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x2<f16>, read_write> = var, mat2x2<f16>(vec2<f16>(0.0h, 1.0h), vec2<f16>(2.0h, 3.0h))
+  %out:ptr<storage, mat2x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f16> = load %m
+    %5:mat2x2<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x2/explicit/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..af87ad3
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x2<f32>, read_write> = var, mat2x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f))
+  %out:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f32> = load %m
+    %5:mat2x2<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x2/explicit/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dbcfc76
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x2<f16>, read_write> = var, mat2x2<f16>(vec2<f16>(0.0h, 1.0h), vec2<f16>(2.0h, 3.0h))
+  %out:ptr<storage, mat2x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x2/explicit/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..19f7708
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x2<f32>, read_write> = var, mat2x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f))
+  %out:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x2/explicit/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dbcfc76
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x2<f16>, read_write> = var, mat2x2<f16>(vec2<f16>(0.0h, 1.0h), vec2<f16>(2.0h, 3.0h))
+  %out:ptr<storage, mat2x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x2/explicit/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..19f7708
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x2<f32>, read_write> = var, mat2x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f))
+  %out:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x2/inferred/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1b8138d
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x2<f16>, read_write> = var, mat2x2<f16>(vec2<f16>(0.0h, 1.0h), vec2<f16>(2.0h, 3.0h))
+  %out:ptr<storage, mat2x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f16> = load %m
+    %5:mat2x2<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x2/inferred/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..af87ad3
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x2<f32>, read_write> = var, mat2x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f))
+  %out:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f32> = load %m
+    %5:mat2x2<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7dbf1ae
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    store %out, mat2x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x2/inferred/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dbcfc76
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x2<f16>, read_write> = var, mat2x2<f16>(vec2<f16>(0.0h, 1.0h), vec2<f16>(2.0h, 3.0h))
+  %out:ptr<storage, mat2x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x2/inferred/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..19f7708
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x2<f32>, read_write> = var, mat2x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f))
+  %out:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7dbf1ae
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    store %out, mat2x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x2/inferred/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dbcfc76
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x2<f16>, read_write> = var, mat2x2<f16>(vec2<f16>(0.0h, 1.0h), vec2<f16>(2.0h, 3.0h))
+  %out:ptr<storage, mat2x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x2/inferred/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..19f7708
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x2<f32>, read_write> = var, mat2x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f))
+  %out:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x2/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/load/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..21d5876
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x2/load/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat2x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat2x2<f16>, read_write> = var, mat2x2<f16>(vec2<f16>(0.0h))
+    %4:mat2x2<f16> = load %m
+    %5:mat2x2<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x2/load/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/load/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ee37481
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x2/load/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat2x2<f32>, read_write> = var, mat2x2<f32>(vec2<f32>(0.0f))
+    %4:mat2x2<f32> = load %m
+    %5:mat2x2<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x2/zero/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/zero/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7a8f45b
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x2/zero/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x2<f16>, read_write> = var, mat2x2<f16>(vec2<f16>(0.0h))
+  %out:ptr<storage, mat2x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x2/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/zero/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..433bac4
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x2/zero/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x2<f32>, read_write> = var, mat2x2<f32>(vec2<f32>(0.0f))
+  %out:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x2<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x3/explicit/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..48571dc
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x3<f16>, read_write> = var, mat2x3<f16>(vec3<f16>(0.0h, 1.0h, 2.0h), vec3<f16>(3.0h, 4.0h, 5.0h))
+  %out:ptr<storage, mat2x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f16> = load %m
+    %5:mat2x3<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x3/explicit/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a1ec7ea
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x3<f32>, read_write> = var, mat2x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f))
+  %out:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f32> = load %m
+    %5:mat2x3<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x3/explicit/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b3b7e3b
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x3<f16>, read_write> = var, mat2x3<f16>(vec3<f16>(0.0h, 1.0h, 2.0h), vec3<f16>(3.0h, 4.0h, 5.0h))
+  %out:ptr<storage, mat2x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x3/explicit/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..99c7a2c
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x3<f32>, read_write> = var, mat2x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f))
+  %out:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x3/explicit/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b3b7e3b
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x3<f16>, read_write> = var, mat2x3<f16>(vec3<f16>(0.0h, 1.0h, 2.0h), vec3<f16>(3.0h, 4.0h, 5.0h))
+  %out:ptr<storage, mat2x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x3/explicit/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..99c7a2c
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x3<f32>, read_write> = var, mat2x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f))
+  %out:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x3/inferred/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..48571dc
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x3<f16>, read_write> = var, mat2x3<f16>(vec3<f16>(0.0h, 1.0h, 2.0h), vec3<f16>(3.0h, 4.0h, 5.0h))
+  %out:ptr<storage, mat2x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f16> = load %m
+    %5:mat2x3<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x3/inferred/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a1ec7ea
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x3<f32>, read_write> = var, mat2x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f))
+  %out:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f32> = load %m
+    %5:mat2x3<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl
new file mode 100644
index 0000000..add2812
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    store %out, mat2x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x3/inferred/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b3b7e3b
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x3<f16>, read_write> = var, mat2x3<f16>(vec3<f16>(0.0h, 1.0h, 2.0h), vec3<f16>(3.0h, 4.0h, 5.0h))
+  %out:ptr<storage, mat2x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x3/inferred/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..99c7a2c
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x3<f32>, read_write> = var, mat2x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f))
+  %out:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl
new file mode 100644
index 0000000..add2812
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    store %out, mat2x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x3/inferred/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b3b7e3b
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x3<f16>, read_write> = var, mat2x3<f16>(vec3<f16>(0.0h, 1.0h, 2.0h), vec3<f16>(3.0h, 4.0h, 5.0h))
+  %out:ptr<storage, mat2x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x3/inferred/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..99c7a2c
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x3<f32>, read_write> = var, mat2x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f))
+  %out:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x3/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/load/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3b62155
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x3/load/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat2x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat2x3<f16>, read_write> = var, mat2x3<f16>(vec3<f16>(0.0h))
+    %4:mat2x3<f16> = load %m
+    %5:mat2x3<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x3/load/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/load/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..244cd44
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x3/load/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat2x3<f32>, read_write> = var, mat2x3<f32>(vec3<f32>(0.0f))
+    %4:mat2x3<f32> = load %m
+    %5:mat2x3<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x3/zero/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/zero/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dbfa2ab
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x3/zero/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x3<f16>, read_write> = var, mat2x3<f16>(vec3<f16>(0.0h))
+  %out:ptr<storage, mat2x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x3/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/zero/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..629f609
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x3/zero/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x3<f32>, read_write> = var, mat2x3<f32>(vec3<f32>(0.0f))
+  %out:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x3<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x4/explicit/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2f53f28
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x4<f16>, read_write> = var, mat2x4<f16>(vec4<f16>(0.0h, 1.0h, 2.0h, 3.0h), vec4<f16>(4.0h, 5.0h, 6.0h, 7.0h))
+  %out:ptr<storage, mat2x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f16> = load %m
+    %5:mat2x4<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x4/explicit/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f0cccab
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x4<f32>, read_write> = var, mat2x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f))
+  %out:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f32> = load %m
+    %5:mat2x4<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x4/explicit/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f4def4f
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x4<f16>, read_write> = var, mat2x4<f16>(vec4<f16>(0.0h, 1.0h, 2.0h, 3.0h), vec4<f16>(4.0h, 5.0h, 6.0h, 7.0h))
+  %out:ptr<storage, mat2x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x4/explicit/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dccd922
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x4<f32>, read_write> = var, mat2x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f))
+  %out:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x4/explicit/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f4def4f
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x4<f16>, read_write> = var, mat2x4<f16>(vec4<f16>(0.0h, 1.0h, 2.0h, 3.0h), vec4<f16>(4.0h, 5.0h, 6.0h, 7.0h))
+  %out:ptr<storage, mat2x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x4/explicit/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dccd922
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x4<f32>, read_write> = var, mat2x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f))
+  %out:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x4/inferred/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2f53f28
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x4<f16>, read_write> = var, mat2x4<f16>(vec4<f16>(0.0h, 1.0h, 2.0h, 3.0h), vec4<f16>(4.0h, 5.0h, 6.0h, 7.0h))
+  %out:ptr<storage, mat2x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f16> = load %m
+    %5:mat2x4<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x4/inferred/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f0cccab
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x4<f32>, read_write> = var, mat2x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f))
+  %out:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f32> = load %m
+    %5:mat2x4<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e7021c0
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    store %out, mat2x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x4/inferred/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f4def4f
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x4<f16>, read_write> = var, mat2x4<f16>(vec4<f16>(0.0h, 1.0h, 2.0h, 3.0h), vec4<f16>(4.0h, 5.0h, 6.0h, 7.0h))
+  %out:ptr<storage, mat2x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x4/inferred/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dccd922
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x4<f32>, read_write> = var, mat2x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f))
+  %out:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e7021c0
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    store %out, mat2x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x4/inferred/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f4def4f
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x4<f16>, read_write> = var, mat2x4<f16>(vec4<f16>(0.0h, 1.0h, 2.0h, 3.0h), vec4<f16>(4.0h, 5.0h, 6.0h, 7.0h))
+  %out:ptr<storage, mat2x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x4/inferred/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dccd922
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x4<f32>, read_write> = var, mat2x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f))
+  %out:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x4/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/load/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..45742ff
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x4/load/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat2x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat2x4<f16>, read_write> = var, mat2x4<f16>(vec4<f16>(0.0h))
+    %4:mat2x4<f16> = load %m
+    %5:mat2x4<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x4/load/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/load/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5139465
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x4/load/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat2x4<f32>, read_write> = var, mat2x4<f32>(vec4<f32>(0.0f))
+    %4:mat2x4<f32> = load %m
+    %5:mat2x4<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x4/zero/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/zero/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5269b43
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x4/zero/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x4<f16>, read_write> = var, mat2x4<f16>(vec4<f16>(0.0h))
+  %out:ptr<storage, mat2x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat2x4/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/zero/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3c27509
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat2x4/zero/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat2x4<f32>, read_write> = var, mat2x4<f32>(vec4<f32>(0.0f))
+  %out:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat2x4<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x2/explicit/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7dfd287
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x2<f16>, read_write> = var, mat3x2<f16>(vec2<f16>(0.0h, 1.0h), vec2<f16>(2.0h, 3.0h), vec2<f16>(4.0h, 5.0h))
+  %out:ptr<storage, mat3x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f16> = load %m
+    %5:mat3x2<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x2/explicit/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..761084b
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x2<f32>, read_write> = var, mat3x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f), vec2<f32>(4.0f, 5.0f))
+  %out:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f32> = load %m
+    %5:mat3x2<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x2/explicit/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8c4a5a0
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x2<f16>, read_write> = var, mat3x2<f16>(vec2<f16>(0.0h, 1.0h), vec2<f16>(2.0h, 3.0h), vec2<f16>(4.0h, 5.0h))
+  %out:ptr<storage, mat3x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x2/explicit/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..da69e9d
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x2<f32>, read_write> = var, mat3x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f), vec2<f32>(4.0f, 5.0f))
+  %out:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x2/explicit/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8c4a5a0
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x2<f16>, read_write> = var, mat3x2<f16>(vec2<f16>(0.0h, 1.0h), vec2<f16>(2.0h, 3.0h), vec2<f16>(4.0h, 5.0h))
+  %out:ptr<storage, mat3x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x2/explicit/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..da69e9d
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x2<f32>, read_write> = var, mat3x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f), vec2<f32>(4.0f, 5.0f))
+  %out:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x2/inferred/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7dfd287
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x2<f16>, read_write> = var, mat3x2<f16>(vec2<f16>(0.0h, 1.0h), vec2<f16>(2.0h, 3.0h), vec2<f16>(4.0h, 5.0h))
+  %out:ptr<storage, mat3x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f16> = load %m
+    %5:mat3x2<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x2/inferred/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..761084b
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x2<f32>, read_write> = var, mat3x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f), vec2<f32>(4.0f, 5.0f))
+  %out:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f32> = load %m
+    %5:mat3x2<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl
new file mode 100644
index 0000000..59128da
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    store %out, mat3x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f), vec2<f32>(4.0f, 5.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x2/inferred/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8c4a5a0
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x2<f16>, read_write> = var, mat3x2<f16>(vec2<f16>(0.0h, 1.0h), vec2<f16>(2.0h, 3.0h), vec2<f16>(4.0h, 5.0h))
+  %out:ptr<storage, mat3x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x2/inferred/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..da69e9d
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x2<f32>, read_write> = var, mat3x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f), vec2<f32>(4.0f, 5.0f))
+  %out:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl
new file mode 100644
index 0000000..59128da
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    store %out, mat3x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f), vec2<f32>(4.0f, 5.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x2/inferred/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8c4a5a0
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x2<f16>, read_write> = var, mat3x2<f16>(vec2<f16>(0.0h, 1.0h), vec2<f16>(2.0h, 3.0h), vec2<f16>(4.0h, 5.0h))
+  %out:ptr<storage, mat3x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x2/inferred/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..da69e9d
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x2<f32>, read_write> = var, mat3x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f), vec2<f32>(4.0f, 5.0f))
+  %out:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x2/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/load/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6bfe91c
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x2/load/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat3x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat3x2<f16>, read_write> = var, mat3x2<f16>(vec2<f16>(0.0h))
+    %4:mat3x2<f16> = load %m
+    %5:mat3x2<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x2/load/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/load/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cb339a9
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x2/load/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat3x2<f32>, read_write> = var, mat3x2<f32>(vec2<f32>(0.0f))
+    %4:mat3x2<f32> = load %m
+    %5:mat3x2<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x2/zero/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/zero/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9e000bd
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x2/zero/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x2<f16>, read_write> = var, mat3x2<f16>(vec2<f16>(0.0h))
+  %out:ptr<storage, mat3x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x2/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/zero/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..da12c60
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x2/zero/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x2<f32>, read_write> = var, mat3x2<f32>(vec2<f32>(0.0f))
+  %out:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x2<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x3/explicit/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9b9fcc7
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x3<f16>, read_write> = var, mat3x3<f16>(vec3<f16>(0.0h, 1.0h, 2.0h), vec3<f16>(3.0h, 4.0h, 5.0h), vec3<f16>(6.0h, 7.0h, 8.0h))
+  %out:ptr<storage, mat3x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f16> = load %m
+    %5:mat3x3<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x3/explicit/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0962c0c
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x3<f32>, read_write> = var, mat3x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f), vec3<f32>(6.0f, 7.0f, 8.0f))
+  %out:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f32> = load %m
+    %5:mat3x3<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x3/explicit/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d9cf8a6
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x3<f16>, read_write> = var, mat3x3<f16>(vec3<f16>(0.0h, 1.0h, 2.0h), vec3<f16>(3.0h, 4.0h, 5.0h), vec3<f16>(6.0h, 7.0h, 8.0h))
+  %out:ptr<storage, mat3x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x3/explicit/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..caa41f6
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x3<f32>, read_write> = var, mat3x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f), vec3<f32>(6.0f, 7.0f, 8.0f))
+  %out:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x3/explicit/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d9cf8a6
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x3<f16>, read_write> = var, mat3x3<f16>(vec3<f16>(0.0h, 1.0h, 2.0h), vec3<f16>(3.0h, 4.0h, 5.0h), vec3<f16>(6.0h, 7.0h, 8.0h))
+  %out:ptr<storage, mat3x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x3/explicit/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..caa41f6
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x3<f32>, read_write> = var, mat3x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f), vec3<f32>(6.0f, 7.0f, 8.0f))
+  %out:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x3/inferred/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9b9fcc7
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x3<f16>, read_write> = var, mat3x3<f16>(vec3<f16>(0.0h, 1.0h, 2.0h), vec3<f16>(3.0h, 4.0h, 5.0h), vec3<f16>(6.0h, 7.0h, 8.0h))
+  %out:ptr<storage, mat3x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f16> = load %m
+    %5:mat3x3<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x3/inferred/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0962c0c
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x3<f32>, read_write> = var, mat3x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f), vec3<f32>(6.0f, 7.0f, 8.0f))
+  %out:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f32> = load %m
+    %5:mat3x3<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d2f234f
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    store %out, mat3x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f), vec3<f32>(6.0f, 7.0f, 8.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x3/inferred/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d9cf8a6
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x3<f16>, read_write> = var, mat3x3<f16>(vec3<f16>(0.0h, 1.0h, 2.0h), vec3<f16>(3.0h, 4.0h, 5.0h), vec3<f16>(6.0h, 7.0h, 8.0h))
+  %out:ptr<storage, mat3x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x3/inferred/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..caa41f6
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x3<f32>, read_write> = var, mat3x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f), vec3<f32>(6.0f, 7.0f, 8.0f))
+  %out:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d2f234f
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    store %out, mat3x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f), vec3<f32>(6.0f, 7.0f, 8.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x3/inferred/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d9cf8a6
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x3<f16>, read_write> = var, mat3x3<f16>(vec3<f16>(0.0h, 1.0h, 2.0h), vec3<f16>(3.0h, 4.0h, 5.0h), vec3<f16>(6.0h, 7.0h, 8.0h))
+  %out:ptr<storage, mat3x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x3/inferred/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..caa41f6
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x3<f32>, read_write> = var, mat3x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f), vec3<f32>(6.0f, 7.0f, 8.0f))
+  %out:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x3/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/load/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..58fa955
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x3/load/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat3x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat3x3<f16>, read_write> = var, mat3x3<f16>(vec3<f16>(0.0h))
+    %4:mat3x3<f16> = load %m
+    %5:mat3x3<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x3/load/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/load/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fc07dc5
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x3/load/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat3x3<f32>, read_write> = var, mat3x3<f32>(vec3<f32>(0.0f))
+    %4:mat3x3<f32> = load %m
+    %5:mat3x3<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x3/zero/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/zero/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8bf3ec3
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x3/zero/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x3<f16>, read_write> = var, mat3x3<f16>(vec3<f16>(0.0h))
+  %out:ptr<storage, mat3x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x3/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/zero/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e1c1c6e
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x3/zero/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x3<f32>, read_write> = var, mat3x3<f32>(vec3<f32>(0.0f))
+  %out:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x3<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x4/explicit/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..abd23cb
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x4<f16>, read_write> = var, mat3x4<f16>(vec4<f16>(0.0h, 1.0h, 2.0h, 3.0h), vec4<f16>(4.0h, 5.0h, 6.0h, 7.0h), vec4<f16>(8.0h, 9.0h, 10.0h, 11.0h))
+  %out:ptr<storage, mat3x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f16> = load %m
+    %5:mat3x4<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x4/explicit/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2ad890b
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x4<f32>, read_write> = var, mat3x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f), vec4<f32>(8.0f, 9.0f, 10.0f, 11.0f))
+  %out:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f32> = load %m
+    %5:mat3x4<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x4/explicit/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..835ab69
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x4<f16>, read_write> = var, mat3x4<f16>(vec4<f16>(0.0h, 1.0h, 2.0h, 3.0h), vec4<f16>(4.0h, 5.0h, 6.0h, 7.0h), vec4<f16>(8.0h, 9.0h, 10.0h, 11.0h))
+  %out:ptr<storage, mat3x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x4/explicit/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..581b29f
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x4<f32>, read_write> = var, mat3x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f), vec4<f32>(8.0f, 9.0f, 10.0f, 11.0f))
+  %out:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x4/explicit/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..835ab69
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x4<f16>, read_write> = var, mat3x4<f16>(vec4<f16>(0.0h, 1.0h, 2.0h, 3.0h), vec4<f16>(4.0h, 5.0h, 6.0h, 7.0h), vec4<f16>(8.0h, 9.0h, 10.0h, 11.0h))
+  %out:ptr<storage, mat3x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x4/explicit/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..581b29f
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x4<f32>, read_write> = var, mat3x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f), vec4<f32>(8.0f, 9.0f, 10.0f, 11.0f))
+  %out:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x4/inferred/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..abd23cb
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x4<f16>, read_write> = var, mat3x4<f16>(vec4<f16>(0.0h, 1.0h, 2.0h, 3.0h), vec4<f16>(4.0h, 5.0h, 6.0h, 7.0h), vec4<f16>(8.0h, 9.0h, 10.0h, 11.0h))
+  %out:ptr<storage, mat3x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f16> = load %m
+    %5:mat3x4<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x4/inferred/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2ad890b
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x4<f32>, read_write> = var, mat3x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f), vec4<f32>(8.0f, 9.0f, 10.0f, 11.0f))
+  %out:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f32> = load %m
+    %5:mat3x4<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2c7b060
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    store %out, mat3x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f), vec4<f32>(8.0f, 9.0f, 10.0f, 11.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x4/inferred/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..835ab69
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x4<f16>, read_write> = var, mat3x4<f16>(vec4<f16>(0.0h, 1.0h, 2.0h, 3.0h), vec4<f16>(4.0h, 5.0h, 6.0h, 7.0h), vec4<f16>(8.0h, 9.0h, 10.0h, 11.0h))
+  %out:ptr<storage, mat3x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x4/inferred/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..581b29f
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x4<f32>, read_write> = var, mat3x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f), vec4<f32>(8.0f, 9.0f, 10.0f, 11.0f))
+  %out:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2c7b060
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    store %out, mat3x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f), vec4<f32>(8.0f, 9.0f, 10.0f, 11.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x4/inferred/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..835ab69
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x4<f16>, read_write> = var, mat3x4<f16>(vec4<f16>(0.0h, 1.0h, 2.0h, 3.0h), vec4<f16>(4.0h, 5.0h, 6.0h, 7.0h), vec4<f16>(8.0h, 9.0h, 10.0h, 11.0h))
+  %out:ptr<storage, mat3x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x4/inferred/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..581b29f
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x4<f32>, read_write> = var, mat3x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f), vec4<f32>(8.0f, 9.0f, 10.0f, 11.0f))
+  %out:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x4/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/load/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7892ddd
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x4/load/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat3x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat3x4<f16>, read_write> = var, mat3x4<f16>(vec4<f16>(0.0h))
+    %4:mat3x4<f16> = load %m
+    %5:mat3x4<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x4/load/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/load/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3e168ef
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x4/load/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat3x4<f32>, read_write> = var, mat3x4<f32>(vec4<f32>(0.0f))
+    %4:mat3x4<f32> = load %m
+    %5:mat3x4<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x4/zero/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/zero/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..400ec40
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x4/zero/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x4<f16>, read_write> = var, mat3x4<f16>(vec4<f16>(0.0h))
+  %out:ptr<storage, mat3x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat3x4/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/zero/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..011460f
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat3x4/zero/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat3x4<f32>, read_write> = var, mat3x4<f32>(vec4<f32>(0.0f))
+  %out:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat3x4<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x2/explicit/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c4a58925
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x2<f16>, read_write> = var, mat4x2<f16>(vec2<f16>(0.0h, 1.0h), vec2<f16>(2.0h, 3.0h), vec2<f16>(4.0h, 5.0h), vec2<f16>(6.0h, 7.0h))
+  %out:ptr<storage, mat4x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f16> = load %m
+    %5:mat4x2<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x2/explicit/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..27c966d
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x2<f32>, read_write> = var, mat4x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f), vec2<f32>(4.0f, 5.0f), vec2<f32>(6.0f, 7.0f))
+  %out:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f32> = load %m
+    %5:mat4x2<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x2/explicit/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d6cf5fd
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x2<f16>, read_write> = var, mat4x2<f16>(vec2<f16>(0.0h, 1.0h), vec2<f16>(2.0h, 3.0h), vec2<f16>(4.0h, 5.0h), vec2<f16>(6.0h, 7.0h))
+  %out:ptr<storage, mat4x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x2/explicit/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8bc52e2
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x2<f32>, read_write> = var, mat4x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f), vec2<f32>(4.0f, 5.0f), vec2<f32>(6.0f, 7.0f))
+  %out:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x2/explicit/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d6cf5fd
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x2<f16>, read_write> = var, mat4x2<f16>(vec2<f16>(0.0h, 1.0h), vec2<f16>(2.0h, 3.0h), vec2<f16>(4.0h, 5.0h), vec2<f16>(6.0h, 7.0h))
+  %out:ptr<storage, mat4x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x2/explicit/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8bc52e2
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x2<f32>, read_write> = var, mat4x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f), vec2<f32>(4.0f, 5.0f), vec2<f32>(6.0f, 7.0f))
+  %out:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x2/inferred/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c4a58925
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x2<f16>, read_write> = var, mat4x2<f16>(vec2<f16>(0.0h, 1.0h), vec2<f16>(2.0h, 3.0h), vec2<f16>(4.0h, 5.0h), vec2<f16>(6.0h, 7.0h))
+  %out:ptr<storage, mat4x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f16> = load %m
+    %5:mat4x2<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x2/inferred/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..27c966d
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x2<f32>, read_write> = var, mat4x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f), vec2<f32>(4.0f, 5.0f), vec2<f32>(6.0f, 7.0f))
+  %out:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f32> = load %m
+    %5:mat4x2<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e06ac1
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    store %out, mat4x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f), vec2<f32>(4.0f, 5.0f), vec2<f32>(6.0f, 7.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x2/inferred/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d6cf5fd
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x2<f16>, read_write> = var, mat4x2<f16>(vec2<f16>(0.0h, 1.0h), vec2<f16>(2.0h, 3.0h), vec2<f16>(4.0h, 5.0h), vec2<f16>(6.0h, 7.0h))
+  %out:ptr<storage, mat4x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x2/inferred/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8bc52e2
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x2<f32>, read_write> = var, mat4x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f), vec2<f32>(4.0f, 5.0f), vec2<f32>(6.0f, 7.0f))
+  %out:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e06ac1
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    store %out, mat4x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f), vec2<f32>(4.0f, 5.0f), vec2<f32>(6.0f, 7.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x2/inferred/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d6cf5fd
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x2<f16>, read_write> = var, mat4x2<f16>(vec2<f16>(0.0h, 1.0h), vec2<f16>(2.0h, 3.0h), vec2<f16>(4.0h, 5.0h), vec2<f16>(6.0h, 7.0h))
+  %out:ptr<storage, mat4x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x2/inferred/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8bc52e2
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x2<f32>, read_write> = var, mat4x2<f32>(vec2<f32>(0.0f, 1.0f), vec2<f32>(2.0f, 3.0f), vec2<f32>(4.0f, 5.0f), vec2<f32>(6.0f, 7.0f))
+  %out:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x2/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/load/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..651d527
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x2/load/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat4x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat4x2<f16>, read_write> = var, mat4x2<f16>(vec2<f16>(0.0h))
+    %4:mat4x2<f16> = load %m
+    %5:mat4x2<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x2/load/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/load/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1ad8293
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x2/load/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat4x2<f32>, read_write> = var, mat4x2<f32>(vec2<f32>(0.0f))
+    %4:mat4x2<f32> = load %m
+    %5:mat4x2<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x2/zero/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/zero/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7b6b4bc
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x2/zero/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x2<f16>, read_write> = var, mat4x2<f16>(vec2<f16>(0.0h))
+  %out:ptr<storage, mat4x2<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x2/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/zero/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aaefcf7
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x2/zero/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x2<f32>, read_write> = var, mat4x2<f32>(vec2<f32>(0.0f))
+  %out:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x2<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x3/explicit/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aad66ee
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x3<f16>, read_write> = var, mat4x3<f16>(vec3<f16>(0.0h, 1.0h, 2.0h), vec3<f16>(3.0h, 4.0h, 5.0h), vec3<f16>(6.0h, 7.0h, 8.0h), vec3<f16>(9.0h, 10.0h, 11.0h))
+  %out:ptr<storage, mat4x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f16> = load %m
+    %5:mat4x3<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x3/explicit/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..382d216
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x3<f32>, read_write> = var, mat4x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f), vec3<f32>(6.0f, 7.0f, 8.0f), vec3<f32>(9.0f, 10.0f, 11.0f))
+  %out:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f32> = load %m
+    %5:mat4x3<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x3/explicit/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2d5ff92
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x3<f16>, read_write> = var, mat4x3<f16>(vec3<f16>(0.0h, 1.0h, 2.0h), vec3<f16>(3.0h, 4.0h, 5.0h), vec3<f16>(6.0h, 7.0h, 8.0h), vec3<f16>(9.0h, 10.0h, 11.0h))
+  %out:ptr<storage, mat4x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x3/explicit/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..def93a3
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x3<f32>, read_write> = var, mat4x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f), vec3<f32>(6.0f, 7.0f, 8.0f), vec3<f32>(9.0f, 10.0f, 11.0f))
+  %out:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x3/explicit/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2d5ff92
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x3<f16>, read_write> = var, mat4x3<f16>(vec3<f16>(0.0h, 1.0h, 2.0h), vec3<f16>(3.0h, 4.0h, 5.0h), vec3<f16>(6.0h, 7.0h, 8.0h), vec3<f16>(9.0h, 10.0h, 11.0h))
+  %out:ptr<storage, mat4x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x3/explicit/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..def93a3
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x3<f32>, read_write> = var, mat4x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f), vec3<f32>(6.0f, 7.0f, 8.0f), vec3<f32>(9.0f, 10.0f, 11.0f))
+  %out:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x3/inferred/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aad66ee
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x3<f16>, read_write> = var, mat4x3<f16>(vec3<f16>(0.0h, 1.0h, 2.0h), vec3<f16>(3.0h, 4.0h, 5.0h), vec3<f16>(6.0h, 7.0h, 8.0h), vec3<f16>(9.0h, 10.0h, 11.0h))
+  %out:ptr<storage, mat4x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f16> = load %m
+    %5:mat4x3<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x3/inferred/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..382d216
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x3<f32>, read_write> = var, mat4x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f), vec3<f32>(6.0f, 7.0f, 8.0f), vec3<f32>(9.0f, 10.0f, 11.0f))
+  %out:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f32> = load %m
+    %5:mat4x3<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl
new file mode 100644
index 0000000..40594c0
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    store %out, mat4x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f), vec3<f32>(6.0f, 7.0f, 8.0f), vec3<f32>(9.0f, 10.0f, 11.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x3/inferred/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2d5ff92
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x3<f16>, read_write> = var, mat4x3<f16>(vec3<f16>(0.0h, 1.0h, 2.0h), vec3<f16>(3.0h, 4.0h, 5.0h), vec3<f16>(6.0h, 7.0h, 8.0h), vec3<f16>(9.0h, 10.0h, 11.0h))
+  %out:ptr<storage, mat4x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x3/inferred/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..def93a3
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x3<f32>, read_write> = var, mat4x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f), vec3<f32>(6.0f, 7.0f, 8.0f), vec3<f32>(9.0f, 10.0f, 11.0f))
+  %out:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl
new file mode 100644
index 0000000..40594c0
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    store %out, mat4x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f), vec3<f32>(6.0f, 7.0f, 8.0f), vec3<f32>(9.0f, 10.0f, 11.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x3/inferred/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2d5ff92
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x3<f16>, read_write> = var, mat4x3<f16>(vec3<f16>(0.0h, 1.0h, 2.0h), vec3<f16>(3.0h, 4.0h, 5.0h), vec3<f16>(6.0h, 7.0h, 8.0h), vec3<f16>(9.0h, 10.0h, 11.0h))
+  %out:ptr<storage, mat4x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x3/inferred/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..def93a3
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x3<f32>, read_write> = var, mat4x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f), vec3<f32>(6.0f, 7.0f, 8.0f), vec3<f32>(9.0f, 10.0f, 11.0f))
+  %out:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x3/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/load/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fae6ba5
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x3/load/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat4x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat4x3<f16>, read_write> = var, mat4x3<f16>(vec3<f16>(0.0h))
+    %4:mat4x3<f16> = load %m
+    %5:mat4x3<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x3/load/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/load/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f53ee99
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x3/load/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat4x3<f32>, read_write> = var, mat4x3<f32>(vec3<f32>(0.0f))
+    %4:mat4x3<f32> = load %m
+    %5:mat4x3<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x3/zero/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/zero/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7819e7a
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x3/zero/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x3<f16>, read_write> = var, mat4x3<f16>(vec3<f16>(0.0h))
+  %out:ptr<storage, mat4x3<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x3/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/zero/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eb3927a
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x3/zero/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x3<f32>, read_write> = var, mat4x3<f32>(vec3<f32>(0.0f))
+  %out:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x3<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x4/explicit/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5a1ae8f
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x4<f16>, read_write> = var, mat4x4<f16>(vec4<f16>(0.0h, 1.0h, 2.0h, 3.0h), vec4<f16>(4.0h, 5.0h, 6.0h, 7.0h), vec4<f16>(8.0h, 9.0h, 10.0h, 11.0h), vec4<f16>(12.0h, 13.0h, 14.0h, 15.0h))
+  %out:ptr<storage, mat4x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f16> = load %m
+    %5:mat4x4<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x4/explicit/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2375b5c
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x4<f32>, read_write> = var, mat4x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f), vec4<f32>(8.0f, 9.0f, 10.0f, 11.0f), vec4<f32>(12.0f, 13.0f, 14.0f, 15.0f))
+  %out:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f32> = load %m
+    %5:mat4x4<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x4/explicit/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..04103f0
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x4<f16>, read_write> = var, mat4x4<f16>(vec4<f16>(0.0h, 1.0h, 2.0h, 3.0h), vec4<f16>(4.0h, 5.0h, 6.0h, 7.0h), vec4<f16>(8.0h, 9.0h, 10.0h, 11.0h), vec4<f16>(12.0h, 13.0h, 14.0h, 15.0h))
+  %out:ptr<storage, mat4x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x4/explicit/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..35d7bd1
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x4<f32>, read_write> = var, mat4x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f), vec4<f32>(8.0f, 9.0f, 10.0f, 11.0f), vec4<f32>(12.0f, 13.0f, 14.0f, 15.0f))
+  %out:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x4/explicit/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..04103f0
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x4<f16>, read_write> = var, mat4x4<f16>(vec4<f16>(0.0h, 1.0h, 2.0h, 3.0h), vec4<f16>(4.0h, 5.0h, 6.0h, 7.0h), vec4<f16>(8.0h, 9.0h, 10.0h, 11.0h), vec4<f16>(12.0h, 13.0h, 14.0h, 15.0h))
+  %out:ptr<storage, mat4x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x4/explicit/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..35d7bd1
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x4<f32>, read_write> = var, mat4x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f), vec4<f32>(8.0f, 9.0f, 10.0f, 11.0f), vec4<f32>(12.0f, 13.0f, 14.0f, 15.0f))
+  %out:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x4/inferred/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5a1ae8f
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x4<f16>, read_write> = var, mat4x4<f16>(vec4<f16>(0.0h, 1.0h, 2.0h, 3.0h), vec4<f16>(4.0h, 5.0h, 6.0h, 7.0h), vec4<f16>(8.0h, 9.0h, 10.0h, 11.0h), vec4<f16>(12.0h, 13.0h, 14.0h, 15.0h))
+  %out:ptr<storage, mat4x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f16> = load %m
+    %5:mat4x4<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x4/inferred/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2375b5c
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x4<f32>, read_write> = var, mat4x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f), vec4<f32>(8.0f, 9.0f, 10.0f, 11.0f), vec4<f32>(12.0f, 13.0f, 14.0f, 15.0f))
+  %out:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f32> = load %m
+    %5:mat4x4<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl
new file mode 100644
index 0000000..72097b7
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    store %out, mat4x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f), vec4<f32>(8.0f, 9.0f, 10.0f, 11.0f), vec4<f32>(12.0f, 13.0f, 14.0f, 15.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x4/inferred/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..04103f0
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x4<f16>, read_write> = var, mat4x4<f16>(vec4<f16>(0.0h, 1.0h, 2.0h, 3.0h), vec4<f16>(4.0h, 5.0h, 6.0h, 7.0h), vec4<f16>(8.0h, 9.0h, 10.0h, 11.0h), vec4<f16>(12.0h, 13.0h, 14.0h, 15.0h))
+  %out:ptr<storage, mat4x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x4/inferred/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..35d7bd1
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x4<f32>, read_write> = var, mat4x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f), vec4<f32>(8.0f, 9.0f, 10.0f, 11.0f), vec4<f32>(12.0f, 13.0f, 14.0f, 15.0f))
+  %out:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl
new file mode 100644
index 0000000..72097b7
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    store %out, mat4x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f), vec4<f32>(8.0f, 9.0f, 10.0f, 11.0f), vec4<f32>(12.0f, 13.0f, 14.0f, 15.0f))
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x4/inferred/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..04103f0
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x4<f16>, read_write> = var, mat4x4<f16>(vec4<f16>(0.0h, 1.0h, 2.0h, 3.0h), vec4<f16>(4.0h, 5.0h, 6.0h, 7.0h), vec4<f16>(8.0h, 9.0h, 10.0h, 11.0h), vec4<f16>(12.0h, 13.0h, 14.0h, 15.0h))
+  %out:ptr<storage, mat4x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x4/inferred/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..35d7bd1
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x4<f32>, read_write> = var, mat4x4<f32>(vec4<f32>(0.0f, 1.0f, 2.0f, 3.0f), vec4<f32>(4.0f, 5.0f, 6.0f, 7.0f), vec4<f32>(8.0f, 9.0f, 10.0f, 11.0f), vec4<f32>(12.0f, 13.0f, 14.0f, 15.0f))
+  %out:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x4/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/load/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..466b7f4
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x4/load/f16.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat4x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat4x4<f16>, read_write> = var, mat4x4<f16>(vec4<f16>(0.0h))
+    %4:mat4x4<f16> = load %m
+    %5:mat4x4<f16> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x4/load/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/load/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..33844f4
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x4/load/f32.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %out:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat4x4<f32>, read_write> = var, mat4x4<f32>(vec4<f32>(0.0f))
+    %4:mat4x4<f32> = load %m
+    %5:mat4x4<f32> = construct %4
+    store %out, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x4/zero/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/zero/f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1a01a44
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x4/zero/f16.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x4<f16>, read_write> = var, mat4x4<f16>(vec4<f16>(0.0h))
+  %out:ptr<storage, mat4x4<f16>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f16> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/type_ctor/mat4x4/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/zero/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7e841a0
--- /dev/null
+++ b/test/tint/expressions/type_ctor/mat4x4/zero/f32.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %m:ptr<private, mat4x4<f32>, read_write> = var, mat4x4<f32>(vec4<f32>(0.0f))
+  %out:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %4:mat4x4<f32> = load %m
+    store %out, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/expressions/unary/complement/complement.wgsl.expected.ir.msl b/test/tint/expressions/unary/complement/complement.wgsl.expected.ir.msl
new file mode 100644
index 0000000..931741e
--- /dev/null
+++ b/test/tint/expressions/unary/complement/complement.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Unary
+********************************************************************
+*  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/tint/expressions/unary/negate/negate.wgsl.expected.ir.msl b/test/tint/expressions/unary/negate/negate.wgsl.expected.ir.msl
new file mode 100644
index 0000000..931741e
--- /dev/null
+++ b/test/tint/expressions/unary/negate/negate.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Unary
+********************************************************************
+*  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/tint/extensions/dual_source_blending/input_output.wgsl.expected.ir.msl b/test/tint/extensions/dual_source_blending/input_output.wgsl.expected.ir.msl
new file mode 100644
index 0000000..61be630
--- /dev/null
+++ b/test/tint/extensions/dual_source_blending/input_output.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: FragOutput = struct @align(16) {
+  color:vec4<f32> @offset(0), @location(0)
+  blend:vec4<f32> @offset(16), @location(0)
+}
+
+FragInput = struct @align(16) {
+  a:vec4<f32> @offset(0), @location(0)
+  b:vec4<f32> @offset(16), @location(1)
+}
+
+%frag_main = @fragment func(%in:FragInput):FragOutput -> %b1 {
+  %b1 = block {
+    %output:ptr<function, FragOutput, read_write> = var
+    %4:ptr<function, vec4<f32>, read_write> = access %output, 0u
+    %5:vec4<f32> = access %in, 0u
+    store %4, %5
+    %6:ptr<function, vec4<f32>, read_write> = access %output, 1u
+    %7:vec4<f32> = access %in, 1u
+    store %6, %7
+    %8:FragOutput = load %output
+    ret %8
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/extensions/dual_source_blending/output.wgsl.expected.ir.msl b/test/tint/extensions/dual_source_blending/output.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a84b419
--- /dev/null
+++ b/test/tint/extensions/dual_source_blending/output.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: FragOutput = struct @align(16) {
+  color:vec4<f32> @offset(0), @location(0)
+  blend:vec4<f32> @offset(16), @location(0)
+}
+
+%frag_main = @fragment func():FragOutput -> %b1 {
+  %b1 = block {
+    %output:ptr<function, FragOutput, read_write> = var
+    %3:ptr<function, vec4<f32>, read_write> = access %output, 0u
+    store %3, vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f)
+    %4:ptr<function, vec4<f32>, read_write> = access %output, 1u
+    store %4, vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f)
+    %5:FragOutput = load %output
+    ret %5
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/extensions/pixel_local/entry_point_use/additional_params/builtin.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e7ada6e
--- /dev/null
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+  b:i32 @offset(4)
+  c:f32 @offset(8)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f = @fragment func(%pos:vec4<f32> [@position]):void -> %b2 {
+  %b2 = block {
+    %4:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %5:f32 = access %pos, 0u
+    %6:u32 = convert %5
+    %7:u32 = load %4
+    %8:u32 = add %7, %6
+    store %4, %8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location.wgsl.expected.ir.msl
new file mode 100644
index 0000000..40618a6
--- /dev/null
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+  b:i32 @offset(4)
+  c:f32 @offset(8)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f = @fragment func(%pos:vec4<f32> [@position], %uv:vec4<f32> [@location(0)]):void -> %b2 {
+  %b2 = block {
+    %5:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %6:f32 = access %pos, 0u
+    %7:u32 = convert %6
+    %8:f32 = access %uv, 0u
+    %9:u32 = convert %8
+    %10:u32 = add %7, %9
+    %11:u32 = load %5
+    %12:u32 = add %11, %10
+    store %5, %12
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location_in_struct.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7775417
--- /dev/null
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,38 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+  b:i32 @offset(4)
+  c:f32 @offset(8)
+}
+
+In = struct @align(16) {
+  uv:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f = @fragment func(%pos:vec4<f32> [@position], %in:In):void -> %b2 {
+  %b2 = block {
+    %5:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %6:f32 = access %pos, 0u
+    %7:u32 = convert %6
+    %8:f32 = access %in, 0u, 0u
+    %9:u32 = convert %8
+    %10:u32 = add %7, %9
+    %11:u32 = load %5
+    %12:u32 = add %11, %10
+    store %5, %12
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3381a8c
--- /dev/null
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+  b:i32 @offset(4)
+  c:f32 @offset(8)
+}
+
+In = struct @align(16) {
+  pos:vec4<f32> @offset(0), @builtin(position)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f = @fragment func(%in:In):void -> %b2 {
+  %b2 = block {
+    %4:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %5:f32 = access %in, 0u, 0u
+    %6:u32 = convert %5
+    %7:u32 = load %4
+    %8:u32 = add %7, %6
+    store %4, %8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location.wgsl.expected.ir.msl
new file mode 100644
index 0000000..16b3bd2
--- /dev/null
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location.wgsl.expected.ir.msl
@@ -0,0 +1,38 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+  b:i32 @offset(4)
+  c:f32 @offset(8)
+}
+
+In = struct @align(16) {
+  pos:vec4<f32> @offset(0), @builtin(position)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f = @fragment func(%in:In, %uv:vec4<f32> [@location(0)]):void -> %b2 {
+  %b2 = block {
+    %5:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %6:f32 = access %in, 0u, 0u
+    %7:u32 = convert %6
+    %8:f32 = access %uv, 0u
+    %9:u32 = convert %8
+    %10:u32 = add %7, %9
+    %11:u32 = load %5
+    %12:u32 = add %11, %10
+    store %5, %12
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location_in_struct.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1bb2067
--- /dev/null
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+  b:i32 @offset(4)
+  c:f32 @offset(8)
+}
+
+In = struct @align(16) {
+  pos:vec4<f32> @offset(0), @builtin(position)
+  uv:vec4<f32> @offset(16), @location(0)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f = @fragment func(%in:In):void -> %b2 {
+  %b2 = block {
+    %4:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %5:f32 = access %in, 0u, 0u
+    %6:u32 = convert %5
+    %7:f32 = access %in, 1u, 0u
+    %8:u32 = convert %7
+    %9:u32 = add %6, %8
+    %10:u32 = load %4
+    %11:u32 = add %10, %9
+    store %4, %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8878b91
--- /dev/null
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+  b:i32 @offset(4)
+  c:f32 @offset(8)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f = @fragment func(%pos:vec4<f32> [@invariant, @position]):void -> %b2 {
+  %b2 = block {
+    %4:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %5:f32 = access %pos, 0u
+    %6:u32 = convert %5
+    %7:u32 = load %4
+    %8:u32 = add %7, %6
+    store %4, %8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin_in_struct.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ae557e8
--- /dev/null
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+  b:i32 @offset(4)
+  c:f32 @offset(8)
+}
+
+In = struct @align(16) {
+  pos:vec4<f32> @offset(0), @invariant, @builtin(position)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f = @fragment func(%in:In):void -> %b2 {
+  %b2 = block {
+    %4:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %5:f32 = access %in, 0u, 0u
+    %6:u32 = convert %5
+    %7:u32 = load %4
+    %8:u32 = add %7, %6
+    store %4, %8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/entry_point_use/additional_params/location.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7431847
--- /dev/null
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+  b:i32 @offset(4)
+  c:f32 @offset(8)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f = @fragment func(%a:vec4<f32> [@location(0)], %b:vec4<f32> [@location(1), @interpolate(flat)]):void -> %b2 {
+  %b2 = block {
+    %5:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %6:f32 = access %a, 0u
+    %7:u32 = convert %6
+    %8:f32 = access %b, 1u
+    %9:u32 = convert %8
+    %10:u32 = add %7, %9
+    %11:u32 = load %5
+    %12:u32 = add %11, %10
+    store %5, %12
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/entry_point_use/additional_params/location_in_struct.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d049786
--- /dev/null
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,39 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+  b:i32 @offset(4)
+  c:f32 @offset(8)
+}
+
+In = struct @align(16) {
+  a:vec4<f32> @offset(0), @location(0)
+  b:vec4<f32> @offset(16), @location(1), @interpolate(flat)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f = @fragment func(%in:In):void -> %b2 {
+  %b2 = block {
+    %4:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %5:f32 = access %in, 0u, 0u
+    %6:u32 = convert %5
+    %7:f32 = access %in, 1u, 1u
+    %8:u32 = convert %7
+    %9:u32 = add %6, %8
+    %10:u32 = load %4
+    %11:u32 = add %10, %9
+    store %4, %11
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/entry_point_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cf623cd
--- /dev/null
+++ b/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.msl
@@ -0,0 +1,35 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+  b:i32 @offset(4)
+  c:f32 @offset(8)
+}
+
+Out = struct @align(16) {
+  x:vec4<f32> @offset(0), @location(0)
+  y:vec4<f32> @offset(16), @location(2)
+  z:vec4<f32> @offset(32), @location(4)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f = @fragment func():Out -> %b2 {
+  %b2 = block {
+    %3:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %4:u32 = load %3
+    %5:u32 = add %4, 42u
+    store %3, %5
+    ret Out(vec4<f32>(10.0f), vec4<f32>(20.0f), vec4<f32>(30.0f))
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/entry_point_use/multiple_outputs/single_attachment.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/single_attachment.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9158200
--- /dev/null
+++ b/test/tint/extensions/pixel_local/entry_point_use/multiple_outputs/single_attachment.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+}
+
+Out = struct @align(16) {
+  x:vec4<f32> @offset(0), @location(0)
+  y:vec4<f32> @offset(16), @location(2)
+  z:vec4<f32> @offset(32), @location(3)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f = @fragment func():Out -> %b2 {
+  %b2 = block {
+    %3:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %4:u32 = load %3
+    %5:u32 = add %4, 42u
+    store %3, %5
+    ret Out(vec4<f32>(10.0f), vec4<f32>(20.0f), vec4<f32>(30.0f))
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/entry_point_use/one_output/multiple_attachments.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/entry_point_use/one_output/multiple_attachments.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4bdd79e
--- /dev/null
+++ b/test/tint/extensions/pixel_local/entry_point_use/one_output/multiple_attachments.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+  b:i32 @offset(4)
+  c:f32 @offset(8)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f = @fragment func():vec4<f32> [@location(0)] -> %b2 {
+  %b2 = block {
+    %3:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %4:u32 = load %3
+    %5:u32 = add %4, 42u
+    store %3, %5
+    ret vec4<f32>(2.0f)
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/entry_point_use/one_output/single_attachment.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/entry_point_use/one_output/single_attachment.wgsl.expected.ir.msl
new file mode 100644
index 0000000..363261a
--- /dev/null
+++ b/test/tint/extensions/pixel_local/entry_point_use/one_output/single_attachment.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f = @fragment func():vec4<f32> [@location(0)] -> %b2 {
+  %b2 = block {
+    %3:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %4:u32 = load %3
+    %5:u32 = add %4, 42u
+    store %3, %5
+    ret vec4<f32>(2.0f)
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/entry_point_use/zero_outputs/multiple_attachments.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/multiple_attachments.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3c112b4
--- /dev/null
+++ b/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/multiple_attachments.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+  b:i32 @offset(4)
+  c:f32 @offset(8)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f = @fragment func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %4:u32 = load %3
+    %5:u32 = add %4, 42u
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/entry_point_use/zero_outputs/single_attachment.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/single_attachment.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1a481e2
--- /dev/null
+++ b/test/tint/extensions/pixel_local/entry_point_use/zero_outputs/single_attachment.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f = @fragment func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %4:u32 = load %3
+    %5:u32 = add %4, 42u
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/indirect_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.msl
new file mode 100644
index 0000000..343fecb
--- /dev/null
+++ b/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/multiple_attachments.wgsl.expected.ir.msl
@@ -0,0 +1,61 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+  b:i32 @offset(4)
+  c:f32 @offset(8)
+}
+
+Out = struct @align(16) {
+  x:vec4<f32> @offset(0), @location(0)
+  y:vec4<f32> @offset(16), @location(2)
+  z:vec4<f32> @offset(32), @location(4)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f0 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %4:u32 = load %3
+    %5:u32 = add %4, 9u
+    store %3, %5
+    ret
+  }
+}
+%f1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %f0
+    %8:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %9:u32 = load %8
+    %10:u32 = add %9, 8u
+    store %8, %10
+    ret
+  }
+}
+%f2 = func():void -> %b4 {
+  %b4 = block {
+    %12:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %13:u32 = load %12
+    %14:u32 = add %13, 7u
+    store %12, %14
+    %15:void = call %f1
+    ret
+  }
+}
+%f = @fragment func():Out -> %b5 {
+  %b5 = block {
+    %17:void = call %f2
+    ret Out(vec4<f32>(10.0f), vec4<f32>(20.0f), vec4<f32>(30.0f))
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/indirect_use/multiple_outputs/single_attachment.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/single_attachment.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4b7a792
--- /dev/null
+++ b/test/tint/extensions/pixel_local/indirect_use/multiple_outputs/single_attachment.wgsl.expected.ir.msl
@@ -0,0 +1,59 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+}
+
+Out = struct @align(16) {
+  x:vec4<f32> @offset(0), @location(0)
+  y:vec4<f32> @offset(16), @location(2)
+  z:vec4<f32> @offset(32), @location(3)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f0 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %4:u32 = load %3
+    %5:u32 = add %4, 9u
+    store %3, %5
+    ret
+  }
+}
+%f1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %f0
+    %8:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %9:u32 = load %8
+    %10:u32 = add %9, 8u
+    store %8, %10
+    ret
+  }
+}
+%f2 = func():void -> %b4 {
+  %b4 = block {
+    %12:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %13:u32 = load %12
+    %14:u32 = add %13, 7u
+    store %12, %14
+    %15:void = call %f1
+    ret
+  }
+}
+%f = @fragment func():Out -> %b5 {
+  %b5 = block {
+    %17:void = call %f2
+    ret Out(vec4<f32>(10.0f), vec4<f32>(20.0f), vec4<f32>(30.0f))
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/indirect_use/one_output/multiple_attachments.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/indirect_use/one_output/multiple_attachments.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bb9a04c
--- /dev/null
+++ b/test/tint/extensions/pixel_local/indirect_use/one_output/multiple_attachments.wgsl.expected.ir.msl
@@ -0,0 +1,55 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+  b:i32 @offset(4)
+  c:f32 @offset(8)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f0 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %4:u32 = load %3
+    %5:u32 = add %4, 9u
+    store %3, %5
+    ret
+  }
+}
+%f1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %f0
+    %8:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %9:u32 = load %8
+    %10:u32 = add %9, 8u
+    store %8, %10
+    ret
+  }
+}
+%f2 = func():void -> %b4 {
+  %b4 = block {
+    %12:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %13:u32 = load %12
+    %14:u32 = add %13, 7u
+    store %12, %14
+    %15:void = call %f1
+    ret
+  }
+}
+%f = @fragment func():vec4<f32> [@location(0)] -> %b5 {
+  %b5 = block {
+    %17:void = call %f2
+    ret vec4<f32>(2.0f)
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/indirect_use/one_output/single_attachment.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/indirect_use/one_output/single_attachment.wgsl.expected.ir.msl
new file mode 100644
index 0000000..353ceff
--- /dev/null
+++ b/test/tint/extensions/pixel_local/indirect_use/one_output/single_attachment.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f0 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %4:u32 = load %3
+    %5:u32 = add %4, 9u
+    store %3, %5
+    ret
+  }
+}
+%f1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %f0
+    %8:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %9:u32 = load %8
+    %10:u32 = add %9, 8u
+    store %8, %10
+    ret
+  }
+}
+%f2 = func():void -> %b4 {
+  %b4 = block {
+    %12:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %13:u32 = load %12
+    %14:u32 = add %13, 7u
+    store %12, %14
+    %15:void = call %f1
+    ret
+  }
+}
+%f = @fragment func():vec4<f32> [@location(0)] -> %b5 {
+  %b5 = block {
+    %17:void = call %f2
+    ret vec4<f32>(2.0f)
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/indirect_use/zero_outputs/multiple_attachments.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/indirect_use/zero_outputs/multiple_attachments.wgsl.expected.ir.msl
new file mode 100644
index 0000000..98b3e61
--- /dev/null
+++ b/test/tint/extensions/pixel_local/indirect_use/zero_outputs/multiple_attachments.wgsl.expected.ir.msl
@@ -0,0 +1,55 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+  b:i32 @offset(4)
+  c:f32 @offset(8)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f0 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %4:u32 = load %3
+    %5:u32 = add %4, 9u
+    store %3, %5
+    ret
+  }
+}
+%f1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %f0
+    %8:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %9:u32 = load %8
+    %10:u32 = add %9, 8u
+    store %8, %10
+    ret
+  }
+}
+%f2 = func():void -> %b4 {
+  %b4 = block {
+    %12:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %13:u32 = load %12
+    %14:u32 = add %13, 7u
+    store %12, %14
+    %15:void = call %f1
+    ret
+  }
+}
+%f = @fragment func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %f2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/indirect_use/zero_outputs/single_attachment.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/indirect_use/zero_outputs/single_attachment.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1c86fd3
--- /dev/null
+++ b/test/tint/extensions/pixel_local/indirect_use/zero_outputs/single_attachment.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+}
+
+%b1 = block {  # root
+  %P:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f0 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %4:u32 = load %3
+    %5:u32 = add %4, 9u
+    store %3, %5
+    ret
+  }
+}
+%f1 = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %f0
+    %8:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %9:u32 = load %8
+    %10:u32 = add %9, 8u
+    store %8, %10
+    ret
+  }
+}
+%f2 = func():void -> %b4 {
+  %b4 = block {
+    %12:ptr<pixel_local, u32, read_write> = access %P, 0u
+    %13:u32 = load %12
+    %14:u32 = add %13, 7u
+    store %12, %14
+    %15:void = call %f1
+    ret
+  }
+}
+%f = @fragment func():void -> %b5 {
+  %b5 = block {
+    %17:void = call %f2
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/pixel_local/ptr/local.wgsl.expected.ir.msl b/test/tint/extensions/pixel_local/ptr/local.wgsl.expected.ir.msl
new file mode 100644
index 0000000..997f37f
--- /dev/null
+++ b/test/tint/extensions/pixel_local/ptr/local.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: PixelLocal = struct @align(4) {
+  a:u32 @offset(0)
+}
+
+%b1 = block {  # root
+  %V:ptr<pixel_local, PixelLocal, read_write> = var
+}
+
+%f = @fragment func():void -> %b2 {
+  %b2 = block {
+    %p:ptr<pixel_local, PixelLocal, read_write> = let %V
+    %4:ptr<pixel_local, u32, read_write> = access %p, 0u
+    store %4, 42u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.ir.msl b/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e6213cf
--- /dev/null
+++ b/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc:463 internal compiler error: TINT_UNIMPLEMENTED IR does not currently support texel fetch extension
+********************************************************************
+*  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/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.ir.msl b/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e6213cf
--- /dev/null
+++ b/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc:463 internal compiler error: TINT_UNIMPLEMENTED IR does not currently support texel fetch extension
+********************************************************************
+*  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/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.ir.msl b/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.ir.msl b/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e6213cf
--- /dev/null
+++ b/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc:463 internal compiler error: TINT_UNIMPLEMENTED IR does not currently support texel fetch extension
+********************************************************************
+*  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/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.ir.msl b/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.ir.msl b/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e6213cf
--- /dev/null
+++ b/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc:463 internal compiler error: TINT_UNIMPLEMENTED IR does not currently support texel fetch extension
+********************************************************************
+*  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/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.ir.msl b/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e6213cf
--- /dev/null
+++ b/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc:463 internal compiler error: TINT_UNIMPLEMENTED IR does not currently support texel fetch extension
+********************************************************************
+*  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/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.ir.msl b/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.ir.msl b/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.ir.msl b/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e6213cf
--- /dev/null
+++ b/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc:463 internal compiler error: TINT_UNIMPLEMENTED IR does not currently support texel fetch extension
+********************************************************************
+*  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/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.ir.msl b/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e6213cf
--- /dev/null
+++ b/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc:463 internal compiler error: TINT_UNIMPLEMENTED IR does not currently support texel fetch extension
+********************************************************************
+*  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/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.ir.msl b/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e6213cf
--- /dev/null
+++ b/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc:463 internal compiler error: TINT_UNIMPLEMENTED IR does not currently support texel fetch extension
+********************************************************************
+*  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/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.ir.msl b/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e6213cf
--- /dev/null
+++ b/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc:463 internal compiler error: TINT_UNIMPLEMENTED IR does not currently support texel fetch extension
+********************************************************************
+*  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/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.ir.msl b/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e6213cf
--- /dev/null
+++ b/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc:463 internal compiler error: TINT_UNIMPLEMENTED IR does not currently support texel fetch extension
+********************************************************************
+*  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/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.ir.msl b/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e6213cf
--- /dev/null
+++ b/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc:463 internal compiler error: TINT_UNIMPLEMENTED IR does not currently support texel fetch extension
+********************************************************************
+*  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/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.ir.msl b/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e6213cf
--- /dev/null
+++ b/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc:463 internal compiler error: TINT_UNIMPLEMENTED IR does not currently support texel fetch extension
+********************************************************************
+*  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/tint/identifiers/underscore/double/fn.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/double/fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/identifiers/underscore/double/fn.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/identifiers/underscore/double/parameter.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/double/parameter.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/identifiers/underscore/double/parameter.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/identifiers/underscore/double/struct.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/double/struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/identifiers/underscore/double/struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/identifiers/underscore/prefix/lower/fn.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/lower/fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/identifiers/underscore/prefix/lower/fn.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/identifiers/underscore/prefix/lower/parameter.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/lower/parameter.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/identifiers/underscore/prefix/lower/parameter.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/identifiers/underscore/prefix/lower/struct.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/lower/struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/identifiers/underscore/prefix/lower/struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/identifiers/underscore/prefix/upper/fn.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/upper/fn.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/identifiers/underscore/prefix/upper/fn.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/identifiers/underscore/prefix/upper/parameter.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/upper/parameter.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/identifiers/underscore/prefix/upper/parameter.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/identifiers/underscore/prefix/upper/struct.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/upper/struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/identifiers/underscore/prefix/upper/struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/layout/storage/mat2x2/f32.wgsl.expected.ir.msl b/test/tint/layout/storage/mat2x2/f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d366fbc
--- /dev/null
+++ b/test/tint/layout/storage/mat2x2/f32.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SSBO = struct @align(8) {
+  m:mat2x2<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %ssbo:ptr<storage, SSBO, read_write> = var @binding_point(0, 0)
+}
+
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, mat2x2<f32>, read_write> = access %ssbo, 0u
+    %v:mat2x2<f32> = load %3
+    %5:ptr<storage, mat2x2<f32>, read_write> = access %ssbo, 0u
+    store %5, %v
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/layout/storage/mat2x2/stride/16.spvasm.expected.ir.msl b/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.ir.msl
new file mode 100644
index 0000000..37ab89e
--- /dev/null
+++ b/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.ir.msl
@@ -0,0 +1,57 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(8) {
+  el:vec2<f32> @offset(0)
+}
+
+SSBO = struct @align(8) {
+  m:array<strided_arr, 2> @offset(0)
+}
+
+%b1 = block {  # root
+  %ssbo:ptr<storage, SSBO, read_write> = var @binding_point(0, 0)
+}
+
+%mat2x2_stride_16_to_arr = func(%m:mat2x2<f32>):array<strided_arr, 2> -> %b2 {
+  %b2 = block {
+    %4:vec2<f32> = access %m, 0u
+    %5:strided_arr = construct %4
+    %6:vec2<f32> = access %m, 1u
+    %7:strided_arr = construct %6
+    %8:array<strided_arr, 2> = construct %5, %7
+    ret %8
+  }
+}
+%arr_to_mat2x2_stride_16 = func(%arr:array<strided_arr, 2>):mat2x2<f32> -> %b3 {
+  %b3 = block {
+    %11:vec2<f32> = access %arr, 0u, 0u
+    %12:vec2<f32> = access %arr, 1u, 0u
+    %13:mat2x2<f32> = construct %11, %12
+    ret %13
+  }
+}
+%f_1 = func():void -> %b4 {
+  %b4 = block {
+    %15:ptr<storage, array<strided_arr, 2>, read_write> = access %ssbo, 0u
+    %16:ptr<storage, array<strided_arr, 2>, read_write> = access %ssbo, 0u
+    %17:array<strided_arr, 2> = load %16
+    %18:mat2x2<f32> = call %arr_to_mat2x2_stride_16, %17
+    %19:array<strided_arr, 2> = call %mat2x2_stride_16_to_arr, %18
+    store %15, %19
+    ret
+  }
+}
+%f = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %21:void = call %f_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/let/inferred/function.wgsl.expected.ir.msl b/test/tint/let/inferred/function.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/let/inferred/function.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/loops/continue_in_switch.wgsl.expected.ir.msl b/test/tint/loops/continue_in_switch.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/loops/continue_in_switch.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/loops/loop.wgsl.expected.ir.msl b/test/tint/loops/loop.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/loops/loop.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/loops/loop_with_break_if.wgsl.expected.ir.msl b/test/tint/loops/loop_with_break_if.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/loops/loop_with_break_if.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/loops/loop_with_continuing.wgsl.expected.ir.msl b/test/tint/loops/loop_with_continuing.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/loops/loop_with_continuing.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/loops/multiple_continues.wgsl.expected.ir.msl b/test/tint/loops/multiple_continues.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/loops/multiple_continues.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/loops/multiple_switch.wgsl.expected.ir.msl b/test/tint/loops/multiple_switch.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/loops/multiple_switch.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/loops/nested_loop_loop_switch.wgsl.expected.ir.msl b/test/tint/loops/nested_loop_loop_switch.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/loops/nested_loop_loop_switch.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/loops/nested_loop_switch_loop_switch.wgsl.expected.ir.msl b/test/tint/loops/nested_loop_switch_loop_switch.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/loops/nested_loop_switch_loop_switch.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/loops/nested_loop_switch_loop_switch_switch.wgsl.expected.ir.msl b/test/tint/loops/nested_loop_switch_loop_switch_switch.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/loops/nested_loop_switch_loop_switch_switch.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/loops/nested_loop_switch_switch.wgsl.expected.ir.msl b/test/tint/loops/nested_loop_switch_switch.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/loops/nested_loop_switch_switch.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/loops/nested_loops.wgsl.expected.ir.msl b/test/tint/loops/nested_loops.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/loops/nested_loops.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/loops/nested_loops_with_continuing.wgsl.expected.ir.msl b/test/tint/loops/nested_loops_with_continuing.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/loops/nested_loops_with_continuing.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/loops/single_continue.wgsl.expected.ir.msl b/test/tint/loops/single_continue.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/loops/single_continue.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/loops/while.wgsl.expected.ir.msl b/test/tint/loops/while.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/loops/while.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/loops/while_with_continue.wgsl.expected.ir.msl b/test/tint/loops/while_with_continue.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/loops/while_with_continue.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/out_of_order_decls/array/alias.wgsl.expected.ir.msl b/test/tint/out_of_order_decls/array/alias.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/out_of_order_decls/array/alias.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/out_of_order_decls/array/struct.wgsl.expected.ir.msl b/test/tint/out_of_order_decls/array/struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/out_of_order_decls/array/struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/out_of_order_decls/func/func.wgsl.expected.ir.msl b/test/tint/out_of_order_decls/func/func.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/out_of_order_decls/func/func.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/ptr_ref/access/matrix.spvasm.expected.ir.msl b/test/tint/ptr_ref/access/matrix.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/access/matrix.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/access/matrix.wgsl.expected.ir.msl b/test/tint/ptr_ref/access/matrix.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/ptr_ref/access/matrix.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/ptr_ref/copy/ptr_copy.spvasm.expected.ir.msl b/test/tint/ptr_ref/copy/ptr_copy.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/ptr_ref/copy/ptr_copy.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/ptr_ref/load/global/i32.spvasm.expected.ir.msl b/test/tint/ptr_ref/load/global/i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/ptr_ref/load/global/i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/ptr_ref/load/global/struct_field.spvasm.expected.ir.msl b/test/tint/ptr_ref/load/global/struct_field.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/ptr_ref/load/global/struct_field.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/ptr_ref/load/global/struct_field.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/global/struct_field.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/ptr_ref/load/global/struct_field.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/ptr_ref/load/local/i32.spvasm.expected.ir.msl b/test/tint/ptr_ref/load/local/i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/load/local/i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..115bf6f
--- /dev/null
+++ b/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  a:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p:ptr<storage, i32, read_write> = access %v, 0u
+    %4:i32 = load %p
+    %u:i32 = add %4, 1i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.ir.msl
new file mode 100644
index 0000000..80bdd95
--- /dev/null
+++ b/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  a:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %p:ptr<uniform, i32, read> = access %v, 0u
+    %4:i32 = load %p
+    %u:i32 = add %4, 1i
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/load/local/ptr_workgroup.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/local/ptr_workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/load/local/ptr_workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/load/local/struct_field.spvasm.expected.ir.msl b/test/tint/ptr_ref/load/local/struct_field.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/ptr_ref/load/local/struct_field.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/ptr_ref/load/local/struct_field.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/local/struct_field.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/ptr_ref/load/local/struct_field.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/ptr_ref/load/param/function/array_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/function/array_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/function/array_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/function/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/function/i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/function/i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/function/i32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/function/i32_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/function/i32_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/function/struct_in_array.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/function/struct_in_array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/function/struct_in_array.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/function/vec2_f32_in_mat2x2.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/function/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/function/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/function/vec4_f32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/function/vec4_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/function/vec4_f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/function/vec4_f32_in_mat2x4.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/function/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/function/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/function/vec4_f32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/function/vec4_f32_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/function/vec4_f32_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/private/array_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/private/array_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/private/array_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/private/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/private/i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/private/i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/private/i32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/private/i32_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/private/i32_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/private/struct_in_array.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/private/struct_in_array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/private/struct_in_array.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/private/vec2_f32_in_mat2x2.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/private/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/private/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/private/vec4_f32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/private/vec4_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/private/vec4_f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/private/vec4_f32_in_mat2x4.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/private/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/private/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/private/vec4_f32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/private/vec4_f32_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/private/vec4_f32_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/ptr.spvasm.expected.ir.msl b/test/tint/ptr_ref/load/param/ptr.spvasm.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/ptr.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/ptr.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/ptr.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/storage/array_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/storage/array_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..32298b1
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/storage/array_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: str = struct @align(4) {
+  arr:array<i32, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %S:ptr<storage, str, read> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<storage, array<i32, 4>, read>):array<i32, 4> -> %b2 {
+  %b2 = block {
+    %4:array<i32, 4> = load %pointer
+    ret %4
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %6:ptr<storage, array<i32, 4>, read> = access %S, 0u
+    %r:array<i32, 4> = call %func, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/load/param/storage/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/storage/i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..639ebdb
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/storage/i32.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %S:ptr<storage, i32, read> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<storage, i32, read>):i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %pointer
+    ret %4
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %r:i32 = call %func, %S
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/load/param/storage/i32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/storage/i32_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0ea3e0f
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/storage/i32_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: str = struct @align(4) {
+  i:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %S:ptr<storage, str, read> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<storage, i32, read>):i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %pointer
+    ret %4
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %6:ptr<storage, i32, read> = access %S, 0u
+    %r:i32 = call %func, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/load/param/storage/struct_in_array.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/storage/struct_in_array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7b014eb
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/storage/struct_in_array.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: str = struct @align(4) {
+  i:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %S:ptr<storage, array<str, 4>, read> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<storage, str, read>):str -> %b2 {
+  %b2 = block {
+    %4:str = load %pointer
+    ret %4
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %6:ptr<storage, str, read> = access %S, 2i
+    %r:str = call %func, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/load/param/storage/vec2_f32_in_mat2x2.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/storage/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3d1831c
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/storage/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %S:ptr<storage, mat2x2<f32>, read> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<storage, vec2<f32>, read>):vec2<f32> -> %b2 {
+  %b2 = block {
+    %4:vec2<f32> = load %pointer
+    ret %4
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %6:ptr<storage, vec2<f32>, read> = access %S, 1i
+    %r:vec2<f32> = call %func, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/load/param/storage/vec4_f32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/storage/vec4_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eafe2c3
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/storage/vec4_f32.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %S:ptr<storage, vec4<f32>, read> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<storage, vec4<f32>, read>):vec4<f32> -> %b2 {
+  %b2 = block {
+    %4:vec4<f32> = load %pointer
+    ret %4
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %r:vec4<f32> = call %func, %S
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/load/param/storage/vec4_f32_in_mat2x4.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/storage/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..122f86e
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/storage/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %S:ptr<storage, mat2x4<f32>, read> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<storage, vec4<f32>, read>):vec4<f32> -> %b2 {
+  %b2 = block {
+    %4:vec4<f32> = load %pointer
+    ret %4
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %6:ptr<storage, vec4<f32>, read> = access %S, 1i
+    %r:vec4<f32> = call %func, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/load/param/storage/vec4_f32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/storage/vec4_f32_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cbafdd3
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/storage/vec4_f32_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: str = struct @align(16) {
+  i:vec4<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %S:ptr<storage, str, read> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<storage, vec4<f32>, read>):vec4<f32> -> %b2 {
+  %b2 = block {
+    %4:vec4<f32> = load %pointer
+    ret %4
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %6:ptr<storage, vec4<f32>, read> = access %S, 0u
+    %r:vec4<f32> = call %func, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/load/param/uniform/array_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/uniform/array_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3ce58b1
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/uniform/array_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: str = struct @align(16) {
+  arr:array<vec4<i32>, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %S:ptr<uniform, str, read> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<uniform, array<vec4<i32>, 4>, read>):array<vec4<i32>, 4> -> %b2 {
+  %b2 = block {
+    %4:array<vec4<i32>, 4> = load %pointer
+    ret %4
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %6:ptr<uniform, array<vec4<i32>, 4>, read> = access %S, 0u
+    %r:array<vec4<i32>, 4> = call %func, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/load/param/uniform/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/uniform/i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..309f657
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/uniform/i32.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %S:ptr<uniform, i32, read> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<uniform, i32, read>):i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %pointer
+    ret %4
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %r:i32 = call %func, %S
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/load/param/uniform/i32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/uniform/i32_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e9da132
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/uniform/i32_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: str = struct @align(4) {
+  i:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %S:ptr<uniform, str, read> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<uniform, i32, read>):i32 -> %b2 {
+  %b2 = block {
+    %4:i32 = load %pointer
+    ret %4
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %6:ptr<uniform, i32, read> = access %S, 0u
+    %r:i32 = call %func, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/load/param/uniform/struct_in_array.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/uniform/struct_in_array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fcbc717
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/uniform/struct_in_array.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: str = struct @align(16) {
+  i:vec4<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %S:ptr<uniform, array<str, 4>, read> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<uniform, str, read>):str -> %b2 {
+  %b2 = block {
+    %4:str = load %pointer
+    ret %4
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %6:ptr<uniform, str, read> = access %S, 2i
+    %r:str = call %func, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/load/param/uniform/vec2_f32_in_mat2x2.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/uniform/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..862942b
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/uniform/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %S:ptr<uniform, mat2x2<f32>, read> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<uniform, vec2<f32>, read>):vec2<f32> -> %b2 {
+  %b2 = block {
+    %4:vec2<f32> = load %pointer
+    ret %4
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %6:ptr<uniform, vec2<f32>, read> = access %S, 1i
+    %r:vec2<f32> = call %func, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/load/param/uniform/vec4_f32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/uniform/vec4_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..18d662f
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/uniform/vec4_f32.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %S:ptr<uniform, vec4<f32>, read> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<uniform, vec4<f32>, read>):vec4<f32> -> %b2 {
+  %b2 = block {
+    %4:vec4<f32> = load %pointer
+    ret %4
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %r:vec4<f32> = call %func, %S
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..40c620f
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %S:ptr<uniform, mat2x4<f32>, read> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<uniform, vec4<f32>, read>):vec4<f32> -> %b2 {
+  %b2 = block {
+    %4:vec4<f32> = load %pointer
+    ret %4
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %6:ptr<uniform, vec4<f32>, read> = access %S, 1i
+    %r:vec4<f32> = call %func, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/load/param/uniform/vec4_f32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ff513fd
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: str = struct @align(16) {
+  i:vec4<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %S:ptr<uniform, str, read> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<uniform, vec4<f32>, read>):vec4<f32> -> %b2 {
+  %b2 = block {
+    %4:vec4<f32> = load %pointer
+    ret %4
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %6:ptr<uniform, vec4<f32>, read> = access %S, 0u
+    %r:vec4<f32> = call %func, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/load/param/workgroup/array_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/workgroup/array_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/workgroup/array_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/workgroup/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/workgroup/i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/workgroup/i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/workgroup/i32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/workgroup/i32_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/workgroup/i32_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/workgroup/struct_in_array.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/workgroup/struct_in_array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/workgroup/struct_in_array.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/workgroup/vec2_f32_in_mat2x2.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/workgroup/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/workgroup/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/workgroup/vec4_f32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/workgroup/vec4_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/workgroup/vec4_f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/workgroup/vec4_f32_in_mat2x4.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/load/param/workgroup/vec4_f32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/ptr_ref/load/param/workgroup/vec4_f32_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/ptr_ref/store/global/i32.spvasm.expected.ir.msl b/test/tint/ptr_ref/store/global/i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/global/i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/global/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/global/i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/global/i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/global/struct_field.spvasm.expected.ir.msl b/test/tint/ptr_ref/store/global/struct_field.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/ptr_ref/store/global/struct_field.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/ptr_ref/store/local/i32.spvasm.expected.ir.msl b/test/tint/ptr_ref/store/local/i32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/local/i32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/local/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/local/i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/local/i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/local/struct_field.spvasm.expected.ir.msl b/test/tint/ptr_ref/store/local/struct_field.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/ptr_ref/store/local/struct_field.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/ptr_ref/store/param/function/array_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/function/array_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/function/array_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/function/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/function/i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/function/i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/function/i32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/function/i32_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/function/i32_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/function/struct_in_array.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/function/struct_in_array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/function/struct_in_array.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/function/vec2_f32_in_mat2x2.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/function/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/function/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/function/vec4_f32.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/function/vec4_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/function/vec4_f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/function/vec4_f32_in_mat2x4.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/function/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/function/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/function/vec4_f32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/function/vec4_f32_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/function/vec4_f32_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/private/array_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/private/array_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/private/array_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/private/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/private/i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/private/i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/private/i32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/private/i32_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/private/i32_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/private/struct_in_array.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/private/struct_in_array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/private/struct_in_array.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/private/vec2_f32_in_mat2x2.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/private/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/private/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/private/vec4_f32.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/private/vec4_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/private/vec4_f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/private/vec4_f32_in_mat2x4.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/private/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/private/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/private/vec4_f32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/private/vec4_f32_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/private/vec4_f32_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/ptr.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/ptr.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/ptr.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/storage/array_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/storage/array_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e4740af
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/storage/array_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: str = struct @align(4) {
+  arr:array<i32, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %S:ptr<storage, str, read_write> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<storage, array<i32, 4>, read_write>):void -> %b2 {
+  %b2 = block {
+    store %pointer, array<i32, 4>(0i)
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %5:ptr<storage, array<i32, 4>, read_write> = access %S, 0u
+    %6:void = call %func, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/store/param/storage/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/storage/i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9619674
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/storage/i32.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %S:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<storage, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    store %pointer, 42i
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %5:void = call %func, %S
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/store/param/storage/i32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/storage/i32_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9f0eb01
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/storage/i32_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: str = struct @align(4) {
+  i:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %S:ptr<storage, str, read_write> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<storage, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    store %pointer, 42i
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %5:ptr<storage, i32, read_write> = access %S, 0u
+    %6:void = call %func, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/store/param/storage/struct_in_array.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/storage/struct_in_array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5e2f890
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/storage/struct_in_array.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: str = struct @align(4) {
+  i:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %S:ptr<storage, array<str, 4>, read_write> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<storage, str, read_write>):void -> %b2 {
+  %b2 = block {
+    store %pointer, str(0i)
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %5:ptr<storage, str, read_write> = access %S, 2i
+    %6:void = call %func, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/store/param/storage/vec2_f32_in_mat2x2.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/storage/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..73ba227
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/storage/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %S:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<storage, vec2<f32>, read_write>):void -> %b2 {
+  %b2 = block {
+    store %pointer, vec2<f32>(0.0f)
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %5:ptr<storage, vec2<f32>, read_write> = access %S, 1i
+    %6:void = call %func, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/store/param/storage/vec4_f32.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/storage/vec4_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bb2fd01
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/storage/vec4_f32.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %S:ptr<storage, vec4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<storage, vec4<f32>, read_write>):void -> %b2 {
+  %b2 = block {
+    store %pointer, vec4<f32>(0.0f)
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %5:void = call %func, %S
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/store/param/storage/vec4_f32_in_mat2x4.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/storage/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b316f50
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/storage/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %S:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<storage, vec4<f32>, read_write>):void -> %b2 {
+  %b2 = block {
+    store %pointer, vec4<f32>(0.0f)
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %5:ptr<storage, vec4<f32>, read_write> = access %S, 1i
+    %6:void = call %func, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/store/param/storage/vec4_f32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/storage/vec4_f32_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..569ba51
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/storage/vec4_f32_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: str = struct @align(16) {
+  i:vec4<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %S:ptr<storage, str, read_write> = var @binding_point(0, 0)
+}
+
+%func = func(%pointer:ptr<storage, vec4<f32>, read_write>):void -> %b2 {
+  %b2 = block {
+    store %pointer, vec4<f32>(0.0f)
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %5:ptr<storage, vec4<f32>, read_write> = access %S, 0u
+    %6:void = call %func, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/ptr_ref/store/param/workgroup/array_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/workgroup/array_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/workgroup/array_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/workgroup/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/workgroup/i32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/workgroup/i32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/workgroup/i32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/workgroup/i32_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/workgroup/i32_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/workgroup/struct_in_array.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/workgroup/struct_in_array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/workgroup/struct_in_array.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/workgroup/vec2_f32_in_mat2x2.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/workgroup/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/workgroup/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/workgroup/vec4_f32.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/workgroup/vec4_f32.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/workgroup/vec4_f32.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/workgroup/vec4_f32_in_mat2x4.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/ptr_ref/store/param/workgroup/vec4_f32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/ptr_ref/store/param/workgroup/vec4_f32_in_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/samples/compute_boids.wgsl.expected.ir.msl b/test/tint/samples/compute_boids.wgsl.expected.ir.msl
new file mode 100644
index 0000000..413bbcb
--- /dev/null
+++ b/test/tint/samples/compute_boids.wgsl.expected.ir.msl
@@ -0,0 +1,301 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: SimParams = struct @align(4) {
+  deltaT:f32 @offset(0)
+  rule1Distance:f32 @offset(4)
+  rule2Distance:f32 @offset(8)
+  rule3Distance:f32 @offset(12)
+  rule1Scale:f32 @offset(16)
+  rule2Scale:f32 @offset(20)
+  rule3Scale:f32 @offset(24)
+}
+
+Particle = struct @align(8) {
+  pos:vec2<f32> @offset(0)
+  vel:vec2<f32> @offset(8)
+}
+
+Particles = struct @align(8) {
+  particles:array<Particle, 5> @offset(0)
+}
+
+%b1 = block {  # root
+  %params:ptr<uniform, SimParams, read> = var @binding_point(0, 0)
+  %particlesA:ptr<storage, Particles, read_write> = var @binding_point(0, 1)
+  %particlesB:ptr<storage, Particles, read_write> = var @binding_point(0, 2)
+}
+
+%vert_main = @vertex func(%a_particlePos:vec2<f32> [@location(0)], %a_particleVel:vec2<f32> [@location(1)], %a_pos:vec2<f32> [@location(2)]):vec4<f32> [@position] -> %b2 {
+  %b2 = block {
+    %8:f32 = access %a_particleVel, 0u
+    %9:f32 = access %a_particleVel, 1u
+    %10:f32 = atan2 %8, %9
+    %11:f32 = negation %10
+    %angle:ptr<function, f32, read_write> = var, %11
+    %13:f32 = access %a_pos, 0u
+    %14:f32 = load %angle
+    %15:f32 = cos %14
+    %16:f32 = mul %13, %15
+    %17:f32 = access %a_pos, 1u
+    %18:f32 = load %angle
+    %19:f32 = sin %18
+    %20:f32 = mul %17, %19
+    %21:f32 = sub %16, %20
+    %22:f32 = access %a_pos, 0u
+    %23:f32 = load %angle
+    %24:f32 = sin %23
+    %25:f32 = mul %22, %24
+    %26:f32 = access %a_pos, 1u
+    %27:f32 = load %angle
+    %28:f32 = cos %27
+    %29:f32 = mul %26, %28
+    %30:f32 = add %25, %29
+    %31:vec2<f32> = construct %21, %30
+    %pos:ptr<function, vec2<f32>, read_write> = var, %31
+    %33:vec2<f32> = load %pos
+    %34:vec2<f32> = add %33, %a_particlePos
+    %35:vec4<f32> = construct %34, 0.0f, 1.0f
+    ret %35
+  }
+}
+%frag_main = @fragment func():vec4<f32> [@location(0)] -> %b3 {
+  %b3 = block {
+    ret vec4<f32>(1.0f)
+  }
+}
+%comp_main = @compute @workgroup_size(1, 1, 1) func(%gl_GlobalInvocationID:vec3<u32> [@global_invocation_id]):void -> %b4 {
+  %b4 = block {
+    %39:u32 = access %gl_GlobalInvocationID, 0u
+    %index:ptr<function, u32, read_write> = var, %39
+    %41:u32 = load %index
+    %42:bool = gte %41, 5u
+    if %42 [t: %b5] {  # if_1
+      %b5 = block {  # true
+        ret
+      }
+    }
+    %43:u32 = load %index
+    %44:ptr<storage, vec2<f32>, read_write> = access %particlesA, 0u, %43, 0u
+    %45:vec2<f32> = load %44
+    %vPos:ptr<function, vec2<f32>, read_write> = var, %45
+    %47:u32 = load %index
+    %48:ptr<storage, vec2<f32>, read_write> = access %particlesA, 0u, %47, 1u
+    %49:vec2<f32> = load %48
+    %vVel:ptr<function, vec2<f32>, read_write> = var, %49
+    %cMass:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.0f)
+    %cVel:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.0f)
+    %colVel:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(0.0f)
+    %cMassCount:ptr<function, i32, read_write> = var, 0i
+    %cVelCount:ptr<function, i32, read_write> = var, 0i
+    %pos_1:ptr<function, vec2<f32>, read_write> = var  # %pos_1: 'pos'
+    %vel:ptr<function, vec2<f32>, read_write> = var
+    loop [i: %b6, b: %b7, c: %b8] {  # loop_1
+      %b6 = block {  # initializer
+        %i:ptr<function, u32, read_write> = var, 0u
+        next_iteration %b7
+      }
+      %b7 = block {  # body
+        %59:u32 = load %i
+        %60:bool = lt %59, 5u
+        if %60 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %61:u32 = load %i
+        %62:u32 = load %index
+        %63:bool = eq %61, %62
+        if %63 [t: %b11] {  # if_3
+          %b11 = block {  # true
+            continue %b8
+          }
+        }
+        %64:u32 = load %i
+        %65:ptr<storage, vec2<f32>, read_write> = access %particlesA, 0u, %64, 0u
+        %66:vec2<f32> = load %65
+        %67:vec2<f32> = swizzle %66, xy
+        store %pos_1, %67
+        %68:u32 = load %i
+        %69:ptr<storage, vec2<f32>, read_write> = access %particlesA, 0u, %68, 1u
+        %70:vec2<f32> = load %69
+        %71:vec2<f32> = swizzle %70, xy
+        store %vel, %71
+        %72:vec2<f32> = load %pos_1
+        %73:vec2<f32> = load %vPos
+        %74:f32 = distance %72, %73
+        %75:ptr<uniform, f32, read> = access %params, 1u
+        %76:f32 = load %75
+        %77:bool = lt %74, %76
+        if %77 [t: %b12] {  # if_4
+          %b12 = block {  # true
+            %78:vec2<f32> = load %cMass
+            %79:vec2<f32> = load %pos_1
+            %80:vec2<f32> = add %78, %79
+            store %cMass, %80
+            %81:i32 = load %cMassCount
+            %82:i32 = add %81, 1i
+            store %cMassCount, %82
+            exit_if  # if_4
+          }
+        }
+        %83:vec2<f32> = load %pos_1
+        %84:vec2<f32> = load %vPos
+        %85:f32 = distance %83, %84
+        %86:ptr<uniform, f32, read> = access %params, 2u
+        %87:f32 = load %86
+        %88:bool = lt %85, %87
+        if %88 [t: %b13] {  # if_5
+          %b13 = block {  # true
+            %89:vec2<f32> = load %colVel
+            %90:vec2<f32> = load %pos_1
+            %91:vec2<f32> = load %vPos
+            %92:vec2<f32> = sub %90, %91
+            %93:vec2<f32> = sub %89, %92
+            store %colVel, %93
+            exit_if  # if_5
+          }
+        }
+        %94:vec2<f32> = load %pos_1
+        %95:vec2<f32> = load %vPos
+        %96:f32 = distance %94, %95
+        %97:ptr<uniform, f32, read> = access %params, 3u
+        %98:f32 = load %97
+        %99:bool = lt %96, %98
+        if %99 [t: %b14] {  # if_6
+          %b14 = block {  # true
+            %100:vec2<f32> = load %cVel
+            %101:vec2<f32> = load %vel
+            %102:vec2<f32> = add %100, %101
+            store %cVel, %102
+            %103:i32 = load %cVelCount
+            %104:i32 = add %103, 1i
+            store %cVelCount, %104
+            exit_if  # if_6
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %105:u32 = load %i
+        %106:u32 = add %105, 1u
+        store %i, %106
+        next_iteration %b7
+      }
+    }
+    %107:i32 = load %cMassCount
+    %108:bool = gt %107, 0i
+    if %108 [t: %b15] {  # if_7
+      %b15 = block {  # true
+        %109:vec2<f32> = load %cMass
+        %110:i32 = load %cMassCount
+        %111:f32 = convert %110
+        %112:i32 = load %cMassCount
+        %113:f32 = convert %112
+        %114:vec2<f32> = construct %111, %113
+        %115:vec2<f32> = div %109, %114
+        %116:vec2<f32> = load %vPos
+        %117:vec2<f32> = sub %115, %116
+        store %cMass, %117
+        exit_if  # if_7
+      }
+    }
+    %118:i32 = load %cVelCount
+    %119:bool = gt %118, 0i
+    if %119 [t: %b16] {  # if_8
+      %b16 = block {  # true
+        %120:vec2<f32> = load %cVel
+        %121:i32 = load %cVelCount
+        %122:f32 = convert %121
+        %123:i32 = load %cVelCount
+        %124:f32 = convert %123
+        %125:vec2<f32> = construct %122, %124
+        %126:vec2<f32> = div %120, %125
+        store %cVel, %126
+        exit_if  # if_8
+      }
+    }
+    %127:vec2<f32> = load %vVel
+    %128:vec2<f32> = load %cMass
+    %129:ptr<uniform, f32, read> = access %params, 4u
+    %130:f32 = load %129
+    %131:vec2<f32> = mul %128, %130
+    %132:vec2<f32> = add %127, %131
+    %133:vec2<f32> = load %colVel
+    %134:ptr<uniform, f32, read> = access %params, 5u
+    %135:f32 = load %134
+    %136:vec2<f32> = mul %133, %135
+    %137:vec2<f32> = add %132, %136
+    %138:vec2<f32> = load %cVel
+    %139:ptr<uniform, f32, read> = access %params, 6u
+    %140:f32 = load %139
+    %141:vec2<f32> = mul %138, %140
+    %142:vec2<f32> = add %137, %141
+    store %vVel, %142
+    %143:vec2<f32> = load %vVel
+    %144:vec2<f32> = normalize %143
+    %145:vec2<f32> = load %vVel
+    %146:f32 = length %145
+    %147:f32 = clamp %146, 0.0f, 0.10000000149011611938f
+    %148:vec2<f32> = mul %144, %147
+    store %vVel, %148
+    %149:vec2<f32> = load %vPos
+    %150:vec2<f32> = load %vVel
+    %151:ptr<uniform, f32, read> = access %params, 0u
+    %152:f32 = load %151
+    %153:vec2<f32> = mul %150, %152
+    %154:vec2<f32> = add %149, %153
+    store %vPos, %154
+    %155:f32 = load_vector_element %vPos, 0u
+    %156:bool = lt %155, -1.0f
+    if %156 [t: %b17] {  # if_9
+      %b17 = block {  # true
+        store_vector_element %vPos, 0u, 1.0f
+        exit_if  # if_9
+      }
+    }
+    %157:f32 = load_vector_element %vPos, 0u
+    %158:bool = gt %157, 1.0f
+    if %158 [t: %b18] {  # if_10
+      %b18 = block {  # true
+        store_vector_element %vPos, 0u, -1.0f
+        exit_if  # if_10
+      }
+    }
+    %159:f32 = load_vector_element %vPos, 1u
+    %160:bool = lt %159, -1.0f
+    if %160 [t: %b19] {  # if_11
+      %b19 = block {  # true
+        store_vector_element %vPos, 1u, 1.0f
+        exit_if  # if_11
+      }
+    }
+    %161:f32 = load_vector_element %vPos, 1u
+    %162:bool = gt %161, 1.0f
+    if %162 [t: %b20] {  # if_12
+      %b20 = block {  # true
+        store_vector_element %vPos, 1u, -1.0f
+        exit_if  # if_12
+      }
+    }
+    %163:u32 = load %index
+    %164:ptr<storage, vec2<f32>, read_write> = access %particlesB, 0u, %163, 0u
+    %165:vec2<f32> = load %vPos
+    store %164, %165
+    %166:u32 = load %index
+    %167:ptr<storage, vec2<f32>, read_write> = access %particlesB, 0u, %166, 1u
+    %168:vec2<f32> = load %vVel
+    store %167, %168
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/samples/cube.wgsl.expected.ir.msl b/test/tint/samples/cube.wgsl.expected.ir.msl
new file mode 100644
index 0000000..192894b
--- /dev/null
+++ b/test/tint/samples/cube.wgsl.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(16) {
+  modelViewProjectionMatrix:mat4x4<f32> @offset(0)
+}
+
+VertexOutput = struct @align(16) {
+  vtxFragColor:vec4<f32> @offset(0), @location(0)
+  Position:vec4<f32> @offset(16), @builtin(position)
+}
+
+VertexInput = struct @align(16) {
+  cur_position:vec4<f32> @offset(0), @location(0)
+  color:vec4<f32> @offset(16), @location(1)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(0, 0)
+}
+
+%vtx_main = @vertex func(%input:VertexInput):VertexOutput -> %b2 {
+  %b2 = block {
+    %output:ptr<function, VertexOutput, read_write> = var
+    %5:ptr<function, vec4<f32>, read_write> = access %output, 1u
+    %6:ptr<uniform, mat4x4<f32>, read> = access %uniforms, 0u
+    %7:mat4x4<f32> = load %6
+    %8:vec4<f32> = access %input, 0u
+    %9:vec4<f32> = mul %7, %8
+    store %5, %9
+    %10:ptr<function, vec4<f32>, read_write> = access %output, 0u
+    %11:vec4<f32> = access %input, 1u
+    store %10, %11
+    %12:VertexOutput = load %output
+    ret %12
+  }
+}
+%frag_main = @fragment func(%fragColor:vec4<f32> [@location(0)]):vec4<f32> [@location(0)] -> %b3 {
+  %b3 = block {
+    ret %fragColor
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/samples/simple.wgsl.expected.ir.msl b/test/tint/samples/simple.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/samples/simple.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/samples/simple_vertex.spvasm.expected.ir.msl b/test/tint/samples/simple_vertex.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/samples/simple_vertex.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/samples/triangle.wgsl.expected.ir.msl b/test/tint/samples/triangle.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/samples/triangle.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/shader_io/compute_input_builtins.wgsl.expected.ir.msl b/test/tint/shader_io/compute_input_builtins.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/shader_io/compute_input_builtins.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/shader_io/compute_input_builtins_struct.wgsl.expected.ir.msl b/test/tint/shader_io/compute_input_builtins_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/shader_io/compute_input_builtins_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/shader_io/compute_input_mixed.wgsl.expected.ir.msl b/test/tint/shader_io/compute_input_mixed.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/shader_io/compute_input_mixed.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/shader_io/compute_subgroup_builtins.wgsl.expected.ir.msl b/test/tint/shader_io/compute_subgroup_builtins.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c5bb04d
--- /dev/null
+++ b/test/tint/shader_io/compute_subgroup_builtins.wgsl.expected.ir.msl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %output:ptr<storage, array<u32>, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%subgroup_invocation_id:u32 [@subgroup_invocation_id], %subgroup_size:u32 [@subgroup_size]):void -> %b2 {
+  %b2 = block {
+    %5:ptr<storage, u32, read_write> = access %output, %subgroup_invocation_id
+    store %5, %subgroup_size
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/shader_io/compute_subgroup_builtins_struct.wgsl.expected.ir.msl b/test/tint/shader_io/compute_subgroup_builtins_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8cbd2e9
--- /dev/null
+++ b/test/tint/shader_io/compute_subgroup_builtins_struct.wgsl.expected.ir.msl
@@ -0,0 +1,28 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: ComputeInputs = struct @align(4) {
+  subgroup_invocation_id:u32 @offset(0), @builtin(subgroup_invocation_id)
+  subgroup_size:u32 @offset(4), @builtin(subgroup_size)
+}
+
+%b1 = block {  # root
+  %output:ptr<storage, array<u32>, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%inputs:ComputeInputs):void -> %b2 {
+  %b2 = block {
+    %4:u32 = access %inputs, 0u
+    %5:ptr<storage, u32, read_write> = access %output, %4
+    %6:u32 = access %inputs, 1u
+    store %5, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/shader_io/fragment_input_builtins.wgsl.expected.ir.msl b/test/tint/shader_io/fragment_input_builtins.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/shader_io/fragment_input_builtins.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/shader_io/fragment_input_builtins_struct.wgsl.expected.ir.msl b/test/tint/shader_io/fragment_input_builtins_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/shader_io/fragment_input_builtins_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/shader_io/fragment_input_locations.wgsl.expected.ir.msl b/test/tint/shader_io/fragment_input_locations.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/shader_io/fragment_input_locations.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/shader_io/fragment_input_locations_f16.wgsl.expected.ir.msl b/test/tint/shader_io/fragment_input_locations_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/shader_io/fragment_input_locations_f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/shader_io/fragment_input_locations_struct.wgsl.expected.ir.msl b/test/tint/shader_io/fragment_input_locations_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/shader_io/fragment_input_locations_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/shader_io/fragment_input_locations_struct_f16.wgsl.expected.ir.msl b/test/tint/shader_io/fragment_input_locations_struct_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/shader_io/fragment_input_locations_struct_f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/shader_io/fragment_input_mixed.wgsl.expected.ir.msl b/test/tint/shader_io/fragment_input_mixed.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/shader_io/fragment_input_mixed.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/shader_io/fragment_input_mixed_f16.wgsl.expected.ir.msl b/test/tint/shader_io/fragment_input_mixed_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/shader_io/fragment_input_mixed_f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/shader_io/fragment_output_locations_struct.wgsl.expected.ir.msl b/test/tint/shader_io/fragment_output_locations_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3d43d26
--- /dev/null
+++ b/test/tint/shader_io/fragment_output_locations_struct.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: FragmentOutputs = struct @align(16) {
+  loc0:i32 @offset(0), @location(0)
+  loc1:u32 @offset(4), @location(1)
+  loc2:f32 @offset(8), @location(2)
+  loc3:vec4<f32> @offset(16), @location(3)
+}
+
+%tint_symbol = @fragment func():FragmentOutputs -> %b1 {
+  %b1 = block {
+    ret FragmentOutputs(1i, 1u, 1.0f, vec4<f32>(1.0f, 2.0f, 3.0f, 4.0f))
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/shader_io/fragment_output_locations_struct_f16.wgsl.expected.ir.msl b/test/tint/shader_io/fragment_output_locations_struct_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5bc20a1
--- /dev/null
+++ b/test/tint/shader_io/fragment_output_locations_struct_f16.wgsl.expected.ir.msl
@@ -0,0 +1,24 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: FragmentOutputs = struct @align(16) {
+  loc0:i32 @offset(0), @location(0)
+  loc1:u32 @offset(4), @location(1)
+  loc2:f32 @offset(8), @location(2)
+  loc3:vec4<f32> @offset(16), @location(3)
+  loc4:f16 @offset(32), @location(4)
+  loc5:vec3<f16> @offset(40), @location(5)
+}
+
+%tint_symbol = @fragment func():FragmentOutputs -> %b1 {
+  %b1 = block {
+    ret FragmentOutputs(1i, 1u, 1.0f, vec4<f32>(1.0f, 2.0f, 3.0f, 4.0f), 2.25h, vec3<f16>(3.0h, 5.0h, 8.0h))
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/shader_io/fragment_output_mixed.wgsl.expected.ir.msl b/test/tint/shader_io/fragment_output_mixed.wgsl.expected.ir.msl
new file mode 100644
index 0000000..33eb5fc
--- /dev/null
+++ b/test/tint/shader_io/fragment_output_mixed.wgsl.expected.ir.msl
@@ -0,0 +1,24 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: FragmentOutputs = struct @align(16) {
+  loc0:i32 @offset(0), @location(0)
+  frag_depth:f32 @offset(4), @builtin(frag_depth)
+  loc1:u32 @offset(8), @location(1)
+  loc2:f32 @offset(12), @location(2)
+  sample_mask:u32 @offset(16), @builtin(sample_mask)
+  loc3:vec4<f32> @offset(32), @location(3)
+}
+
+%tint_symbol = @fragment func():FragmentOutputs -> %b1 {
+  %b1 = block {
+    ret FragmentOutputs(1i, 2.0f, 1u, 1.0f, 2u, vec4<f32>(1.0f, 2.0f, 3.0f, 4.0f))
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/shader_io/fragment_output_mixed_f16.wgsl.expected.ir.msl b/test/tint/shader_io/fragment_output_mixed_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d30fbb6
--- /dev/null
+++ b/test/tint/shader_io/fragment_output_mixed_f16.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: FragmentOutputs = struct @align(16) {
+  loc0:i32 @offset(0), @location(0)
+  frag_depth:f32 @offset(4), @builtin(frag_depth)
+  loc1:u32 @offset(8), @location(1)
+  loc2:f32 @offset(12), @location(2)
+  sample_mask:u32 @offset(16), @builtin(sample_mask)
+  loc3:vec4<f32> @offset(32), @location(3)
+  loc4:f16 @offset(48), @location(4)
+  loc5:vec3<f16> @offset(56), @location(5)
+}
+
+%tint_symbol = @fragment func():FragmentOutputs -> %b1 {
+  %b1 = block {
+    ret FragmentOutputs(1i, 2.0f, 1u, 1.0f, 2u, vec4<f32>(1.0f, 2.0f, 3.0f, 4.0f), 2.25h, vec3<f16>(3.0h, 5.0h, 8.0h))
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/shader_io/interpolate_integers.wgsl.expected.ir.msl b/test/tint/shader_io/interpolate_integers.wgsl.expected.ir.msl
new file mode 100644
index 0000000..265ab26
--- /dev/null
+++ b/test/tint/shader_io/interpolate_integers.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: Interface = struct @align(16) {
+  i:i32 @offset(0), @location(0), @interpolate(flat)
+  u:u32 @offset(4), @location(1), @interpolate(flat)
+  vi:vec4<i32> @offset(16), @location(2), @interpolate(flat)
+  vu:vec4<u32> @offset(32), @location(3), @interpolate(flat)
+  pos:vec4<f32> @offset(48), @builtin(position)
+}
+
+%vert_main = @vertex func():Interface -> %b1 {
+  %b1 = block {
+    ret Interface(0i, 0u, vec4<i32>(0i), vec4<u32>(0u), vec4<f32>(0.0f))
+  }
+}
+%frag_main = @fragment func(%inputs:Interface):i32 [@location(0)] -> %b2 {
+  %b2 = block {
+    %4:i32 = access %inputs, 0u
+    ret %4
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/shader_io/interpolate_return_struct.wgsl.expected.ir.msl b/test/tint/shader_io/interpolate_return_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e83a9ef
--- /dev/null
+++ b/test/tint/shader_io/interpolate_return_struct.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: Out = struct @align(16) {
+  pos:vec4<f32> @offset(0), @builtin(position)
+  none:f32 @offset(16), @location(0)
+  flat:f32 @offset(20), @location(1), @interpolate(flat)
+  perspective_center:f32 @offset(24), @location(2), @interpolate(perspective, center)
+  perspective_centroid:f32 @offset(28), @location(3), @interpolate(perspective, centroid)
+  perspective_sample:f32 @offset(32), @location(4), @interpolate(perspective, sample)
+  linear_center:f32 @offset(36), @location(5), @interpolate(linear, center)
+  linear_centroid:f32 @offset(40), @location(6), @interpolate(linear, centroid)
+  linear_sample:f32 @offset(44), @location(7), @interpolate(linear, sample)
+}
+
+%tint_symbol = @vertex func():Out -> %b1 {
+  %b1 = block {
+    ret Out(vec4<f32>(0.0f), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f)
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/shader_io/shared_struct_different_stages.wgsl.expected.ir.msl b/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2c4667c
--- /dev/null
+++ b/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.ir.msl
@@ -0,0 +1,28 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: Interface = struct @align(16) {
+  col1:f32 @offset(0), @location(1)
+  col2:f32 @offset(4), @location(2)
+  pos:vec4<f32> @offset(16), @builtin(position)
+}
+
+%vert_main = @vertex func():Interface -> %b1 {
+  %b1 = block {
+    ret Interface(0.40000000596046447754f, 0.60000002384185791016f, vec4<f32>(0.0f))
+  }
+}
+%frag_main = @fragment func(%colors:Interface):void -> %b2 {
+  %b2 = block {
+    %r:f32 = access %colors, 0u
+    %g:f32 = access %colors, 1u
+    ret
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/shader_io/shared_struct_different_stages_f16.wgsl.expected.ir.msl b/test/tint/shader_io/shared_struct_different_stages_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0892dcd
--- /dev/null
+++ b/test/tint/shader_io/shared_struct_different_stages_f16.wgsl.expected.ir.msl
@@ -0,0 +1,28 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: Interface = struct @align(16) {
+  col1:f32 @offset(0), @location(1)
+  col2:f16 @offset(4), @location(2)
+  pos:vec4<f32> @offset(16), @builtin(position)
+}
+
+%vert_main = @vertex func():Interface -> %b1 {
+  %b1 = block {
+    ret Interface(0.40000000596046447754f, 0.599609375h, vec4<f32>(0.0f))
+  }
+}
+%frag_main = @fragment func(%colors:Interface):void -> %b2 {
+  %b2 = block {
+    %r:f32 = access %colors, 0u
+    %g:f16 = access %colors, 1u
+    ret
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/shader_io/shared_struct_helper_function.wgsl.expected.ir.msl b/test/tint/shader_io/shared_struct_helper_function.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6fafce0
--- /dev/null
+++ b/test/tint/shader_io/shared_struct_helper_function.wgsl.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: VertexOutput = struct @align(16) {
+  pos:vec4<f32> @offset(0), @builtin(position)
+  loc0:i32 @offset(16), @location(0), @interpolate(flat)
+}
+
+%foo = func(%x:f32):VertexOutput -> %b1 {
+  %b1 = block {
+    %3:vec4<f32> = construct %x, %x, %x, 1.0f
+    %4:VertexOutput = construct %3, 42i
+    ret %4
+  }
+}
+%vert_main1 = @vertex func():VertexOutput -> %b2 {
+  %b2 = block {
+    %6:VertexOutput = call %foo, 0.5f
+    ret %6
+  }
+}
+%vert_main2 = @vertex func():VertexOutput -> %b3 {
+  %b3 = block {
+    %8:VertexOutput = call %foo, 0.25f
+    ret %8
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/shader_io/shared_struct_storage_buffer.wgsl.expected.ir.msl b/test/tint/shader_io/shared_struct_storage_buffer.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ef5ab3a
--- /dev/null
+++ b/test/tint/shader_io/shared_struct_storage_buffer.wgsl.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(128) {
+  f:f32 @offset(0), @location(0)
+  u:u32 @offset(4), @location(1), @interpolate(flat)
+  v:vec4<f32> @offset(128), @builtin(position)
+}
+
+%b1 = block {  # root
+  %output:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%frag_main = @fragment func(%input:S):void -> %b2 {
+  %b2 = block {
+    %f:f32 = access %input, 0u
+    %u:u32 = access %input, 1u
+    %v:vec4<f32> = access %input, 2u
+    store %output, %input
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/shader_io/shared_struct_storage_buffer_f16.wgsl.expected.ir.msl b/test/tint/shader_io/shared_struct_storage_buffer_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a74ca7f
--- /dev/null
+++ b/test/tint/shader_io/shared_struct_storage_buffer_f16.wgsl.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(128) {
+  f:f32 @offset(0), @location(0)
+  u:u32 @offset(4), @location(1), @interpolate(flat)
+  v:vec4<f32> @offset(128), @builtin(position)
+  x:f16 @offset(160), @location(2)
+  y:vec3<f16> @offset(192), @location(3)
+}
+
+%b1 = block {  # root
+  %output:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%frag_main = @fragment func(%input:S):void -> %b2 {
+  %b2 = block {
+    %f:f32 = access %input, 0u
+    %u:u32 = access %input, 1u
+    %v:vec4<f32> = access %input, 2u
+    %x:f16 = access %input, 3u
+    %y:vec3<f16> = access %input, 4u
+    store %output, %input
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/shader_io/vertex_input_builtins_struct.wgsl.expected.ir.msl b/test/tint/shader_io/vertex_input_builtins_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/shader_io/vertex_input_builtins_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/shader_io/vertex_input_locations.wgsl.expected.ir.msl b/test/tint/shader_io/vertex_input_locations.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/shader_io/vertex_input_locations.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/shader_io/vertex_input_locations_f16.wgsl.expected.ir.msl b/test/tint/shader_io/vertex_input_locations_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/shader_io/vertex_input_locations_f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/shader_io/vertex_input_locations_struct.wgsl.expected.ir.msl b/test/tint/shader_io/vertex_input_locations_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/shader_io/vertex_input_locations_struct.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/shader_io/vertex_input_locations_struct_f16.wgsl.expected.ir.msl b/test/tint/shader_io/vertex_input_locations_struct_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/shader_io/vertex_input_locations_struct_f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/shader_io/vertex_input_mixed.wgsl.expected.ir.msl b/test/tint/shader_io/vertex_input_mixed.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/shader_io/vertex_input_mixed.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/shader_io/vertex_input_mixed_f16.wgsl.expected.ir.msl b/test/tint/shader_io/vertex_input_mixed_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/shader_io/vertex_input_mixed_f16.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/shader_io/vertex_output_locations_struct.wgsl.expected.ir.msl b/test/tint/shader_io/vertex_output_locations_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d6a72a1
--- /dev/null
+++ b/test/tint/shader_io/vertex_output_locations_struct.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: VertexOutputs = struct @align(16) {
+  loc0:i32 @offset(0), @location(0), @interpolate(flat)
+  loc1:u32 @offset(4), @location(1), @interpolate(flat)
+  loc2:f32 @offset(8), @location(2)
+  loc3:vec4<f32> @offset(16), @location(3)
+  position:vec4<f32> @offset(32), @builtin(position)
+}
+
+%tint_symbol = @vertex func():VertexOutputs -> %b1 {
+  %b1 = block {
+    ret VertexOutputs(1i, 1u, 1.0f, vec4<f32>(1.0f, 2.0f, 3.0f, 4.0f), vec4<f32>(0.0f))
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/shader_io/vertex_output_locations_struct_f16.wgsl.expected.ir.msl b/test/tint/shader_io/vertex_output_locations_struct_f16.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1331fbc
--- /dev/null
+++ b/test/tint/shader_io/vertex_output_locations_struct_f16.wgsl.expected.ir.msl
@@ -0,0 +1,25 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: VertexOutputs = struct @align(16) {
+  loc0:i32 @offset(0), @location(0), @interpolate(flat)
+  loc1:u32 @offset(4), @location(1), @interpolate(flat)
+  loc2:f32 @offset(8), @location(2)
+  loc3:vec4<f32> @offset(16), @location(3)
+  position:vec4<f32> @offset(32), @builtin(position)
+  loc4:f16 @offset(48), @location(4)
+  loc5:vec3<f16> @offset(56), @location(5)
+}
+
+%tint_symbol = @vertex func():VertexOutputs -> %b1 {
+  %b1 = block {
+    ret VertexOutputs(1i, 1u, 1.0f, vec4<f32>(1.0f, 2.0f, 3.0f, 4.0f), vec4<f32>(0.0f), 2.25h, vec3<f16>(3.0h, 5.0h, 8.0h))
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/shadowing/alias/param.wgsl.expected.ir.msl b/test/tint/shadowing/alias/param.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/shadowing/alias/param.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/shadowing/function/param.wgsl.expected.ir.msl b/test/tint/shadowing/function/param.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/shadowing/function/param.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/shadowing/param/function.wgsl.expected.ir.msl b/test/tint/shadowing/param/function.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/shadowing/param/function.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/shadowing/param/let.wgsl.expected.ir.msl b/test/tint/shadowing/param/let.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/shadowing/param/let.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/shadowing/param/var.wgsl.expected.ir.msl b/test/tint/shadowing/param/var.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/shadowing/param/var.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/shadowing/short_names/param.wgsl.expected.ir.msl b/test/tint/shadowing/short_names/param.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/shadowing/short_names/param.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/shadowing/short_names/renamer/function.wgsl.expected.ir.msl b/test/tint/shadowing/short_names/renamer/function.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/shadowing/short_names/renamer/function.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/shadowing/short_names/renamer/type.wgsl.expected.ir.msl b/test/tint/shadowing/short_names/renamer/type.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/shadowing/short_names/renamer/type.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/shadowing/struct/param.wgsl.expected.ir.msl b/test/tint/shadowing/struct/param.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/shadowing/struct/param.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.ir.msl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.ir.msl
new file mode 100644
index 0000000..95a5789
--- /dev/null
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.ir.msl
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+}
+
+InnerS = struct @align(4) {
+  v:i32 @offset(0)
+}
+
+OuterS = struct @align(4) {
+  a1:array<InnerS, 8> @offset(0)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, InnerS, read_write> = var
+    %s1:ptr<function, OuterS, read_write> = var
+    loop [i: %b3, b: %b4, c: %b5] {  # loop_1
+      %b3 = block {  # initializer
+        %i:ptr<function, i32, read_write> = var, 0i
+        next_iteration %b4
+      }
+      %b4 = block {  # body
+        %6:i32 = load %i
+        %7:bool = lt %6, 4i
+        if %7 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %8:ptr<uniform, u32, read> = access %uniforms, 0u
+        %9:u32 = load %8
+        %10:ptr<function, InnerS, read_write> = access %s1, 0u, %9
+        %11:InnerS = load %v
+        store %10, %11
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %12:i32 = load %i
+        %13:i32 = add %12, 1i
+        store %i, %13
+        next_iteration %b4
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.ir.msl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d2344f1
--- /dev/null
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.ir.msl
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+}
+
+InnerS = struct @align(4) {
+  v:i32 @offset(0)
+}
+
+OuterS = struct @align(4) {
+  a1:array<InnerS, 8> @offset(0)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, InnerS, read_write> = var
+    %s1:ptr<function, OuterS, read_write> = var
+    loop [i: %b3, b: %b4, c: %b5] {  # loop_1
+      %b3 = block {  # initializer
+        %i:ptr<function, i32, read_write> = var, 0i
+        next_iteration %b4
+      }
+      %b4 = block {  # body
+        %6:i32 = load %i
+        %7:bool = lt %6, 4i
+        if %7 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %8:i32 = load %i
+        %9:i32 = add %8, 1i
+        store %i, %9
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %10:ptr<uniform, u32, read> = access %uniforms, 0u
+        %11:u32 = load %10
+        %12:ptr<function, InnerS, read_write> = access %s1, 0u, %11
+        %13:InnerS = load %v
+        store %12, %13
+        next_iteration %b4
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.ir.msl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.ir.msl
new file mode 100644
index 0000000..27368e5
--- /dev/null
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.ir.msl
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+}
+
+InnerS = struct @align(4) {
+  v:i32 @offset(0)
+}
+
+OuterS = struct @align(4) {
+  a1:array<InnerS, 8> @offset(0)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, InnerS, read_write> = var
+    %s1:ptr<function, OuterS, read_write> = var
+    %i:ptr<function, i32, read_write> = var, 0i
+    loop [i: %b3, b: %b4, c: %b5] {  # loop_1
+      %b3 = block {  # initializer
+        %6:ptr<uniform, u32, read> = access %uniforms, 0u
+        %7:u32 = load %6
+        %8:ptr<function, InnerS, read_write> = access %s1, 0u, %7
+        %9:InnerS = load %v
+        store %8, %9
+        next_iteration %b4
+      }
+      %b4 = block {  # body
+        %10:i32 = load %i
+        %11:bool = lt %10, 4i
+        if %11 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %12:i32 = load %i
+        %13:i32 = add %12, 1i
+        store %i, %13
+        next_iteration %b4
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.ir.msl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47576c6
--- /dev/null
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+  j:u32 @offset(4)
+}
+
+InnerS = struct @align(4) {
+  v:i32 @offset(0)
+}
+
+S1 = struct @align(4) {
+  a2:array<InnerS, 8> @offset(0)
+}
+
+OuterS = struct @align(4) {
+  a1:array<S1, 8> @offset(0)
+}
+
+%b1 = block {  # root
+  %nextIndex:ptr<private, u32, read_write> = var
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+}
+
+%getNextIndex = func():u32 -> %b2 {
+  %b2 = block {
+    %4:u32 = load %nextIndex
+    %5:u32 = add %4, 1u
+    store %nextIndex, %5
+    %6:u32 = load %nextIndex
+    ret %6
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %v:ptr<function, InnerS, read_write> = var
+    %s:ptr<function, OuterS, read_write> = var
+    %10:u32 = call %getNextIndex
+    %11:ptr<uniform, u32, read> = access %uniforms, 1u
+    %12:u32 = load %11
+    %13:ptr<function, InnerS, read_write> = access %s, 0u, %10, 0u, %12
+    %14:InnerS = load %v
+    store %13, %14
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.ir.msl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fbe5543
--- /dev/null
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.ir.msl
@@ -0,0 +1,38 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+}
+
+InnerS = struct @align(4) {
+  v:i32 @offset(0)
+}
+
+OuterS = struct @align(4) {
+  a1:array<InnerS, 8> @offset(0)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, InnerS, read_write> = var
+    %s1:ptr<function, OuterS, read_write> = var
+    %5:ptr<uniform, u32, read> = access %uniforms, 0u
+    %6:u32 = load %5
+    %7:ptr<function, InnerS, read_write> = access %s1, 0u, %6
+    %8:InnerS = load %v
+    store %7, %8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.ir.msl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c17a0bc
--- /dev/null
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+  j:u32 @offset(4)
+}
+
+InnerS = struct @align(4) {
+  v:i32 @offset(0)
+}
+
+OuterS = struct @align(4) {
+  a1:array<array<InnerS, 8>, 8> @offset(0)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, InnerS, read_write> = var
+    %s1:ptr<function, OuterS, read_write> = var
+    %5:ptr<uniform, u32, read> = access %uniforms, 0u
+    %6:u32 = load %5
+    %7:ptr<uniform, u32, read> = access %uniforms, 1u
+    %8:u32 = load %7
+    %9:ptr<function, InnerS, read_write> = access %s1, 0u, %6, %8
+    %10:InnerS = load %v
+    store %9, %10
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.ir.msl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.ir.msl
new file mode 100644
index 0000000..99e50f7
--- /dev/null
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.ir.msl
@@ -0,0 +1,42 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+}
+
+InnerS = struct @align(4) {
+  v:i32 @offset(0)
+}
+
+S1 = struct @align(4) {
+  s2:InnerS @offset(0)
+}
+
+OuterS = struct @align(4) {
+  a1:array<S1, 8> @offset(0)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, InnerS, read_write> = var
+    %s1:ptr<function, OuterS, read_write> = var
+    %5:ptr<uniform, u32, read> = access %uniforms, 0u
+    %6:u32 = load %5
+    %7:ptr<function, InnerS, read_write> = access %s1, 0u, %6, 0u
+    %8:InnerS = load %v
+    store %7, %8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.ir.msl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..189af0d
--- /dev/null
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+  j:u32 @offset(4)
+}
+
+InnerS = struct @align(4) {
+  v:i32 @offset(0)
+}
+
+S1 = struct @align(4) {
+  a2:array<InnerS, 8> @offset(0)
+}
+
+OuterS = struct @align(4) {
+  a1:array<S1, 8> @offset(0)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, InnerS, read_write> = var
+    %s:ptr<function, OuterS, read_write> = var
+    %5:ptr<uniform, u32, read> = access %uniforms, 0u
+    %6:u32 = load %5
+    %7:ptr<uniform, u32, read> = access %uniforms, 1u
+    %8:u32 = load %7
+    %9:ptr<function, InnerS, read_write> = access %s, 0u, %6, 0u, %8
+    %10:InnerS = load %v
+    store %9, %10
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.ir.msl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aa7ab75
--- /dev/null
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.ir.msl
@@ -0,0 +1,38 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+}
+
+InnerS = struct @align(4) {
+  v:i32 @offset(0)
+}
+
+OuterS = struct @align(4) {
+  a1:array<InnerS> @offset(0)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+  %s1:ptr<storage, OuterS, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, InnerS, read_write> = var
+    %5:ptr<uniform, u32, read> = access %uniforms, 0u
+    %6:u32 = load %5
+    %7:ptr<storage, InnerS, read_write> = access %s1, 0u, %6
+    %8:InnerS = load %v
+    store %7, %8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.ir.msl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e155666
--- /dev/null
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.ir.msl
@@ -0,0 +1,45 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+  j:u32 @offset(4)
+}
+
+InnerS = struct @align(4) {
+  v:i32 @offset(0)
+}
+
+S1 = struct @align(4) {
+  a2:array<InnerS, 8> @offset(0)
+}
+
+OuterS = struct @align(4) {
+  a1:array<S1> @offset(0)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+  %s:ptr<storage, OuterS, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, InnerS, read_write> = var
+    %5:ptr<uniform, u32, read> = access %uniforms, 0u
+    %6:u32 = load %5
+    %7:ptr<uniform, u32, read> = access %uniforms, 1u
+    %8:u32 = load %7
+    %9:ptr<storage, InnerS, read_write> = access %s, 0u, %6, 0u, %8
+    %10:InnerS = load %v
+    store %9, %10
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.ir.msl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.ir.msl
new file mode 100644
index 0000000..42a6f9c
--- /dev/null
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.ir.msl
@@ -0,0 +1,38 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+}
+
+OuterS = struct @align(16) {
+  m1:mat2x4<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %s1:ptr<function, OuterS, read_write> = var
+    %4:ptr<uniform, u32, read> = access %uniforms, 0u
+    %5:u32 = load %4
+    %6:ptr<function, vec4<f32>, read_write> = access %s1, 0u, %5
+    store %6, vec4<f32>(1.0f)
+    %7:ptr<uniform, u32, read> = access %uniforms, 0u
+    %8:u32 = load %7
+    %9:ptr<function, vec4<f32>, read_write> = access %s1, 0u, %8
+    %10:ptr<uniform, u32, read> = access %uniforms, 0u
+    %11:u32 = load %10
+    store_vector_element %9, %11, 1.0f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.ir.msl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eb60a91
--- /dev/null
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.ir.msl
@@ -0,0 +1,44 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+}
+
+InnerS = struct @align(4) {
+  v:i32 @offset(0)
+}
+
+OuterS = struct @align(4) {
+  a1:array<InnerS, 8> @offset(0)
+  a2:array<InnerS, 8> @offset(32)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, InnerS, read_write> = var
+    %s1:ptr<function, OuterS, read_write> = var
+    %5:ptr<uniform, u32, read> = access %uniforms, 0u
+    %6:u32 = load %5
+    %7:ptr<function, InnerS, read_write> = access %s1, 0u, %6
+    %8:InnerS = load %v
+    store %7, %8
+    %9:ptr<uniform, u32, read> = access %uniforms, 0u
+    %10:u32 = load %9
+    %11:ptr<function, InnerS, read_write> = access %s1, 1u, %10
+    %12:InnerS = load %v
+    store %11, %12
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.ir.msl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e417912
--- /dev/null
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.ir.msl
@@ -0,0 +1,42 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+}
+
+InnerS = struct @align(4) {
+  v:i32 @offset(0)
+}
+
+S1 = struct @align(4) {
+  a:array<InnerS, 8> @offset(0)
+}
+
+OuterS = struct @align(4) {
+  s2:S1 @offset(0)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, InnerS, read_write> = var
+    %s1:ptr<function, OuterS, read_write> = var
+    %5:ptr<uniform, u32, read> = access %uniforms, 0u
+    %6:u32 = load %5
+    %7:ptr<function, InnerS, read_write> = access %s1, 0u, 0u, %6
+    %8:InnerS = load %v
+    store %7, %8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.ir.msl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.ir.msl
new file mode 100644
index 0000000..996c480
--- /dev/null
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+}
+
+OuterS = struct @align(16) {
+  v1:vec3<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %s1:ptr<function, OuterS, read_write> = var
+    %4:ptr<function, vec3<f32>, read_write> = access %s1, 0u
+    %5:ptr<uniform, u32, read> = access %uniforms, 0u
+    %6:u32 = load %5
+    store_vector_element %4, %6, 1.0f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.ir.msl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3af72df
--- /dev/null
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.ir.msl
@@ -0,0 +1,46 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+}
+
+OuterS = struct @align(4) {
+  a1:array<u32, 8> @offset(0)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+}
+
+%f = func(%i:u32):u32 -> %b2 {
+  %b2 = block {
+    %4:u32 = add %i, 1u
+    ret %4
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %s1:ptr<function, OuterS, read_write> = var
+    %v:ptr<function, vec3<f32>, read_write> = var
+    %8:ptr<uniform, u32, read> = access %uniforms, 0u
+    %9:u32 = load %8
+    %10:ptr<function, u32, read_write> = access %s1, 0u, %9
+    %11:u32 = load %10
+    store_vector_element %v, %11, 1.0f
+    %12:ptr<uniform, u32, read> = access %uniforms, 0u
+    %13:u32 = load %12
+    %14:ptr<function, u32, read_write> = access %s1, 0u, %13
+    %15:u32 = load %14
+    %16:u32 = call %f, %15
+    store_vector_element %v, %16, 1.0f
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.ir.msl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4a6da6b
--- /dev/null
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.ir.msl
@@ -0,0 +1,38 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+}
+
+InnerS = struct @align(4) {
+  v:i32 @offset(0)
+}
+
+OuterS = struct @align(4) {
+  a1:array<InnerS, 8> @offset(0)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, InnerS, read_write> = var
+    %s1:ptr<function, OuterS, read_write> = var
+    %5:ptr<uniform, u32, read> = access %uniforms, 0u
+    %6:u32 = load %5
+    %p:ptr<function, InnerS, read_write> = access %s1, 0u, %6
+    %8:InnerS = load %v
+    store %p, %8
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.ir.msl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.ir.msl
new file mode 100644
index 0000000..01c44e2
--- /dev/null
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.ir.msl
@@ -0,0 +1,44 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Uniforms = struct @align(4) {
+  i:u32 @offset(0)
+}
+
+InnerS = struct @align(4) {
+  v:i32 @offset(0)
+}
+
+OuterS = struct @align(4) {
+  a1:array<InnerS, 8> @offset(0)
+}
+
+%b1 = block {  # root
+  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(1, 4)
+}
+
+%f = func(%p:ptr<function, OuterS, read_write>):void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, InnerS, read_write> = var
+    %5:ptr<uniform, u32, read> = access %uniforms, 0u
+    %6:u32 = load %5
+    %7:ptr<function, InnerS, read_write> = access %p, 0u, %6
+    %8:InnerS = load %v
+    store %7, %8
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %s1:ptr<function, OuterS, read_write> = var
+    %11:void = call %f, %s1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/phony/addr_of_non_constructable.wgsl.expected.ir.msl b/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b9d5d0e
--- /dev/null
+++ b/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  arr:array<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %s:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/phony/addr_of_runtime_array.wgsl.expected.ir.msl b/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl.expected.ir.msl
new file mode 100644
index 0000000..65507b9
--- /dev/null
+++ b/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl.expected.ir.msl
@@ -0,0 +1,24 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  arr:array<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %s:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, array<i32>, read_write> = access %s, 0u
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/phony/call.wgsl.expected.ir.msl b/test/tint/statements/assign/phony/call.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/statements/assign/phony/call.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.ir.msl b/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/statements/assign/phony/storage_buffer.wgsl.expected.ir.msl b/test/tint/statements/assign/phony/storage_buffer.wgsl.expected.ir.msl
new file mode 100644
index 0000000..458845a
--- /dev/null
+++ b/test/tint/statements/assign/phony/storage_buffer.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  i:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %s:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:S = load %s
+    %4:ptr<storage, i32, read_write> = access %s, 0u
+    %5:i32 = load %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/assign/phony/uniform_buffer.wgsl.expected.ir.msl b/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.ir.msl
new file mode 100644
index 0000000..61ef3ab
--- /dev/null
+++ b/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.ir.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  i:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %u:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b2 {
+  %b2 = block {
+    %3:S = load %u
+    %4:ptr<uniform, i32, read> = access %u, 0u
+    %5:i32 = load %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/complex_lhs.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/complex_lhs.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/statements/compound_assign/complex_lhs.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/statements/compound_assign/divide_by_zero.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/divide_by_zero.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/statements/compound_assign/divide_by_zero.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/statements/compound_assign/for_loop.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/for_loop.wgsl.expected.ir.msl
new file mode 100644
index 0000000..457c63a
--- /dev/null
+++ b/test/tint/statements/compound_assign/for_loop.wgsl.expected.ir.msl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:i32 @offset(0)
+  b:vec4<f32> @offset(16)
+  c:mat2x2<f32> @offset(32)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %i:ptr<private, u32, read_write> = var
+}
+
+%idx1 = func():i32 -> %b2 {
+  %b2 = block {
+    %4:u32 = load %i
+    %5:u32 = add %4, 1u
+    store %i, %5
+    ret 1i
+  }
+}
+%idx2 = func():i32 -> %b3 {
+  %b3 = block {
+    %7:u32 = load %i
+    %8:u32 = add %7, 2u
+    store %i, %8
+    ret 1i
+  }
+}
+%idx3 = func():i32 -> %b4 {
+  %b4 = block {
+    %10:u32 = load %i
+    %11:u32 = add %10, 3u
+    store %i, %11
+    ret 1i
+  }
+}
+%foo = func():void -> %b5 {
+  %b5 = block {
+    %a:ptr<function, array<f32, 4>, read_write> = var, array<f32, 4>(0.0f)
+    loop [i: %b6, b: %b7, c: %b8] {  # loop_1
+      %b6 = block {  # initializer
+        %14:i32 = call %idx1
+        %15:ptr<function, f32, read_write> = access %a, %14
+        %16:f32 = load %15
+        %17:f32 = mul %16, 2.0f
+        store %15, %17
+        next_iteration %b7
+      }
+      %b7 = block {  # body
+        %18:i32 = call %idx2
+        %19:ptr<function, f32, read_write> = access %a, %18
+        %20:f32 = load %19
+        %21:bool = lt %20, 10.0f
+        if %21 [t: %b9, f: %b10] {  # if_1
+          %b9 = block {  # true
+            exit_if  # if_1
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %22:i32 = call %idx3
+        %23:ptr<function, f32, read_write> = access %a, %22
+        %24:f32 = load %23
+        %25:f32 = add %24, 1.0f
+        store %23, %25
+        next_iteration %b7
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/function.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/function.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/statements/compound_assign/function.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/statements/compound_assign/matrix/minus.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/matrix/minus.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4dedd5c
--- /dev/null
+++ b/test/tint/statements/compound_assign/matrix/minus.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:mat4x4<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, mat4x4<f32>, read_write> = access %v, 0u
+    %4:mat4x4<f32> = load %3
+    %5:mat4x4<f32> = sub %4, mat4x4<f32>(vec4<f32>(0.0f))
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/matrix/plus.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/matrix/plus.wgsl.expected.ir.msl
new file mode 100644
index 0000000..26799cf
--- /dev/null
+++ b/test/tint/statements/compound_assign/matrix/plus.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:mat4x4<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, mat4x4<f32>, read_write> = access %v, 0u
+    %4:mat4x4<f32> = load %3
+    %5:mat4x4<f32> = add %4, mat4x4<f32>(vec4<f32>(0.0f))
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/matrix/times-scalar.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/matrix/times-scalar.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5c704ea
--- /dev/null
+++ b/test/tint/statements/compound_assign/matrix/times-scalar.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:mat4x4<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, mat4x4<f32>, read_write> = access %v, 0u
+    %4:mat4x4<f32> = load %3
+    %5:mat4x4<f32> = mul %4, 2.0f
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/matrix/times.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/matrix/times.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c3c6578
--- /dev/null
+++ b/test/tint/statements/compound_assign/matrix/times.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:mat4x4<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, mat4x4<f32>, read_write> = access %v, 0u
+    %4:mat4x4<f32> = load %3
+    %5:mat4x4<f32> = mul %4, mat4x4<f32>(vec4<f32>(0.0f))
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/private.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/statements/compound_assign/private.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/statements/compound_assign/scalar/and.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/scalar/and.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9320fb0
--- /dev/null
+++ b/test/tint/statements/compound_assign/scalar/and.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  a:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, i32, read_write> = access %v, 0u
+    %4:i32 = load %3
+    %5:i32 = and %4, 2i
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/scalar/divide.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/scalar/divide.wgsl.expected.ir.msl
new file mode 100644
index 0000000..54988fe
--- /dev/null
+++ b/test/tint/statements/compound_assign/scalar/divide.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  a:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, i32, read_write> = access %v, 0u
+    %4:i32 = load %3
+    %5:i32 = div %4, 2i
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/scalar/minus.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/scalar/minus.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a43b092
--- /dev/null
+++ b/test/tint/statements/compound_assign/scalar/minus.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  a:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, i32, read_write> = access %v, 0u
+    %4:i32 = load %3
+    %5:i32 = sub %4, 2i
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/scalar/modulo.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/scalar/modulo.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f43c8d3
--- /dev/null
+++ b/test/tint/statements/compound_assign/scalar/modulo.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  a:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, i32, read_write> = access %v, 0u
+    %4:i32 = load %3
+    %5:i32 = mod %4, 2i
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/scalar/or.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/scalar/or.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ee64dbc
--- /dev/null
+++ b/test/tint/statements/compound_assign/scalar/or.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  a:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, i32, read_write> = access %v, 0u
+    %4:i32 = load %3
+    %5:i32 = or %4, 2i
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/scalar/plus.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/scalar/plus.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7ae3e40
--- /dev/null
+++ b/test/tint/statements/compound_assign/scalar/plus.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  a:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, i32, read_write> = access %v, 0u
+    %4:i32 = load %3
+    %5:i32 = add %4, 2i
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/scalar/shift_left.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/scalar/shift_left.wgsl.expected.ir.msl
new file mode 100644
index 0000000..580d0a3
--- /dev/null
+++ b/test/tint/statements/compound_assign/scalar/shift_left.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  a:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, i32, read_write> = access %v, 0u
+    %4:i32 = load %3
+    %5:i32 = shiftl %4, 2u
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/scalar/shift_right.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/scalar/shift_right.wgsl.expected.ir.msl
new file mode 100644
index 0000000..51d3bd5
--- /dev/null
+++ b/test/tint/statements/compound_assign/scalar/shift_right.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  a:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, i32, read_write> = access %v, 0u
+    %4:i32 = load %3
+    %5:i32 = shiftr %4, 2u
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/scalar/times.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/scalar/times.wgsl.expected.ir.msl
new file mode 100644
index 0000000..de73bd6
--- /dev/null
+++ b/test/tint/statements/compound_assign/scalar/times.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  a:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, i32, read_write> = access %v, 0u
+    %4:i32 = load %3
+    %5:i32 = mul %4, 2i
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/scalar/xor.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/scalar/xor.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d069bd7
--- /dev/null
+++ b/test/tint/statements/compound_assign/scalar/xor.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  a:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, i32, read_write> = access %v, 0u
+    %4:i32 = load %3
+    %5:i32 = xor %4, 2i
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/vector/and.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/and.wgsl.expected.ir.msl
new file mode 100644
index 0000000..60f879e
--- /dev/null
+++ b/test/tint/statements/compound_assign/vector/and.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:vec4<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec4<i32>, read_write> = access %v, 0u
+    %4:vec4<i32> = load %3
+    %5:vec4<i32> = and %4, vec4<i32>(2i)
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/vector/divide-scalar.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/divide-scalar.wgsl.expected.ir.msl
new file mode 100644
index 0000000..37991b1
--- /dev/null
+++ b/test/tint/statements/compound_assign/vector/divide-scalar.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:vec4<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec4<f32>, read_write> = access %v, 0u
+    %4:vec4<f32> = load %3
+    %5:vec4<f32> = div %4, 2.0f
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/vector/divide.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/divide.wgsl.expected.ir.msl
new file mode 100644
index 0000000..06612d6
--- /dev/null
+++ b/test/tint/statements/compound_assign/vector/divide.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:vec4<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec4<i32>, read_write> = access %v, 0u
+    %4:vec4<i32> = load %3
+    %5:vec4<i32> = div %4, vec4<i32>(2i)
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/vector/minus-scalar.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/minus-scalar.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e478555
--- /dev/null
+++ b/test/tint/statements/compound_assign/vector/minus-scalar.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:vec4<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec4<f32>, read_write> = access %v, 0u
+    %4:vec4<f32> = load %3
+    %5:vec4<f32> = sub %4, 2.0f
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/vector/minus.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/minus.wgsl.expected.ir.msl
new file mode 100644
index 0000000..52642e9
--- /dev/null
+++ b/test/tint/statements/compound_assign/vector/minus.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:vec4<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec4<i32>, read_write> = access %v, 0u
+    %4:vec4<i32> = load %3
+    %5:vec4<i32> = sub %4, vec4<i32>(2i)
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/vector/modulo-scalar.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/modulo-scalar.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2709a13
--- /dev/null
+++ b/test/tint/statements/compound_assign/vector/modulo-scalar.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:vec4<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec4<i32>, read_write> = access %v, 0u
+    %4:vec4<i32> = load %3
+    %5:vec4<i32> = mod %4, 2i
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/vector/modulo.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/modulo.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f790983
--- /dev/null
+++ b/test/tint/statements/compound_assign/vector/modulo.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:vec4<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec4<i32>, read_write> = access %v, 0u
+    %4:vec4<i32> = load %3
+    %5:vec4<i32> = mod %4, vec4<i32>(2i)
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/vector/or.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/or.wgsl.expected.ir.msl
new file mode 100644
index 0000000..699c875
--- /dev/null
+++ b/test/tint/statements/compound_assign/vector/or.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:vec4<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec4<i32>, read_write> = access %v, 0u
+    %4:vec4<i32> = load %3
+    %5:vec4<i32> = or %4, vec4<i32>(2i)
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/vector/plus-scalar.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/plus-scalar.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f09bd92
--- /dev/null
+++ b/test/tint/statements/compound_assign/vector/plus-scalar.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:vec4<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec4<f32>, read_write> = access %v, 0u
+    %4:vec4<f32> = load %3
+    %5:vec4<f32> = add %4, 2.0f
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/vector/plus.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/plus.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b3ef263
--- /dev/null
+++ b/test/tint/statements/compound_assign/vector/plus.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:vec4<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec4<i32>, read_write> = access %v, 0u
+    %4:vec4<i32> = load %3
+    %5:vec4<i32> = add %4, vec4<i32>(2i)
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/vector/shift_left.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/shift_left.wgsl.expected.ir.msl
new file mode 100644
index 0000000..10f65ae
--- /dev/null
+++ b/test/tint/statements/compound_assign/vector/shift_left.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:vec4<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec4<i32>, read_write> = access %v, 0u
+    %4:vec4<i32> = load %3
+    %5:vec4<i32> = shiftl %4, vec4<u32>(2u)
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/vector/shift_right.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/shift_right.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0a81833
--- /dev/null
+++ b/test/tint/statements/compound_assign/vector/shift_right.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:vec4<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec4<i32>, read_write> = access %v, 0u
+    %4:vec4<i32> = load %3
+    %5:vec4<i32> = shiftr %4, vec4<u32>(2u)
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/vector/times-matrix.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/times-matrix.wgsl.expected.ir.msl
new file mode 100644
index 0000000..106f0e0
--- /dev/null
+++ b/test/tint/statements/compound_assign/vector/times-matrix.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:vec4<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec4<f32>, read_write> = access %v, 0u
+    %4:vec4<f32> = load %3
+    %5:vec4<f32> = mul %4, mat4x4<f32>(vec4<f32>(0.0f))
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/vector/times-scalar.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/times-scalar.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c3598ed
--- /dev/null
+++ b/test/tint/statements/compound_assign/vector/times-scalar.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:vec4<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec4<f32>, read_write> = access %v, 0u
+    %4:vec4<f32> = load %3
+    %5:vec4<f32> = mul %4, 2.0f
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/vector/times.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/times.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0d0e984
--- /dev/null
+++ b/test/tint/statements/compound_assign/vector/times.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:vec4<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec4<i32>, read_write> = access %v, 0u
+    %4:vec4<i32> = load %3
+    %5:vec4<i32> = mul %4, vec4<i32>(2i)
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/vector/xor.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/xor.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3212ca5
--- /dev/null
+++ b/test/tint/statements/compound_assign/vector/xor.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:vec4<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec4<i32>, read_write> = access %v, 0u
+    %4:vec4<i32> = load %3
+    %5:vec4<i32> = xor %4, vec4<i32>(2i)
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/compound_assign/workgroup.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/statements/compound_assign/workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/statements/decrement/array_element.wgsl.expected.ir.msl b/test/tint/statements/decrement/array_element.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9f206da
--- /dev/null
+++ b/test/tint/statements/decrement/array_element.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<storage, array<u32>, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, u32, read_write> = access %a, 1i
+    %4:u32 = load %3
+    %5:u32 = sub %4, 1u
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/decrement/complex.wgsl.expected.ir.msl b/test/tint/statements/decrement/complex.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ab04e49
--- /dev/null
+++ b/test/tint/statements/decrement/complex.wgsl.expected.ir.msl
@@ -0,0 +1,107 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:array<vec4<i32>, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %tint_symbol:ptr<storage, array<S>, read_write> = var @binding_point(0, 0)
+  %v:ptr<private, u32, read_write> = var
+}
+
+%idx1 = func():i32 -> %b2 {
+  %b2 = block {
+    %4:u32 = load %v
+    %5:u32 = sub %4, 1u
+    store %v, %5
+    ret 1i
+  }
+}
+%idx2 = func():i32 -> %b3 {
+  %b3 = block {
+    %7:u32 = load %v
+    %8:u32 = sub %7, 1u
+    store %v, %8
+    ret 2i
+  }
+}
+%idx3 = func():i32 -> %b4 {
+  %b4 = block {
+    %10:u32 = load %v
+    %11:u32 = sub %10, 1u
+    store %v, %11
+    ret 3i
+  }
+}
+%idx4 = func():i32 -> %b5 {
+  %b5 = block {
+    %13:u32 = load %v
+    %14:u32 = sub %13, 1u
+    store %v, %14
+    ret 4i
+  }
+}
+%idx5 = func():i32 -> %b6 {
+  %b6 = block {
+    %16:u32 = load %v
+    %17:u32 = sub %16, 1u
+    store %v, %17
+    ret 0i
+  }
+}
+%idx6 = func():i32 -> %b7 {
+  %b7 = block {
+    %19:u32 = load %v
+    %20:u32 = sub %19, 1u
+    store %v, %20
+    ret 2i
+  }
+}
+%tint_symbol_1 = func():void -> %b8 {
+  %b8 = block {
+    loop [i: %b9, b: %b10, c: %b11] {  # loop_1
+      %b9 = block {  # initializer
+        %22:i32 = call %idx1
+        %23:i32 = call %idx2
+        %24:ptr<storage, vec4<i32>, read_write> = access %tint_symbol, %22, 0u, %23
+        %25:i32 = call %idx3
+        %26:i32 = load_vector_element %24, %25
+        %27:i32 = sub %26, 1i
+        store_vector_element %24, %25, %27
+        next_iteration %b10
+      }
+      %b10 = block {  # body
+        %28:u32 = load %v
+        %29:bool = lt %28, 10u
+        if %29 [t: %b12, f: %b13] {  # if_1
+          %b12 = block {  # true
+            exit_if  # if_1
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        %30:i32 = call %idx4
+        %31:i32 = call %idx5
+        %32:ptr<storage, vec4<i32>, read_write> = access %tint_symbol, %30, 0u, %31
+        %33:i32 = call %idx6
+        %34:i32 = load_vector_element %32, %33
+        %35:i32 = sub %34, 1i
+        store_vector_element %32, %33, %35
+        next_iteration %b10
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/decrement/for_loop_continuing.wgsl.expected.ir.msl b/test/tint/statements/decrement/for_loop_continuing.wgsl.expected.ir.msl
new file mode 100644
index 0000000..321af9a
--- /dev/null
+++ b/test/tint/statements/decrement/for_loop_continuing.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %i:ptr<storage, u32, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = func():void -> %b2 {
+  %b2 = block {
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %3:u32 = load %i
+        %4:bool = lt %3, 10u
+        if %4 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %5:u32 = load %i
+        %6:u32 = sub %5, 1u
+        store %i, %6
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/decrement/for_loop_initializer.wgsl.expected.ir.msl b/test/tint/statements/decrement/for_loop_initializer.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5467d85
--- /dev/null
+++ b/test/tint/statements/decrement/for_loop_initializer.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %i:ptr<storage, u32, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = func():void -> %b2 {
+  %b2 = block {
+    loop [i: %b3, b: %b4] {  # loop_1
+      %b3 = block {  # initializer
+        %3:u32 = load %i
+        %4:u32 = sub %3, 1u
+        store %i, %4
+        next_iteration %b4
+      }
+      %b4 = block {  # body
+        %5:u32 = load %i
+        %6:bool = lt %5, 10u
+        if %6 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b7
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/decrement/function.wgsl.expected.ir.msl b/test/tint/statements/decrement/function.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/statements/decrement/function.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/statements/decrement/private.wgsl.expected.ir.msl b/test/tint/statements/decrement/private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/statements/decrement/private.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/statements/decrement/split.wgsl.expected.ir.msl b/test/tint/statements/decrement/split.wgsl.expected.ir.msl
new file mode 100644
index 0000000..931741e
--- /dev/null
+++ b/test/tint/statements/decrement/split.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Unary
+********************************************************************
+*  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/tint/statements/decrement/storage.wgsl.expected.ir.msl b/test/tint/statements/decrement/storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..920e263
--- /dev/null
+++ b/test/tint/statements/decrement/storage.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %i:ptr<storage, u32, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = func():void -> %b2 {
+  %b2 = block {
+    %3:u32 = load %i
+    %4:u32 = sub %3, 1u
+    store %i, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/decrement/vector_component.wgsl.expected.ir.msl b/test/tint/statements/decrement/vector_component.wgsl.expected.ir.msl
new file mode 100644
index 0000000..808227b
--- /dev/null
+++ b/test/tint/statements/decrement/vector_component.wgsl.expected.ir.msl
@@ -0,0 +1,25 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<storage, vec4<u32>, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = func():void -> %b2 {
+  %b2 = block {
+    %3:u32 = load_vector_element %a, 1i
+    %4:u32 = sub %3, 1u
+    store_vector_element %a, 1i, %4
+    %5:u32 = load_vector_element %a, 2u
+    %6:u32 = sub %5, 1u
+    store_vector_element %a, 2u, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/decrement/workgroup.wgsl.expected.ir.msl b/test/tint/statements/decrement/workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/statements/decrement/workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/statements/discard/atomic_cmpxchg.wgsl.expected.ir.msl b/test/tint/statements/discard/atomic_cmpxchg.wgsl.expected.ir.msl
new file mode 100644
index 0000000..501e33c
--- /dev/null
+++ b/test/tint/statements/discard/atomic_cmpxchg.wgsl.expected.ir.msl
@@ -0,0 +1,36 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: __atomic_compare_exchange_result_i32 = struct @align(4) {
+  old_value:i32 @offset(0)
+  exchanged:bool @offset(4)
+}
+
+%b1 = block {  # root
+  %a:ptr<storage, atomic<i32>, read_write> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():i32 [@location(0)] -> %b2 {
+  %b2 = block {
+    discard
+    %x:ptr<function, i32, read_write> = var, 0i
+    %result:__atomic_compare_exchange_result_i32 = atomicCompareExchangeWeak %a, 0i, 1i
+    %5:bool = access %result, 1u
+    if %5 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %6:i32 = access %result, 0u
+        store %x, %6
+        exit_if  # if_1
+      }
+    }
+    %7:i32 = load %x
+    ret %7
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/discard/atomic_in_for_loop_continuing.wgsl.expected.ir.msl b/test/tint/statements/discard/atomic_in_for_loop_continuing.wgsl.expected.ir.msl
new file mode 100644
index 0000000..edb6355
--- /dev/null
+++ b/test/tint/statements/discard/atomic_in_for_loop_continuing.wgsl.expected.ir.msl
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %t:ptr<handle, texture_2d<f32>, read> = var @binding_point(0, 0)
+  %s:ptr<handle, sampler, read> = var @binding_point(0, 1)
+  %a:ptr<storage, atomic<i32>, read_write> = var @binding_point(0, 2)
+}
+
+%foo = @fragment func(%in:f32 [@location(0)], %coord:vec2<f32> [@location(1)]):i32 [@location(0)] -> %b2 {
+  %b2 = block {
+    %7:bool = eq %in, 0.0f
+    if %7 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        discard
+        exit_if  # if_1
+      }
+    }
+    %8:texture_2d<f32> = load %t
+    %9:sampler = load %s
+    %10:vec4<f32> = textureSample %8, %9, %coord
+    %11:f32 = access %10, 0u
+    %12:i32 = convert %11
+    %result:ptr<function, i32, read_write> = var, %12
+    loop [i: %b4, b: %b5, c: %b6] {  # loop_1
+      %b4 = block {  # initializer
+        %i:ptr<function, i32, read_write> = var, 0i
+        next_iteration %b5
+      }
+      %b5 = block {  # body
+        %15:i32 = load %i
+        %16:bool = lt %15, 10i
+        if %16 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %17:i32 = load %i
+        %18:i32 = load %result
+        %19:i32 = add %18, %17
+        store %result, %19
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        %20:i32 = atomicAdd %a, 1i
+        store %i, %20
+        next_iteration %b5
+      }
+    }
+    %21:i32 = load %result
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/discard/helper_functions.wgsl.expected.ir.msl b/test/tint/statements/discard/helper_functions.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8f6bba6
--- /dev/null
+++ b/test/tint/statements/discard/helper_functions.wgsl.expected.ir.msl
@@ -0,0 +1,42 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %non_uniform_global:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+  %output:ptr<storage, f32, read_write> = var @binding_point(0, 1)
+}
+
+%foo = func():void -> %b2 {
+  %b2 = block {
+    %4:i32 = load %non_uniform_global
+    %5:bool = lt %4, 0i
+    if %5 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        discard
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%bar = func():void -> %b4 {
+  %b4 = block {
+    %7:f32 = dpdx 1.0f
+    store %output, %7
+    ret
+  }
+}
+%tint_symbol = @fragment func():void -> %b5 {
+  %b5 = block {
+    %9:void = call %foo
+    %10:void = call %bar
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/discard/multiple_returns.wgsl.expected.ir.msl b/test/tint/statements/discard/multiple_returns.wgsl.expected.ir.msl
new file mode 100644
index 0000000..06df248
--- /dev/null
+++ b/test/tint/statements/discard/multiple_returns.wgsl.expected.ir.msl
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %non_uniform_global:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+  %output:ptr<storage, f32, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @fragment func():void -> %b2 {
+  %b2 = block {
+    %4:i32 = load %non_uniform_global
+    %5:bool = lt %4, 0i
+    if %5 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        discard
+        exit_if  # if_1
+      }
+    }
+    %6:f32 = dpdx 1.0f
+    store %output, %6
+    %7:f32 = load %output
+    %8:bool = lt %7, 0.0f
+    if %8 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %i:ptr<function, i32, read_write> = var, 0i
+        loop [b: %b5, c: %b6] {  # loop_1
+          %b5 = block {  # body
+            %10:f32 = load %output
+            %11:i32 = load %i
+            %12:f32 = convert %11
+            %13:bool = gt %10, %12
+            if %13 [t: %b7] {  # if_3
+              %b7 = block {  # true
+                %14:i32 = load %i
+                %15:f32 = convert %14
+                store %output, %15
+                ret
+              }
+            }
+            continue %b6
+          }
+          %b6 = block {  # continuing
+            %16:i32 = load %i
+            %17:i32 = add %16, 1i
+            store %i, %17
+            %18:i32 = load %i
+            %19:bool = eq %18, 5i
+            break_if %19 %b5
+          }
+        }
+        ret
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/discard/nested_return.wgsl.expected.ir.msl b/test/tint/statements/discard/nested_return.wgsl.expected.ir.msl
new file mode 100644
index 0000000..56b1a4b
--- /dev/null
+++ b/test/tint/statements/discard/nested_return.wgsl.expected.ir.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %non_uniform_global:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = @fragment func():void -> %b2 {
+  %b2 = block {
+    %3:i32 = load %non_uniform_global
+    %4:bool = lt %3, 0i
+    if %4 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        discard
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/discard/non_uniform.wgsl.expected.ir.msl b/test/tint/statements/discard/non_uniform.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d0a0ee9
--- /dev/null
+++ b/test/tint/statements/discard/non_uniform.wgsl.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %non_uniform_global:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+  %output:ptr<storage, f32, read_write> = var @binding_point(0, 1)
+}
+
+%tint_symbol = @fragment func():void -> %b2 {
+  %b2 = block {
+    %4:i32 = load %non_uniform_global
+    %5:bool = lt %4, 0i
+    if %5 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        discard
+        exit_if  # if_1
+      }
+    }
+    %6:f32 = dpdx 1.0f
+    store %output, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/for/basic.wgsl.expected.ir.msl b/test/tint/statements/for/basic.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/statements/for/basic.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/statements/for/complex.wgsl.expected.ir.msl b/test/tint/statements/for/complex.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/statements/for/complex.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/statements/for/condition/array_ctor.wgsl.expected.ir.msl b/test/tint/statements/for/condition/array_ctor.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/statements/for/condition/array_ctor.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/statements/for/condition/basic.wgsl.expected.ir.msl b/test/tint/statements/for/condition/basic.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/statements/for/condition/basic.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/statements/for/condition/struct_ctor.wgsl.expected.ir.msl b/test/tint/statements/for/condition/struct_ctor.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/statements/for/condition/struct_ctor.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/statements/for/continuing/array_ctor.wgsl.expected.ir.msl b/test/tint/statements/for/continuing/array_ctor.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/statements/for/continuing/array_ctor.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/statements/for/continuing/basic.wgsl.expected.ir.msl b/test/tint/statements/for/continuing/basic.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/statements/for/continuing/basic.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/statements/for/continuing/struct_ctor.wgsl.expected.ir.msl b/test/tint/statements/for/continuing/struct_ctor.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/statements/for/continuing/struct_ctor.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/statements/for/empty.wgsl.expected.ir.msl b/test/tint/statements/for/empty.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/statements/for/empty.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/statements/for/initializer/array_ctor.wgsl.expected.ir.msl b/test/tint/statements/for/initializer/array_ctor.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/statements/for/initializer/array_ctor.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/statements/for/initializer/basic.wgsl.expected.ir.msl b/test/tint/statements/for/initializer/basic.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/statements/for/initializer/basic.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/statements/for/initializer/struct_ctor.wgsl.expected.ir.msl b/test/tint/statements/for/initializer/struct_ctor.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/statements/for/initializer/struct_ctor.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/statements/for/scoping.wgsl.expected.ir.msl b/test/tint/statements/for/scoping.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/statements/for/scoping.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/statements/increment/array_element.wgsl.expected.ir.msl b/test/tint/statements/increment/array_element.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6ed4076
--- /dev/null
+++ b/test/tint/statements/increment/array_element.wgsl.expected.ir.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<storage, array<u32>, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, u32, read_write> = access %a, 1i
+    %4:u32 = load %3
+    %5:u32 = add %4, 1u
+    store %3, %5
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/increment/complex.wgsl.expected.ir.msl b/test/tint/statements/increment/complex.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cfb842a
--- /dev/null
+++ b/test/tint/statements/increment/complex.wgsl.expected.ir.msl
@@ -0,0 +1,107 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  a:array<vec4<i32>, 4> @offset(0)
+}
+
+%b1 = block {  # root
+  %tint_symbol:ptr<storage, array<S>, read_write> = var @binding_point(0, 0)
+  %v:ptr<private, u32, read_write> = var
+}
+
+%idx1 = func():i32 -> %b2 {
+  %b2 = block {
+    %4:u32 = load %v
+    %5:u32 = add %4, 1u
+    store %v, %5
+    ret 1i
+  }
+}
+%idx2 = func():i32 -> %b3 {
+  %b3 = block {
+    %7:u32 = load %v
+    %8:u32 = add %7, 1u
+    store %v, %8
+    ret 2i
+  }
+}
+%idx3 = func():i32 -> %b4 {
+  %b4 = block {
+    %10:u32 = load %v
+    %11:u32 = add %10, 1u
+    store %v, %11
+    ret 3i
+  }
+}
+%idx4 = func():i32 -> %b5 {
+  %b5 = block {
+    %13:u32 = load %v
+    %14:u32 = add %13, 1u
+    store %v, %14
+    ret 4i
+  }
+}
+%idx5 = func():i32 -> %b6 {
+  %b6 = block {
+    %16:u32 = load %v
+    %17:u32 = add %16, 1u
+    store %v, %17
+    ret 0i
+  }
+}
+%idx6 = func():i32 -> %b7 {
+  %b7 = block {
+    %19:u32 = load %v
+    %20:u32 = add %19, 1u
+    store %v, %20
+    ret 2i
+  }
+}
+%tint_symbol_1 = func():void -> %b8 {
+  %b8 = block {
+    loop [i: %b9, b: %b10, c: %b11] {  # loop_1
+      %b9 = block {  # initializer
+        %22:i32 = call %idx1
+        %23:i32 = call %idx2
+        %24:ptr<storage, vec4<i32>, read_write> = access %tint_symbol, %22, 0u, %23
+        %25:i32 = call %idx3
+        %26:i32 = load_vector_element %24, %25
+        %27:i32 = add %26, 1i
+        store_vector_element %24, %25, %27
+        next_iteration %b10
+      }
+      %b10 = block {  # body
+        %28:u32 = load %v
+        %29:bool = lt %28, 10u
+        if %29 [t: %b12, f: %b13] {  # if_1
+          %b12 = block {  # true
+            exit_if  # if_1
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        %30:i32 = call %idx4
+        %31:i32 = call %idx5
+        %32:ptr<storage, vec4<i32>, read_write> = access %tint_symbol, %30, 0u, %31
+        %33:i32 = call %idx6
+        %34:i32 = load_vector_element %32, %33
+        %35:i32 = add %34, 1i
+        store_vector_element %32, %33, %35
+        next_iteration %b10
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/increment/for_loop_continuing.wgsl.expected.ir.msl b/test/tint/statements/increment/for_loop_continuing.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d3167ff
--- /dev/null
+++ b/test/tint/statements/increment/for_loop_continuing.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %i:ptr<storage, u32, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = func():void -> %b2 {
+  %b2 = block {
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %3:u32 = load %i
+        %4:bool = lt %3, 10u
+        if %4 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %5:u32 = load %i
+        %6:u32 = add %5, 1u
+        store %i, %6
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/increment/for_loop_initializer.wgsl.expected.ir.msl b/test/tint/statements/increment/for_loop_initializer.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c50c6b8
--- /dev/null
+++ b/test/tint/statements/increment/for_loop_initializer.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %i:ptr<storage, u32, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = func():void -> %b2 {
+  %b2 = block {
+    loop [i: %b3, b: %b4] {  # loop_1
+      %b3 = block {  # initializer
+        %3:u32 = load %i
+        %4:u32 = add %3, 1u
+        store %i, %4
+        next_iteration %b4
+      }
+      %b4 = block {  # body
+        %5:u32 = load %i
+        %6:bool = lt %5, 10u
+        if %6 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b7
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/increment/function.wgsl.expected.ir.msl b/test/tint/statements/increment/function.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/statements/increment/function.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/statements/increment/private.wgsl.expected.ir.msl b/test/tint/statements/increment/private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/statements/increment/private.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/statements/increment/storage.wgsl.expected.ir.msl b/test/tint/statements/increment/storage.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d2d8eb5
--- /dev/null
+++ b/test/tint/statements/increment/storage.wgsl.expected.ir.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %i:ptr<storage, u32, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = func():void -> %b2 {
+  %b2 = block {
+    %3:u32 = load %i
+    %4:u32 = add %3, 1u
+    store %i, %4
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/increment/vector_component.wgsl.expected.ir.msl b/test/tint/statements/increment/vector_component.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d155d5d
--- /dev/null
+++ b/test/tint/statements/increment/vector_component.wgsl.expected.ir.msl
@@ -0,0 +1,25 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<storage, vec4<u32>, read_write> = var @binding_point(0, 0)
+}
+
+%tint_symbol = func():void -> %b2 {
+  %b2 = block {
+    %3:u32 = load_vector_element %a, 1i
+    %4:u32 = add %3, 1u
+    store_vector_element %a, 1i, %4
+    %5:u32 = load_vector_element %a, 2u
+    %6:u32 = add %5, 1u
+    store_vector_element %a, 2u, %6
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/statements/increment/workgroup.wgsl.expected.ir.msl b/test/tint/statements/increment/workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/statements/increment/workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/statements/switch/case_default.wgsl.expected.ir.msl b/test/tint/statements/switch/case_default.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/statements/switch/case_default.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/statements/switch/case_default_mixed.wgsl.expected.ir.msl b/test/tint/statements/switch/case_default_mixed.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/statements/switch/case_default_mixed.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/statements/switch/common.wgsl.expected.ir.msl b/test/tint/statements/switch/common.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/statements/switch/common.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/statements/switch/only_default_case.wgsl.expected.ir.msl b/test/tint/statements/switch/only_default_case.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/statements/switch/only_default_case.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/struct/type_initializer.wgsl.expected.ir.msl b/test/tint/struct/type_initializer.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/struct/type_initializer.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/types/module_scope_var.wgsl.expected.ir.msl b/test/tint/types/module_scope_var.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/types/module_scope_var.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/types/module_scope_var_conversions.wgsl.expected.ir.msl b/test/tint/types/module_scope_var_conversions.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/types/module_scope_var_conversions.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/types/module_scope_var_initializers.wgsl.expected.ir.msl b/test/tint/types/module_scope_var_initializers.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/types/module_scope_var_initializers.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unicode/identifiers.wgsl.expected.ir.msl b/test/tint/unicode/identifiers.wgsl.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/unicode/identifiers.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_6.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_6.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ConvertResultSignedness_SpvParserHandleTest_SampledImageAccessTest_Variable_6.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ConvertUintCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ConvertUintCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ConvertUintCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ConvertUintCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ConvertUintCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ConvertUintCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ConvertUintCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ConvertUintCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ConvertUintCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..47c8fbc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Convert
+********************************************************************
+*  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/tint/unittest/reader/spirv/Good_1D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Good_1D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Good_1D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Good_1D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Good_1D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Good_1D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Good_1D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Good_1D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Good_1D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Good_1D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Good_1D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Good_1D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Good_2DArray_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Good_2DArray_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Good_2DArray_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/Good_2DArray_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Good_2DArray_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Good_2DArray_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/Good_2D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Good_2D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Good_2D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Good_2D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Good_2D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Good_2D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Good_2D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Good_2D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Good_2D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Good_3D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Good_3D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Good_3D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Good_3D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Good_3D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Good_3D_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Good_CubeArray_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Good_CubeArray_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Good_CubeArray_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/Good_Cube_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Good_Cube_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Good_Cube_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Good_Cube_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Good_Cube_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Good_Cube_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageFetch_DepthMultisampled_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageFetch_DepthMultisampled_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageFetch_DepthMultisampled_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageFetch_Depth_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageFetch_Depth_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageFetch_Depth_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageFetch_Multisampled_ConvertSampleOperand_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageFetch_Multisampled_ConvertSampleOperand_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageFetch_Multisampled_ConvertSampleOperand_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageFetch_Multisampled_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageFetch_Multisampled_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageFetch_Multisampled_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageFetch_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageFetch_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageFetch_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageFetch_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageFetch_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageFetch_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageFetch_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageFetch_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageFetch_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageFetch_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageFetch_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageFetch_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_6.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_6.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_6.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_7.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_7.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_7.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_8.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_8.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_8.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQueryLevels_UnsignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQueryLevels_UnsignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_UnsignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQuerySamples_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQuerySamples_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQuerySamples_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQuerySamples_UnsignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQuerySamples_UnsignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQuerySamples_UnsignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQuerySizeLod_NonArrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_NonArrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_NonArrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQuerySizeLod_NonArrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_NonArrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_NonArrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQuerySizeLod_NonArrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_NonArrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_NonArrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQuerySizeLod_NonArrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_NonArrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_NonArrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQuerySizeLod_NonArrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_NonArrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_NonArrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQuerySize_Arrayed_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQuerySize_Arrayed_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQuerySize_Arrayed_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQuerySize_NonArrayed_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQuerySize_NonArrayed_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQuerySize_NonArrayed_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQuerySize_NonArrayed_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQuerySize_NonArrayed_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQuerySize_NonArrayed_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageQuerySize_NonArrayed_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageQuerySize_NonArrayed_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageQuerySize_NonArrayed_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageRead_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageRead_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageRead_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingGrad_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingGrad_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingGrad_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingGrad_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingGrad_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingGrad_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingGrad_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingGrad_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingGrad_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingGrad_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingGrad_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingGrad_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingGrad_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingGrad_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingGrad_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingGrad_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingGrad_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingGrad_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingLod_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingLod_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_UsingLod_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_6.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_6.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_6.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_7.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_7.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_7.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_8.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_8.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_8.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleProjExplicitLod_Grad_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleProjExplicitLod_Grad_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleProjExplicitLod_Grad_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleProjExplicitLod_Grad_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleProjExplicitLod_Grad_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleProjExplicitLod_Grad_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleProjExplicitLod_Lod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleProjExplicitLod_Lod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleProjExplicitLod_Lod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleProjExplicitLod_Lod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleProjExplicitLod_Lod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleProjExplicitLod_Lod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_6.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_6.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_6.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_7.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_7.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_7.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_SameSignedness_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_SameSignedness_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_SameSignedness_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_SameSignedness_SpvParserHandleTest_ImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_SameSignedness_SpvParserHandleTest_ImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_SameSignedness_SpvParserHandleTest_ImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Signedness_AndWidening_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Signedness_AndWidening_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Signedness_AndWidening_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Signedness_AndWidening_SpvParserHandleTest_ImageAccessTest_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Signedness_AndWidening_SpvParserHandleTest_ImageAccessTest_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Signedness_AndWidening_SpvParserHandleTest_ImageAccessTest_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ImageWrite_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ImageWrite_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ImageWrite_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Images_SpvParserHandleTest_DeclUnderspecifiedHandle_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Images_SpvParserHandleTest_DeclUnderspecifiedHandle_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Images_SpvParserHandleTest_DeclUnderspecifiedHandle_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Images_SpvParserHandleTest_DeclUnderspecifiedHandle_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Images_SpvParserHandleTest_DeclUnderspecifiedHandle_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Images_SpvParserHandleTest_DeclUnderspecifiedHandle_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Images_SpvParserHandleTest_DeclUnderspecifiedHandle_Variable_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Images_SpvParserHandleTest_DeclUnderspecifiedHandle_Variable_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Images_SpvParserHandleTest_DeclUnderspecifiedHandle_Variable_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Multisampled_Only2DNonArrayedIsValid_SpvParserHandleTest_ImageDeclTest_DeclareAndUseHandle_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Multisampled_Only2DNonArrayedIsValid_SpvParserHandleTest_ImageDeclTest_DeclareAndUseHandle_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Multisampled_Only2DNonArrayedIsValid_SpvParserHandleTest_ImageDeclTest_DeclareAndUseHandle_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/PreserveFloatCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/PreserveFloatCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/PreserveFloatCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/PreserveFloatCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/PreserveFloatCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/PreserveFloatCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/PreserveFloatCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/PreserveFloatCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/PreserveFloatCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/PreserveIntCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/PreserveIntCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/PreserveIntCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/PreserveIntCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/PreserveIntCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/PreserveIntCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/PreserveIntCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/PreserveIntCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/PreserveIntCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samplers_SpvParserHandleTest_DeclUnderspecifiedHandle_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samplers_SpvParserHandleTest_DeclUnderspecifiedHandle_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samplers_SpvParserHandleTest_DeclUnderspecifiedHandle_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_6.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_6.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_6.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_7.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_7.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_7.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_6.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_6.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_6.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_7.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_7.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_7.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_6.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_6.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_6.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_7.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_7.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_7.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_6.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_6.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_6.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_6.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_6.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_6.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_7.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_7.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_7.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_8.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_8.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_8.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_9.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_9.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_9.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Float3_Float3Float3_Samples_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Float3_Float3Float3_Samples_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Float3_Float3Float3_Samples_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Float_FloatingFloating_Scalar_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Float_FloatingFloating_Scalar_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Float_FloatingFloating_Scalar_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Float_FloatingFloating_Vector_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Float_FloatingFloating_Vector_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Float_FloatingFloating_Vector_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Float_Floating_Scalar_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Float_Floating_Scalar_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Float_Floating_Scalar_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Float_Floating_Vector_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Float_Floating_Vector_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Float_Floating_Vector_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Scalar_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Scalar_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Scalar_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Scalar_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Scalar_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Scalar_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Scalar_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Scalar_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Scalar_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Scalar_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Scalar_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Scalar_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Scalar_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Scalar_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Scalar_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Vector_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Vector_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Vector_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Vector_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Vector_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Vector_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Vector_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Vector_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Vector_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Vector_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Vector_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Vector_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Vector_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Vector_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Vector_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_6.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_6.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Scalar_6.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_6.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_6.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloating_Vector_6.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingInting_Scalar_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingInting_Scalar_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingInting_Scalar_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingInting_Vector_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingInting_Vector_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingInting_Vector_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingUinting_Scalar_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingUinting_Scalar_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingUinting_Scalar_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingUinting_Vector_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingUinting_Vector_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingUinting_Vector_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_10.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_10.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_10.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_11.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_11.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_11.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_12.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_12.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_12.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_13.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_13.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_13.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_14.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_14.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_14.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_15.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_15.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_15.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_16.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_16.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_16.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_17.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_17.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_17.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_18.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_18.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_18.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_19.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_19.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_19.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_20.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_20.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_20.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_21.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_21.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_21.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_22.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_22.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_22.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_6.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_6.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_6.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_7.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_7.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_7.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_8.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_8.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_8.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_9.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_9.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_9.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_10.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_10.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_10.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_11.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_11.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_11.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_12.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_12.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_12.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_13.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_13.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_13.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_14.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_14.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_14.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_15.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_15.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_15.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_16.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_16.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_16.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_17.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_17.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_17.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_18.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_18.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_18.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_19.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_19.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_19.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_20.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_20.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_20.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_21.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_21.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_21.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_22.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_22.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_22.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_6.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_6.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_6.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_7.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_7.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_7.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_8.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_8.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_8.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_9.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_9.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_9.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_IntingIntingInting_Scalar_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_IntingIntingInting_Scalar_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_IntingIntingInting_Scalar_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_IntingIntingInting_Vector_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_IntingIntingInting_Vector_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_IntingIntingInting_Vector_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_IntingInting_Scalar_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_IntingInting_Scalar_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_IntingInting_Scalar_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_IntingInting_Scalar_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_IntingInting_Scalar_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_IntingInting_Scalar_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_IntingInting_Vector_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_IntingInting_Vector_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_IntingInting_Vector_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_IntingInting_Vector_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_IntingInting_Vector_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_IntingInting_Vector_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_Inting_Scalar_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_Inting_Scalar_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_Inting_Scalar_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_Inting_Vector_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_Inting_Vector_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Inting_Inting_Vector_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Uinting_UintingUintingUinting_Scalar_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Uinting_UintingUintingUinting_Scalar_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Uinting_UintingUintingUinting_Scalar_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Uinting_UintingUintingUinting_Vector_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Uinting_UintingUintingUinting_Vector_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Uinting_UintingUintingUinting_Vector_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Uinting_UintingUinting_Scalar_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Uinting_UintingUinting_Scalar_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Uinting_UintingUinting_Scalar_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Uinting_UintingUinting_Scalar_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Uinting_UintingUinting_Scalar_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Uinting_UintingUinting_Scalar_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Uinting_UintingUinting_Vector_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Uinting_UintingUinting_Vector_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Uinting_UintingUinting_Vector_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Uinting_UintingUinting_Vector_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Uinting_UintingUinting_Vector_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Uinting_UintingUinting_Vector_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_Dot.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_Dot.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_Dot.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_FMod_Scalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_FMod_Scalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_FMod_Scalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_FMod_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_FMod_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_FMod_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_MatrixTimesMatrix.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_MatrixTimesMatrix.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_MatrixTimesMatrix.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_MatrixTimesScalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_MatrixTimesScalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_MatrixTimesScalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_MatrixTimesVector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_MatrixTimesVector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_MatrixTimesVector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_OuterProduct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_OuterProduct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_OuterProduct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_SDiv_Scalar_UnsignedResult.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_SDiv_Scalar_UnsignedResult.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_SDiv_Scalar_UnsignedResult.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_SDiv_Vector_UnsignedResult.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_SDiv_Vector_UnsignedResult.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_SDiv_Vector_UnsignedResult.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_SMod_Scalar_UnsignedResult.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_SMod_Scalar_UnsignedResult.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_SMod_Scalar_UnsignedResult.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_SMod_Vector_UnsignedResult.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_SMod_Vector_UnsignedResult.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_SMod_Vector_UnsignedResult.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_VectorTimesMatrix.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_VectorTimesMatrix.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_VectorTimesMatrix.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_VectorTimesScalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_VectorTimesScalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryArithTestBasic_VectorTimesScalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_10.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_10.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_10.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_11.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_11.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_11.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_12.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_12.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_12.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_13.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_13.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_13.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_14.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_14.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_14.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_15.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_15.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_15.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_16.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_16.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_16.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_17.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_17.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_17.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_18.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_18.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_18.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_19.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_19.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_19.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_20.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_20.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_20.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_21.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_21.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_21.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_22.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_22.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_22.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_23.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_23.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_23.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_24.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_24.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_24.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_25.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_25.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_25.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_26.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_26.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_26.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_6.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_6.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_6.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_7.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_7.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_7.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_8.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_8.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_8.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_9.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_9.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_9.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvFUnordTest_FUnordEqual_Scalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordEqual_Scalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordEqual_Scalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvFUnordTest_FUnordEqual_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordEqual_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordEqual_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvFUnordTest_FUnordGreaterThanEqual_Scalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordGreaterThanEqual_Scalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordGreaterThanEqual_Scalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvFUnordTest_FUnordGreaterThanEqual_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordGreaterThanEqual_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordGreaterThanEqual_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvFUnordTest_FUnordGreaterThan_Scalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordGreaterThan_Scalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordGreaterThan_Scalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvFUnordTest_FUnordGreaterThan_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordGreaterThan_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordGreaterThan_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvFUnordTest_FUnordLessThanEqual_Scalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordLessThanEqual_Scalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordLessThanEqual_Scalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvFUnordTest_FUnordLessThanEqual_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordLessThanEqual_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordLessThanEqual_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvFUnordTest_FUnordLessThan_Scalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordLessThan_Scalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordLessThan_Scalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvFUnordTest_FUnordLessThan_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordLessThan_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordLessThan_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvFUnordTest_FUnordNotEqual_Scalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordNotEqual_Scalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordNotEqual_Scalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvFUnordTest_FUnordNotEqual_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordNotEqual_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvFUnordTest_FUnordNotEqual_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvLogicalTest_All.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvLogicalTest_All.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvLogicalTest_All.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvLogicalTest_Any.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvLogicalTest_Any.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvLogicalTest_Any.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvLogicalTest_Select_BoolCond_BoolParams.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvLogicalTest_Select_BoolCond_BoolParams.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvLogicalTest_Select_BoolCond_BoolParams.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvLogicalTest_Select_BoolCond_FloatScalarParams.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvLogicalTest_Select_BoolCond_FloatScalarParams.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvLogicalTest_Select_BoolCond_FloatScalarParams.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvLogicalTest_Select_BoolCond_IntScalarParams.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvLogicalTest_Select_BoolCond_IntScalarParams.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvLogicalTest_Select_BoolCond_IntScalarParams.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvLogicalTest_Select_VecBoolCond_VectorParams.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvLogicalTest_Select_VecBoolCond_VectorParams.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvLogicalTest_Select_VecBoolCond_VectorParams.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_AnonWorkgroupVar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_AnonWorkgroupVar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_AnonWorkgroupVar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ArrayInitializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ArrayInitializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ArrayInitializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ArrayNullInitializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ArrayNullInitializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ArrayNullInitializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BindingDecoration_Valid.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BindingDecoration_Valid.spvasm.expected.ir.msl
new file mode 100644
index 0000000..152c872
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BindingDecoration_Valid.spvasm.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:u32 @offset(0)
+  field1:f32 @offset(4)
+  field2:array<u32, 2> @offset(8)
+}
+
+%b1 = block {  # root
+  %x_1:ptr<storage, S, read_write> = var @binding_point(0, 3)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%tint_symbol = @fragment func():void -> %b3 {
+  %b3 = block {
+    %4:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_ReadReplaced_Vertex.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_ReadReplaced_Vertex.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_ReadReplaced_Vertex.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_Write1_IsErased.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_Write1_IsErased.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_Write1_IsErased.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_WriteViaCopyObjectPostAccessChainErased.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_WriteViaCopyObjectPostAccessChainErased.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_WriteViaCopyObjectPostAccessChainErased.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_WriteViaCopyObjectPriorAccess_Erased.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_WriteViaCopyObjectPriorAccess_Erased.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_WriteViaCopyObjectPriorAccess_Erased.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_ReadReplaced.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_ReadReplaced.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_ReadReplaced.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Write1_IsErased.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Write1_IsErased.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Write1_IsErased.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_WriteViaCopyObjectPostAccessChainErased.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_WriteViaCopyObjectPostAccessChainErased.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_WriteViaCopyObjectPostAccessChainErased.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_BuiltIn_Position.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_BuiltIn_Position.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_BuiltIn_Position.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_BuiltIn_Position_Initializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_BuiltIn_Position_Initializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_BuiltIn_Position_Initializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePosition.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePosition.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePosition.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePositionMember_OneAccessChain.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePositionMember_OneAccessChain.spvasm.expected.ir.msl
new file mode 100644
index 0000000..3440042
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePositionMember_OneAccessChain.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePositionMember_TwoAccessChain.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePositionMember_TwoAccessChain.spvasm.expected.ir.msl
new file mode 100644
index 0000000..3440042
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePositionMember_TwoAccessChain.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePosition_PerVertexStructOutOfOrderDecl.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePosition_PerVertexStructOutOfOrderDecl.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePosition_PerVertexStructOutOfOrderDecl.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinVertexIndex.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinVertexIndex.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinVertexIndex.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Builtin_Input_OppositeSignednessAsWGSL.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Builtin_Input_OppositeSignednessAsWGSL.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Builtin_Input_OppositeSignednessAsWGSL.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Builtin_Input_SameSignednessAsWGSL.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Builtin_Input_SameSignednessAsWGSL.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Builtin_Input_SameSignednessAsWGSL.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Builtin_Output_Initializer_OppositeSignednessAsWGSL.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Builtin_Output_Initializer_OppositeSignednessAsWGSL.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Builtin_Output_Initializer_OppositeSignednessAsWGSL.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Builtin_Output_Initializer_SameSignednessAsWGSL.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Builtin_Output_Initializer_SameSignednessAsWGSL.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Builtin_Output_Initializer_SameSignednessAsWGSL.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ColMajorDecoration_Dropped.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ColMajorDecoration_Dropped.spvasm.expected.ir.msl
new file mode 100644
index 0000000..609fca4
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ColMajorDecoration_Dropped.spvasm.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(8) {
+  field0:mat3x2<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %myvar:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%tint_symbol = @fragment func():void -> %b3 {
+  %b3 = block {
+    %4:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_DescriptorGroupDecoration_Valid.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_DescriptorGroupDecoration_Valid.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2c35b0a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_DescriptorGroupDecoration_Valid.spvasm.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:u32 @offset(0)
+  field1:f32 @offset(4)
+  field2:array<u32, 2> @offset(8)
+}
+
+%b1 = block {  # root
+  %x_1:ptr<storage, S, read_write> = var @binding_point(3, 9)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%tint_symbol = @fragment func():void -> %b3 {
+  %b3 = block {
+    %4:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_FragDepth_Out_Initializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_FragDepth_Out_Initializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_FragDepth_Out_Initializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_Input_OppositeSignedness.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_Input_OppositeSignedness.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_Input_OppositeSignedness.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_Input_SameSignedness.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_Input_SameSignedness.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_Input_SameSignedness.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_SampleMask_In_Signed.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_SampleMask_In_Signed.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_SampleMask_In_Signed.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_SampleMask_In_Unsigned.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_SampleMask_In_Unsigned.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_SampleMask_In_Unsigned.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_SampleMask_Out_Signed_Initializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_SampleMask_Out_Signed_Initializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_SampleMask_Out_Signed_Initializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_SampleMask_Out_Unsigned_Initializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_SampleMask_Out_Unsigned_Initializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_SampleMask_Out_Unsigned_Initializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Flatten_Interpolation_Flat_Fragment_In.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Flatten_Interpolation_Flat_Fragment_In.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Flatten_Interpolation_Flat_Fragment_In.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Flatten_Interpolation_Floating_Fragment_In.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Flatten_Interpolation_Floating_Fragment_In.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Flatten_Interpolation_Floating_Fragment_In.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Flatten_Interpolation_Floating_Fragment_Out.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Flatten_Interpolation_Floating_Fragment_Out.spvasm.expected.ir.msl
new file mode 100644
index 0000000..c1e9400
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Flatten_Interpolation_Floating_Fragment_Out.spvasm.expected.ir.msl
@@ -0,0 +1,56 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: S = struct @align(4) {
+  field0:f32 @offset(0)
+  field1:f32 @offset(4)
+  field2:f32 @offset(8)
+  field3:f32 @offset(12)
+  field4:f32 @offset(16)
+  field5:f32 @offset(20)
+}
+
+main_out = struct @align(4) {
+  x_1_1:f32 @offset(0), @location(1)
+  x_1_2:f32 @offset(4), @location(2), @interpolate(perspective, centroid)
+  x_1_3:f32 @offset(8), @location(3), @interpolate(perspective, sample)
+  x_1_4:f32 @offset(12), @location(4), @interpolate(linear)
+  x_1_5:f32 @offset(16), @location(5), @interpolate(linear, centroid)
+  x_1_6:f32 @offset(20), @location(6), @interpolate(linear, sample)
+}
+
+%b1 = block {  # root
+  %x_1:ptr<private, S, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b3 {
+  %b3 = block {
+    %4:void = call %main_1
+    %5:ptr<private, f32, read_write> = access %x_1, 0u
+    %6:f32 = load %5
+    %7:ptr<private, f32, read_write> = access %x_1, 1u
+    %8:f32 = load %7
+    %9:ptr<private, f32, read_write> = access %x_1, 2u
+    %10:f32 = load %9
+    %11:ptr<private, f32, read_write> = access %x_1, 3u
+    %12:f32 = load %11
+    %13:ptr<private, f32, read_write> = access %x_1, 4u
+    %14:f32 = load %13
+    %15:ptr<private, f32, read_write> = access %x_1, 5u
+    %16:f32 = load %15
+    %17:main_out = construct %6, %8, %10, %12, %14, %16
+    ret %17
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_IOLocations.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_IOLocations.spvasm.expected.ir.msl
new file mode 100644
index 0000000..3c34d6f
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_IOLocations.spvasm.expected.ir.msl
@@ -0,0 +1,38 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: main_out = struct @align(4) {
+  x_2_1:u32 @offset(0), @location(0), @interpolate(flat)
+  x_4_1:u32 @offset(4), @location(6), @interpolate(flat)
+}
+
+%b1 = block {  # root
+  %x_1:ptr<private, u32, read_write> = var
+  %x_2:ptr<private, u32, read_write> = var
+  %x_3:ptr<private, u32, read_write> = var
+  %x_4:ptr<private, u32, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%tint_symbol = @fragment func(%x_1_param:u32 [@location(0), @interpolate(flat)], %x_3_param:u32 [@location(30), @interpolate(flat)]):main_out -> %b3 {
+  %b3 = block {
+    store %x_1, %x_1_param
+    store %x_3, %x_3_param
+    %9:void = call %main_1
+    %10:u32 = load %x_2
+    %11:u32 = load %x_4
+    %12:main_out = construct %10, %11
+    ret %12
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Interpolation_Flat_Vertex_Output.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Interpolation_Flat_Vertex_Output.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cf37ab0
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Interpolation_Flat_Vertex_Output.spvasm.expected.ir.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: main_out = struct @align(16) {
+  x_1_1:u32 @offset(0), @location(1), @interpolate(flat)
+  x_2_1:vec2<u32> @offset(8), @location(2), @interpolate(flat)
+  x_3_1:i32 @offset(16), @location(3), @interpolate(flat)
+  x_4_1:vec2<i32> @offset(24), @location(4), @interpolate(flat)
+  x_5_1:f32 @offset(32), @location(5), @interpolate(flat)
+  x_6_1:vec2<f32> @offset(40), @location(6), @interpolate(flat)
+  x_8_1:vec4<f32> @offset(48), @builtin(position)
+}
+
+%b1 = block {  # root
+  %x_1:ptr<private, u32, read_write> = var
+  %x_2:ptr<private, vec2<u32>, read_write> = var
+  %x_3:ptr<private, i32, read_write> = var
+  %x_4:ptr<private, vec2<i32>, read_write> = var
+  %x_5:ptr<private, f32, read_write> = var
+  %x_6:ptr<private, vec2<f32>, read_write> = var
+  %x_8:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%tint_symbol = @vertex func():main_out -> %b3 {
+  %b3 = block {
+    %10:void = call %main_1
+    %11:u32 = load %x_1
+    %12:vec2<u32> = load %x_2
+    %13:i32 = load %x_3
+    %14:vec2<i32> = load %x_4
+    %15:f32 = load %x_5
+    %16:vec2<f32> = load %x_6
+    %17:vec4<f32> = load %x_8
+    %18:main_out = construct %11, %12, %13, %14, %15, %16, %17
+    ret %18
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Interpolation_Floating_Fragment_In.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Interpolation_Floating_Fragment_In.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Interpolation_Floating_Fragment_In.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_FlattenStruct_LocOnMembers.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_FlattenStruct_LocOnMembers.spvasm.expected.ir.msl
new file mode 100644
index 0000000..eaf415d
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_FlattenStruct_LocOnMembers.spvasm.expected.ir.msl
@@ -0,0 +1,48 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: Communicators = struct @align(16) {
+  alice:f32 @offset(0)
+  bob:vec4<f32> @offset(16)
+}
+
+main_out = struct @align(16) {
+  x_2_1:vec4<f32> @offset(0), @builtin(position)
+  x_3_1:f32 @offset(16), @location(9)
+  x_3_2:vec4<f32> @offset(32), @location(11)
+}
+
+%b1 = block {  # root
+  %x_1:ptr<private, Communicators, read_write> = var
+  %x_3:ptr<private, Communicators, read_write> = var
+  %x_2:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%tint_symbol = @vertex func(%x_1_param:f32 [@location(9)], %x_1_param_1:vec4<f32> [@location(11)]):main_out -> %b3 {
+  %b3 = block {
+    %8:ptr<private, f32, read_write> = access %x_1, 0u
+    store %8, %x_1_param
+    %9:ptr<private, vec4<f32>, read_write> = access %x_1, 1u
+    store %9, %x_1_param_1
+    %10:void = call %main_1
+    %11:vec4<f32> = load %x_2
+    %12:ptr<private, f32, read_write> = access %x_3, 0u
+    %13:f32 = load %12
+    %14:ptr<private, vec4<f32>, read_write> = access %x_3, 1u
+    %15:vec4<f32> = load %14
+    %16:main_out = construct %11, %13, %15
+    ret %16
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InputVarsConvertedToPrivate.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InputVarsConvertedToPrivate.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InputVarsConvertedToPrivate.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenArray_OneLevel.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenArray_OneLevel.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenArray_OneLevel.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenMatrix.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenMatrix.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenMatrix.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenNested.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenNested.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenNested.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenStruct_LocOnVariable.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenStruct_LocOnVariable.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenStruct_LocOnVariable.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InstanceIndex_I32_Load_AccessChain.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InstanceIndex_I32_Load_AccessChain.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InstanceIndex_I32_Load_AccessChain.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InstanceIndex_I32_Load_CopyObject.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InstanceIndex_I32_Load_CopyObject.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InstanceIndex_I32_Load_CopyObject.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InstanceIndex_I32_Load_Direct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InstanceIndex_I32_Load_Direct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InstanceIndex_I32_Load_Direct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InstanceIndex_U32_Load_AccessChain.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InstanceIndex_U32_Load_AccessChain.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InstanceIndex_U32_Load_AccessChain.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InstanceIndex_U32_Load_CopyObject.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InstanceIndex_U32_Load_CopyObject.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InstanceIndex_U32_Load_CopyObject.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InstanceIndex_U32_Load_Direct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InstanceIndex_U32_Load_Direct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_InstanceIndex_U32_Load_Direct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_MatrixInitializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_MatrixInitializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_MatrixInitializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_MatrixNullInitializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_MatrixNullInitializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_MatrixNullInitializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_MatrixStrideDecoration.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_MatrixStrideDecoration.spvasm.expected.ir.msl
new file mode 100644
index 0000000..58b7620
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_MatrixStrideDecoration.spvasm.expected.ir.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(8) {
+  el:vec2<f32> @offset(0)
+}
+
+S = struct @align(8) {
+  field0:array<strided_arr, 3> @offset(0)
+}
+
+%b1 = block {  # root
+  %myvar:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%tint_symbol = @fragment func():void -> %b3 {
+  %b3 = block {
+    %4:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_MatrixStrideDecoration_Dropped.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_MatrixStrideDecoration_Dropped.spvasm.expected.ir.msl
new file mode 100644
index 0000000..609fca4
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_MatrixStrideDecoration_Dropped.spvasm.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(8) {
+  field0:mat3x2<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %myvar:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%tint_symbol = @fragment func():void -> %b3 {
+  %b3 = block {
+    %4:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_MatrixStrideDecoration_Natural_Dropped.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_MatrixStrideDecoration_Natural_Dropped.spvasm.expected.ir.msl
new file mode 100644
index 0000000..609fca4
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_MatrixStrideDecoration_Natural_Dropped.spvasm.expected.ir.msl
@@ -0,0 +1,29 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(8) {
+  field0:mat3x2<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %myvar:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%tint_symbol = @fragment func():void -> %b3 {
+  %b3 = block {
+    %4:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_NamedWorkgroupVar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_NamedWorkgroupVar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_NamedWorkgroupVar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_NoVar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_NoVar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_NoVar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_OutputVarsConvertedToPrivate.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_OutputVarsConvertedToPrivate.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_OutputVarsConvertedToPrivate.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_OutputVarsConvertedToPrivate_WithInitializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_OutputVarsConvertedToPrivate_WithInitializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_OutputVarsConvertedToPrivate_WithInitializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Output_FlattenArray_OneLevel.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Output_FlattenArray_OneLevel.spvasm.expected.ir.msl
new file mode 100644
index 0000000..25d539b
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Output_FlattenArray_OneLevel.spvasm.expected.ir.msl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: main_out = struct @align(16) {
+  x_1_1:f32 @offset(0), @location(4)
+  x_1_2:f32 @offset(4), @location(5)
+  x_1_3:f32 @offset(8), @location(6)
+  x_2_1:vec4<f32> @offset(16), @builtin(position)
+}
+
+%b1 = block {  # root
+  %x_1:ptr<private, array<f32, 3>, read_write> = var
+  %x_2:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%tint_symbol = @vertex func():main_out -> %b3 {
+  %b3 = block {
+    %5:void = call %main_1
+    %6:ptr<private, f32, read_write> = access %x_1, 0i
+    %7:f32 = load %6
+    %8:ptr<private, f32, read_write> = access %x_1, 1i
+    %9:f32 = load %8
+    %10:ptr<private, f32, read_write> = access %x_1, 2i
+    %11:f32 = load %10
+    %12:vec4<f32> = load %x_2
+    %13:main_out = construct %7, %9, %11, %12
+    ret %13
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Output_FlattenMatrix.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Output_FlattenMatrix.spvasm.expected.ir.msl
new file mode 100644
index 0000000..de939c4
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Output_FlattenMatrix.spvasm.expected.ir.msl
@@ -0,0 +1,38 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: main_out = struct @align(16) {
+  x_1_1:vec4<f32> @offset(0), @location(9)
+  x_1_2:vec4<f32> @offset(16), @location(10)
+  x_2_1:vec4<f32> @offset(32), @builtin(position)
+}
+
+%b1 = block {  # root
+  %x_1:ptr<private, mat2x4<f32>, read_write> = var
+  %x_2:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%tint_symbol = @vertex func():main_out -> %b3 {
+  %b3 = block {
+    %5:void = call %main_1
+    %6:ptr<private, vec4<f32>, read_write> = access %x_1, 0i
+    %7:vec4<f32> = load %6
+    %8:ptr<private, vec4<f32>, read_write> = access %x_1, 1i
+    %9:vec4<f32> = load %8
+    %10:vec4<f32> = load %x_2
+    %11:main_out = construct %7, %9, %10
+    ret %11
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Output_FlattenStruct_LocOnVariable.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Output_FlattenStruct_LocOnVariable.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cf35c0e
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Output_FlattenStruct_LocOnVariable.spvasm.expected.ir.msl
@@ -0,0 +1,43 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: Communicators = struct @align(16) {
+  alice:f32 @offset(0)
+  bob:vec4<f32> @offset(16)
+}
+
+main_out = struct @align(16) {
+  x_1_1:f32 @offset(0), @location(9)
+  x_1_2:vec4<f32> @offset(16), @location(10)
+  x_2_1:vec4<f32> @offset(32), @builtin(position)
+}
+
+%b1 = block {  # root
+  %x_1:ptr<private, Communicators, read_write> = var
+  %x_2:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%tint_symbol = @vertex func():main_out -> %b3 {
+  %b3 = block {
+    %5:void = call %main_1
+    %6:ptr<private, f32, read_write> = access %x_1, 0u
+    %7:f32 = load %6
+    %8:ptr<private, vec4<f32>, read_write> = access %x_1, 1u
+    %9:vec4<f32> = load %8
+    %10:vec4<f32> = load %x_2
+    %11:main_out = construct %7, %9, %10
+    ret %11
+  }
+}
+
+invalid entry point IO struct uses
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_PrivateVar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_PrivateVar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_PrivateVar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_I32_Load_AccessChain.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_I32_Load_AccessChain.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_I32_Load_AccessChain.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_I32_Load_CopyObject.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_I32_Load_CopyObject.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_I32_Load_CopyObject.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_I32_Load_Direct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_I32_Load_Direct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_I32_Load_Direct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_U32_Load_AccessChain.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_U32_Load_AccessChain.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_U32_Load_AccessChain.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_U32_Load_CopyObject.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_U32_Load_CopyObject.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_U32_Load_CopyObject.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_U32_Load_Direct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_U32_Load_Direct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_U32_Load_Direct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_I32_AccessChain.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_I32_AccessChain.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_I32_AccessChain.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_I32_CopyObject.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_I32_CopyObject.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_I32_CopyObject.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_I32_Direct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_I32_Direct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_I32_Direct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_U32_AccessChain.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_U32_AccessChain.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_U32_AccessChain.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_U32_CopyObject.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_U32_CopyObject.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_U32_CopyObject.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_U32_Direct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_U32_Direct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_U32_Direct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_WithStride.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_WithStride.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_WithStride.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_I32_AccessChain.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_I32_AccessChain.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_I32_AccessChain.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_I32_CopyObject.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_I32_CopyObject.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_I32_CopyObject.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_I32_Direct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_I32_Direct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_I32_Direct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_U32_AccessChain.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_U32_AccessChain.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_U32_AccessChain.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_U32_CopyObject.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_U32_CopyObject.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_U32_CopyObject.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_U32_Direct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_U32_Direct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_U32_Direct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_WithStride.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_WithStride.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_WithStride.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarInitializers.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarInitializers.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarInitializers.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarNullInitializers.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarNullInitializers.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarNullInitializers.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_F32.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_F32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_F32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_F32_WithoutSpecId.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_F32_WithoutSpecId.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_F32_WithoutSpecId.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_False.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_False.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_False.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_I32.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_I32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_I32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_Id_MaxValid.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_Id_MaxValid.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_Id_MaxValid.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_True.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_True.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_True.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_U32.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_U32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_DeclareConst_U32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_UsedInFunction.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_UsedInFunction.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_ScalarSpecConstant_UsedInFunction.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_StorageBuffer_NonWritable_AllMembers.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_StorageBuffer_NonWritable_AllMembers.spvasm.expected.ir.msl
new file mode 100644
index 0000000..de19871
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_StorageBuffer_NonWritable_AllMembers.spvasm.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:f32 @offset(0)
+  field1:f32 @offset(4)
+}
+
+%b1 = block {  # root
+  %x_1:ptr<storage, S, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%tint_symbol = @fragment func():void -> %b3 {
+  %b3 = block {
+    %4:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_StorageBuffer_NonWritable_NotAllMembers.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_StorageBuffer_NonWritable_NotAllMembers.spvasm.expected.ir.msl
new file mode 100644
index 0000000..4c74815
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_StorageBuffer_NonWritable_NotAllMembers.spvasm.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:f32 @offset(0)
+  field1:f32 @offset(4)
+}
+
+%b1 = block {  # root
+  %x_1:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%tint_symbol = @fragment func():void -> %b3 {
+  %b3 = block {
+    %4:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_StorageBuffer_NonWritable_NotAllMembers_DuplicatedOnSameMember.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_StorageBuffer_NonWritable_NotAllMembers_DuplicatedOnSameMember.spvasm.expected.ir.msl
new file mode 100644
index 0000000..4c74815
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_StorageBuffer_NonWritable_NotAllMembers_DuplicatedOnSameMember.spvasm.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:f32 @offset(0)
+  field1:f32 @offset(4)
+}
+
+%b1 = block {  # root
+  %x_1:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%tint_symbol = @fragment func():void -> %b3 {
+  %b3 = block {
+    %4:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_StructInitializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_StructInitializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_StructInitializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_StructMember_NonReadableDecoration_Dropped.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_StructMember_NonReadableDecoration_Dropped.spvasm.expected.ir.msl
new file mode 100644
index 0000000..e10667b
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_StructMember_NonReadableDecoration_Dropped.spvasm.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:u32 @offset(0)
+  field1:f32 @offset(4)
+  field2:array<u32, 2> @offset(8)
+}
+
+%b1 = block {  # root
+  %x_1:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%tint_symbol = @fragment func():void -> %b3 {
+  %b3 = block {
+    %4:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_StructNullInitializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_StructNullInitializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_StructNullInitializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VectorBoolNullInitializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VectorBoolNullInitializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VectorBoolNullInitializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VectorFloatNullInitializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VectorFloatNullInitializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VectorFloatNullInitializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VectorInitializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VectorInitializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VectorInitializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VectorIntNullInitializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VectorIntNullInitializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VectorIntNullInitializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VectorUintNullInitializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VectorUintNullInitializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VectorUintNullInitializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VertexIndex_I32_Load_AccessChain.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VertexIndex_I32_Load_AccessChain.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VertexIndex_I32_Load_AccessChain.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VertexIndex_I32_Load_CopyObject.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VertexIndex_I32_Load_CopyObject.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VertexIndex_I32_Load_CopyObject.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VertexIndex_I32_Load_Direct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VertexIndex_I32_Load_Direct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e344ef
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VertexIndex_I32_Load_Direct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Bitcast
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VertexIndex_U32_Load_AccessChain.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VertexIndex_U32_Load_AccessChain.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VertexIndex_U32_Load_AccessChain.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VertexIndex_U32_Load_CopyObject.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VertexIndex_U32_Load_CopyObject.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VertexIndex_U32_Load_CopyObject.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VertexIndex_U32_Load_Direct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VertexIndex_U32_Load_Direct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_VertexIndex_U32_Load_Direct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_BackEdge_MultiBlockLoop_MultiBlockContinueConstruct_ContinueIsNotHeader.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_BackEdge_MultiBlockLoop_MultiBlockContinueConstruct_ContinueIsNotHeader.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_BackEdge_MultiBlockLoop_MultiBlockContinueConstruct_ContinueIsNotHeader.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_BackEdge_MultiBlockLoop_SingleBlockContinueConstruct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_BackEdge_MultiBlockLoop_SingleBlockContinueConstruct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_BackEdge_MultiBlockLoop_SingleBlockContinueConstruct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_BackEdge_SingleBlockLoop.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_BackEdge_SingleBlockLoop.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_BackEdge_SingleBlockLoop.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Forward_IfToElse.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Forward_IfToElse.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Forward_IfToElse.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Forward_IfToThen.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Forward_IfToThen.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Forward_IfToThen.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Forward_LoopHeadToBody.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Forward_LoopHeadToBody.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Forward_LoopHeadToBody.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Forward_SwitchToCase.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Forward_SwitchToCase.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Forward_SwitchToCase.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Forward_SwitchToDefaultNotMerge.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Forward_SwitchToDefaultNotMerge.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Forward_SwitchToDefaultNotMerge.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_IfBreak_FromElse_ForwardWithinElse.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_IfBreak_FromElse_ForwardWithinElse.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_IfBreak_FromElse_ForwardWithinElse.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_IfBreak_FromIfHeader.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_IfBreak_FromIfHeader.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_IfBreak_FromIfHeader.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_IfBreak_FromIfThenElse.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_IfBreak_FromIfThenElse.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_IfBreak_FromIfThenElse.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_IfBreak_FromThen_ForwardWithinThen.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_IfBreak_FromThen_ForwardWithinThen.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_IfBreak_FromThen_ForwardWithinThen.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromContinueConstructHeader.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromContinueConstructHeader.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromContinueConstructHeader.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromContinueConstructTail.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromContinueConstructTail.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromContinueConstructTail.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopBody.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopBody.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopBody.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopBodyDirect.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopBodyDirect.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopBodyDirect.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopBodyNestedSelection_Conditional.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopBodyNestedSelection_Conditional.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopBodyNestedSelection_Conditional.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopBodyNestedSelection_Unconditional.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopBodyNestedSelection_Unconditional.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopBodyNestedSelection_Unconditional.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopHeader_MultiBlockLoop.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopHeader_MultiBlockLoop.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopHeader_MultiBlockLoop.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopHeader_SingleBlockLoop_FalseBranch.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopHeader_SingleBlockLoop_FalseBranch.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopHeader_SingleBlockLoop_FalseBranch.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopHeader_SingleBlockLoop_TrueBranch.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopHeader_SingleBlockLoop_TrueBranch.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopHeader_SingleBlockLoop_TrueBranch.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopContinue_ConditionalFromNestedIf.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopContinue_ConditionalFromNestedIf.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopContinue_ConditionalFromNestedIf.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopContinue_FromNestedIf.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopContinue_FromNestedIf.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopContinue_FromNestedIf.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopContinue_FromNestedSwitchCaseBody_Unconditional.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopContinue_FromNestedSwitchCaseBody_Unconditional.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopContinue_FromNestedSwitchCaseBody_Unconditional.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopContinue_FromNestedSwitchDefaultBody_Conditional.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopContinue_FromNestedSwitchDefaultBody_Conditional.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopContinue_FromNestedSwitchDefaultBody_Conditional.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopContinue_FromNestedSwitchDefaultBody_Unconditional.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopContinue_FromNestedSwitchDefaultBody_Unconditional.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopContinue_FromNestedSwitchDefaultBody_Unconditional.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopContinue_LoopBodyToContinue.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopContinue_LoopBodyToContinue.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopContinue_LoopBodyToContinue.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Pathological_Forward_Premerge.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Pathological_Forward_Premerge.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Pathological_Forward_Premerge.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Pathological_Forward_Regardless.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Pathological_Forward_Regardless.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_Pathological_Forward_Regardless.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_SwitchBreak_FromNestedIf_Conditional.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_SwitchBreak_FromNestedIf_Conditional.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_SwitchBreak_FromNestedIf_Conditional.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_SwitchBreak_FromNestedIf_Unconditional.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_SwitchBreak_FromNestedIf_Unconditional.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_SwitchBreak_FromNestedIf_Unconditional.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_SwitchBreak_FromSwitchCaseBody.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_SwitchBreak_FromSwitchCaseBody.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_SwitchBreak_FromSwitchCaseBody.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_SwitchBreak_FromSwitchCaseDirect.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_SwitchBreak_FromSwitchCaseDirect.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_SwitchBreak_FromSwitchCaseDirect.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_SwitchBreak_FromSwitchDefaultBody.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_SwitchBreak_FromSwitchDefaultBody.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_SwitchBreak_FromSwitchDefaultBody.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_SwitchBreak_FromSwitchDefaultIsMerge.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_SwitchBreak_FromSwitchDefaultIsMerge.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_SwitchBreak_FromSwitchDefaultIsMerge.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_DupConditionalBranch.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_DupConditionalBranch.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_DupConditionalBranch.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_FalseOnlyBranch.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_FalseOnlyBranch.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_FalseOnlyBranch.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_IgnoreStaticalyUnreachable.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_IgnoreStaticalyUnreachable.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_IgnoreStaticalyUnreachable.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_KillIsDeadEnd.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_KillIsDeadEnd.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_KillIsDeadEnd.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_BodyHasBreak.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_BodyHasBreak.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_BodyHasBreak.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_BodyHasBreakIf.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_BodyHasBreakIf.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_BodyHasBreakIf.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_BodyHasBreakUnless.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_BodyHasBreakUnless.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_BodyHasBreakUnless.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_BodyHasContinueIf.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_BodyHasContinueIf.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_BodyHasContinueIf.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_BodyHasContinueUnless.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_BodyHasContinueUnless.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_BodyHasContinueUnless.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Body_If.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Body_If.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Body_If.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Body_If_Break.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Body_If_Break.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Body_If_Break.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Body_If_Continue.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Body_If_Continue.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Body_If_Continue.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Body_Switch.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Body_Switch.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Body_Switch.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Body_Switch_CaseContinues.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Body_Switch_CaseContinues.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Body_Switch_CaseContinues.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Continue_ContainsIf.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Continue_ContainsIf.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Continue_ContainsIf.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Continue_HasBreakIf.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Continue_HasBreakIf.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Continue_HasBreakIf.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Continue_HasBreakUnless.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Continue_HasBreakUnless.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Continue_HasBreakUnless.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Continue_Sequence.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Continue_Sequence.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Continue_Sequence.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_HeaderHasBreakIf.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_HeaderHasBreakIf.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_HeaderHasBreakIf.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_HeaderHasBreakUnless.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_HeaderHasBreakUnless.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_HeaderHasBreakUnless.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Loop.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Loop.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Loop.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Loop_InnerBreak.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Loop_InnerBreak.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Loop_InnerBreak.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Loop_InnerContinue.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Loop_InnerContinue.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Loop_InnerContinue.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Loop_InnerContinueBreaks.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Loop_InnerContinueBreaks.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_Loop_InnerContinueBreaks.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_SingleBlock_Simple.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_SingleBlock_Simple.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_SingleBlock_Simple.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Nest_IfBreak_In_SwitchCase.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Nest_IfBreak_In_SwitchCase.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Nest_IfBreak_In_SwitchCase.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Nest_If_Contains_If.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Nest_If_Contains_If.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Nest_If_Contains_If.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Nest_If_In_SwitchCase.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Nest_If_In_SwitchCase.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Nest_If_In_SwitchCase.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_OneBlock.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_OneBlock.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_OneBlock.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_ReorderSequence.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_ReorderSequence.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_ReorderSequence.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_RespectConditionalBranchOrder.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_RespectConditionalBranchOrder.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_RespectConditionalBranchOrder.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_SwitchOrderNaturallyReversed.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_SwitchOrderNaturallyReversed.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_SwitchOrderNaturallyReversed.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_SwitchWithDefaultOrderNaturallyReversed.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_SwitchWithDefaultOrderNaturallyReversed.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_SwitchWithDefaultOrderNaturallyReversed.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Switch_DefaultSameAsACase.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Switch_DefaultSameAsACase.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Switch_DefaultSameAsACase.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_TrueOnlyBranch.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_TrueOnlyBranch.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_TrueOnlyBranch.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_UnreachableIsDeadEnd.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_UnreachableIsDeadEnd.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_UnreachableIsDeadEnd.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_MultiBlock_LoopBreak_OnFalse.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_MultiBlock_LoopBreak_OnFalse.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_MultiBlock_LoopBreak_OnFalse.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_MultiBlock_LoopBreak_OnTrue.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_MultiBlock_LoopBreak_OnTrue.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_MultiBlock_LoopBreak_OnTrue.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnFalse.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnFalse.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnFalse.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnTrue.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnTrue.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnTrue.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Forward_Forward_Same.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Forward_Forward_Same.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Forward_Forward_Same.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_IfBreak_IfBreak_Same.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_IfBreak_IfBreak_Same.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_IfBreak_IfBreak_Same.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnFalse.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnFalse.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnFalse.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnTrue.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnTrue.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnTrue.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnFalse.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnFalse.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnFalse.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnTrue.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnTrue.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnTrue.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_MultiBlock_LoopBreak.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_MultiBlock_LoopBreak.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_MultiBlock_LoopBreak.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_SingleBlock_LoopBreak.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_SingleBlock_LoopBreak.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_SingleBlock_LoopBreak.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Forward_OnFalse.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Forward_OnFalse.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Forward_OnFalse.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Forward_OnTrue.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Forward_OnTrue.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Forward_OnTrue.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_SwitchBreak_LastInCase.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_SwitchBreak_LastInCase.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_SwitchBreak_LastInCase.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_SwitchBreak_NotLastInCase.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_SwitchBreak_NotLastInCase.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_SwitchBreak_NotLastInCase.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_Forward.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_Forward.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_Forward.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_IfBreak_FromElse.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_IfBreak_FromElse.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_IfBreak_FromElse.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_IfBreak_FromThen.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_IfBreak_FromThen.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_IfBreak_FromThen.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopBreak_MultiBlockLoop_FromBody.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopBreak_MultiBlockLoop_FromBody.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopBreak_MultiBlockLoop_FromBody.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopBreak_MultiBlockLoop_FromContinueConstructEnd_Conditional.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopBreak_MultiBlockLoop_FromContinueConstructEnd_Conditional.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopBreak_MultiBlockLoop_FromContinueConstructEnd_Conditional.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_SwitchBreak_LastInCase.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_SwitchBreak_LastInCase.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_SwitchBreak_LastInCase.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_SwitchBreak_NotLastInCase.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_SwitchBreak_NotLastInCase.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_SwitchBreak_NotLastInCase.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_LoopBreak.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_LoopBreak.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_LoopBreak.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_SwitchBreak.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_SwitchBreak.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_SwitchBreak.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfBreak_FromElse_ForwardWithinElse.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfBreak_FromElse_ForwardWithinElse.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfBreak_FromElse_ForwardWithinElse.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfBreak_FromThenWithForward_FromElseWithForward_AlsoPremerge.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfBreak_FromThenWithForward_FromElseWithForward_AlsoPremerge.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfBreak_FromThenWithForward_FromElseWithForward_AlsoPremerge.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfBreak_FromThen_ForwardWithinThen.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfBreak_FromThen_ForwardWithinThen.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfBreak_FromThen_ForwardWithinThen.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfSelection_TrueBranch_LoopBreak.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfSelection_TrueBranch_LoopBreak.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfSelection_TrueBranch_LoopBreak.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Else_Premerge.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Else_Premerge.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Else_Premerge.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Empty.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Empty.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Empty.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Nest_If.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Nest_If.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Nest_If.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_NoThen_Else.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_NoThen_Else.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_NoThen_Else.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Then_Else.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Then_Else.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Then_Else.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Then_Else_Premerge.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Then_Else_Premerge.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Then_Else_Premerge.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Then_NoElse.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Then_NoElse.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Then_NoElse.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Then_Premerge.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Then_Premerge.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Then_Premerge.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Kill_InsideIf.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Kill_InsideIf.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Kill_InsideIf.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Kill_TopLevel.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Kill_TopLevel.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Kill_TopLevel.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyAlwaysBreaks.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyAlwaysBreaks.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyAlwaysBreaks.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromFalse.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromFalse.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromFalse.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromFalse_Early.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromFalse_Early.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromFalse_Early.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue_Early.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue_Early.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue_Early.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_FalseToBody_TrueBreaks.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_FalseToBody_TrueBreaks.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_FalseToBody_TrueBreaks.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Never.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Never.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Never.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_FalseBackedge.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_FalseBackedge.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_FalseBackedge.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_TrueBackedge.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_TrueBackedge.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_TrueBackedge.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_TrueToBody_FalseBreaks.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_TrueToBody_FalseBreaks.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_TrueToBody_FalseBreaks.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_ReturnValue_InsideIf.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_ReturnValue_InsideIf.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_ReturnValue_InsideIf.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_ReturnValue_Loop.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_ReturnValue_Loop.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_ReturnValue_Loop.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_ReturnValue_TopLevel.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_ReturnValue_TopLevel.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_ReturnValue_TopLevel.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Return_InsideIf.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Return_InsideIf.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Return_InsideIf.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Return_InsideLoop.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Return_InsideLoop.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Return_InsideLoop.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Return_TopLevel.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Return_TopLevel.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Return_TopLevel.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_Case_SintValue.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_Case_SintValue.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_Case_SintValue.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_Case_UintValue.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_Case_UintValue.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_Case_UintValue.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsCase_NoDupCases.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsCase_NoDupCases.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsCase_NoDupCases.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsCase_WithDupCase.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsCase_WithDupCase.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsCase_WithDupCase.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsMerge_CasesWithDup.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsMerge_CasesWithDup.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsMerge_CasesWithDup.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsMerge_NoCases.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsMerge_NoCases.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsMerge_NoCases.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsMerge_OneCase.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsMerge_OneCase.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsMerge_OneCase.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsMerge_TwoCases.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsMerge_TwoCases.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsMerge_TwoCases.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_TrueBranch_SwitchBreak.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_TrueBranch_SwitchBreak.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_TrueBranch_SwitchBreak.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Unreachable_InNonVoidFunction.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Unreachable_InNonVoidFunction.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Unreachable_InNonVoidFunction.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Unreachable_InsideIf.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Unreachable_InsideIf.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Unreachable_InsideIf.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Unreachable_InsideLoop.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Unreachable_InsideLoop.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Unreachable_InsideLoop.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Unreachable_TopLevel.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Unreachable_TopLevel.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Unreachable_TopLevel.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_ElseOnly.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_ElseOnly.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_ElseOnly.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_LoopBreak_Ok.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_LoopBreak_Ok.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_LoopBreak_Ok.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_SwitchBreak_Ok.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_SwitchBreak_Ok.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_SwitchBreak_Ok.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_IfOnly.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_IfOnly.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_IfOnly.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_NoIf.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_NoIf.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_NoIf.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_Premerge_ElseDirectToThen.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_Premerge_ElseDirectToThen.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_Premerge_ElseDirectToThen.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_Premerge_Simple.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_Premerge_Simple.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_Premerge_Simple.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_Premerge_ThenDirectToElse.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_Premerge_ThenDirectToElse.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_Premerge_ThenDirectToElse.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_Regardless.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_Regardless.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_Regardless.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_ThenElse.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_ThenElse.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_ThenElse.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopBreak_Ok.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopBreak_Ok.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopBreak_Ok.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_SwitchBreak_Ok.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_SwitchBreak_Ok.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_SwitchBreak_Ok.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_FindSwitchCaseHeaders_CaseIsDefault.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindSwitchCaseHeaders_CaseIsDefault.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindSwitchCaseHeaders_CaseIsDefault.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_FindSwitchCaseHeaders_CaseIsNotDefault.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindSwitchCaseHeaders_CaseIsNotDefault.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindSwitchCaseHeaders_CaseIsNotDefault.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_FindSwitchCaseHeaders_DefaultIsMerge.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindSwitchCaseHeaders_DefaultIsMerge.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindSwitchCaseHeaders_DefaultIsMerge.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_FindSwitchCaseHeaders_DefaultIsNotMerge.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindSwitchCaseHeaders_DefaultIsNotMerge.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindSwitchCaseHeaders_DefaultIsNotMerge.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_FindSwitchCaseHeaders_ManyValuesWithSameCase.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindSwitchCaseHeaders_ManyValuesWithSameCase.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindSwitchCaseHeaders_ManyValuesWithSameCase.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_FindSwitchCaseHeaders_NoSwitch.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindSwitchCaseHeaders_NoSwitch.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindSwitchCaseHeaders_NoSwitch.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_FunctionIsOnlyIfSelectionAndItsMerge.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_FunctionIsOnlyIfSelectionAndItsMerge.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_FunctionIsOnlyIfSelectionAndItsMerge.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_MergeBlockIsAlsoMultiBlockLoopHeader.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_MergeBlockIsAlsoMultiBlockLoopHeader.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_MergeBlockIsAlsoMultiBlockLoopHeader.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_MergeBlockIsAlsoSingleBlockLoop.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_MergeBlockIsAlsoSingleBlockLoop.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_MergeBlockIsAlsoSingleBlockLoop.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_MultiBlockLoop_HeaderIsNotContinue.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_MultiBlockLoop_HeaderIsNotContinue.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_MultiBlockLoop_HeaderIsNotContinue.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_If_If.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_If_If.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_If_If.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_If_MultiBlockLoop.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_If_MultiBlockLoop.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_If_MultiBlockLoop.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_If_SingleBlockLoop.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_If_SingleBlockLoop.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_If_SingleBlockLoop.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_If_Switch.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_If_Switch.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_If_Switch.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_LoopContinue_If.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_LoopContinue_If.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_LoopContinue_If.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_Loop_If.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_Loop_If.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_Loop_If.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_Loop_Loop.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_Loop_Loop.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_Loop_Loop.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_Switch_If.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_Switch_If.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_Nest_Switch_If.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_OuterConstructIsFunction_MultiBlock.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_OuterConstructIsFunction_MultiBlock.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_OuterConstructIsFunction_MultiBlock.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_OuterConstructIsFunction_SingleBlock.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_OuterConstructIsFunction_SingleBlock.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_OuterConstructIsFunction_SingleBlock.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_PaddingBlocksBeforeAndAfterStructuredConstruct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_PaddingBlocksBeforeAndAfterStructuredConstruct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_PaddingBlocksBeforeAndAfterStructuredConstruct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_SingleBlockLoop.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_SingleBlockLoop.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_SingleBlockLoop.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_SwitchSelection.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_SwitchSelection.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_SwitchSelection.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsNotHeader_Branch.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsNotHeader_Branch.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsNotHeader_Branch.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsNotHeader_BranchConditional.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsNotHeader_BranchConditional.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsNotHeader_BranchConditional.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_SingleBlockLoop.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_SingleBlockLoop.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_SingleBlockLoop.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodSelectionMerge_BranchConditional.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodSelectionMerge_BranchConditional.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodSelectionMerge_BranchConditional.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodSelectionMerge_Switch.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodSelectionMerge_Switch.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodSelectionMerge_Switch.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_NoMerges.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_NoMerges.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_NoMerges.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_SiblingLoopConstruct_HasSiblingLoop.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_SiblingLoopConstruct_HasSiblingLoop.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_SiblingLoopConstruct_HasSiblingLoop.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_SiblingLoopConstruct_NotAContinue.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_SiblingLoopConstruct_NotAContinue.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_SiblingLoopConstruct_NotAContinue.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_SiblingLoopConstruct_Null.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_SiblingLoopConstruct_Null.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_SiblingLoopConstruct_Null.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_SiblingLoopConstruct_SingleBlockLoop.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_SiblingLoopConstruct_SingleBlockLoop.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_SiblingLoopConstruct_SingleBlockLoop.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_If.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_If.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_If.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_Kill.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_Kill.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_Kill.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_Loop_Simple.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_Loop_Simple.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_Loop_Simple.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_Loop_SingleBlock.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_Loop_SingleBlock.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_Loop_SingleBlock.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_Sequence.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_Sequence.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_Sequence.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_SingleBlock.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_SingleBlock.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_SingleBlock.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_Unreachable.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_Unreachable.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_TerminatorsAreValid_Unreachable.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_VerifyHeaderContinueMergeOrder_MultiBlockLoop_Good.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_VerifyHeaderContinueMergeOrder_MultiBlockLoop_Good.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_VerifyHeaderContinueMergeOrder_MultiBlockLoop_Good.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_VerifyHeaderContinueMergeOrder_Selection_Good.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_VerifyHeaderContinueMergeOrder_Selection_Good.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_VerifyHeaderContinueMergeOrder_Selection_Good.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserCFGTest_VerifyHeaderContinueMergeOrder_SingleBlockLoop_Good.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_VerifyHeaderContinueMergeOrder_SingleBlockLoop_Good.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_VerifyHeaderContinueMergeOrder_SingleBlockLoop_Good.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_AnonymousVars.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_AnonymousVars.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_AnonymousVars.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_ArrayInitializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_ArrayInitializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_ArrayInitializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_ArrayInitializer_Alias.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_ArrayInitializer_Alias.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_ArrayInitializer_Alias.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_ArrayInitializer_Alias_Null.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_ArrayInitializer_Alias_Null.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_ArrayInitializer_Alias_Null.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_ArrayInitializer_Null.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_ArrayInitializer_Null.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_ArrayInitializer_Null.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_Decorate_RelaxedPrecision.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_Decorate_RelaxedPrecision.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_Decorate_RelaxedPrecision.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_MatrixInitializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_MatrixInitializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_MatrixInitializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_MemberDecorate_RelaxedPrecision.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_MemberDecorate_RelaxedPrecision.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_MemberDecorate_RelaxedPrecision.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_MixedTypes.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_MixedTypes.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_MixedTypes.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_NamedVars.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_NamedVars.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_NamedVars.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_ScalarInitializers.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_ScalarInitializers.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_ScalarInitializers.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_ScalarNullInitializers.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_ScalarNullInitializers.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_ScalarNullInitializers.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_StructDifferOnlyInMemberName.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_StructDifferOnlyInMemberName.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_StructDifferOnlyInMemberName.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_StructInitializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_StructInitializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_StructInitializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_StructInitializer_Null.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_StructInitializer_Null.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_StructInitializer_Null.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_VectorInitializer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_VectorInitializer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitFunctionVariables_VectorInitializer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_DefConstruct_DoesNotEncloseAllUses.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_DefConstruct_DoesNotEncloseAllUses.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_DefConstruct_DoesNotEncloseAllUses.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_Hoisting_DefAndUseFirstBlockIf.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_Hoisting_DefAndUseFirstBlockIf.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_Hoisting_DefAndUseFirstBlockIf.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_Hoisting_DefFirstBlockIf_InFunction.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_Hoisting_DefFirstBlockIf_InFunction.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_Hoisting_DefFirstBlockIf_InFunction.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_Hoisting_DefFirstBlockIf_InIf.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_Hoisting_DefFirstBlockIf_InIf.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_Hoisting_DefFirstBlockIf_InIf.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_Hoisting_DefFirstBlockSwitch_InIf.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_Hoisting_DefFirstBlockSwitch_InIf.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_Hoisting_DefFirstBlockSwitch_InIf.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Defer_UsedOnceSameConstruct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Defer_UsedOnceSameConstruct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Defer_UsedOnceSameConstruct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedTwice.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedTwice.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedTwice.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Hoist_CompositeInsert.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Hoist_CompositeInsert.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Hoist_CompositeInsert.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Hoist_UsedAsNonPtrArg.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Hoist_UsedAsNonPtrArg.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Hoist_UsedAsNonPtrArg.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Hoist_VectorInsertDynamic.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Hoist_VectorInsertDynamic.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Hoist_VectorInsertDynamic.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromElseAndThen.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromElseAndThen.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromElseAndThen.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromHeaderAndThen.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromHeaderAndThen.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromHeaderAndThen.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_MultiBlockLoopIndex.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_MultiBlockLoopIndex.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_MultiBlockLoopIndex.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_SingleBlockLoopIndex.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_SingleBlockLoopIndex.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_SingleBlockLoopIndex.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_UseInPhiCountsAsUse.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_UseInPhiCountsAsUse.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_UseInPhiCountsAsUse.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserHandleTest_GetMemoryObjectDeclarationForHandle_Variable_CopyObject.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserHandleTest_GetMemoryObjectDeclarationForHandle_Variable_CopyObject.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserHandleTest_GetMemoryObjectDeclarationForHandle_Variable_CopyObject.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserHandleTest_GetMemoryObjectDeclarationForHandle_Variable_Direct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserHandleTest_GetMemoryObjectDeclarationForHandle_Variable_Direct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserHandleTest_GetMemoryObjectDeclarationForHandle_Variable_Direct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserHandleTest_GetMemoryObjectDeclarationForHandle_Variable_Image.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserHandleTest_GetMemoryObjectDeclarationForHandle_Variable_Image.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserHandleTest_GetMemoryObjectDeclarationForHandle_Variable_Image.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserHandleTest_GetMemoryObjectDeclarationForHandle_Variable_Load.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserHandleTest_GetMemoryObjectDeclarationForHandle_Variable_Load.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserHandleTest_GetMemoryObjectDeclarationForHandle_Variable_Load.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserHandleTest_GetMemoryObjectDeclarationForHandle_Variable_SampledImage.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserHandleTest_GetMemoryObjectDeclarationForHandle_Variable_SampledImage.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserHandleTest_GetMemoryObjectDeclarationForHandle_Variable_SampledImage.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserHandleTest_NeverGenerateConstDeclForHandle_UseVariableDirectly.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserHandleTest_NeverGenerateConstDeclForHandle_UseVariableDirectly.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserHandleTest_NeverGenerateConstDeclForHandle_UseVariableDirectly.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_ArrayLength_FromAccessChain.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_ArrayLength_FromAccessChain.spvasm.expected.ir.msl
new file mode 100644
index 0000000..c3e6052a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_ArrayLength_FromAccessChain.spvasm.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  first:u32 @offset(0)
+  rtarr:array<u32> @offset(4)
+}
+
+%b1 = block {  # root
+  %myvar:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, array<u32>, read_write> = access %myvar, 1u
+    %x_1:u32 = arrayLength %3
+    ret
+  }
+}
+%tint_symbol = @fragment func():void -> %b3 {
+  %b3 = block {
+    %6:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_ArrayLength_FromVar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_ArrayLength_FromVar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..c3e6052a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_ArrayLength_FromVar.spvasm.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  first:u32 @offset(0)
+  rtarr:array<u32> @offset(4)
+}
+
+%b1 = block {  # root
+  %myvar:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, array<u32>, read_write> = access %myvar, 1u
+    %x_1:u32 = arrayLength %3
+    ret
+  }
+}
+%tint_symbol = @fragment func():void -> %b3 {
+  %b3 = block {
+    %6:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Array.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Array.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Array.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Compound_Matrix_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Compound_Matrix_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Compound_Matrix_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_DereferenceBase.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_DereferenceBase.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_DereferenceBase.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_InferFunctionStorageClass.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_InferFunctionStorageClass.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_InferFunctionStorageClass.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Matrix.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Matrix.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Matrix.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Struct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Struct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Struct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Struct_DifferOnlyMemberName.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Struct_DifferOnlyMemberName.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Struct_DifferOnlyMemberName.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Struct_RuntimeArray.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Struct_RuntimeArray.spvasm.expected.ir.msl
new file mode 100644
index 0000000..05a514a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Struct_RuntimeArray.spvasm.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:f32 @offset(0)
+  age:array<f32> @offset(4)
+}
+
+%b1 = block {  # root
+  %myvar:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, f32, read_write> = access %myvar, 1u, 2u
+    store %3, 42.0f
+    ret
+  }
+}
+%tint_symbol = @fragment func():void -> %b3 {
+  %b3 = block {
+    %5:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_VectorNonConstIndex.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_VectorNonConstIndex.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_VectorNonConstIndex.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_VectorSwizzle.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_VectorSwizzle.spvasm.expected.ir.msl
new file mode 100644
index 0000000..3440042
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_VectorSwizzle.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_CopyMemory_Scalar_Function_To_Private.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_CopyMemory_Scalar_Function_To_Private.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_CopyMemory_Scalar_Function_To_Private.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_LoadBool.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_LoadBool.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_LoadBool.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_LoadScalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_LoadScalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_LoadScalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_StoreBoolConst.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_StoreBoolConst.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_StoreBoolConst.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_StoreFloatConst.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_StoreFloatConst.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_StoreFloatConst.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_StoreIntConst.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_StoreIntConst.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_StoreIntConst.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_StoreToModuleScopeVar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_StoreToModuleScopeVar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_StoreToModuleScopeVar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_StoreUintConst.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_StoreUintConst.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_StoreUintConst.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_UseLoadedScalarTwice.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_UseLoadedScalarTwice.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_UseLoadedScalarTwice.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_RemapStorageBuffer_ThroughAccessChain_Cascaded.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_RemapStorageBuffer_ThroughAccessChain_Cascaded.spvasm.expected.ir.msl
new file mode 100644
index 0000000..a81061d
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_RemapStorageBuffer_ThroughAccessChain_Cascaded.spvasm.expected.ir.msl
@@ -0,0 +1,32 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:u32 @offset(0)
+  field1:array<u32> @offset(4)
+}
+
+%b1 = block {  # root
+  %myvar:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, u32, read_write> = access %myvar, 1u, 1u
+    store %3, 0u
+    ret
+  }
+}
+%tint_symbol = @fragment func():void -> %b3 {
+  %b3 = block {
+    %5:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_RemapStorageBuffer_ThroughAccessChain_NonCascaded.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_RemapStorageBuffer_ThroughAccessChain_NonCascaded.spvasm.expected.ir.msl
new file mode 100644
index 0000000..6d440b6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_RemapStorageBuffer_ThroughAccessChain_NonCascaded.spvasm.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:u32 @offset(0)
+  field1:array<u32> @offset(4)
+}
+
+%b1 = block {  # root
+  %myvar:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, u32, read_write> = access %myvar, 0u
+    store %3, 0u
+    %4:ptr<storage, u32, read_write> = access %myvar, 1u, 1u
+    store %4, 0u
+    ret
+  }
+}
+%tint_symbol = @fragment func():void -> %b3 {
+  %b3 = block {
+    %6:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_RemapStorageBuffer_ThroughAccessChain_NonCascaded_InBoundsAccessChain.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_RemapStorageBuffer_ThroughAccessChain_NonCascaded_InBoundsAccessChain.spvasm.expected.ir.msl
new file mode 100644
index 0000000..6d440b6
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_RemapStorageBuffer_ThroughAccessChain_NonCascaded_InBoundsAccessChain.spvasm.expected.ir.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:u32 @offset(0)
+  field1:array<u32> @offset(4)
+}
+
+%b1 = block {  # root
+  %myvar:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, u32, read_write> = access %myvar, 0u
+    store %3, 0u
+    %4:ptr<storage, u32, read_write> = access %myvar, 1u, 1u
+    store %4, 0u
+    ret
+  }
+}
+%tint_symbol = @fragment func():void -> %b3 {
+  %b3 = block {
+    %6:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserMemoryTest_RemapStorageBuffer_TypesAndVarDeclarations.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_RemapStorageBuffer_TypesAndVarDeclarations.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2cf4cf2
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_RemapStorageBuffer_TypesAndVarDeclarations.spvasm.expected.ir.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:u32 @offset(0)
+  field1:array<u32> @offset(4)
+}
+
+%b1 = block {  # root
+  %myvar:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    ret
+  }
+}
+%tint_symbol = @fragment func():void -> %b3 {
+  %b3 = block {
+    %4:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpNop.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpNop.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpNop.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_BeforeFunction_Scalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_BeforeFunction_Scalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_BeforeFunction_Scalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_BeforeFunction_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_BeforeFunction_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_BeforeFunction_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_InFunction_Array.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_InFunction_Array.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_InFunction_Array.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_InFunction_Matrix.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_InFunction_Matrix.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_InFunction_Matrix.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_InFunction_Scalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_InFunction_Scalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_InFunction_Scalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_InFunction_Struct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_InFunction_Struct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_InFunction_Struct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_InFunction_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_InFunction_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTestMiscInstruction_OpUndef_InFunction_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_SpvBinaryBitTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_SpvBinaryBitTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_SpvBinaryBitTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_SpvBinaryBitTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_SpvBinaryBitTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_SpvBinaryBitTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_SpvBinaryBitTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_SpvBinaryBitTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_SpvBinaryBitTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_SpvBinaryBitTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_SpvBinaryBitTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseAnd_SpvBinaryBitTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_SpvBinaryBitTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_SpvBinaryBitTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_SpvBinaryBitTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_SpvBinaryBitTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_SpvBinaryBitTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_SpvBinaryBitTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_SpvBinaryBitTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_SpvBinaryBitTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_SpvBinaryBitTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_SpvBinaryBitTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_SpvBinaryBitTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseOr_SpvBinaryBitTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_MixedSignedness_SpvBinaryBitGeneralTest_EmitExpression_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_SpvBinaryBitTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_SpvBinaryBitTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_SpvBinaryBitTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_SpvBinaryBitTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_SpvBinaryBitTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_SpvBinaryBitTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_SpvBinaryBitTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_SpvBinaryBitTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_SpvBinaryBitTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_SpvBinaryBitTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_SpvBinaryBitTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_BitwiseXor_SpvBinaryBitTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Array.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Array.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Array.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Matrix.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Matrix.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Matrix.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Matrix_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Matrix_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Matrix_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Struct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Struct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Struct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Struct_Array_Matrix_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Struct_Array_Matrix_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Struct_Array_Matrix_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Array.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Array.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Array.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Matrix.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Matrix.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Matrix.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Matrix_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Matrix_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Matrix_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Struct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Struct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Struct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Struct_Array_Matrix_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Struct_Array_Matrix_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Struct_Array_Matrix_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Struct_DifferOnlyInMemberName.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Struct_DifferOnlyInMemberName.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Struct_DifferOnlyInMemberName.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..3440042
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_Composite_Construct_Array.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_Composite_Construct_Array.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_Composite_Construct_Array.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_Composite_Construct_ConstantComposite_Struct_NoDeduplication.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_Composite_Construct_ConstantComposite_Struct_NoDeduplication.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_Composite_Construct_ConstantComposite_Struct_NoDeduplication.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_Composite_Construct_Matrix.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_Composite_Construct_Matrix.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_Composite_Construct_Matrix.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_Composite_Construct_Struct.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_Composite_Construct_Struct.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_Composite_Construct_Struct.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_Composite_Construct_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_Composite_Construct_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_Composite_Construct_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Array.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Array.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Array.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_ArrayStride_Valid.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_ArrayStride_Valid.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_ArrayStride_Valid.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Array_NoDeduplication.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Array_NoDeduplication.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Array_NoDeduplication.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Bool.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Bool.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Bool.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_F32.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_F32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_F32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_I32.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_I32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_I32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Image_PretendVoid.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Image_PretendVoid.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Image_PretendVoid.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_MatrixOverF32.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_MatrixOverF32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_MatrixOverF32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerFunction.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerFunction.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerFunction.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerInput.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerInput.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerInput.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerOutput.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerOutput.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerOutput.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerPrivate.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerPrivate.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerPrivate.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerStorageBuffer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerStorageBuffer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerStorageBuffer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerToPointer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerToPointer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerToPointer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerUniform.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerUniform.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerUniform.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerUniformConstant.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerUniformConstant.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerUniformConstant.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerWorkgroup.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerWorkgroup.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_PointerWorkgroup.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_RuntimeArray.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_RuntimeArray.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_RuntimeArray.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_RuntimeArray_ArrayStride_Valid.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_RuntimeArray_ArrayStride_Valid.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_RuntimeArray_ArrayStride_Valid.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_RuntimeArray_NoDeduplication.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_RuntimeArray_NoDeduplication.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_RuntimeArray_NoDeduplication.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_SampledImage_PretendVoid.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_SampledImage_PretendVoid.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_SampledImage_PretendVoid.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Sampler_PretendVoid.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Sampler_PretendVoid.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Sampler_PretendVoid.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_StructTwoMembers.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_StructTwoMembers.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_StructTwoMembers.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_StructWithBlockDecoration.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_StructWithBlockDecoration.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_StructWithBlockDecoration.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_StructWithMemberDecorations.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_StructWithMemberDecorations.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_StructWithMemberDecorations.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Struct_NoDeduplication.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Struct_NoDeduplication.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Struct_NoDeduplication.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_U32.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_U32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_U32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_VecOverF32.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_VecOverF32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_VecOverF32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_VecOverI32.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_VecOverI32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_VecOverI32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_VecOverU32.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_VecOverU32.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_VecOverU32.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Void.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Void.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ConvertType_Void.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_CopyObject_Pointer.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_CopyObject_Pointer.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_CopyObject_Pointer.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_CopyObject_Scalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_CopyObject_Scalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_CopyObject_Scalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_CalleePrecedesCaller.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_CalleePrecedesCaller.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_CalleePrecedesCaller.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_Fragment.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_Fragment.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_Fragment.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_GLCompute.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_GLCompute.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_GLCompute.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_GLCompute_LocalSize_Only.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_GLCompute_LocalSize_Only.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_GLCompute_LocalSize_Only.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_LocalSize_And_WGSBuiltin_SpecConstant.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_LocalSize_And_WGSBuiltin_SpecConstant.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_LocalSize_And_WGSBuiltin_SpecConstant.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_MultipleEntryPoints.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_MultipleEntryPoints.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_MultipleEntryPoints.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_Vertex.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_Vertex.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_Vertex.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_WorkgroupSizeBuiltin_Constant_Only.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_WorkgroupSizeBuiltin_Constant_Only.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_WorkgroupSizeBuiltin_Constant_Only.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_WorkgroupSizeBuiltin_SpecConstant_Only.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_WorkgroupSizeBuiltin_SpecConstant_Only.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_WorkgroupSizeBuiltin_SpecConstant_Only.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_WorkgroupSize_MixedConstantSpecConstant.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_WorkgroupSize_MixedConstantSpecConstant.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_WorkgroupSize_MixedConstantSpecConstant.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_GenerateParamNames.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_GenerateParamNames.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_GenerateParamNames.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_MixedParamTypes.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_MixedParamTypes.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_MixedParamTypes.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_NonVoidResultType.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_NonVoidResultType.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_NonVoidResultType.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_VoidFunctionWithoutParams.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_VoidFunctionWithoutParams.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_VoidFunctionWithoutParams.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_EmitStatement_CallWithParams.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitStatement_CallWithParams.spvasm.expected.ir.msl
new file mode 100644
index 0000000..567c382
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_EmitStatement_CallWithParams.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:270 internal compiler error: Switch() matched no cases. Type: tint::core::ir::FunctionParam
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_EmitStatement_ScalarCallNoParams.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitStatement_ScalarCallNoParams.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_EmitStatement_ScalarCallNoParams.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_EmitStatement_ScalarCallNoParamsUsedTwice.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitStatement_ScalarCallNoParamsUsedTwice.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_EmitStatement_ScalarCallNoParamsUsedTwice.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_EmitStatement_VoidCallNoParams.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitStatement_VoidCallNoParams.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_EmitStatement_VoidCallNoParams.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_Emit_GenerateParamNames.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_Emit_GenerateParamNames.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_Emit_GenerateParamNames.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_Emit_MixedParamTypes.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_Emit_MixedParamTypes.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_Emit_MixedParamTypes.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_Emit_NonVoidResultType.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_Emit_NonVoidResultType.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_Emit_NonVoidResultType.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_Emit_VoidFunctionWithoutParams.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_Emit_VoidFunctionWithoutParams.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_Emit_VoidFunctionWithoutParams.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FAdd_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FAdd_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FAdd_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FAdd_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FAdd_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FAdd_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FDiv_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FDiv_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FDiv_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FDiv_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FDiv_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FDiv_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FMul_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FMul_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FMul_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FMul_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FMul_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FMul_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FOrdEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FOrdEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FOrdGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FOrdGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FOrdGreaterThan_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdGreaterThan_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdGreaterThan_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FOrdGreaterThan_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdGreaterThan_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdGreaterThan_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FOrdLessThanEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdLessThanEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdLessThanEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FOrdLessThanEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdLessThanEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdLessThanEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FOrdLessThan_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdLessThan_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdLessThan_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FOrdLessThan_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdLessThan_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdLessThan_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FOrdNotEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdNotEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdNotEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FOrdNotEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdNotEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FOrdNotEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FRem_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FRem_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FRem_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FRem_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FRem_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FRem_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FSub_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FSub_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FSub_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_FSub_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_FSub_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_FSub_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Degrees_Scalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Degrees_Scalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Degrees_Scalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Degrees_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Degrees_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Degrees_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_FaceForward_Scalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_FaceForward_Scalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..931741e
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_FaceForward_Scalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Unary
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_FaceForward_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_FaceForward_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_FaceForward_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Ldexp_Scalar_Float_Uint.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Ldexp_Scalar_Float_Uint.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Ldexp_Scalar_Float_Uint.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Ldexp_Vector_Floatvec_Uintvec.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Ldexp_Vector_Floatvec_Uintvec.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Ldexp_Vector_Floatvec_Uintvec.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Radians_Scalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Radians_Scalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Radians_Scalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Radians_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Radians_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Radians_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Reflect_Scalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Reflect_Scalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Reflect_Scalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Reflect_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Reflect_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Reflect_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Refract_Scalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Refract_Scalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Refract_Scalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Refract_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Refract_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_GlslStd450_Refract_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IAdd_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IAdd_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IAdd_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IAdd_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IAdd_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IAdd_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IAdd_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IAdd_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IAdd_SpvBinaryArithTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_SpvBinaryArithTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_SpvBinaryArithTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IAdd_SpvBinaryArithTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_SpvBinaryArithTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IAdd_SpvBinaryArithTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IEqual_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IEqual_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IEqual_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IEqual_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IEqual_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IEqual_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IEqual_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IEqual_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IEqual_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IEqual_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IEqual_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IEqual_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IMul_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IMul_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IMul_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IMul_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IMul_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IMul_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IMul_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IMul_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IMul_SpvBinaryArithTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_SpvBinaryArithTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_SpvBinaryArithTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_IMul_SpvBinaryArithTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_SpvBinaryArithTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_IMul_SpvBinaryArithTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_INotEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_INotEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_INotEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_INotEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_INotEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_INotEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_INotEqual_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_INotEqual_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_INotEqual_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_INotEqual_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_INotEqual_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_INotEqual_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_INotEqual_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_INotEqual_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_INotEqual_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_INotEqual_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_INotEqual_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_INotEqual_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ISub_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ISub_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ISub_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ISub_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ISub_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ISub_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_MixedSignedness_SpvBinaryArithGeneralTest_EmitExpression_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ISub_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ISub_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ISub_SpvBinaryArithTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_SpvBinaryArithTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_SpvBinaryArithTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ISub_SpvBinaryArithTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_SpvBinaryArithTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ISub_SpvBinaryArithTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_Impl_GenericVulkanShader_GLSL450MemoryModel.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_Impl_GenericVulkanShader_GLSL450MemoryModel.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_Impl_GenericVulkanShader_GLSL450MemoryModel.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_Impl_GenericVulkanShader_SimpleMemoryModel.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_Impl_GenericVulkanShader_SimpleMemoryModel.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_Impl_GenericVulkanShader_SimpleMemoryModel.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_Impl_GenericVulkanShader_VulkanMemoryModel.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_Impl_GenericVulkanShader_VulkanMemoryModel.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_Impl_GenericVulkanShader_VulkanMemoryModel.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_Impl_Source_InvalidId.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_Impl_Source_InvalidId.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_Impl_Source_InvalidId.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_Impl_Source_NoOpLine.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_Impl_Source_NoOpLine.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_Impl_Source_NoOpLine.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_Impl_Source_WithOpLine_WithOpNoLine.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_Impl_Source_WithOpLine_WithOpNoLine.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_Impl_Source_WithOpLine_WithOpNoLine.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_LogicalAnd_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_LogicalAnd_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_LogicalAnd_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_LogicalAnd_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_LogicalAnd_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_LogicalAnd_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_LogicalEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_LogicalEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_LogicalEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_LogicalEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_LogicalEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_LogicalEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_LogicalNotEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_LogicalNotEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_LogicalNotEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_LogicalNotEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_LogicalNotEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_LogicalNotEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_LogicalOr_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_LogicalOr_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_LogicalOr_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_LogicalOr_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_LogicalOr_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_LogicalOr_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_Normalize_Scalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_Normalize_Scalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_Normalize_Scalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_Normalize_Vector2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_Normalize_Vector2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_Normalize_Vector2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_Normalize_Vector3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_Normalize_Vector3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_Normalize_Vector3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_Normalize_Vector4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_Normalize_Vector4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b38060a
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_Normalize_Vector4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_SAbs.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_SAbs.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_SAbs.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_SClamp.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_SClamp.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_SClamp.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_SMax.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_SMax.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_SMax.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_SMin.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_SMin.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_SMin.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_UClamp.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_UClamp.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_UClamp.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_UMax.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_UMax.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_UMax.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_UMin.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_UMin.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_RectifyOperandsAndResult_UMin.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SDiv_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SDiv_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SDiv_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SDiv_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SDiv_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SDiv_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SDiv_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SDiv_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SDiv_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SDiv_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SDiv_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SDiv_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SDiv_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SDiv_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SDiv_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SDiv_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SDiv_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SDiv_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SGreaterThan_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThan_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThan_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SGreaterThan_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThan_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThan_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SGreaterThan_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThan_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThan_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SGreaterThan_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThan_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThan_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SGreaterThan_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThan_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThan_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SGreaterThan_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThan_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SGreaterThan_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SLessThanEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThanEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThanEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SLessThanEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThanEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThanEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SLessThanEqual_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThanEqual_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThanEqual_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SLessThanEqual_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThanEqual_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThanEqual_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SLessThanEqual_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThanEqual_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThanEqual_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SLessThanEqual_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThanEqual_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThanEqual_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SLessThan_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThan_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThan_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SLessThan_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThan_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThan_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SLessThan_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThan_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThan_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SLessThan_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThan_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThan_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SLessThan_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThan_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThan_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SLessThan_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThan_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SLessThan_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SMod_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SMod_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SMod_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SMod_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SMod_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SMod_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SMod_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SMod_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SMod_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SMod_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SMod_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SMod_MixedSignednessOperands_SpvBinaryArithTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SMod_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SMod_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SMod_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_SMod_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_SMod_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_SMod_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Unsigned_SpvBinaryBitTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Unsigned_SpvBinaryBitTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Unsigned_SpvBinaryBitTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Unsigned_SpvBinaryBitTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Unsigned_SpvBinaryBitTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Unsigned_SpvBinaryBitTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Unsigned_SpvBinaryBitTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Unsigned_SpvBinaryBitTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Unsigned_SpvBinaryBitTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Unsigned_SpvBinaryBitTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Unsigned_SpvBinaryBitTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_Arg2Unsigned_SpvBinaryBitTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_BitcastResult_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_BitcastResult_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_BitcastResult_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_BitcastResult_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_BitcastResult_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftLeftLogical_BitcastResult_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_BitcastResult_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_BitcastResult_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_BitcastResult_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_BitcastResult_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_BitcastResult_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightArithmetic_BitcastResult_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Signed_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_Arg2Unsigned_SpvBinaryBitGeneralTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_BitcastResult_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_BitcastResult_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_BitcastResult_SpvBinaryBitGeneralTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_BitcastResult_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_BitcastResult_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ShiftRightLogical_BitcastResult_SpvBinaryBitGeneralTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_UDiv_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_UDiv_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_UDiv_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_UDiv_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_UDiv_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_UDiv_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_UGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_UGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_UGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_UGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_UGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_UGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThanEqual_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_UGreaterThan_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThan_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThan_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_UGreaterThan_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThan_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThan_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_UGreaterThan_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThan_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThan_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_UGreaterThan_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThan_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThan_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_UGreaterThan_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThan_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThan_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_UGreaterThan_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThan_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_UGreaterThan_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ULessThanEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThanEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThanEqual_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ULessThanEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThanEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThanEqual_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ULessThanEqual_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThanEqual_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThanEqual_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ULessThanEqual_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThanEqual_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThanEqual_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ULessThanEqual_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThanEqual_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThanEqual_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ULessThanEqual_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThanEqual_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThanEqual_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ULessThan_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThan_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThan_SpvBinaryLogicalTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ULessThan_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThan_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThan_SpvBinaryLogicalTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ULessThan_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThan_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThan_SpvBinaryLogicalTest_EmitExpression_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ULessThan_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThan_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThan_SpvBinaryLogicalTest_EmitExpression_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ULessThan_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThan_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThan_SpvBinaryLogicalTest_EmitExpression_4.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_ULessThan_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThan_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_ULessThan_SpvBinaryLogicalTest_EmitExpression_5.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_UMod_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_UMod_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_UMod_SpvBinaryArithTest_EmitExpression_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_UMod_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_UMod_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_UMod_SpvBinaryArithTest_EmitExpression_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_VectorExtractDynamic_SignedIndex.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_VectorExtractDynamic_SignedIndex.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_VectorExtractDynamic_SignedIndex.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_VectorExtractDynamic_UnsignedIndex.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_VectorExtractDynamic_UnsignedIndex.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_VectorExtractDynamic_UnsignedIndex.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_VectorInsertDynamic_Sample.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_VectorInsertDynamic_Sample.spvasm.expected.ir.msl
new file mode 100644
index 0000000..3440042
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_VectorInsertDynamic_Sample.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_VectorShuffle_ConstantOperands_AllOnesMapToNull.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_VectorShuffle_ConstantOperands_AllOnesMapToNull.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_VectorShuffle_ConstantOperands_AllOnesMapToNull.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_VectorShuffle_ConstantOperands_UseBoth.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_VectorShuffle_ConstantOperands_UseBoth.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_VectorShuffle_ConstantOperands_UseBoth.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvParserTest_VectorShuffle_FunctionScopeOperands_UseBoth.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_VectorShuffle_FunctionScopeOperands_UseBoth.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvParserTest_VectorShuffle_FunctionScopeOperands_UseBoth.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryArithTest_FNegate_Scalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_FNegate_Scalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_FNegate_Scalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryArithTest_FNegate_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_FNegate_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_FNegate_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_Int_Int.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_Int_Int.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_Int_Int.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_Int_Uint.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_Int_Uint.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_Int_Uint.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_SignedVec_SignedVec.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_SignedVec_SignedVec.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_SignedVec_SignedVec.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_SignedVec_UnsignedVec.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_SignedVec_UnsignedVec.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_SignedVec_UnsignedVec.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_Uint_Int.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_Uint_Int.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_Uint_Int.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_Uint_Uint.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_Uint_Uint.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_Uint_Uint.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_UnsignedVec_SignedVec.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_UnsignedVec_SignedVec.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_UnsignedVec_SignedVec.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_UnsignedVec_UnsignedVec.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_UnsignedVec_UnsignedVec.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_SNegate_UnsignedVec_UnsignedVec.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryArithTest_Transpose_2x2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_Transpose_2x2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_Transpose_2x2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryArithTest_Transpose_2x3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_Transpose_2x3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_Transpose_2x3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryArithTest_Transpose_3x2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_Transpose_3x2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryArithTest_Transpose_3x2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_IntVector_IntVector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_IntVector_IntVector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_IntVector_IntVector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_IntVector_UintVector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_IntVector_UintVector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_IntVector_UintVector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Int_Int.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Int_Int.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Int_Int.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Int_Uint.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Int_Uint.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Int_Uint.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_UintVector_IntVector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_UintVector_IntVector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_UintVector_IntVector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_UintVector_UintVector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_UintVector_UintVector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_UintVector_UintVector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Uint_Int.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Uint_Int.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Uint_Int.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Uint_Uint.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Uint_Uint.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Uint_Uint.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_IntVector_IntVector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_IntVector_IntVector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_IntVector_IntVector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_Int_Int.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_Int_Int.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_Int_Int.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_UintVector_UintVector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_UintVector_UintVector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_UintVector_UintVector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_Uint_Uint.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_Uint_Uint.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_Uint_Uint.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_Int_Int.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_Int_Int.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_Int_Int.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_Int_Uint.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_Int_Uint.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_Int_Uint.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_SignedVec_SignedVec.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_SignedVec_SignedVec.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_SignedVec_SignedVec.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_SignedVec_UnsignedVec.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_SignedVec_UnsignedVec.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_SignedVec_UnsignedVec.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_Uint_Int.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_Uint_Int.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_Uint_Int.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_Uint_Uint.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_Uint_Uint.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_Uint_Uint.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_UnsignedVec_SignedVec.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_UnsignedVec_SignedVec.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_UnsignedVec_SignedVec.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_UnsignedVec_UnsignedVec.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_UnsignedVec_UnsignedVec.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryBitTest_Not_UnsignedVec_UnsignedVec.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryConversionTest_Bitcast_Scalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_Bitcast_Scalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_Bitcast_Scalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryConversionTest_Bitcast_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_Bitcast_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_Bitcast_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToS_Scalar_ToSigned.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToS_Scalar_ToSigned.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToS_Scalar_ToSigned.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToS_Scalar_ToUnsigned.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToS_Scalar_ToUnsigned.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToS_Scalar_ToUnsigned.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToS_Vector_ToSigned.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToS_Vector_ToSigned.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToS_Vector_ToSigned.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToS_Vector_ToUnsigned.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToS_Vector_ToUnsigned.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToS_Vector_ToUnsigned.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToU_HoistedValue.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToU_HoistedValue.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToU_HoistedValue.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToU_Scalar_ToUnsigned.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToU_Scalar_ToUnsigned.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToU_Scalar_ToUnsigned.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToU_Vector_ToUnsigned.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToU_Vector_ToUnsigned.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertFToU_Vector_ToUnsigned.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertSToF_Scalar_FromSigned.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertSToF_Scalar_FromSigned.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertSToF_Scalar_FromSigned.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertSToF_Scalar_FromUnsigned.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertSToF_Scalar_FromUnsigned.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertSToF_Scalar_FromUnsigned.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertSToF_Vector_FromSigned.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertSToF_Vector_FromSigned.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertSToF_Vector_FromSigned.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertSToF_Vector_FromUnsigned.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertSToF_Vector_FromUnsigned.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertSToF_Vector_FromUnsigned.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertUToF_Scalar_FromSigned.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertUToF_Scalar_FromSigned.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertUToF_Scalar_FromSigned.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertUToF_Scalar_FromUnsigned.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertUToF_Scalar_FromUnsigned.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertUToF_Scalar_FromUnsigned.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertUToF_Vector_FromSigned.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertUToF_Vector_FromSigned.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertUToF_Vector_FromSigned.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertUToF_Vector_FromUnsigned.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertUToF_Vector_FromUnsigned.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryConversionTest_ConvertUToF_Vector_FromUnsigned.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryLogicalTest_LogicalNot_Scalar.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryLogicalTest_LogicalNot_Scalar.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryLogicalTest_LogicalNot_Scalar.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/SpvUnaryLogicalTest_LogicalNot_Vector.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvUnaryLogicalTest_LogicalNot_Vector.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/SpvUnaryLogicalTest_LogicalNot_Vector.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ValidIndex_SpvParserSwizzleTest_Sample_0.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ValidIndex_SpvParserSwizzleTest_Sample_0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ValidIndex_SpvParserSwizzleTest_Sample_0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ValidIndex_SpvParserSwizzleTest_Sample_1.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ValidIndex_SpvParserSwizzleTest_Sample_1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ValidIndex_SpvParserSwizzleTest_Sample_1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ValidIndex_SpvParserSwizzleTest_Sample_2.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ValidIndex_SpvParserSwizzleTest_Sample_2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ValidIndex_SpvParserSwizzleTest_Sample_2.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/unittest/reader/spirv/ValidIndex_SpvParserSwizzleTest_Sample_3.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/ValidIndex_SpvParserSwizzleTest_Sample_3.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/unittest/reader/spirv/ValidIndex_SpvParserSwizzleTest_Sample_3.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/var/inferred/function.wgsl.expected.ir.msl b/test/tint/var/inferred/function.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/var/inferred/function.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/var/uses/many_workgroup_vars.wgsl.expected.ir.msl b/test/tint/var/uses/many_workgroup_vars.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/var/uses/many_workgroup_vars.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/var/uses/private.wgsl.expected.ir.msl b/test/tint/var/uses/private.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/var/uses/private.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/var/uses/push_constant.wgsl.expected.ir.msl b/test/tint/var/uses/push_constant.wgsl.expected.ir.msl
new file mode 100644
index 0000000..09c2a25
--- /dev/null
+++ b/test/tint/var/uses/push_constant.wgsl.expected.ir.msl
@@ -0,0 +1,57 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: %b1 = block {  # root
+  %a:ptr<push_constant, i32, read_write> = var
+  %b:ptr<push_constant, i32, read_write> = var
+  %c:ptr<push_constant, i32, read_write> = var
+}
+
+%uses_a = func():void -> %b2 {
+  %b2 = block {
+    %foo:i32 = load %a
+    ret
+  }
+}
+%uses_uses_a = func():void -> %b3 {
+  %b3 = block {
+    %7:void = call %uses_a
+    ret
+  }
+}
+%uses_b = func():void -> %b4 {
+  %b4 = block {
+    %foo_1:i32 = load %b  # %foo_1: 'foo'
+    ret
+  }
+}
+%main1 = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
+  %b5 = block {
+    %11:void = call %uses_a
+    ret
+  }
+}
+%main2 = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
+  %b6 = block {
+    %13:void = call %uses_uses_a
+    ret
+  }
+}
+%main3 = @compute @workgroup_size(1, 1, 1) func():void -> %b7 {
+  %b7 = block {
+    %15:void = call %uses_b
+    ret
+  }
+}
+%main4 = @compute @workgroup_size(1, 1, 1) func():void -> %b8 {
+  %b8 = block {
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/var/uses/workgroup.wgsl.expected.ir.msl b/test/tint/var/uses/workgroup.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/var/uses/workgroup.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2a2e113
--- /dev/null
+++ b/test/tint/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.spvasm.expected.ir.msl
@@ -0,0 +1,58 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: result = struct @align(4) {
+  res0:i32 @offset(0)
+  res1:i32 @offset(4)
+  res2:i32 @offset(8)
+}
+
+block0 = struct @align(4) {
+  data0:i32 @offset(0)
+}
+
+block1 = struct @align(4) {
+  data1:i32 @offset(0)
+}
+
+block2 = struct @align(4) {
+  data2:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %x_4:ptr<storage, result, read_write> = var @binding_point(0, 3)
+  %x_6:ptr<uniform, block0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, block1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, block2, read> = var @binding_point(0, 2)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %6:ptr<storage, i32, read_write> = access %x_4, 0u
+    %7:ptr<uniform, i32, read> = access %x_6, 0u
+    %8:i32 = load %7
+    store %6, %8
+    %9:ptr<storage, i32, read_write> = access %x_4, 1u
+    %10:ptr<uniform, i32, read> = access %x_8, 0u
+    %11:i32 = load %10
+    store %9, %11
+    %12:ptr<storage, i32, read_write> = access %x_4, 2u
+    %13:ptr<uniform, i32, read> = access %x_10, 0u
+    %14:i32 = load %13
+    store %12, %14
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %16:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..69ea851
--- /dev/null
+++ b/test/tint/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl.expected.ir.msl
@@ -0,0 +1,58 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: result = struct @align(4) {
+  res0:i32 @offset(0)
+  res1:i32 @offset(4)
+  res2:i32 @offset(8)
+}
+
+block0 = struct @align(4) {
+  data0:i32 @offset(0)
+}
+
+block1 = struct @align(4) {
+  data1:i32 @offset(0)
+}
+
+block2 = struct @align(4) {
+  data2:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %x_4:ptr<storage, result, read_write> = var @binding_point(0, 3)
+  %x_6:ptr<uniform, block0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, block1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, block2, read> = var @binding_point(0, 2)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %6:ptr<uniform, i32, read> = access %x_6, 0u
+    %x_25:i32 = load %6
+    %8:ptr<storage, i32, read_write> = access %x_4, 0u
+    store %8, %x_25
+    %9:ptr<uniform, i32, read> = access %x_8, 0u
+    %x_28:i32 = load %9
+    %11:ptr<storage, i32, read_write> = access %x_4, 1u
+    store %11, %x_28
+    %12:ptr<uniform, i32, read> = access %x_10, 0u
+    %x_31:i32 = load %12
+    %14:ptr<storage, i32, read_write> = access %x_4, 2u
+    store %14, %x_31
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %16:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..23a32b4
--- /dev/null
+++ b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.spvasm.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: block0 = struct @align(16) {
+  data:vec4<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_4:ptr<storage, block0, read_write> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec4<f32>, read_write> = access %x_4, 0u
+    store %3, vec4<f32>(1.0f, 2.0f, 3.0f, 4.0f)
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %5:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..23a32b4
--- /dev/null
+++ b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl.expected.ir.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: block0 = struct @align(16) {
+  data:vec4<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_4:ptr<storage, block0, read_write> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %3:ptr<storage, vec4<f32>, read_write> = access %x_4, 0u
+    store %3, vec4<f32>(1.0f, 2.0f, 3.0f, 4.0f)
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
+  %b3 = block {
+    %5:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b35e11c
--- /dev/null
+++ b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm.expected.ir.msl
@@ -0,0 +1,46 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: block0 = struct @align(16) {
+  in_color:vec4<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  gl_Position:vec4<f32> @offset(0), @builtin(position)
+  frag_color_1:vec4<f32> @offset(16), @location(0)
+}
+
+%b1 = block {  # root
+  %position_1:ptr<private, vec4<f32>, read_write> = var
+  %frag_color:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, block0, read> = var @binding_point(0, 1)
+  %gl_Position:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %6:vec4<f32> = load %position_1
+    store %gl_Position, %6
+    %7:ptr<uniform, vec4<f32>, read> = access %x_8, 0u
+    %8:vec4<f32> = load %7
+    store %frag_color, %8
+    ret
+  }
+}
+%tint_symbol = @vertex func(%position_1_param:vec4<f32> [@location(0)]):main_out -> %b3 {
+  %b3 = block {
+    store %position_1, %position_1_param
+    %11:void = call %main_1
+    %12:vec4<f32> = load %gl_Position
+    %13:vec4<f32> = load %frag_color
+    %14:main_out = construct %12, %13
+    ret %14
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b239463
--- /dev/null
+++ b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl.expected.ir.msl
@@ -0,0 +1,46 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: block0 = struct @align(16) {
+  in_color:vec4<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  gl_Position:vec4<f32> @offset(0), @builtin(position)
+  frag_color_1:vec4<f32> @offset(16), @location(0)
+}
+
+%b1 = block {  # root
+  %pos:ptr<private, vec4<f32>, read_write> = var
+  %frag_color:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, block0, read> = var @binding_point(0, 1)
+  %gl_Position:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_24:vec4<f32> = load %pos
+    store %gl_Position, %x_24
+    %7:ptr<uniform, vec4<f32>, read> = access %x_8, 0u
+    %x_27:vec4<f32> = load %7
+    store %frag_color, %x_27
+    ret
+  }
+}
+%tint_symbol = @vertex func(%position_param:vec4<f32> [@location(0)]):main_out -> %b3 {
+  %b3 = block {
+    store %pos, %position_param
+    %11:void = call %main_1
+    %12:vec4<f32> = load %gl_Position
+    %13:vec4<f32> = load %frag_color
+    %14:main_out = construct %12, %13
+    ret %14
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/combined_operations/negintdivand/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/combined_operations/negintdivand/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/vk-gl-cts/combined_operations/negintdivand/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/vk-gl-cts/combined_operations/negintdivand/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/combined_operations/negintdivand/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/combined_operations/negintdivand/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2918302
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,244 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+tmp_struct = struct @align(4) {
+  nmb:array<i32, 1> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_11:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_24:ptr<function, array<i32, 1>, read_write> = var
+    %x_68:ptr<function, bool, read_write> = var, false
+    %x_17:ptr<function, i32, read_write> = var
+    %x_18:ptr<function, i32, read_write> = var
+    %x_19:ptr<function, i32, read_write> = var
+    %x_20:ptr<function, i32, read_write> = var
+    %x_69:ptr<function, bool, read_write> = var, false
+    %tmp_float:ptr<function, f32, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_79:ptr<function, bool, read_write> = var
+        %x_25:ptr<function, i32, read_write> = var
+        %x_26:ptr<function, i32, read_write> = var
+        %x_101:ptr<function, vec3<f32>, read_write> = var
+        %17:ptr<uniform, vec2<f32>, read> = access %x_11, 0u
+        %x_75:f32 = load_vector_element %17, 1u
+        store %tmp_float, %x_75
+        %x_76:vec3<f32> = construct %x_75
+        store %color, %x_76
+        store %x_24, array<i32, 1>(0i)
+        store %x_68, false
+        store %x_79, false
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %x_21:ptr<function, i32, read_write> = var
+            %x_93:ptr<function, bool, read_write> = var
+            store %x_18, 1i
+            store %x_21, 1i
+            loop [b: %b7, c: %b8] {  # loop_3
+              %b7 = block {  # body
+                store %x_25, 0i
+                %22:bool = load %x_79
+                store %x_93, %22
+                %23:i32 = load %x_21
+                %24:bool = gt %23, 10i
+                if %24 [t: %b9, f: %b10] {  # if_1
+                  %b9 = block {  # true
+                    exit_if  # if_1
+                  }
+                  %b10 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %25:i32 = load %x_21
+                %x_22:i32 = sub %25, 1i
+                store %x_19, %x_22
+                %27:ptr<function, i32, read_write> = access %x_24, %x_22
+                %28:i32 = load %27
+                %29:bool = eq %28, 1i
+                if %29 [t: %b11] {  # if_2
+                  %b11 = block {  # true
+                    store %x_68, true
+                    store %x_17, 1i
+                    store %x_25, 1i
+                    store %x_93, true
+                    exit_loop  # loop_3
+                  }
+                }
+                store %x_18, %x_22
+                continue %b8
+              }
+              %b8 = block {  # continuing
+                store %x_21, %x_22
+                next_iteration %b7
+              }
+            }
+            %30:i32 = load %x_25
+            store %x_26, %30
+            %31:bool = load %x_93
+            if %31 [t: %b12] {  # if_3
+              %b12 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            store %x_68, true
+            store %x_17, -1i
+            store %x_26, -1i
+            exit_loop  # loop_2
+          }
+          %b6 = block {  # continuing
+            store %x_79, false
+            next_iteration %b5
+          }
+        }
+        %32:i32 = load %x_26
+        store %x_20, %32
+        %33:i32 = load %x_26
+        %34:bool = eq %33, -1i
+        if %34 [t: %b13, f: %b14] {  # if_4
+          %b13 = block {  # true
+            discard
+            exit_if  # if_4
+          }
+          %b14 = block {  # false
+            store %x_GLF_color, vec4<f32>(0.0f)
+            %35:f32 = access %x_76, 0u
+            %36:vec2<f32> = swizzle %x_76, yz
+            %37:vec2<f32> = add %36, vec2<f32>(1.0f)
+            %38:vec2<f32> = swizzle %37, xy
+            %39:vec3<f32> = construct %35, %38
+            store %x_101, %39
+            %40:vec3<f32> = load %x_101
+            store %color, %40
+            %41:ptr<uniform, vec2<f32>, read> = access %x_11, 0u
+            %42:f32 = load_vector_element %41, 0u
+            %43:bool = gt %42, 1.0f
+            if %43 [t: %b15] {  # if_5
+              %b15 = block {  # true
+                store %x_69, true
+                exit_loop  # loop_1
+              }
+            }
+            exit_if  # if_4
+          }
+        }
+        %44:f32 = load_vector_element %x_101, 0u
+        %45:f32 = load_vector_element %x_101, 1u
+        %46:f32 = load_vector_element %x_101, 2u
+        %47:vec4<f32> = construct %44, %45, %46, 1.0f
+        store %x_GLF_color, %47
+        store %x_69, true
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b16 {
+  %b16 = block {
+    %49:void = call %main_1
+    %50:vec4<f32> = load %x_GLF_color
+    %51:main_out = construct %50
+    ret %51
+  }
+}
+%binarySearch_struct_tmp_struct_i1_1_1_ = func(%obj:ptr<function, tmp_struct, read_write>):i32 -> %b17 {
+  %b17 = block {
+    %x_112:ptr<function, bool, read_write> = var, false
+    %x_16:ptr<function, i32, read_write> = var
+    %one:ptr<function, i32, read_write> = var
+    %zero:ptr<function, i32, read_write> = var
+    %x_114:ptr<function, bool, read_write> = var
+    %x_27:ptr<function, i32, read_write> = var
+    %x_28:ptr<function, i32, read_write> = var
+    store %x_114, false
+    loop [b: %b18, c: %b19] {  # loop_4
+      %b18 = block {  # body
+        %x_15:ptr<function, i32, read_write> = var
+        %x_128:ptr<function, bool, read_write> = var
+        store %one, 1i
+        store %x_15, 1i
+        loop [b: %b20, c: %b21] {  # loop_5
+          %b20 = block {  # body
+            store %x_27, 0i
+            %63:bool = load %x_114
+            store %x_128, %63
+            %64:i32 = load %x_15
+            %65:bool = gt %64, 10i
+            if %65 [t: %b22, f: %b23] {  # if_6
+              %b22 = block {  # true
+                exit_if  # if_6
+              }
+              %b23 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %66:i32 = load %x_15
+            %x_13:i32 = sub %66, 1i
+            store %zero, %x_13
+            %68:ptr<function, i32, read_write> = access %obj, 0u, %x_13
+            %69:i32 = load %68
+            %70:bool = eq %69, 1i
+            if %70 [t: %b24] {  # if_7
+              %b24 = block {  # true
+                store %x_112, true
+                store %x_16, 1i
+                store %x_27, 1i
+                store %x_128, true
+                exit_loop  # loop_5
+              }
+            }
+            store %one, %x_13
+            continue %b21
+          }
+          %b21 = block {  # continuing
+            store %x_15, %x_13
+            next_iteration %b20
+          }
+        }
+        %71:i32 = load %x_27
+        store %x_28, %71
+        %72:bool = load %x_128
+        if %72 [t: %b25] {  # if_8
+          %b25 = block {  # true
+            exit_loop  # loop_4
+          }
+        }
+        store %x_112, true
+        store %x_16, -1i
+        store %x_28, -1i
+        exit_loop  # loop_4
+      }
+      %b19 = block {  # continuing
+        store %x_114, false
+        next_iteration %b18
+      }
+    }
+    %73:i32 = load %x_28
+    ret %73
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5bc8e15
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,250 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+tmp_struct = struct @align(4) {
+  nmb:array<i32, 1> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_11:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_24:ptr<function, array<i32, 1>, read_write> = var
+    %x_68:ptr<function, bool, read_write> = var, false
+    %x_17:ptr<function, i32, read_write> = var
+    %x_18:ptr<function, i32, read_write> = var
+    %x_19:ptr<function, i32, read_write> = var
+    %x_20:ptr<function, i32, read_write> = var
+    %x_69:ptr<function, bool, read_write> = var, false
+    %tmp_float:ptr<function, f32, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_25:ptr<function, i32, read_write> = var
+        %x_101:ptr<function, vec3<f32>, read_write> = var
+        %x_79_phi:ptr<function, bool, read_write> = var
+        %x_26_phi:ptr<function, i32, read_write> = var
+        %17:ptr<uniform, vec2<f32>, read> = access %x_11, 0u
+        %x_75:f32 = load_vector_element %17, 1u
+        store %tmp_float, %x_75
+        %x_76:vec3<f32> = construct %x_75, %x_75, %x_75
+        store %color, %x_76
+        store %x_24, array<i32, 1>(0i)
+        store %x_68, false
+        store %x_79_phi, false
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %x_21_phi:ptr<function, i32, read_write> = var
+            %x_25_phi:ptr<function, i32, read_write> = var
+            %x_93_phi:ptr<function, bool, read_write> = var
+            %x_79:bool = load %x_79_phi
+            store %x_18, 1i
+            store %x_21_phi, 1i
+            loop [b: %b7, c: %b8] {  # loop_3
+              %b7 = block {  # body
+                %x_21:i32 = load %x_21_phi
+                store %x_25_phi, 0i
+                store %x_93_phi, %x_79
+                %25:bool = gt %x_21, 10i
+                if %25 [t: %b9, f: %b10] {  # if_1
+                  %b9 = block {  # true
+                    exit_if  # if_1
+                  }
+                  %b10 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %x_22:i32 = sub %x_21, 1i
+                store %x_19, %x_22
+                %27:ptr<function, i32, read_write> = access %x_24, %x_22
+                %x_23:i32 = load %27
+                %29:bool = eq %x_23, 1i
+                if %29 [t: %b11] {  # if_2
+                  %b11 = block {  # true
+                    store %x_68, true
+                    store %x_17, 1i
+                    store %x_25_phi, 1i
+                    store %x_93_phi, true
+                    exit_loop  # loop_3
+                  }
+                }
+                store %x_18, %x_22
+                continue %b8
+              }
+              %b8 = block {  # continuing
+                store %x_21_phi, %x_22
+                next_iteration %b7
+              }
+            }
+            %30:i32 = load %x_25_phi
+            store %x_25, %30
+            %x_93:bool = load %x_93_phi
+            %32:i32 = load %x_25
+            store %x_26_phi, %32
+            if %x_93 [t: %b12] {  # if_3
+              %b12 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            store %x_68, true
+            store %x_17, -1i
+            store %x_26_phi, -1i
+            exit_loop  # loop_2
+          }
+          %b6 = block {  # continuing
+            store %x_79_phi, false
+            next_iteration %b5
+          }
+        }
+        %x_26:i32 = load %x_26_phi
+        store %x_20, %x_26
+        %34:bool = eq %x_26, -1i
+        if %34 [t: %b13, f: %b14] {  # if_4
+          %b13 = block {  # true
+            discard
+            exit_if  # if_4
+          }
+          %b14 = block {  # false
+            store %x_GLF_color, vec4<f32>(0.0f)
+            %35:f32 = access %x_76, 1u
+            %36:f32 = access %x_76, 2u
+            %37:vec2<f32> = construct %35, %36
+            %x_100:vec2<f32> = add %37, vec2<f32>(1.0f)
+            %39:f32 = access %x_76, 0u
+            %40:f32 = access %x_100, 0u
+            %41:f32 = access %x_100, 1u
+            %42:vec3<f32> = construct %39, %40, %41
+            store %x_101, %42
+            %43:vec3<f32> = load %x_101
+            store %color, %43
+            %44:ptr<uniform, vec2<f32>, read> = access %x_11, 0u
+            %x_103:f32 = load_vector_element %44, 0u
+            %46:bool = gt %x_103, 1.0f
+            if %46 [t: %b15] {  # if_5
+              %b15 = block {  # true
+                store %x_69, true
+                exit_loop  # loop_1
+              }
+            }
+            exit_if  # if_4
+          }
+        }
+        %47:f32 = load_vector_element %x_101, 0u
+        %48:f32 = load_vector_element %x_101, 1u
+        %49:f32 = load_vector_element %x_101, 2u
+        %50:vec4<f32> = construct %47, %48, %49, 1.0f
+        store %x_GLF_color, %50
+        store %x_69, true
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b16 {
+  %b16 = block {
+    %52:void = call %main_1
+    %53:vec4<f32> = load %x_GLF_color
+    %54:main_out = construct %53
+    ret %54
+  }
+}
+%binarySearch_struct_tmp_struct_i1_1_1_ = func(%obj:ptr<function, tmp_struct, read_write>):i32 -> %b17 {
+  %b17 = block {
+    %x_112:ptr<function, bool, read_write> = var, false
+    %x_16:ptr<function, i32, read_write> = var
+    %one:ptr<function, i32, read_write> = var
+    %zero:ptr<function, i32, read_write> = var
+    %x_27:ptr<function, i32, read_write> = var
+    %x_114_phi:ptr<function, bool, read_write> = var
+    %x_28_phi:ptr<function, i32, read_write> = var
+    store %x_114_phi, false
+    loop [b: %b18, c: %b19] {  # loop_4
+      %b18 = block {  # body
+        %x_15_phi:ptr<function, i32, read_write> = var
+        %x_27_phi:ptr<function, i32, read_write> = var
+        %x_128_phi:ptr<function, bool, read_write> = var
+        %x_114:bool = load %x_114_phi
+        store %one, 1i
+        store %x_15_phi, 1i
+        loop [b: %b20, c: %b21] {  # loop_5
+          %b20 = block {  # body
+            %x_15:i32 = load %x_15_phi
+            store %x_27_phi, 0i
+            store %x_128_phi, %x_114
+            %69:bool = gt %x_15, 10i
+            if %69 [t: %b22, f: %b23] {  # if_6
+              %b22 = block {  # true
+                exit_if  # if_6
+              }
+              %b23 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %x_13:i32 = sub %x_15, 1i
+            store %zero, %x_13
+            %71:ptr<function, i32, read_write> = access %obj, 0u, %x_13
+            %x_14:i32 = load %71
+            %73:bool = eq %x_14, 1i
+            if %73 [t: %b24] {  # if_7
+              %b24 = block {  # true
+                store %x_112, true
+                store %x_16, 1i
+                store %x_27_phi, 1i
+                store %x_128_phi, true
+                exit_loop  # loop_5
+              }
+            }
+            store %one, %x_13
+            continue %b21
+          }
+          %b21 = block {  # continuing
+            store %x_15_phi, %x_13
+            next_iteration %b20
+          }
+        }
+        %74:i32 = load %x_27_phi
+        store %x_27, %74
+        %x_128:bool = load %x_128_phi
+        %76:i32 = load %x_27
+        store %x_28_phi, %76
+        if %x_128 [t: %b25] {  # if_8
+          %b25 = block {  # true
+            exit_loop  # loop_4
+          }
+        }
+        store %x_112, true
+        store %x_16, -1i
+        store %x_28_phi, -1i
+        exit_loop  # loop_4
+      }
+      %b19 = block {  # continuing
+        store %x_114_phi, false
+        next_iteration %b18
+      }
+    }
+    %x_28:i32 = load %x_28_phi
+    ret %x_28
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..3398f27
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,294 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_30:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %8:i32 = load %i
+    %9:ptr<private, i32, read_write> = access %obj, 0u, %8
+    %10:i32 = load %9
+    store %temp, %10
+    %x_95:i32 = load %i
+    %12:ptr<private, i32, read_write> = access %obj, 0u, %x_95
+    %13:i32 = load %j
+    %14:ptr<private, i32, read_write> = access %obj, 0u, %13
+    %15:i32 = load %14
+    store %12, %15
+    %x_100:i32 = load %j
+    %17:ptr<private, i32, read_write> = access %obj, 0u, %x_100
+    %18:i32 = load %temp
+    store %17, %18
+    ret
+  }
+}
+%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %pivot:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %29:i32 = load %h
+    %30:ptr<private, i32, read_write> = access %obj, 0u, %29
+    %31:i32 = load %30
+    store %pivot, %31
+    %32:i32 = load %l
+    %33:i32 = sub %32, 1i
+    store %i_1, %33
+    %34:i32 = load %l
+    store %j_1, %34
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %35:i32 = load %j_1
+        %36:i32 = load %h
+        %37:i32 = sub %36, 1i
+        %38:bool = lte %35, %37
+        if %38 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %39:i32 = load %j_1
+        %40:ptr<private, i32, read_write> = access %obj, 0u, %39
+        %41:i32 = load %40
+        %42:i32 = load %pivot
+        %43:bool = lte %41, %42
+        if %43 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            %44:i32 = load %i_1
+            %45:i32 = add %44, 1i
+            store %i_1, %45
+            %46:i32 = load %i_1
+            store %param, %46
+            %47:i32 = load %j_1
+            store %param_1, %47
+            %48:void = call %swap_i1_i1_, %param, %param_1
+            exit_if  # if_2
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %49:i32 = load %j_1
+        %50:i32 = add %49, 1i
+        store %j_1, %50
+        next_iteration %b4
+      }
+    }
+    %51:i32 = load %i_1
+    %52:i32 = add %51, 1i
+    store %param_2, %52
+    %53:i32 = load %h
+    store %param_3, %53
+    %54:void = call %swap_i1_i1_, %param_2, %param_3
+    %x_137:i32 = load %i_1
+    %56:i32 = add %x_137, 1i
+    ret %56
+  }
+}
+%quicksort_ = func():void -> %b9 {
+  %b9 = block {
+    %l_1:ptr<function, i32, read_write> = var
+    %h_1:ptr<function, i32, read_write> = var
+    %top:ptr<function, i32, read_write> = var
+    %stack:ptr<function, array<i32, 10>, read_write> = var
+    %p:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    store %l_1, 0i
+    store %h_1, 9i
+    store %top, -1i
+    %65:i32 = load %top
+    %x_141:i32 = add %65, 1i
+    store %top, %x_141
+    %67:ptr<function, i32, read_write> = access %stack, %x_141
+    %68:i32 = load %l_1
+    store %67, %68
+    %69:i32 = load %top
+    %x_145:i32 = add %69, 1i
+    store %top, %x_145
+    %71:ptr<function, i32, read_write> = access %stack, %x_145
+    %72:i32 = load %h_1
+    store %71, %72
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %73:i32 = load %top
+        %74:bool = gte %73, 0i
+        if %74 [t: %b12, f: %b13] {  # if_3
+          %b12 = block {  # true
+            exit_if  # if_3
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_155:i32 = load %top
+        %76:i32 = load %top
+        %77:i32 = sub %76, 1i
+        store %top, %77
+        %78:ptr<function, i32, read_write> = access %stack, %x_155
+        %79:i32 = load %78
+        store %h_1, %79
+        %x_159:i32 = load %top
+        %81:i32 = load %top
+        %82:i32 = sub %81, 1i
+        store %top, %82
+        %83:ptr<function, i32, read_write> = access %stack, %x_159
+        %84:i32 = load %83
+        store %l_1, %84
+        %85:i32 = load %l_1
+        store %param_4, %85
+        %86:i32 = load %h_1
+        store %param_5, %86
+        %x_165:i32 = call %performPartition_i1_i1_, %param_4, %param_5
+        store %p, %x_165
+        %88:i32 = load %p
+        %89:i32 = sub %88, 1i
+        %90:i32 = load %l_1
+        %91:bool = gt %89, %90
+        if %91 [t: %b14] {  # if_4
+          %b14 = block {  # true
+            %92:i32 = load %top
+            %x_173:i32 = add %92, 1i
+            store %top, %x_173
+            %94:ptr<function, i32, read_write> = access %stack, %x_173
+            %95:i32 = load %l_1
+            store %94, %95
+            %96:i32 = load %top
+            %x_177:i32 = add %96, 1i
+            store %top, %x_177
+            %98:ptr<function, i32, read_write> = access %stack, %x_177
+            %99:i32 = load %p
+            %100:i32 = sub %99, 1i
+            store %98, %100
+            exit_if  # if_4
+          }
+        }
+        %101:i32 = load %p
+        %102:i32 = add %101, 1i
+        %103:i32 = load %h_1
+        %104:bool = lt %102, %103
+        if %104 [t: %b15] {  # if_5
+          %b15 = block {  # true
+            %105:i32 = load %top
+            %x_188:i32 = add %105, 1i
+            store %top, %x_188
+            %107:ptr<function, i32, read_write> = access %stack, %x_188
+            %108:i32 = load %p
+            %109:i32 = add %108, 1i
+            store %107, %109
+            %110:i32 = load %top
+            %x_193:i32 = add %110, 1i
+            store %top, %x_193
+            %112:ptr<function, i32, read_write> = access %stack, %x_193
+            %113:i32 = load %h_1
+            store %112, %113
+            exit_if  # if_5
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        next_iteration %b10
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b16 {
+  %b16 = block {
+    %i_2:ptr<function, i32, read_write> = var
+    store %i_2, 0i
+    loop [b: %b17, c: %b18] {  # loop_3
+      %b17 = block {  # body
+        %116:i32 = load %i_2
+        %117:bool = lt %116, 10i
+        if %117 [t: %b19, f: %b20] {  # if_6
+          %b19 = block {  # true
+            exit_if  # if_6
+          }
+          %b20 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_67:i32 = load %i_2
+        %119:ptr<private, i32, read_write> = access %obj, 0u, %x_67
+        %120:i32 = load %i_2
+        %121:i32 = sub 10i, %120
+        store %119, %121
+        %x_71:i32 = load %i_2
+        %123:ptr<private, i32, read_write> = access %obj, 0u, %x_71
+        %124:i32 = load %i_2
+        %125:ptr<private, i32, read_write> = access %obj, 0u, %124
+        %126:i32 = load %125
+        %127:i32 = load %i_2
+        %128:ptr<private, i32, read_write> = access %obj, 0u, %127
+        %129:i32 = load %128
+        %130:i32 = mul %126, %129
+        store %123, %130
+        continue %b18
+      }
+      %b18 = block {  # continuing
+        %131:i32 = load %i_2
+        %132:i32 = add %131, 1i
+        store %i_2, %132
+        next_iteration %b17
+      }
+    }
+    %133:void = call %quicksort_
+    %134:ptr<private, i32, read_write> = access %obj, 0u, 0i
+    %135:i32 = load %134
+    %136:ptr<private, i32, read_write> = access %obj, 0u, 4i
+    %137:i32 = load %136
+    %138:bool = lt %135, %137
+    if %138 [t: %b21, f: %b22] {  # if_7
+      %b21 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_7
+      }
+      %b22 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f)
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b23 {
+  %b23 = block {
+    %140:void = call %main_1
+    %141:vec4<f32> = load %x_GLF_color
+    %142:main_out = construct %141
+    ret %142
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c08d3e0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,292 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_30:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %x_92:i32 = load %i
+    %9:ptr<private, i32, read_write> = access %obj, 0u, %x_92
+    %x_94:i32 = load %9
+    store %temp, %x_94
+    %x_95:i32 = load %i
+    %x_96:i32 = load %j
+    %13:ptr<private, i32, read_write> = access %obj, 0u, %x_96
+    %x_98:i32 = load %13
+    %15:ptr<private, i32, read_write> = access %obj, 0u, %x_95
+    store %15, %x_98
+    %x_100:i32 = load %j
+    %x_101:i32 = load %temp
+    %18:ptr<private, i32, read_write> = access %obj, 0u, %x_100
+    store %18, %x_101
+    ret
+  }
+}
+%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %pivot:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %x_104:i32 = load %h
+    %30:ptr<private, i32, read_write> = access %obj, 0u, %x_104
+    %x_106:i32 = load %30
+    store %pivot, %x_106
+    %x_107:i32 = load %l
+    %33:i32 = sub %x_107, 1i
+    store %i_1, %33
+    %x_109:i32 = load %l
+    store %j_1, %x_109
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %x_114:i32 = load %j_1
+        %x_115:i32 = load %h
+        %37:i32 = sub %x_115, 1i
+        %38:bool = lte %x_114, %37
+        if %38 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_119:i32 = load %j_1
+        %40:ptr<private, i32, read_write> = access %obj, 0u, %x_119
+        %x_121:i32 = load %40
+        %x_122:i32 = load %pivot
+        %43:bool = lte %x_121, %x_122
+        if %43 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            %x_126:i32 = load %i_1
+            %45:i32 = add %x_126, 1i
+            store %i_1, %45
+            %x_128:i32 = load %i_1
+            store %param, %x_128
+            %x_129:i32 = load %j_1
+            store %param_1, %x_129
+            %48:void = call %swap_i1_i1_, %param, %param_1
+            exit_if  # if_2
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %x_131:i32 = load %j_1
+        %50:i32 = add %x_131, 1i
+        store %j_1, %50
+        next_iteration %b4
+      }
+    }
+    %x_133:i32 = load %i_1
+    %52:i32 = add %x_133, 1i
+    store %param_2, %52
+    %x_135:i32 = load %h
+    store %param_3, %x_135
+    %54:void = call %swap_i1_i1_, %param_2, %param_3
+    %x_137:i32 = load %i_1
+    %56:i32 = add %x_137, 1i
+    ret %56
+  }
+}
+%quicksort_ = func():void -> %b9 {
+  %b9 = block {
+    %l_1:ptr<function, i32, read_write> = var
+    %h_1:ptr<function, i32, read_write> = var
+    %top:ptr<function, i32, read_write> = var
+    %stack:ptr<function, array<i32, 10>, read_write> = var
+    %p:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    store %l_1, 0i
+    store %h_1, 9i
+    store %top, -1i
+    %x_140:i32 = load %top
+    %x_141:i32 = add %x_140, 1i
+    store %top, %x_141
+    %x_142:i32 = load %l_1
+    %68:ptr<function, i32, read_write> = access %stack, %x_141
+    store %68, %x_142
+    %x_144:i32 = load %top
+    %x_145:i32 = add %x_144, 1i
+    store %top, %x_145
+    %x_146:i32 = load %h_1
+    %72:ptr<function, i32, read_write> = access %stack, %x_145
+    store %72, %x_146
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %x_152:i32 = load %top
+        %74:bool = gte %x_152, 0i
+        if %74 [t: %b12, f: %b13] {  # if_3
+          %b12 = block {  # true
+            exit_if  # if_3
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_155:i32 = load %top
+        %76:i32 = sub %x_155, 1i
+        store %top, %76
+        %77:ptr<function, i32, read_write> = access %stack, %x_155
+        %x_158:i32 = load %77
+        store %h_1, %x_158
+        %x_159:i32 = load %top
+        %80:i32 = sub %x_159, 1i
+        store %top, %80
+        %81:ptr<function, i32, read_write> = access %stack, %x_159
+        %x_162:i32 = load %81
+        store %l_1, %x_162
+        %x_163:i32 = load %l_1
+        store %param_4, %x_163
+        %x_164:i32 = load %h_1
+        store %param_5, %x_164
+        %x_165:i32 = call %performPartition_i1_i1_, %param_4, %param_5
+        store %p, %x_165
+        %x_166:i32 = load %p
+        %x_168:i32 = load %l_1
+        %88:i32 = sub %x_166, 1i
+        %89:bool = gt %88, %x_168
+        if %89 [t: %b14] {  # if_4
+          %b14 = block {  # true
+            %x_172:i32 = load %top
+            %x_173:i32 = add %x_172, 1i
+            store %top, %x_173
+            %x_174:i32 = load %l_1
+            %93:ptr<function, i32, read_write> = access %stack, %x_173
+            store %93, %x_174
+            %x_176:i32 = load %top
+            %x_177:i32 = add %x_176, 1i
+            store %top, %x_177
+            %x_178:i32 = load %p
+            %97:ptr<function, i32, read_write> = access %stack, %x_177
+            %98:i32 = sub %x_178, 1i
+            store %97, %98
+            exit_if  # if_4
+          }
+        }
+        %x_181:i32 = load %p
+        %x_183:i32 = load %h_1
+        %101:i32 = add %x_181, 1i
+        %102:bool = lt %101, %x_183
+        if %102 [t: %b15] {  # if_5
+          %b15 = block {  # true
+            %x_187:i32 = load %top
+            %x_188:i32 = add %x_187, 1i
+            store %top, %x_188
+            %x_189:i32 = load %p
+            %106:ptr<function, i32, read_write> = access %stack, %x_188
+            %107:i32 = add %x_189, 1i
+            store %106, %107
+            %x_192:i32 = load %top
+            %x_193:i32 = add %x_192, 1i
+            store %top, %x_193
+            %x_194:i32 = load %h_1
+            %111:ptr<function, i32, read_write> = access %stack, %x_193
+            store %111, %x_194
+            exit_if  # if_5
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        next_iteration %b10
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b16 {
+  %b16 = block {
+    %i_2:ptr<function, i32, read_write> = var
+    store %i_2, 0i
+    loop [b: %b17, c: %b18] {  # loop_3
+      %b17 = block {  # body
+        %x_64:i32 = load %i_2
+        %115:bool = lt %x_64, 10i
+        if %115 [t: %b19, f: %b20] {  # if_6
+          %b19 = block {  # true
+            exit_if  # if_6
+          }
+          %b20 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_67:i32 = load %i_2
+        %x_68:i32 = load %i_2
+        %118:ptr<private, i32, read_write> = access %obj, 0u, %x_67
+        %119:i32 = sub 10i, %x_68
+        store %118, %119
+        %x_71:i32 = load %i_2
+        %x_72:i32 = load %i_2
+        %122:ptr<private, i32, read_write> = access %obj, 0u, %x_72
+        %x_74:i32 = load %122
+        %x_75:i32 = load %i_2
+        %125:ptr<private, i32, read_write> = access %obj, 0u, %x_75
+        %x_77:i32 = load %125
+        %127:ptr<private, i32, read_write> = access %obj, 0u, %x_71
+        %128:i32 = mul %x_74, %x_77
+        store %127, %128
+        continue %b18
+      }
+      %b18 = block {  # continuing
+        %x_80:i32 = load %i_2
+        %130:i32 = add %x_80, 1i
+        store %i_2, %130
+        next_iteration %b17
+      }
+    }
+    %131:void = call %quicksort_
+    %132:ptr<private, i32, read_write> = access %obj, 0u, 0i
+    %x_84:i32 = load %132
+    %134:ptr<private, i32, read_write> = access %obj, 0u, 4i
+    %x_86:i32 = load %134
+    %136:bool = lt %x_84, %x_86
+    if %136 [t: %b21, f: %b22] {  # if_7
+      %b21 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_7
+      }
+      %b22 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f)
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b23 {
+  %b23 = block {
+    %138:void = call %main_1
+    %139:vec4<f32> = load %x_GLF_color
+    %140:main_out = construct %139
+    ret %140
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..42dd95e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,180 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():f32 -> %b2 {
+  %b2 = block {
+    %x:ptr<function, i32, read_write> = var
+    %6:f32 = load_vector_element %gl_FragCoord, 0u
+    %7:bool = lt %6, 1.0f
+    if %7 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret 5.0f
+      }
+    }
+    %8:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %9:f32 = load_vector_element %8, 0u
+    %10:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %11:f32 = load_vector_element %10, 1u
+    %12:bool = gt %9, %11
+    if %12 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        ret 1.0f
+      }
+    }
+    %13:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %14:f32 = load_vector_element %13, 0u
+    %15:i32 = convert %14
+    store %x, %15
+    %16:i32 = load %x
+    %17:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %18:f32 = load_vector_element %17, 0u
+    %19:f32 = clamp %18, 0.0f, 1.0f
+    %20:i32 = convert %19
+    %21:i32 = mul %20, 3i
+    %22:i32 = add %16, %21
+    store %x, %22
+    %x_120:i32 = load %x
+    %24:f32 = convert %x_120
+    %25:f32 = add 5.0f, %24
+    ret %25
+  }
+}
+%main_1 = func():void -> %b5 {
+  %b5 = block {
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %data:ptr<function, array<vec2<f32>, 17>, read_write> = var
+    store %i, 0i
+    loop [b: %b6, c: %b7] {  # loop_1
+      %b6 = block {  # body
+        %30:i32 = load %i
+        %31:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+        %32:f32 = load_vector_element %31, 0u
+        %33:i32 = convert %32
+        %34:i32 = add 4i, %33
+        %35:bool = lt %30, %34
+        if %35 [t: %b8, f: %b9] {  # if_3
+          %b8 = block {  # true
+            exit_if  # if_3
+          }
+          %b9 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %36:f32 = load_vector_element %gl_FragCoord, 0u
+        %37:bool = gte %36, 0.0f
+        if %37 [t: %b10] {  # if_4
+          %b10 = block {  # true
+            store %j, 0i
+            loop [b: %b11, c: %b12] {  # loop_2
+              %b11 = block {  # body
+                %x_81:ptr<function, bool, read_write> = var
+                %x_82:ptr<function, bool, read_write> = var
+                %40:i32 = load %j
+                %41:bool = lt %40, 4i
+                if %41 [t: %b13, f: %b14] {  # if_5
+                  %b13 = block {  # true
+                    exit_if  # if_5
+                  }
+                  %b14 = block {  # false
+                    exit_loop  # loop_2
+                  }
+                }
+                %x_67:i32 = load %j
+                %x_69:i32 = load %i
+                %x_71:f32 = call %func_
+                %45:i32 = mul 4i, %x_67
+                %46:i32 = add %45, %x_69
+                %47:ptr<function, vec2<f32>, read_write> = access %data, %46
+                store_vector_element %47, 0u, %x_71
+                %48:ptr<function, vec2<f32>, read_write> = access %data, 0i
+                %49:f32 = load_vector_element %48, 0u
+                %x_75:bool = eq %49, 5.0f
+                store %x_82, %x_75
+                %51:bool = eq %x_75, false
+                if %51 [t: %b15] {  # if_6
+                  %b15 = block {  # true
+                    %52:ptr<function, vec2<f32>, read_write> = access %data, 15i
+                    %53:f32 = load_vector_element %52, 0u
+                    %54:bool = eq %53, 5.0f
+                    store %x_81, %54
+                    %55:bool = load %x_81
+                    store %x_82, %55
+                    exit_if  # if_6
+                  }
+                }
+                %56:bool = load %x_82
+                if %56 [t: %b16, f: %b17] {  # if_7
+                  %b16 = block {  # true
+                    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+                    exit_if  # if_7
+                  }
+                  %b17 = block {  # false
+                    store %x_GLF_color, vec4<f32>(0.0f)
+                    exit_if  # if_7
+                  }
+                }
+                %57:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+                %58:f32 = load_vector_element %57, 0u
+                %59:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+                %60:f32 = load_vector_element %59, 1u
+                %61:bool = gt %58, %60
+                if %61 [t: %b18] {  # if_8
+                  %b18 = block {  # true
+                    ret
+                  }
+                }
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %62:i32 = load %j
+                %63:i32 = add %62, 1i
+                store %j, %63
+                next_iteration %b11
+              }
+            }
+            exit_if  # if_4
+          }
+        }
+        continue %b7
+      }
+      %b7 = block {  # continuing
+        %64:i32 = load %i
+        %65:i32 = add %64, 1i
+        store %i, %65
+        next_iteration %b6
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b19 {
+  %b19 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %68:void = call %main_1
+    %69:vec4<f32> = load %x_GLF_color
+    %70:main_out = construct %69
+    ret %70
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..59880b5
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,180 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():f32 -> %b2 {
+  %b2 = block {
+    %x:ptr<function, i32, read_write> = var
+    %x_99:f32 = load_vector_element %gl_FragCoord, 0u
+    %7:bool = lt %x_99, 1.0f
+    if %7 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret 5.0f
+      }
+    }
+    %8:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %x_104:f32 = load_vector_element %8, 0u
+    %10:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %x_106:f32 = load_vector_element %10, 1u
+    %12:bool = gt %x_104, %x_106
+    if %12 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        ret 1.0f
+      }
+    }
+    %13:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %x_111:f32 = load_vector_element %13, 0u
+    %15:i32 = convert %x_111
+    store %x, %15
+    %16:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %x_114:f32 = load_vector_element %16, 0u
+    %x_118:i32 = load %x
+    %19:f32 = clamp %x_114, 0.0f, 1.0f
+    %20:i32 = convert %19
+    %21:i32 = mul %20, 3i
+    %22:i32 = add %x_118, %21
+    store %x, %22
+    %x_120:i32 = load %x
+    %24:f32 = convert %x_120
+    %25:f32 = add 5.0f, %24
+    ret %25
+  }
+}
+%main_1 = func():void -> %b5 {
+  %b5 = block {
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %data:ptr<function, array<vec2<f32>, 17>, read_write> = var
+    store %i, 0i
+    loop [b: %b6, c: %b7] {  # loop_1
+      %b6 = block {  # body
+        %x_48:i32 = load %i
+        %31:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+        %x_50:f32 = load_vector_element %31, 0u
+        %33:i32 = convert %x_50
+        %34:i32 = add 4i, %33
+        %35:bool = lt %x_48, %34
+        if %35 [t: %b8, f: %b9] {  # if_3
+          %b8 = block {  # true
+            exit_if  # if_3
+          }
+          %b9 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_56:f32 = load_vector_element %gl_FragCoord, 0u
+        %37:bool = gte %x_56, 0.0f
+        if %37 [t: %b10] {  # if_4
+          %b10 = block {  # true
+            store %j, 0i
+            loop [b: %b11, c: %b12] {  # loop_2
+              %b11 = block {  # body
+                %x_81:ptr<function, bool, read_write> = var
+                %x_82_phi:ptr<function, bool, read_write> = var
+                %x_64:i32 = load %j
+                %41:bool = lt %x_64, 4i
+                if %41 [t: %b13, f: %b14] {  # if_5
+                  %b13 = block {  # true
+                    exit_if  # if_5
+                  }
+                  %b14 = block {  # false
+                    exit_loop  # loop_2
+                  }
+                }
+                %x_67:i32 = load %j
+                %x_69:i32 = load %i
+                %x_71:f32 = call %func_
+                %45:i32 = mul 4i, %x_67
+                %46:i32 = add %45, %x_69
+                %47:ptr<function, vec2<f32>, read_write> = access %data, %46
+                store_vector_element %47, 0u, %x_71
+                %48:ptr<function, vec2<f32>, read_write> = access %data, 0i
+                %x_74:f32 = load_vector_element %48, 0u
+                %x_75:bool = eq %x_74, 5.0f
+                store %x_82_phi, %x_75
+                %51:bool = eq %x_75, false
+                if %51 [t: %b15] {  # if_6
+                  %b15 = block {  # true
+                    %52:ptr<function, vec2<f32>, read_write> = access %data, 15i
+                    %x_80:f32 = load_vector_element %52, 0u
+                    %54:bool = eq %x_80, 5.0f
+                    store %x_81, %54
+                    %55:bool = load %x_81
+                    store %x_82_phi, %55
+                    exit_if  # if_6
+                  }
+                }
+                %x_82:bool = load %x_82_phi
+                if %x_82 [t: %b16, f: %b17] {  # if_7
+                  %b16 = block {  # true
+                    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+                    exit_if  # if_7
+                  }
+                  %b17 = block {  # false
+                    store %x_GLF_color, vec4<f32>(0.0f)
+                    exit_if  # if_7
+                  }
+                }
+                %57:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+                %x_87:f32 = load_vector_element %57, 0u
+                %59:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+                %x_89:f32 = load_vector_element %59, 1u
+                %61:bool = gt %x_87, %x_89
+                if %61 [t: %b18] {  # if_8
+                  %b18 = block {  # true
+                    ret
+                  }
+                }
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %x_93:i32 = load %j
+                %63:i32 = add %x_93, 1i
+                store %j, %63
+                next_iteration %b11
+              }
+            }
+            exit_if  # if_4
+          }
+        }
+        continue %b7
+      }
+      %b7 = block {  # continuing
+        %x_95:i32 = load %i
+        %65:i32 = add %x_95, 1i
+        store %i, %65
+        next_iteration %b6
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b19 {
+  %b19 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %68:void = call %main_1
+    %69:vec4<f32> = load %x_GLF_color
+    %70:main_out = construct %69
+    ret %70
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..a6bf2d8
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %GLF_live12c5:ptr<function, bool, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %5:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+        %6:f32 = load_vector_element %5, 1u
+        %7:bool = lt %6, 0.0f
+        if %7 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            store %GLF_live12c5, false
+            %8:bool = load %GLF_live12c5
+            if %8 [t: %b6, f: %b7] {  # if_2
+              %b6 = block {  # true
+                continue %b4
+              }
+              %b7 = block {  # false
+                continue %b4
+              }
+            }
+            exit_if  # if_1
+          }
+        }
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        break_if true %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %10:void = call %main_1
+    %11:vec4<f32> = load %x_GLF_color
+    %12:main_out = construct %11
+    ret %12
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..67cf7b6
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %GLF_live12c5:ptr<function, bool, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %5:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+        %x_31:f32 = load_vector_element %5, 1u
+        %7:bool = lt %x_31, 0.0f
+        if %7 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            store %GLF_live12c5, false
+            %x_35:bool = load %GLF_live12c5
+            if %x_35 [t: %b6, f: %b7] {  # if_2
+              %b6 = block {  # true
+                continue %b4
+              }
+              %b7 = block {  # false
+                continue %b4
+              }
+            }
+            exit_if  # if_1
+          }
+        }
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        break_if true %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %10:void = call %main_1
+    %11:vec4<f32> = load %x_GLF_color
+    %12:main_out = construct %11
+    ret %12
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..83ac9c4
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,69 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, f32, read> = access %x_6, 0u
+    %5:f32 = load %4
+    %6:bool = gt 1.0f, %5
+    if %6 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        discard
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    store %x_GLF_color, vec4<f32>(0.0f)
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %8:void = call %func_
+        if false [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        next_iteration %b5
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %10:void = call %main_1
+    %11:vec4<f32> = load %x_GLF_color
+    %12:main_out = construct %11
+    ret %12
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6b609e2
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,69 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, f32, read> = access %x_6, 0u
+    %x_28:f32 = load %4
+    %6:bool = gt 1.0f, %x_28
+    if %6 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        discard
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    store %x_GLF_color, vec4<f32>(0.0f)
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %8:void = call %func_
+        if false [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        next_iteration %b5
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %10:void = call %main_1
+    %11:vec4<f32> = load %x_GLF_color
+    %12:main_out = construct %11
+    ret %12
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e4a351b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+    %x_26:f32 = load_vector_element %4, 0u
+    %6:bool = gt %x_26, 1.0f
+    if %6 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+            exit_loop  # loop_1
+          }
+          %b5 = block {  # continuing
+            next_iteration %b4
+          }
+        }
+        ret
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %8:void = call %main_1
+    %9:vec4<f32> = load %x_GLF_color
+    %10:main_out = construct %9
+    ret %10
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..932579f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,83 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %GLF_live6tree:ptr<private, array<i32, 10>, read_write> = var
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%GLF_live6search_ = func():i32 -> %b2 {
+  %b2 = block {
+    %GLF_live6index:ptr<function, i32, read_write> = var
+    %GLF_live6currentNode:ptr<function, i32, read_write> = var
+    store %GLF_live6index, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        if true [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %7:i32 = load %GLF_live6index
+        %8:ptr<private, i32, read_write> = access %GLF_live6tree, %7
+        %9:i32 = load %8
+        store %GLF_live6currentNode, %9
+        %10:i32 = load %GLF_live6currentNode
+        %11:bool = neq %10, 1i
+        if %11 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            ret 1i
+          }
+        }
+        store %GLF_live6index, 1i
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret 1i
+  }
+}
+%main_1 = func():void -> %b8 {
+  %b8 = block {
+    %13:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %14:f32 = load_vector_element %13, 0u
+    %15:bool = gt %14, 1.0f
+    if %15 [t: %b9] {  # if_3
+      %b9 = block {  # true
+        %x_13:i32 = call %GLF_live6search_
+        exit_if  # if_3
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %18:void = call %main_1
+    %19:vec4<f32> = load %x_GLF_color
+    %20:main_out = construct %19
+    ret %20
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2461ede
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,83 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %GLF_live6tree:ptr<private, array<i32, 10>, read_write> = var
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%GLF_live6search_ = func():i32 -> %b2 {
+  %b2 = block {
+    %GLF_live6index:ptr<function, i32, read_write> = var
+    %GLF_live6currentNode:ptr<function, i32, read_write> = var
+    store %GLF_live6index, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        if true [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_10:i32 = load %GLF_live6index
+        %8:ptr<private, i32, read_write> = access %GLF_live6tree, %x_10
+        %x_11:i32 = load %8
+        store %GLF_live6currentNode, %x_11
+        %x_12:i32 = load %GLF_live6currentNode
+        %11:bool = neq %x_12, 1i
+        if %11 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            ret 1i
+          }
+        }
+        store %GLF_live6index, 1i
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret 1i
+  }
+}
+%main_1 = func():void -> %b8 {
+  %b8 = block {
+    %13:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %x_40:f32 = load_vector_element %13, 0u
+    %15:bool = gt %x_40, 1.0f
+    if %15 [t: %b9] {  # if_3
+      %b9 = block {  # true
+        %x_13:i32 = call %GLF_live6search_
+        exit_if  # if_3
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %18:void = call %main_1
+    %19:vec4<f32> = load %x_GLF_color
+    %20:main_out = construct %19
+    ret %20
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..60c4b27
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,512 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_25:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%drawShape_vf2_ = func(%pos:ptr<function, vec2<f32>, read_write>):vec3<f32> -> %b2 {
+  %b2 = block {
+    %c2:ptr<function, bool, read_write> = var
+    %c3:ptr<function, bool, read_write> = var
+    %c4:ptr<function, bool, read_write> = var
+    %c5:ptr<function, bool, read_write> = var
+    %c6:ptr<function, bool, read_write> = var
+    %GLF_live4i:ptr<function, i32, read_write> = var
+    %GLF_live4_looplimiter5:ptr<function, i32, read_write> = var
+    %GLF_live7m42:ptr<function, mat4x2<f32>, read_write> = var
+    %GLF_live7m33:ptr<function, mat3x3<f32>, read_write> = var
+    %GLF_live7cols:ptr<function, i32, read_write> = var
+    %GLF_live7_looplimiter3:ptr<function, i32, read_write> = var
+    %GLF_live7rows:ptr<function, i32, read_write> = var
+    %GLF_live7_looplimiter2:ptr<function, i32, read_write> = var
+    %GLF_live7_looplimiter1:ptr<function, i32, read_write> = var
+    %GLF_live7c:ptr<function, i32, read_write> = var
+    %GLF_live7r:ptr<function, i32, read_write> = var
+    %GLF_live7_looplimiter0:ptr<function, i32, read_write> = var
+    %GLF_live7sum_index:ptr<function, i32, read_write> = var
+    %GLF_live7_looplimiter7:ptr<function, i32, read_write> = var
+    %GLF_live7cols_1:ptr<function, i32, read_write> = var
+    %GLF_live7rows_1:ptr<function, i32, read_write> = var
+    %GLF_live7sums:ptr<function, array<f32, 9>, read_write> = var
+    %GLF_live7c_1:ptr<function, i32, read_write> = var
+    %GLF_live7r_1:ptr<function, i32, read_write> = var
+    %x_180:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, mat3x3<f32>, read_write> = var
+    %32:f32 = load_vector_element %pos, 0u
+    %33:bool = gt %32, 1.0f
+    store %c2, %33
+    %34:bool = load %c2
+    if %34 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret vec3<f32>(1.0f)
+      }
+    }
+    %35:f32 = load_vector_element %pos, 1u
+    %36:bool = lt %35, 1.0f
+    store %c3, %36
+    %37:bool = load %c3
+    if %37 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        ret vec3<f32>(1.0f)
+      }
+    }
+    %38:f32 = load_vector_element %pos, 1u
+    %39:bool = gt %38, 1.0f
+    store %c4, %39
+    %40:bool = load %c4
+    if %40 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        ret vec3<f32>(1.0f)
+      }
+    }
+    %41:f32 = load_vector_element %pos, 0u
+    %42:bool = lt %41, 1.0f
+    store %c5, %42
+    %43:bool = load %c5
+    if %43 [t: %b6] {  # if_4
+      %b6 = block {  # true
+        ret vec3<f32>(1.0f)
+      }
+    }
+    %44:f32 = load_vector_element %pos, 0u
+    %45:f32 = add %44, 1.0f
+    %46:bool = gt %45, 1.0f
+    store %c6, %46
+    %47:bool = load %c6
+    if %47 [t: %b7] {  # if_5
+      %b7 = block {  # true
+        ret vec3<f32>(1.0f)
+      }
+    }
+    store %GLF_live4i, 0i
+    loop [b: %b8, c: %b9] {  # loop_1
+      %b8 = block {  # body
+        %48:i32 = load %GLF_live4i
+        %49:bool = lt %48, 4i
+        if %49 [t: %b10, f: %b11] {  # if_6
+          %b10 = block {  # true
+            exit_if  # if_6
+          }
+          %b11 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %50:i32 = load %GLF_live4_looplimiter5
+        %51:bool = gte %50, 7i
+        if %51 [t: %b12] {  # if_7
+          %b12 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %52:i32 = load %GLF_live4_looplimiter5
+        %53:i32 = add %52, 1i
+        store %GLF_live4_looplimiter5, %53
+        store %GLF_live7m42, mat4x2<f32>(vec2<f32>(1.0f, 0.0f), vec2<f32>(0.0f, 1.0f), vec2<f32>(0.0f), vec2<f32>(1.0f, 0.0f))
+        store %GLF_live7m33, mat3x3<f32>(vec3<f32>(1.0f, 0.0f, 0.0f), vec3<f32>(0.0f, 1.0f, 0.0f), vec3<f32>(0.0f, 0.0f, 1.0f))
+        store %GLF_live7cols, 2i
+        loop [b: %b13, c: %b14] {  # loop_2
+          %b13 = block {  # body
+            %54:i32 = load %GLF_live7cols
+            %55:bool = lt %54, 4i
+            if %55 [t: %b15, f: %b16] {  # if_8
+              %b15 = block {  # true
+                exit_if  # if_8
+              }
+              %b16 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %56:i32 = load %GLF_live7_looplimiter3
+            %57:bool = gte %56, 7i
+            if %57 [t: %b17] {  # if_9
+              %b17 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            %58:i32 = load %GLF_live7_looplimiter3
+            %59:i32 = add %58, 1i
+            store %GLF_live7_looplimiter3, %59
+            store %GLF_live7rows, 2i
+            loop [b: %b18, c: %b19] {  # loop_3
+              %b18 = block {  # body
+                %60:i32 = load %GLF_live7rows
+                %61:bool = lt %60, 4i
+                if %61 [t: %b20, f: %b21] {  # if_10
+                  %b20 = block {  # true
+                    exit_if  # if_10
+                  }
+                  %b21 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %62:i32 = load %GLF_live7_looplimiter2
+                %63:bool = gte %62, 7i
+                if %63 [t: %b22] {  # if_11
+                  %b22 = block {  # true
+                    exit_loop  # loop_3
+                  }
+                }
+                %64:i32 = load %GLF_live7_looplimiter2
+                %65:i32 = add %64, 1i
+                store %GLF_live7_looplimiter2, %65
+                store %GLF_live7_looplimiter1, 0i
+                store %GLF_live7c, 0i
+                loop [b: %b23, c: %b24] {  # loop_4
+                  %b23 = block {  # body
+                    %66:i32 = load %GLF_live7c
+                    %67:bool = lt %66, 3i
+                    if %67 [t: %b25, f: %b26] {  # if_12
+                      %b25 = block {  # true
+                        exit_if  # if_12
+                      }
+                      %b26 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %68:i32 = load %GLF_live7_looplimiter1
+                    %69:bool = gte %68, 7i
+                    if %69 [t: %b27] {  # if_13
+                      %b27 = block {  # true
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %70:i32 = load %GLF_live7_looplimiter1
+                    %71:i32 = add %70, 1i
+                    store %GLF_live7_looplimiter1, %71
+                    store %GLF_live7r, 0i
+                    loop [b: %b28, c: %b29] {  # loop_5
+                      %b28 = block {  # body
+                        %72:i32 = load %GLF_live7r
+                        %73:bool = lt %72, 2i
+                        if %73 [t: %b30, f: %b31] {  # if_14
+                          %b30 = block {  # true
+                            exit_if  # if_14
+                          }
+                          %b31 = block {  # false
+                            exit_loop  # loop_5
+                          }
+                        }
+                        %74:i32 = load %GLF_live7_looplimiter0
+                        %75:bool = gte %74, 7i
+                        if %75 [t: %b32] {  # if_15
+                          %b32 = block {  # true
+                            exit_loop  # loop_5
+                          }
+                        }
+                        %76:i32 = load %GLF_live7_looplimiter0
+                        %77:i32 = add %76, 1i
+                        store %GLF_live7_looplimiter0, %77
+                        %x_59:i32 = load %GLF_live7c
+                        %x_60:i32 = load %GLF_live7c
+                        %x_61:i32 = load %GLF_live7c
+                        %x_62:i32 = load %GLF_live7r
+                        %x_63:i32 = load %GLF_live7r
+                        %x_64:i32 = load %GLF_live7r
+                        %84:bool = gte %x_59, 0i
+                        %85:bool = lt %x_60, 3i
+                        %86:bool = and %84, %85
+                        %87:i32 = select 0i, %x_61, %86
+                        %88:ptr<function, vec3<f32>, read_write> = access %GLF_live7m33, %87
+                        %89:bool = gte %x_62, 0i
+                        %90:bool = lt %x_63, 3i
+                        %91:bool = and %89, %90
+                        %92:i32 = select 0i, %x_64, %91
+                        store_vector_element %88, %92, 1.0f
+                        %93:ptr<uniform, vec2<f32>, read> = access %x_25, 0u
+                        %94:f32 = load_vector_element %93, 1u
+                        %95:bool = gt 0.0f, %94
+                        if %95 [t: %b33, f: %b34] {  # if_16
+                          %b33 = block {  # true
+                            exit_if  # if_16
+                          }
+                          %b34 = block {  # false
+                            %x_65:i32 = load %GLF_live7c
+                            %x_66:i32 = load %GLF_live7c
+                            %x_67:i32 = load %GLF_live7c
+                            %x_68:i32 = load %GLF_live7r
+                            %x_69:i32 = load %GLF_live7r
+                            %x_70:i32 = load %GLF_live7r
+                            %102:bool = gte %x_65, 0i
+                            %103:bool = lt %x_66, 4i
+                            %104:bool = and %102, %103
+                            %105:i32 = select 0i, %x_67, %104
+                            %106:ptr<function, vec2<f32>, read_write> = access %GLF_live7m42, %105
+                            %107:bool = gte %x_68, 0i
+                            %108:bool = lt %x_69, 2i
+                            %109:bool = and %107, %108
+                            %110:i32 = select 0i, %x_70, %109
+                            store_vector_element %106, %110, 1.0f
+                            exit_if  # if_16
+                          }
+                        }
+                        continue %b29
+                      }
+                      %b29 = block {  # continuing
+                        %111:i32 = load %GLF_live7r
+                        %112:i32 = add %111, 1i
+                        store %GLF_live7r, %112
+                        next_iteration %b28
+                      }
+                    }
+                    continue %b24
+                  }
+                  %b24 = block {  # continuing
+                    %113:i32 = load %GLF_live7c
+                    %114:i32 = add %113, 1i
+                    store %GLF_live7c, %114
+                    next_iteration %b23
+                  }
+                }
+                continue %b19
+              }
+              %b19 = block {  # continuing
+                %115:i32 = load %GLF_live7rows
+                %116:i32 = add %115, 1i
+                store %GLF_live7rows, %116
+                next_iteration %b18
+              }
+            }
+            continue %b14
+          }
+          %b14 = block {  # continuing
+            %117:i32 = load %GLF_live7cols
+            %118:i32 = add %117, 1i
+            store %GLF_live7cols, %118
+            next_iteration %b13
+          }
+        }
+        store %GLF_live7sum_index, 0i
+        store %GLF_live7_looplimiter7, 0i
+        store %GLF_live7cols_1, 2i
+        loop [b: %b35, c: %b36] {  # loop_6
+          %b35 = block {  # body
+            %119:i32 = load %GLF_live7cols_1
+            %120:bool = lt %119, 4i
+            if %120 [t: %b37, f: %b38] {  # if_17
+              %b37 = block {  # true
+                exit_if  # if_17
+              }
+              %b38 = block {  # false
+                exit_loop  # loop_6
+              }
+            }
+            %121:i32 = load %GLF_live7_looplimiter7
+            %122:bool = gte %121, 7i
+            if %122 [t: %b39] {  # if_18
+              %b39 = block {  # true
+                exit_loop  # loop_6
+              }
+            }
+            %123:i32 = load %GLF_live7_looplimiter7
+            %124:i32 = add %123, 1i
+            store %GLF_live7_looplimiter7, %124
+            store %GLF_live7rows_1, 2i
+            %x_83:i32 = load %GLF_live7sum_index
+            %x_84:i32 = load %GLF_live7sum_index
+            %x_85:i32 = load %GLF_live7sum_index
+            %128:bool = gte %x_83, 0i
+            %129:bool = lt %x_84, 9i
+            %130:bool = and %128, %129
+            %131:i32 = select 0i, %x_85, %130
+            %132:ptr<function, f32, read_write> = access %GLF_live7sums, %131
+            store %132, 0.0f
+            store %GLF_live7c_1, 0i
+            loop [b: %b40, c: %b41] {  # loop_7
+              %b40 = block {  # body
+                %133:i32 = load %GLF_live7c_1
+                %134:bool = lt %133, 1i
+                if %134 [t: %b42, f: %b43] {  # if_19
+                  %b42 = block {  # true
+                    exit_if  # if_19
+                  }
+                  %b43 = block {  # false
+                    exit_loop  # loop_7
+                  }
+                }
+                store %GLF_live7r_1, 0i
+                loop [b: %b44, c: %b45] {  # loop_8
+                  %b44 = block {  # body
+                    %135:i32 = load %GLF_live7r_1
+                    %136:i32 = load %GLF_live7rows_1
+                    %137:bool = lt %135, %136
+                    if %137 [t: %b46, f: %b47] {  # if_20
+                      %b46 = block {  # true
+                        exit_if  # if_20
+                      }
+                      %b47 = block {  # false
+                        exit_loop  # loop_8
+                      }
+                    }
+                    %138:i32 = load %GLF_live7sum_index
+                    %139:i32 = load %GLF_live7sum_index
+                    %140:bool = gte %139, 0i
+                    %141:i32 = load %GLF_live7sum_index
+                    %142:bool = lt %141, 9i
+                    %143:bool = and %140, %142
+                    %x_310:i32 = select 0i, %138, %143
+                    %145:mat3x3<f32> = load %GLF_live7m33
+                    %x_312:mat3x3<f32> = transpose %145
+                    %147:i32 = load %GLF_live7c_1
+                    %148:bool = lt %147, 3i
+                    if %148 [t: %b48, f: %b49] {  # if_21
+                      %b48 = block {  # true
+                        store %x_180, 1i
+                        exit_if  # if_21
+                      }
+                      %b49 = block {  # false
+                        %149:ptr<uniform, vec2<f32>, read> = access %x_25, 0u
+                        %150:f32 = load_vector_element %149, 0u
+                        %151:i32 = convert %150
+                        store %x_180, %151
+                        exit_if  # if_21
+                      }
+                    }
+                    %x_320:i32 = load %x_180
+                    %x_93:i32 = load %GLF_live7r_1
+                    store %indexable, %x_312
+                    %154:ptr<function, f32, read_write> = access %GLF_live7sums, %x_310
+                    %155:ptr<function, f32, read_write> = access %GLF_live7sums, %x_310
+                    %156:f32 = load %155
+                    %157:ptr<function, vec3<f32>, read_write> = access %indexable, %x_320
+                    %158:bool = lt %x_93, 3i
+                    %159:i32 = select 0i, 1i, %158
+                    %160:f32 = load_vector_element %157, %159
+                    %161:f32 = add %156, %160
+                    store %154, %161
+                    %162:i32 = load %GLF_live7sum_index
+                    %163:i32 = load %GLF_live7sum_index
+                    %164:bool = gte %163, 0i
+                    %165:i32 = load %GLF_live7sum_index
+                    %166:bool = lt %165, 9i
+                    %167:bool = and %164, %166
+                    %x_332:i32 = select 0i, %162, %167
+                    %169:ptr<function, f32, read_write> = access %GLF_live7sums, %x_332
+                    %170:ptr<function, f32, read_write> = access %GLF_live7sums, %x_332
+                    %171:f32 = load %170
+                    %172:ptr<function, vec2<f32>, read_write> = access %GLF_live7m42, 1i
+                    %173:i32 = load %GLF_live7r_1
+                    %174:f32 = load_vector_element %172, %173
+                    %175:f32 = add %171, %174
+                    store %169, %175
+                    continue %b45
+                  }
+                  %b45 = block {  # continuing
+                    %176:i32 = load %GLF_live7r_1
+                    %177:i32 = add %176, 1i
+                    store %GLF_live7r_1, %177
+                    next_iteration %b44
+                  }
+                }
+                continue %b41
+              }
+              %b41 = block {  # continuing
+                %178:i32 = load %GLF_live7c_1
+                %179:i32 = add %178, 1i
+                store %GLF_live7c_1, %179
+                next_iteration %b40
+              }
+            }
+            %180:i32 = load %GLF_live7sum_index
+            %181:i32 = add %180, 1i
+            store %GLF_live7sum_index, %181
+            continue %b36
+          }
+          %b36 = block {  # continuing
+            %182:i32 = load %GLF_live7cols_1
+            %183:i32 = add %182, 1i
+            store %GLF_live7cols_1, %183
+            next_iteration %b35
+          }
+        }
+        continue %b9
+      }
+      %b9 = block {  # continuing
+        %184:i32 = load %GLF_live4i
+        %185:i32 = add %184, 1i
+        store %GLF_live4i, %185
+        next_iteration %b8
+      }
+    }
+    ret vec3<f32>(1.0f)
+  }
+}
+%main_1 = func():void -> %b50 {
+  %b50 = block {
+    %position_1:ptr<function, vec2<f32>, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec2<f32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %192:ptr<uniform, vec2<f32>, read> = access %x_25, 0u
+    %193:f32 = load_vector_element %192, 0u
+    %194:bool = gte %193, 2.0f
+    if %194 [t: %b51] {  # if_22
+      %b51 = block {  # true
+        %195:vec4<f32> = load %gl_FragCoord
+        %196:vec2<f32> = swizzle %195, xy
+        store %position_1, %196
+        %197:vec2<f32> = load %position_1
+        store %param, %197
+        %x_168:vec3<f32> = call %drawShape_vf2_, %param
+        %199:vec2<f32> = load %position_1
+        store %param_1, %199
+        %x_170:vec3<f32> = call %drawShape_vf2_, %param_1
+        store %i, 25i
+        loop [b: %b52, c: %b53] {  # loop_9
+          %b52 = block {  # body
+            %201:i32 = load %i
+            %202:bool = gt %201, 0i
+            if %202 [t: %b54, f: %b55] {  # if_23
+              %b54 = block {  # true
+                exit_if  # if_23
+              }
+              %b55 = block {  # false
+                exit_loop  # loop_9
+              }
+            }
+            %203:vec2<f32> = load %position_1
+            store %param_2, %203
+            %x_178:vec3<f32> = call %drawShape_vf2_, %param_2
+            continue %b53
+          }
+          %b53 = block {  # continuing
+            %205:i32 = load %i
+            %206:i32 = sub %205, 1i
+            store %i, %206
+            next_iteration %b52
+          }
+        }
+        exit_if  # if_22
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b56 {
+  %b56 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %209:void = call %main_1
+    %210:vec4<f32> = load %x_GLF_color
+    %211:main_out = construct %210
+    ret %211
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..54c2790
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,514 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_25:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%drawShape_vf2_ = func(%pos:ptr<function, vec2<f32>, read_write>):vec3<f32> -> %b2 {
+  %b2 = block {
+    %c2:ptr<function, bool, read_write> = var
+    %c3:ptr<function, bool, read_write> = var
+    %c4:ptr<function, bool, read_write> = var
+    %c5:ptr<function, bool, read_write> = var
+    %c6:ptr<function, bool, read_write> = var
+    %GLF_live4i:ptr<function, i32, read_write> = var
+    %GLF_live4_looplimiter5:ptr<function, i32, read_write> = var
+    %GLF_live7m42:ptr<function, mat4x2<f32>, read_write> = var
+    %GLF_live7m33:ptr<function, mat3x3<f32>, read_write> = var
+    %GLF_live7cols:ptr<function, i32, read_write> = var
+    %GLF_live7_looplimiter3:ptr<function, i32, read_write> = var
+    %GLF_live7rows:ptr<function, i32, read_write> = var
+    %GLF_live7_looplimiter2:ptr<function, i32, read_write> = var
+    %GLF_live7_looplimiter1:ptr<function, i32, read_write> = var
+    %GLF_live7c:ptr<function, i32, read_write> = var
+    %GLF_live7r:ptr<function, i32, read_write> = var
+    %GLF_live7_looplimiter0:ptr<function, i32, read_write> = var
+    %GLF_live7sum_index:ptr<function, i32, read_write> = var
+    %GLF_live7_looplimiter7:ptr<function, i32, read_write> = var
+    %GLF_live7cols_1:ptr<function, i32, read_write> = var
+    %GLF_live7rows_1:ptr<function, i32, read_write> = var
+    %GLF_live7sums:ptr<function, array<f32, 9>, read_write> = var
+    %GLF_live7c_1:ptr<function, i32, read_write> = var
+    %GLF_live7r_1:ptr<function, i32, read_write> = var
+    %x_180:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, mat3x3<f32>, read_write> = var
+    %x_182:f32 = load_vector_element %pos, 0u
+    %33:bool = gt %x_182, 1.0f
+    store %c2, %33
+    %x_184:bool = load %c2
+    if %x_184 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret vec3<f32>(1.0f)
+      }
+    }
+    %x_188:f32 = load_vector_element %pos, 1u
+    %36:bool = lt %x_188, 1.0f
+    store %c3, %36
+    %x_190:bool = load %c3
+    if %x_190 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        ret vec3<f32>(1.0f)
+      }
+    }
+    %x_194:f32 = load_vector_element %pos, 1u
+    %39:bool = gt %x_194, 1.0f
+    store %c4, %39
+    %x_196:bool = load %c4
+    if %x_196 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        ret vec3<f32>(1.0f)
+      }
+    }
+    %x_200:f32 = load_vector_element %pos, 0u
+    %42:bool = lt %x_200, 1.0f
+    store %c5, %42
+    %x_202:bool = load %c5
+    if %x_202 [t: %b6] {  # if_4
+      %b6 = block {  # true
+        ret vec3<f32>(1.0f)
+      }
+    }
+    %x_206:f32 = load_vector_element %pos, 0u
+    %45:f32 = add %x_206, 1.0f
+    %46:bool = gt %45, 1.0f
+    store %c6, %46
+    %x_209:bool = load %c6
+    if %x_209 [t: %b7] {  # if_5
+      %b7 = block {  # true
+        ret vec3<f32>(1.0f)
+      }
+    }
+    store %GLF_live4i, 0i
+    loop [b: %b8, c: %b9] {  # loop_1
+      %b8 = block {  # body
+        %x_39:i32 = load %GLF_live4i
+        %49:bool = lt %x_39, 4i
+        if %49 [t: %b10, f: %b11] {  # if_6
+          %b10 = block {  # true
+            exit_if  # if_6
+          }
+          %b11 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_40:i32 = load %GLF_live4_looplimiter5
+        %51:bool = gte %x_40, 7i
+        if %51 [t: %b12] {  # if_7
+          %b12 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %x_41:i32 = load %GLF_live4_looplimiter5
+        %53:i32 = add %x_41, 1i
+        store %GLF_live4_looplimiter5, %53
+        store %GLF_live7m42, mat4x2<f32>(vec2<f32>(1.0f, 0.0f), vec2<f32>(0.0f, 1.0f), vec2<f32>(0.0f), vec2<f32>(1.0f, 0.0f))
+        store %GLF_live7m33, mat3x3<f32>(vec3<f32>(1.0f, 0.0f, 0.0f), vec3<f32>(0.0f, 1.0f, 0.0f), vec3<f32>(0.0f, 0.0f, 1.0f))
+        store %GLF_live7cols, 2i
+        loop [b: %b13, c: %b14] {  # loop_2
+          %b13 = block {  # body
+            %x_43:i32 = load %GLF_live7cols
+            %55:bool = lt %x_43, 4i
+            if %55 [t: %b15, f: %b16] {  # if_8
+              %b15 = block {  # true
+                exit_if  # if_8
+              }
+              %b16 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_44:i32 = load %GLF_live7_looplimiter3
+            %57:bool = gte %x_44, 7i
+            if %57 [t: %b17] {  # if_9
+              %b17 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            %x_45:i32 = load %GLF_live7_looplimiter3
+            %59:i32 = add %x_45, 1i
+            store %GLF_live7_looplimiter3, %59
+            store %GLF_live7rows, 2i
+            loop [b: %b18, c: %b19] {  # loop_3
+              %b18 = block {  # body
+                %x_47:i32 = load %GLF_live7rows
+                %61:bool = lt %x_47, 4i
+                if %61 [t: %b20, f: %b21] {  # if_10
+                  %b20 = block {  # true
+                    exit_if  # if_10
+                  }
+                  %b21 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %x_48:i32 = load %GLF_live7_looplimiter2
+                %63:bool = gte %x_48, 7i
+                if %63 [t: %b22] {  # if_11
+                  %b22 = block {  # true
+                    exit_loop  # loop_3
+                  }
+                }
+                %x_49:i32 = load %GLF_live7_looplimiter2
+                %65:i32 = add %x_49, 1i
+                store %GLF_live7_looplimiter2, %65
+                store %GLF_live7_looplimiter1, 0i
+                store %GLF_live7c, 0i
+                loop [b: %b23, c: %b24] {  # loop_4
+                  %b23 = block {  # body
+                    %x_51:i32 = load %GLF_live7c
+                    %67:bool = lt %x_51, 3i
+                    if %67 [t: %b25, f: %b26] {  # if_12
+                      %b25 = block {  # true
+                        exit_if  # if_12
+                      }
+                      %b26 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %x_52:i32 = load %GLF_live7_looplimiter1
+                    %69:bool = gte %x_52, 7i
+                    if %69 [t: %b27] {  # if_13
+                      %b27 = block {  # true
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %x_53:i32 = load %GLF_live7_looplimiter1
+                    %71:i32 = add %x_53, 1i
+                    store %GLF_live7_looplimiter1, %71
+                    store %GLF_live7r, 0i
+                    loop [b: %b28, c: %b29] {  # loop_5
+                      %b28 = block {  # body
+                        %x_55:i32 = load %GLF_live7r
+                        %73:bool = lt %x_55, 2i
+                        if %73 [t: %b30, f: %b31] {  # if_14
+                          %b30 = block {  # true
+                            exit_if  # if_14
+                          }
+                          %b31 = block {  # false
+                            exit_loop  # loop_5
+                          }
+                        }
+                        %x_56:i32 = load %GLF_live7_looplimiter0
+                        %75:bool = gte %x_56, 7i
+                        if %75 [t: %b32] {  # if_15
+                          %b32 = block {  # true
+                            exit_loop  # loop_5
+                          }
+                        }
+                        %x_57:i32 = load %GLF_live7_looplimiter0
+                        %77:i32 = add %x_57, 1i
+                        store %GLF_live7_looplimiter0, %77
+                        %x_59:i32 = load %GLF_live7c
+                        %x_60:i32 = load %GLF_live7c
+                        %x_61:i32 = load %GLF_live7c
+                        %x_62:i32 = load %GLF_live7r
+                        %x_63:i32 = load %GLF_live7r
+                        %x_64:i32 = load %GLF_live7r
+                        %84:bool = gte %x_59, 0i
+                        %85:bool = lt %x_60, 3i
+                        %86:bool = and %84, %85
+                        %87:i32 = select 0i, %x_61, %86
+                        %88:ptr<function, vec3<f32>, read_write> = access %GLF_live7m33, %87
+                        %89:bool = gte %x_62, 0i
+                        %90:bool = lt %x_63, 3i
+                        %91:bool = and %89, %90
+                        %92:i32 = select 0i, %x_64, %91
+                        store_vector_element %88, %92, 1.0f
+                        %93:ptr<uniform, vec2<f32>, read> = access %x_25, 0u
+                        %x_267:f32 = load_vector_element %93, 1u
+                        %95:bool = gt 0.0f, %x_267
+                        if %95 [t: %b33, f: %b34] {  # if_16
+                          %b33 = block {  # true
+                            exit_if  # if_16
+                          }
+                          %b34 = block {  # false
+                            %x_65:i32 = load %GLF_live7c
+                            %x_66:i32 = load %GLF_live7c
+                            %x_67:i32 = load %GLF_live7c
+                            %x_68:i32 = load %GLF_live7r
+                            %x_69:i32 = load %GLF_live7r
+                            %x_70:i32 = load %GLF_live7r
+                            %102:bool = gte %x_65, 0i
+                            %103:bool = lt %x_66, 4i
+                            %104:bool = and %102, %103
+                            %105:i32 = select 0i, %x_67, %104
+                            %106:ptr<function, vec2<f32>, read_write> = access %GLF_live7m42, %105
+                            %107:bool = gte %x_68, 0i
+                            %108:bool = lt %x_69, 2i
+                            %109:bool = and %107, %108
+                            %110:i32 = select 0i, %x_70, %109
+                            store_vector_element %106, %110, 1.0f
+                            exit_if  # if_16
+                          }
+                        }
+                        continue %b29
+                      }
+                      %b29 = block {  # continuing
+                        %x_71:i32 = load %GLF_live7r
+                        %112:i32 = add %x_71, 1i
+                        store %GLF_live7r, %112
+                        next_iteration %b28
+                      }
+                    }
+                    continue %b24
+                  }
+                  %b24 = block {  # continuing
+                    %x_73:i32 = load %GLF_live7c
+                    %114:i32 = add %x_73, 1i
+                    store %GLF_live7c, %114
+                    next_iteration %b23
+                  }
+                }
+                continue %b19
+              }
+              %b19 = block {  # continuing
+                %x_75:i32 = load %GLF_live7rows
+                %116:i32 = add %x_75, 1i
+                store %GLF_live7rows, %116
+                next_iteration %b18
+              }
+            }
+            continue %b14
+          }
+          %b14 = block {  # continuing
+            %x_77:i32 = load %GLF_live7cols
+            %118:i32 = add %x_77, 1i
+            store %GLF_live7cols, %118
+            next_iteration %b13
+          }
+        }
+        store %GLF_live7sum_index, 0i
+        store %GLF_live7_looplimiter7, 0i
+        store %GLF_live7cols_1, 2i
+        loop [b: %b35, c: %b36] {  # loop_6
+          %b35 = block {  # body
+            %x_79:i32 = load %GLF_live7cols_1
+            %120:bool = lt %x_79, 4i
+            if %120 [t: %b37, f: %b38] {  # if_17
+              %b37 = block {  # true
+                exit_if  # if_17
+              }
+              %b38 = block {  # false
+                exit_loop  # loop_6
+              }
+            }
+            %x_80:i32 = load %GLF_live7_looplimiter7
+            %122:bool = gte %x_80, 7i
+            if %122 [t: %b39] {  # if_18
+              %b39 = block {  # true
+                exit_loop  # loop_6
+              }
+            }
+            %x_81:i32 = load %GLF_live7_looplimiter7
+            %124:i32 = add %x_81, 1i
+            store %GLF_live7_looplimiter7, %124
+            store %GLF_live7rows_1, 2i
+            %x_83:i32 = load %GLF_live7sum_index
+            %x_84:i32 = load %GLF_live7sum_index
+            %x_85:i32 = load %GLF_live7sum_index
+            %128:bool = gte %x_83, 0i
+            %129:bool = lt %x_84, 9i
+            %130:bool = and %128, %129
+            %131:i32 = select 0i, %x_85, %130
+            %132:ptr<function, f32, read_write> = access %GLF_live7sums, %131
+            store %132, 0.0f
+            store %GLF_live7c_1, 0i
+            loop [b: %b40, c: %b41] {  # loop_7
+              %b40 = block {  # body
+                %x_86:i32 = load %GLF_live7c_1
+                %134:bool = lt %x_86, 1i
+                if %134 [t: %b42, f: %b43] {  # if_19
+                  %b42 = block {  # true
+                    exit_if  # if_19
+                  }
+                  %b43 = block {  # false
+                    exit_loop  # loop_7
+                  }
+                }
+                store %GLF_live7r_1, 0i
+                loop [b: %b44, c: %b45] {  # loop_8
+                  %b44 = block {  # body
+                    %x_87:i32 = load %GLF_live7r_1
+                    %x_88:i32 = load %GLF_live7rows_1
+                    %137:bool = lt %x_87, %x_88
+                    if %137 [t: %b46, f: %b47] {  # if_20
+                      %b46 = block {  # true
+                        exit_if  # if_20
+                      }
+                      %b47 = block {  # false
+                        exit_loop  # loop_8
+                      }
+                    }
+                    %x_89:i32 = load %GLF_live7sum_index
+                    %x_90:i32 = load %GLF_live7sum_index
+                    %x_91:i32 = load %GLF_live7sum_index
+                    %141:bool = gte %x_89, 0i
+                    %142:bool = lt %x_90, 9i
+                    %143:bool = and %141, %142
+                    %x_310:i32 = select 0i, %x_91, %143
+                    %x_311:mat3x3<f32> = load %GLF_live7m33
+                    %x_312:mat3x3<f32> = transpose %x_311
+                    %x_92:i32 = load %GLF_live7c_1
+                    %148:bool = lt %x_92, 3i
+                    if %148 [t: %b48, f: %b49] {  # if_21
+                      %b48 = block {  # true
+                        store %x_180, 1i
+                        exit_if  # if_21
+                      }
+                      %b49 = block {  # false
+                        %149:ptr<uniform, vec2<f32>, read> = access %x_25, 0u
+                        %x_318:f32 = load_vector_element %149, 0u
+                        %151:i32 = convert %x_318
+                        store %x_180, %151
+                        exit_if  # if_21
+                      }
+                    }
+                    %x_320:i32 = load %x_180
+                    %x_93:i32 = load %GLF_live7r_1
+                    store %indexable, %x_312
+                    %154:ptr<function, vec3<f32>, read_write> = access %indexable, %x_320
+                    %155:bool = lt %x_93, 3i
+                    %156:i32 = select 0i, 1i, %155
+                    %x_324:f32 = load_vector_element %154, %156
+                    %158:ptr<function, f32, read_write> = access %GLF_live7sums, %x_310
+                    %x_326:f32 = load %158
+                    %160:ptr<function, f32, read_write> = access %GLF_live7sums, %x_310
+                    %161:f32 = add %x_326, %x_324
+                    store %160, %161
+                    %x_94:i32 = load %GLF_live7sum_index
+                    %x_95:i32 = load %GLF_live7sum_index
+                    %x_96:i32 = load %GLF_live7sum_index
+                    %165:bool = gte %x_94, 0i
+                    %166:bool = lt %x_95, 9i
+                    %167:bool = and %165, %166
+                    %x_332:i32 = select 0i, %x_96, %167
+                    %x_97:i32 = load %GLF_live7r_1
+                    %170:ptr<function, vec2<f32>, read_write> = access %GLF_live7m42, 1i
+                    %x_334:f32 = load_vector_element %170, %x_97
+                    %172:ptr<function, f32, read_write> = access %GLF_live7sums, %x_332
+                    %x_336:f32 = load %172
+                    %174:ptr<function, f32, read_write> = access %GLF_live7sums, %x_332
+                    %175:f32 = add %x_336, %x_334
+                    store %174, %175
+                    continue %b45
+                  }
+                  %b45 = block {  # continuing
+                    %x_98:i32 = load %GLF_live7r_1
+                    %177:i32 = add %x_98, 1i
+                    store %GLF_live7r_1, %177
+                    next_iteration %b44
+                  }
+                }
+                continue %b41
+              }
+              %b41 = block {  # continuing
+                %x_100:i32 = load %GLF_live7c_1
+                %179:i32 = add %x_100, 1i
+                store %GLF_live7c_1, %179
+                next_iteration %b40
+              }
+            }
+            %x_102:i32 = load %GLF_live7sum_index
+            %181:i32 = add %x_102, 1i
+            store %GLF_live7sum_index, %181
+            continue %b36
+          }
+          %b36 = block {  # continuing
+            %x_104:i32 = load %GLF_live7cols_1
+            %183:i32 = add %x_104, 1i
+            store %GLF_live7cols_1, %183
+            next_iteration %b35
+          }
+        }
+        continue %b9
+      }
+      %b9 = block {  # continuing
+        %x_106:i32 = load %GLF_live4i
+        %185:i32 = add %x_106, 1i
+        store %GLF_live4i, %185
+        next_iteration %b8
+      }
+    }
+    ret vec3<f32>(1.0f)
+  }
+}
+%main_1 = func():void -> %b50 {
+  %b50 = block {
+    %position:ptr<function, vec2<f32>, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec2<f32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %192:ptr<uniform, vec2<f32>, read> = access %x_25, 0u
+    %x_161:f32 = load_vector_element %192, 0u
+    %194:bool = gte %x_161, 2.0f
+    if %194 [t: %b51] {  # if_22
+      %b51 = block {  # true
+        %x_165:vec4<f32> = load %gl_FragCoord
+        %196:f32 = access %x_165, 0u
+        %197:f32 = access %x_165, 1u
+        %198:vec2<f32> = construct %196, %197
+        store %position, %198
+        %x_167:vec2<f32> = load %position
+        store %param, %x_167
+        %x_168:vec3<f32> = call %drawShape_vf2_, %param
+        %x_169:vec2<f32> = load %position
+        store %param_1, %x_169
+        %x_170:vec3<f32> = call %drawShape_vf2_, %param_1
+        store %i, 25i
+        loop [b: %b52, c: %b53] {  # loop_9
+          %b52 = block {  # body
+            %x_108:i32 = load %i
+            %204:bool = gt %x_108, 0i
+            if %204 [t: %b54, f: %b55] {  # if_23
+              %b54 = block {  # true
+                exit_if  # if_23
+              }
+              %b55 = block {  # false
+                exit_loop  # loop_9
+              }
+            }
+            %x_177:vec2<f32> = load %position
+            store %param_2, %x_177
+            %x_178:vec3<f32> = call %drawShape_vf2_, %param_2
+            continue %b53
+          }
+          %b53 = block {  # continuing
+            %x_109:i32 = load %i
+            %208:i32 = sub %x_109, 1i
+            store %i, %208
+            next_iteration %b52
+          }
+        }
+        exit_if  # if_22
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b56 {
+  %b56 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %211:void = call %main_1
+    %212:vec4<f32> = load %x_GLF_color
+    %213:main_out = construct %212
+    ret %213
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..5938e04
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,121 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %numbers:ptr<function, array<i32, 3>, read_write> = var
+    %a:ptr<function, vec2<f32>, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_38:i32 = load %8
+    %10:ptr<function, i32, read_write> = access %numbers, %x_38
+    %11:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %12:i32 = load %11
+    store %10, %12
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_43:i32 = load %13
+    %15:ptr<function, i32, read_write> = access %numbers, %x_43
+    %16:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %17:i32 = load %16
+    store %15, %17
+    %18:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_48:i32 = load %18
+    %20:ptr<function, i32, read_write> = access %numbers, %x_48
+    %21:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %22:i32 = load %21
+    store %20, %22
+    %23:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %24:i32 = load %23
+    %25:f32 = convert %24
+    %26:ptr<uniform, f32, read> = access %x_9, 0u, 2i, 0u
+    %27:f32 = load %26
+    %28:bool = lt 0.0f, %27
+    %29:i32 = select 2i, 1i, %28
+    %30:ptr<function, i32, read_write> = access %numbers, %29
+    %31:i32 = load %30
+    %32:f32 = convert %31
+    %33:vec2<f32> = construct %25, %32
+    store %a, %33
+    %34:vec2<f32> = load %a
+    %35:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+    %36:f32 = load %35
+    %37:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+    %38:f32 = load %37
+    %39:vec2<f32> = construct %36, %38
+    %40:f32 = dot %34, %39
+    store %b, %40
+    %41:f32 = load %b
+    %42:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+    %43:f32 = load %42
+    %44:bool = eq %41, %43
+    if %44 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %45:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %46:i32 = load %45
+        %47:f32 = convert %46
+        %48:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %49:i32 = load %48
+        %50:f32 = convert %49
+        %51:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %52:i32 = load %51
+        %53:f32 = convert %52
+        %54:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %55:i32 = load %54
+        %56:f32 = convert %55
+        %57:vec4<f32> = construct %47, %50, %53, %56
+        store %x_GLF_color, %57
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %58:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %59:i32 = load %58
+        %60:f32 = convert %59
+        %61:vec4<f32> = construct %60
+        store %x_GLF_color, %61
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %63:void = call %main_1
+    %64:vec4<f32> = load %x_GLF_color
+    %65:main_out = construct %64
+    ret %65
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..008b825
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,121 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %numbers:ptr<function, array<i32, 3>, read_write> = var
+    %a:ptr<function, vec2<f32>, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_38:i32 = load %8
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_40:i32 = load %10
+    %12:ptr<function, i32, read_write> = access %numbers, %x_38
+    store %12, %x_40
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_43:i32 = load %13
+    %15:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_45:i32 = load %15
+    %17:ptr<function, i32, read_write> = access %numbers, %x_43
+    store %17, %x_45
+    %18:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_48:i32 = load %18
+    %20:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_50:i32 = load %20
+    %22:ptr<function, i32, read_write> = access %numbers, %x_48
+    store %22, %x_50
+    %23:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_53:i32 = load %23
+    %25:ptr<uniform, f32, read> = access %x_9, 0u, 2i, 0u
+    %x_56:f32 = load %25
+    %27:bool = lt 0.0f, %x_56
+    %28:i32 = select 2i, 1i, %27
+    %29:ptr<function, i32, read_write> = access %numbers, %28
+    %x_60:i32 = load %29
+    %31:f32 = convert %x_53
+    %32:f32 = convert %x_60
+    %33:vec2<f32> = construct %31, %32
+    store %a, %33
+    %x_63:vec2<f32> = load %a
+    %35:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+    %x_65:f32 = load %35
+    %37:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+    %x_67:f32 = load %37
+    %39:vec2<f32> = construct %x_65, %x_67
+    %40:f32 = dot %x_63, %39
+    store %b, %40
+    %x_70:f32 = load %b
+    %42:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+    %x_72:f32 = load %42
+    %44:bool = eq %x_70, %x_72
+    if %44 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %45:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_78:i32 = load %45
+        %47:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_81:i32 = load %47
+        %49:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_84:i32 = load %49
+        %51:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_87:i32 = load %51
+        %53:f32 = convert %x_78
+        %54:f32 = convert %x_81
+        %55:f32 = convert %x_84
+        %56:f32 = convert %x_87
+        %57:vec4<f32> = construct %53, %54, %55, %56
+        store %x_GLF_color, %57
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %58:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_91:i32 = load %58
+        %x_92:f32 = convert %x_91
+        %61:vec4<f32> = construct %x_92, %x_92, %x_92, %x_92
+        store %x_GLF_color, %61
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %63:void = call %main_1
+    %64:vec4<f32> = load %x_GLF_color
+    %65:main_out = construct %64
+    ret %65
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..32bcd37
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,122 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():f32 -> %b2 {
+  %b2 = block {
+    %s:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    store %s, 2.0f
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %7:i32 = load %i
+        %8:ptr<uniform, i32, read> = access %x_8, 0u
+        %9:i32 = load %8
+        %10:i32 = add %9, 1i
+        %11:bool = lt %7, %10
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %12:f32 = load %s
+        %13:f32 = add %12, 3.0f
+        store %s, %13
+        store %j, 0i
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %14:i32 = load %j
+            %15:bool = lt %14, 10i
+            if %15 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %16:ptr<uniform, i32, read> = access %x_8, 0u
+            %17:i32 = load %16
+            %18:bool = eq %17, 1i
+            if %18 [t: %b11] {  # if_3
+              %b11 = block {  # true
+                discard
+                exit_if  # if_3
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %19:i32 = load %j
+            %20:i32 = add %19, 1i
+            store %j, %20
+            next_iteration %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %21:i32 = load %i
+        %22:i32 = add %21, 1i
+        store %i, %22
+        next_iteration %b3
+      }
+    }
+    %x_71:f32 = load %s
+    ret %x_71
+  }
+}
+%main_1 = func():void -> %b12 {
+  %b12 = block {
+    %c:ptr<function, vec4<f32>, read_write> = var
+    %x_34:f32 = call %func_
+    %27:vec4<f32> = construct %x_34, 0.0f, 0.0f, 1.0f
+    store %c, %27
+    %x_36:f32 = call %func_
+    %29:bool = eq %x_36, 5.0f
+    if %29 [t: %b13, f: %b14] {  # if_4
+      %b13 = block {  # true
+        %30:vec4<f32> = load %c
+        store %x_GLF_color, %30
+        exit_if  # if_4
+      }
+      %b14 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b15 {
+  %b15 = block {
+    %32:void = call %main_1
+    %33:vec4<f32> = load %x_GLF_color
+    %34:main_out = construct %33
+    ret %34
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..555d0bc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,122 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():f32 -> %b2 {
+  %b2 = block {
+    %s:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    store %s, 2.0f
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_47:i32 = load %i
+        %8:ptr<uniform, i32, read> = access %x_8, 0u
+        %x_49:i32 = load %8
+        %10:i32 = add %x_49, 1i
+        %11:bool = lt %x_47, %10
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_53:f32 = load %s
+        %13:f32 = add %x_53, 3.0f
+        store %s, %13
+        store %j, 0i
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %x_59:i32 = load %j
+            %15:bool = lt %x_59, 10i
+            if %15 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %16:ptr<uniform, i32, read> = access %x_8, 0u
+            %x_63:i32 = load %16
+            %18:bool = eq %x_63, 1i
+            if %18 [t: %b11] {  # if_3
+              %b11 = block {  # true
+                discard
+                exit_if  # if_3
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %x_67:i32 = load %j
+            %20:i32 = add %x_67, 1i
+            store %j, %20
+            next_iteration %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_69:i32 = load %i
+        %22:i32 = add %x_69, 1i
+        store %i, %22
+        next_iteration %b3
+      }
+    }
+    %x_71:f32 = load %s
+    ret %x_71
+  }
+}
+%main_1 = func():void -> %b12 {
+  %b12 = block {
+    %c:ptr<function, vec4<f32>, read_write> = var
+    %x_34:f32 = call %func_
+    %27:vec4<f32> = construct %x_34, 0.0f, 0.0f, 1.0f
+    store %c, %27
+    %x_36:f32 = call %func_
+    %29:bool = eq %x_36, 5.0f
+    if %29 [t: %b13, f: %b14] {  # if_4
+      %b13 = block {  # true
+        %x_41:vec4<f32> = load %c
+        store %x_GLF_color, %x_41
+        exit_if  # if_4
+      }
+      %b14 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b15 {
+  %b15 = block {
+    %32:void = call %main_1
+    %33:vec4<f32> = load %x_GLF_color
+    %34:main_out = construct %33
+    ret %34
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..771d7ba
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,101 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec2<i32>, read_write> = var
+    %7:f32 = load_vector_element %gl_FragCoord, 1u
+    %8:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %9:f32 = load %8
+    %10:bool = lt %7, %9
+    if %10 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %11:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %12:i32 = load %11
+        %13:f32 = convert %12
+        %14:vec4<f32> = construct %13
+        store %x_GLF_color, %14
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %15:vec4<f32> = load %gl_FragCoord
+        %16:vec2<f32> = swizzle %15, xy
+        %17:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %18:f32 = load %17
+        %19:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %20:f32 = load %19
+        %21:vec2<f32> = construct %18, %20
+        %22:vec2<f32> = sub %16, %21
+        %23:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %24:f32 = load %23
+        %25:vec2<f32> = mul %22, %24
+        %26:vec2<i32> = convert %25
+        store %v, %26
+        %27:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %28:f32 = load %27
+        %29:i32 = load_vector_element %v, 1u
+        %30:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %31:i32 = load %30
+        %32:i32 = sub %29, %31
+        %33:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %34:i32 = load %33
+        %35:i32 = and %32, %34
+        %36:f32 = convert %35
+        %37:i32 = load_vector_element %v, 0u
+        %38:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %39:i32 = load %38
+        %40:i32 = and %37, %39
+        %41:f32 = convert %40
+        %42:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %43:f32 = load %42
+        %44:vec4<f32> = construct %28, %36, %41, %43
+        store %x_GLF_color, %44
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b5 {
+  %b5 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %47:void = call %main_1
+    %48:vec4<f32> = load %x_GLF_color
+    %49:main_out = construct %48
+    ret %49
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1c9b5a0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,103 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec2<i32>, read_write> = var
+    %x_39:f32 = load_vector_element %gl_FragCoord, 1u
+    %8:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_41:f32 = load %8
+    %10:bool = lt %x_39, %x_41
+    if %10 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %11:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_47:i32 = load %11
+        %x_48:f32 = convert %x_47
+        %14:vec4<f32> = construct %x_48, %x_48, %x_48, %x_48
+        store %x_GLF_color, %14
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %x_50:vec4<f32> = load %gl_FragCoord
+        %16:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_53:f32 = load %16
+        %18:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_55:f32 = load %18
+        %20:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %x_59:f32 = load %20
+        %22:f32 = access %x_50, 0u
+        %23:f32 = access %x_50, 1u
+        %24:vec2<f32> = construct %22, %23
+        %25:vec2<f32> = construct %x_53, %x_55
+        %26:vec2<f32> = sub %24, %25
+        %27:vec2<f32> = mul %26, %x_59
+        %28:vec2<i32> = convert %27
+        store %v, %28
+        %29:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_63:f32 = load %29
+        %x_65:i32 = load_vector_element %v, 1u
+        %32:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_67:i32 = load %32
+        %34:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_70:i32 = load %34
+        %x_74:i32 = load_vector_element %v, 0u
+        %37:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_76:i32 = load %37
+        %39:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_80:f32 = load %39
+        %41:i32 = sub %x_65, %x_67
+        %42:i32 = and %41, %x_70
+        %43:f32 = convert %42
+        %44:i32 = and %x_74, %x_76
+        %45:f32 = convert %44
+        %46:vec4<f32> = construct %x_63, %43, %45, %x_80
+        store %x_GLF_color, %46
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b5 {
+  %b5 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %49:void = call %main_1
+    %50:vec4<f32> = load %x_GLF_color
+    %51:main_out = construct %50
+    ret %51
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..412297b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,59 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  two:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec2<f32>, read_write> = var
+    %d:ptr<function, f32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u
+    %7:i32 = load %6
+    %8:vec2<i32> = construct %7, 3i
+    %9:vec2<f32> = ldexp vec2<f32>(0.10000000149011611938f), %8
+    %10:vec2<f32> = acos %9
+    store %v, %10
+    %11:vec2<f32> = load %v
+    %12:f32 = distance %11, vec2<f32>(1.15927994251251220703f, 0.64349997043609619141f)
+    store %d, %12
+    %13:f32 = load %d
+    %14:bool = lt %13, 0.00999999977648258209f
+    if %14 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %16:void = call %main_1
+    %17:vec4<f32> = load %x_GLF_color
+    %18:main_out = construct %17
+    ret %18
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7a56ae2
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,59 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  two:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec2<f32>, read_write> = var
+    %d:ptr<function, f32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u
+    %x_35:i32 = load %6
+    %8:vec2<i32> = construct %x_35, 3i
+    %9:vec2<f32> = ldexp vec2<f32>(0.10000000149011611938f), %8
+    %10:vec2<f32> = acos %9
+    store %v, %10
+    %x_39:vec2<f32> = load %v
+    %12:f32 = distance %x_39, vec2<f32>(1.15927994251251220703f, 0.64349997043609619141f)
+    store %d, %12
+    %x_41:f32 = load %d
+    %14:bool = lt %x_41, 0.00999999977648258209f
+    if %14 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %16:void = call %main_1
+    %17:vec4<f32> = load %x_GLF_color
+    %18:main_out = construct %17
+    ret %18
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..c823ef1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,103 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %undefined:ptr<function, f32, read_write> = var
+    %x_51:ptr<function, bool, read_write> = var
+    %x_52:ptr<function, bool, read_write> = var
+    store %undefined, 0.0f
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %9:i32 = load %8
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %11:i32 = load %10
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %13:i32 = load %12
+    %14:i32 = add %11, %13
+    %x_44:bool = eq %9, %14
+    store %x_52, %x_44
+    %16:bool = eq %x_44, false
+    if %16 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %17:f32 = load %undefined
+        %18:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %19:f32 = load %18
+        %20:bool = gt %17, %19
+        store %x_51, %20
+        %21:bool = load %x_51
+        store %x_52, %21
+        exit_if  # if_1
+      }
+    }
+    %22:bool = load %x_52
+    if %22 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %23:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %24:i32 = load %23
+        %25:f32 = convert %24
+        %26:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %27:i32 = load %26
+        %28:f32 = convert %27
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %30:i32 = load %29
+        %31:f32 = convert %30
+        %32:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %33:i32 = load %32
+        %34:f32 = convert %33
+        %35:vec4<f32> = construct %25, %28, %31, %34
+        store %x_GLF_color, %35
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %36:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %37:i32 = load %36
+        %38:f32 = convert %37
+        %39:vec4<f32> = construct %38
+        store %x_GLF_color, %39
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %41:void = call %main_1
+    %42:vec4<f32> = load %x_GLF_color
+    %43:main_out = construct %42
+    ret %43
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c82e579
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,103 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %undefined:ptr<function, f32, read_write> = var
+    %x_51:ptr<function, bool, read_write> = var
+    %x_52_phi:ptr<function, bool, read_write> = var
+    store %undefined, 5.0f
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_10:i32 = load %8
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_11:i32 = load %10
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_12:i32 = load %12
+    %14:i32 = add %x_11, %x_12
+    %x_44:bool = eq %x_10, %14
+    store %x_52_phi, %x_44
+    %16:bool = eq %x_44, false
+    if %16 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_48:f32 = load %undefined
+        %18:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %x_50:f32 = load %18
+        %20:bool = gt %x_48, %x_50
+        store %x_51, %20
+        %21:bool = load %x_51
+        store %x_52_phi, %21
+        exit_if  # if_1
+      }
+    }
+    %x_52:bool = load %x_52_phi
+    if %x_52 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %23:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_15:i32 = load %23
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_16:i32 = load %25
+        %27:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_17:i32 = load %27
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_18:i32 = load %29
+        %31:f32 = convert %x_15
+        %32:f32 = convert %x_16
+        %33:f32 = convert %x_17
+        %34:f32 = convert %x_18
+        %35:vec4<f32> = construct %31, %32, %33, %34
+        store %x_GLF_color, %35
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %36:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_19:i32 = load %36
+        %x_66:f32 = convert %x_19
+        %39:vec4<f32> = construct %x_66, %x_66, %x_66, %x_66
+        store %x_GLF_color, %39
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %41:void = call %main_1
+    %42:vec4<f32> = load %x_GLF_color
+    %43:main_out = construct %42
+    ret %43
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..473acf7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,116 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %I:ptr<function, vec4<f32>, read_write> = var
+    %N:ptr<function, vec4<f32>, read_write> = var
+    %R:ptr<function, vec4<f32>, read_write> = var
+    %r:ptr<function, vec4<f32>, read_write> = var
+    %9:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %10:i32 = load %9
+    %11:u32 = bitcast %10
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %13:i32 = load %12
+    %14:u32 = bitcast %13
+    %15:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %16:i32 = load %15
+    %17:u32 = bitcast %16
+    %18:vec4<u32> = construct %11, %14, %17, 92985u
+    %19:vec4<f32> = bitcast %18
+    store %I, %19
+    %20:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+    %21:f32 = load %20
+    %22:vec4<f32> = construct %21
+    store %N, %22
+    %23:vec4<f32> = load %I
+    %24:vec4<f32> = reflect %23, vec4<f32>(0.5f)
+    store %R, %24
+    %25:vec4<f32> = load %I
+    %26:vec4<f32> = load %N
+    %27:ptr<uniform, f32, read> = access %x_9, 0u, 2i, 0u
+    %28:f32 = load %27
+    %29:vec4<f32> = load %N
+    %30:vec4<f32> = load %I
+    %31:f32 = dot %29, %30
+    %32:f32 = mul %28, %31
+    %33:vec4<f32> = mul %26, %32
+    %34:vec4<f32> = sub %25, %33
+    store %r, %34
+    %35:vec4<f32> = load %R
+    %36:vec4<f32> = load %r
+    %37:f32 = distance %35, %36
+    %38:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+    %39:f32 = load %38
+    %40:bool = lt %37, %39
+    if %40 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %41:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %42:i32 = load %41
+        %43:f32 = convert %42
+        %44:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %45:i32 = load %44
+        %46:f32 = convert %45
+        %47:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %48:i32 = load %47
+        %49:f32 = convert %48
+        %50:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %51:i32 = load %50
+        %52:f32 = convert %51
+        %53:vec4<f32> = construct %43, %46, %49, %52
+        store %x_GLF_color, %53
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %54:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %55:i32 = load %54
+        %56:f32 = convert %55
+        %57:vec4<f32> = construct %56
+        store %x_GLF_color, %57
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %59:void = call %main_1
+    %60:vec4<f32> = load %x_GLF_color
+    %61:main_out = construct %60
+    ret %61
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f17773a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,116 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %I:ptr<function, vec4<f32>, read_write> = var
+    %N:ptr<function, vec4<f32>, read_write> = var
+    %R:ptr<function, vec4<f32>, read_write> = var
+    %r:ptr<function, vec4<f32>, read_write> = var
+    %9:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_40:i32 = load %9
+    %11:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_43:i32 = load %11
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %x_46:i32 = load %13
+    %15:u32 = bitcast %x_40
+    %16:u32 = bitcast %x_43
+    %17:u32 = bitcast %x_46
+    %18:vec4<u32> = construct %15, %16, %17, 92985u
+    %19:vec4<f32> = bitcast %18
+    store %I, %19
+    %20:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+    %x_51:f32 = load %20
+    %22:vec4<f32> = construct %x_51, %x_51, %x_51, %x_51
+    store %N, %22
+    %x_53:vec4<f32> = load %I
+    %24:vec4<f32> = reflect %x_53, vec4<f32>(0.5f)
+    store %R, %24
+    %x_55:vec4<f32> = load %I
+    %26:ptr<uniform, f32, read> = access %x_9, 0u, 2i, 0u
+    %x_57:f32 = load %26
+    %x_58:vec4<f32> = load %N
+    %x_59:vec4<f32> = load %I
+    %x_62:vec4<f32> = load %N
+    %31:f32 = dot %x_58, %x_59
+    %32:f32 = mul %x_57, %31
+    %33:vec4<f32> = mul %x_62, %32
+    %34:vec4<f32> = sub %x_55, %33
+    store %r, %34
+    %x_65:vec4<f32> = load %R
+    %x_66:vec4<f32> = load %r
+    %37:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+    %x_69:f32 = load %37
+    %39:f32 = distance %x_65, %x_66
+    %40:bool = lt %39, %x_69
+    if %40 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %41:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_75:i32 = load %41
+        %43:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_78:i32 = load %43
+        %45:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_81:i32 = load %45
+        %47:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_84:i32 = load %47
+        %49:f32 = convert %x_75
+        %50:f32 = convert %x_78
+        %51:f32 = convert %x_81
+        %52:f32 = convert %x_84
+        %53:vec4<f32> = construct %49, %50, %51, %52
+        store %x_GLF_color, %53
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %54:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_88:i32 = load %54
+        %x_89:f32 = convert %x_88
+        %57:vec4<f32> = construct %x_89, %x_89, %x_89, %x_89
+        store %x_GLF_color, %57
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %59:void = call %main_1
+    %60:vec4<f32> = load %x_GLF_color
+    %61:main_out = construct %60
+    ret %61
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..8da40f0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,98 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %undefined:ptr<function, f32, read_write> = var
+    %x_45:ptr<function, bool, read_write> = var
+    %x_46:ptr<function, bool, read_write> = var
+    store %undefined, 1.17520117759704589844f
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %9:i32 = load %8
+    %x_38:bool = eq 1i, %9
+    store %x_46, %x_38
+    %11:bool = eq %x_38, false
+    if %11 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %12:f32 = load %undefined
+        %13:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %14:f32 = load %13
+        %15:bool = gt %12, %14
+        store %x_45, %15
+        %16:bool = load %x_45
+        store %x_46, %16
+        exit_if  # if_1
+      }
+    }
+    %17:bool = load %x_46
+    if %17 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %18:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %19:i32 = load %18
+        %20:f32 = convert %19
+        %21:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %22:i32 = load %21
+        %23:f32 = convert %22
+        %24:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %25:i32 = load %24
+        %26:f32 = convert %25
+        %27:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %28:i32 = load %27
+        %29:f32 = convert %28
+        %30:vec4<f32> = construct %20, %23, %26, %29
+        store %x_GLF_color, %30
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %31:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %32:i32 = load %31
+        %33:f32 = convert %32
+        %34:vec4<f32> = construct %33
+        store %x_GLF_color, %34
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %36:void = call %main_1
+    %37:vec4<f32> = load %x_GLF_color
+    %38:main_out = construct %37
+    ret %38
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..45e073b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,98 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %undefined:ptr<function, f32, read_write> = var
+    %x_45:ptr<function, bool, read_write> = var
+    %x_46_phi:ptr<function, bool, read_write> = var
+    store %undefined, 1.17520117759704589844f
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_10:i32 = load %8
+    %x_38:bool = eq 1i, %x_10
+    store %x_46_phi, %x_38
+    %11:bool = eq %x_38, false
+    if %11 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_42:f32 = load %undefined
+        %13:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %x_44:f32 = load %13
+        %15:bool = gt %x_42, %x_44
+        store %x_45, %15
+        %16:bool = load %x_45
+        store %x_46_phi, %16
+        exit_if  # if_1
+      }
+    }
+    %x_46:bool = load %x_46_phi
+    if %x_46 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %18:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_12:i32 = load %18
+        %20:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_13:i32 = load %20
+        %22:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_14:i32 = load %22
+        %24:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_15:i32 = load %24
+        %26:f32 = convert %x_12
+        %27:f32 = convert %x_13
+        %28:f32 = convert %x_14
+        %29:f32 = convert %x_15
+        %30:vec4<f32> = construct %26, %27, %28, %29
+        store %x_GLF_color, %30
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %31:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_16:i32 = load %31
+        %x_60:f32 = convert %x_16
+        %34:vec4<f32> = construct %x_60, %x_60, %x_60, %x_60
+        store %x_GLF_color, %34
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %36:void = call %main_1
+    %37:vec4<f32> = load %x_GLF_color
+    %38:main_out = construct %37
+    ret %38
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f3c299b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,167 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 12> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_15:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m0:ptr<function, mat3x4<f32>, read_write> = var
+    %m1:ptr<function, mat3x4<f32>, read_write> = var
+    %undefined:ptr<function, vec3<f32>, read_write> = var
+    %defined:ptr<function, vec3<f32>, read_write> = var
+    %v0:ptr<function, vec4<f32>, read_write> = var
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %v2:ptr<function, vec4<f32>, read_write> = var
+    %v3:ptr<function, vec4<f32>, read_write> = var
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %14:i32 = load %13
+    %15:f32 = convert %14
+    %16:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %17:i32 = load %16
+    %18:f32 = convert %17
+    %19:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+    %20:i32 = load %19
+    %21:f32 = convert %20
+    %22:vec4<f32> = construct %15, %18, %21, 4.0f
+    %23:ptr<uniform, i32, read> = access %x_6, 0u, 10i, 0u
+    %24:i32 = load %23
+    %25:f32 = convert %24
+    %26:ptr<uniform, i32, read> = access %x_6, 0u, 7i, 0u
+    %27:i32 = load %26
+    %28:f32 = convert %27
+    %29:ptr<uniform, i32, read> = access %x_6, 0u, 8i, 0u
+    %30:i32 = load %29
+    %31:f32 = convert %30
+    %32:vec4<f32> = construct %25, %28, %31, 8.0f
+    %33:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
+    %34:i32 = load %33
+    %35:f32 = convert %34
+    %36:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %37:i32 = load %36
+    %38:f32 = convert %37
+    %39:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %40:i32 = load %39
+    %41:f32 = convert %40
+    %42:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %43:i32 = load %42
+    %44:f32 = convert %43
+    %45:vec4<f32> = construct %35, %38, %41, %44
+    %46:mat3x4<f32> = construct %22, %32, %45
+    store %m0, %46
+    %47:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %48:i32 = load %47
+    %x_104:f32 = convert %48
+    %50:vec4<f32> = construct %x_104, 0.0f, 0.0f, 0.0f
+    %51:vec4<f32> = construct 0.0f, %x_104, 0.0f, 0.0f
+    %52:vec4<f32> = construct 0.0f, 0.0f, %x_104, 0.0f
+    %53:mat3x4<f32> = construct %50, %51, %52
+    store %m1, %53
+    store %undefined, vec3<f32>(2.0f)
+    %54:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %55:i32 = load %54
+    %56:f32 = convert %55
+    %57:vec3<f32> = construct %56
+    %58:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %59:i32 = load %58
+    %60:vec3<i32> = construct %59
+    %61:vec3<f32> = ldexp %57, %60
+    store %defined, %61
+    %62:mat3x4<f32> = load %m0
+    %63:vec3<f32> = load %undefined
+    %64:vec4<f32> = mul %62, %63
+    store %v0, %64
+    %65:mat3x4<f32> = load %m1
+    %66:vec3<f32> = load %undefined
+    %67:vec4<f32> = mul %65, %66
+    store %v1, %67
+    %68:mat3x4<f32> = load %m0
+    %69:vec3<f32> = load %defined
+    %70:vec4<f32> = mul %68, %69
+    store %v2, %70
+    %71:mat3x4<f32> = load %m1
+    %72:vec3<f32> = load %defined
+    %73:vec4<f32> = mul %71, %72
+    store %v3, %73
+    %74:f32 = load_vector_element %v2, 0u
+    %75:f32 = load_vector_element %v3, 0u
+    %76:bool = gt %74, %75
+    if %76 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %77:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %78:i32 = load %77
+        %79:f32 = convert %78
+        %80:ptr<uniform, i32, read> = access %x_6, 0u, 9i, 0u
+        %81:i32 = load %80
+        %82:f32 = convert %81
+        %83:ptr<uniform, i32, read> = access %x_6, 0u, 9i, 0u
+        %84:i32 = load %83
+        %85:f32 = convert %84
+        %86:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %87:i32 = load %86
+        %88:f32 = convert %87
+        %89:vec4<f32> = construct %79, %82, %85, %88
+        store %x_GLF_color, %89
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %90:ptr<uniform, i32, read> = access %x_6, 0u, 9i, 0u
+        %91:i32 = load %90
+        %92:f32 = convert %91
+        %93:vec4<f32> = construct %92
+        store %x_GLF_color, %93
+        exit_if  # if_1
+      }
+    }
+    %94:f32 = load_vector_element %v0, 0u
+    %95:f32 = load_vector_element %v1, 0u
+    %96:bool = lt %94, %95
+    if %96 [t: %b5] {  # if_2
+      %b5 = block {  # true
+        %97:ptr<uniform, f32, read> = access %x_15, 0u, 0i, 0u
+        %98:f32 = load %97
+        store_vector_element %x_GLF_color, 1u, %98
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %100:void = call %main_1
+    %101:vec4<f32> = load %x_GLF_color
+    %102:main_out = construct %101
+    ret %102
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b16e7e0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,167 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 12> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_15:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m0:ptr<function, mat3x4<f32>, read_write> = var
+    %m1:ptr<function, mat3x4<f32>, read_write> = var
+    %undefined:ptr<function, vec3<f32>, read_write> = var
+    %defined:ptr<function, vec3<f32>, read_write> = var
+    %v0:ptr<function, vec4<f32>, read_write> = var
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %v2:ptr<function, vec4<f32>, read_write> = var
+    %v3:ptr<function, vec4<f32>, read_write> = var
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %x_17:i32 = load %13
+    %15:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %x_18:i32 = load %15
+    %17:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+    %x_19:i32 = load %17
+    %19:ptr<uniform, i32, read> = access %x_6, 0u, 10i, 0u
+    %x_20:i32 = load %19
+    %21:ptr<uniform, i32, read> = access %x_6, 0u, 7i, 0u
+    %x_21:i32 = load %21
+    %23:ptr<uniform, i32, read> = access %x_6, 0u, 8i, 0u
+    %x_22:i32 = load %23
+    %25:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
+    %x_23:i32 = load %25
+    %27:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_24:i32 = load %27
+    %29:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_25:i32 = load %29
+    %31:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_26:i32 = load %31
+    %33:f32 = convert %x_17
+    %34:f32 = convert %x_18
+    %35:f32 = convert %x_19
+    %36:vec4<f32> = construct %33, %34, %35, 4.0f
+    %37:f32 = convert %x_20
+    %38:f32 = convert %x_21
+    %39:f32 = convert %x_22
+    %40:vec4<f32> = construct %37, %38, %39, 8.0f
+    %41:f32 = convert %x_23
+    %42:f32 = convert %x_24
+    %43:f32 = convert %x_25
+    %44:f32 = convert %x_26
+    %45:vec4<f32> = construct %41, %42, %43, %44
+    %46:mat3x4<f32> = construct %36, %40, %45
+    store %m0, %46
+    %47:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %x_27:i32 = load %47
+    %x_104:f32 = convert %x_27
+    %50:vec4<f32> = construct %x_104, 0.0f, 0.0f, 0.0f
+    %51:vec4<f32> = construct 0.0f, %x_104, 0.0f, 0.0f
+    %52:vec4<f32> = construct 0.0f, 0.0f, %x_104, 0.0f
+    %53:mat3x4<f32> = construct %50, %51, %52
+    store %m1, %53
+    store %undefined, vec3<f32>(2.0f)
+    %54:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %x_28:i32 = load %54
+    %x_111:f32 = convert %x_28
+    %57:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_29:i32 = load %57
+    %59:vec3<f32> = construct %x_111, %x_111, %x_111
+    %60:vec3<i32> = construct %x_29, %x_29, %x_29
+    %61:vec3<f32> = ldexp %59, %60
+    store %defined, %61
+    %x_116:mat3x4<f32> = load %m0
+    %x_117:vec3<f32> = load %undefined
+    %64:vec4<f32> = mul %x_116, %x_117
+    store %v0, %64
+    %x_119:mat3x4<f32> = load %m1
+    %x_120:vec3<f32> = load %undefined
+    %67:vec4<f32> = mul %x_119, %x_120
+    store %v1, %67
+    %x_122:mat3x4<f32> = load %m0
+    %x_123:vec3<f32> = load %defined
+    %70:vec4<f32> = mul %x_122, %x_123
+    store %v2, %70
+    %x_125:mat3x4<f32> = load %m1
+    %x_126:vec3<f32> = load %defined
+    %73:vec4<f32> = mul %x_125, %x_126
+    store %v3, %73
+    %x_129:f32 = load_vector_element %v2, 0u
+    %x_131:f32 = load_vector_element %v3, 0u
+    %76:bool = gt %x_129, %x_131
+    if %76 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %77:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %x_30:i32 = load %77
+        %79:ptr<uniform, i32, read> = access %x_6, 0u, 9i, 0u
+        %x_31:i32 = load %79
+        %81:ptr<uniform, i32, read> = access %x_6, 0u, 9i, 0u
+        %x_32:i32 = load %81
+        %83:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %x_33:i32 = load %83
+        %85:f32 = convert %x_30
+        %86:f32 = convert %x_31
+        %87:f32 = convert %x_32
+        %88:f32 = convert %x_33
+        %89:vec4<f32> = construct %85, %86, %87, %88
+        store %x_GLF_color, %89
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %90:ptr<uniform, i32, read> = access %x_6, 0u, 9i, 0u
+        %x_34:i32 = load %90
+        %x_146:f32 = convert %x_34
+        %93:vec4<f32> = construct %x_146, %x_146, %x_146, %x_146
+        store %x_GLF_color, %93
+        exit_if  # if_1
+      }
+    }
+    %x_149:f32 = load_vector_element %v0, 0u
+    %x_151:f32 = load_vector_element %v1, 0u
+    %96:bool = lt %x_149, %x_151
+    if %96 [t: %b5] {  # if_2
+      %b5 = block {  # true
+        %97:ptr<uniform, f32, read> = access %x_15, 0u, 0i, 0u
+        %x_156:f32 = load %97
+        store_vector_element %x_GLF_color, 1u, %x_156
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %100:void = call %main_1
+    %101:vec4<f32> = load %x_GLF_color
+    %102:main_out = construct %101
+    ret %102
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2362bd1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,97 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %7:i32 = load %6
+    store %i, %7
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %8:i32 = load %i
+        %9:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %10:i32 = load %9
+        %11:bool = lt %8, %10
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        store %v, vec4<f32>(0.39215686917304992676f, 0.0f, 0.0f, 0.0f)
+        %12:f32 = load_vector_element %v, 0u
+        %13:i32 = convert %12
+        %14:i32 = load %i
+        %15:bool = gt %13, %14
+        if %15 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %16:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %17:i32 = load %16
+            %18:f32 = convert %17
+            %19:vec4<f32> = construct %18
+            store %x_GLF_color, %19
+            ret
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %20:i32 = load %i
+        %21:i32 = add %20, 1i
+        store %i, %21
+        next_iteration %b3
+      }
+    }
+    %22:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %23:i32 = load %22
+    %24:f32 = convert %23
+    %25:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %26:i32 = load %25
+    %27:f32 = convert %26
+    %28:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %29:i32 = load %28
+    %30:f32 = convert %29
+    %31:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %32:i32 = load %31
+    %33:f32 = convert %32
+    %34:vec4<f32> = construct %24, %27, %30, %33
+    store %x_GLF_color, %34
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %36:void = call %main_1
+    %37:vec4<f32> = load %x_GLF_color
+    %38:main_out = construct %37
+    ret %38
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..89116ae
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,97 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_30:i32 = load %6
+    store %i, %x_30
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_35:i32 = load %i
+        %9:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_37:i32 = load %9
+        %11:bool = lt %x_35, %x_37
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        store %v, vec4<f32>(0.39215686917304992676f, 0.0f, 0.0f, 0.0f)
+        %x_42:f32 = load_vector_element %v, 0u
+        %x_44:i32 = load %i
+        %14:i32 = convert %x_42
+        %15:bool = gt %14, %x_44
+        if %15 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %16:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %x_49:i32 = load %16
+            %x_50:f32 = convert %x_49
+            %19:vec4<f32> = construct %x_50, %x_50, %x_50, %x_50
+            store %x_GLF_color, %19
+            ret
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_52:i32 = load %i
+        %21:i32 = add %x_52, 1i
+        store %i, %21
+        next_iteration %b3
+      }
+    }
+    %22:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_55:i32 = load %22
+    %24:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_58:i32 = load %24
+    %26:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_61:i32 = load %26
+    %28:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_64:i32 = load %28
+    %30:f32 = convert %x_55
+    %31:f32 = convert %x_58
+    %32:f32 = convert %x_61
+    %33:f32 = convert %x_64
+    %34:vec4<f32> = construct %30, %31, %32, %33
+    store %x_GLF_color, %34
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %36:void = call %main_1
+    %37:vec4<f32> = load %x_GLF_color
+    %38:main_out = construct %37
+    ret %38
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..62f23cf
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,117 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_11:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %arr:ptr<function, array<i32, 3>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %10:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %11:i32 = load %10
+    %12:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %13:i32 = load %12
+    %14:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %15:i32 = load %14
+    %16:array<i32, 3> = construct %11, %13, %15
+    store %arr, %16
+    %17:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %18:i32 = load %17
+    %19:ptr<function, i32, read_write> = access %arr, %18
+    %20:i32 = load %19
+    store %a, %20
+    %21:i32 = load %a
+    %22:i32 = sub %21, 1i
+    store %b, %22
+    %23:f32 = load_vector_element %gl_FragCoord, 0u
+    %24:ptr<uniform, f32, read> = access %x_11, 0u, 0i, 0u
+    %25:f32 = load %24
+    %26:bool = lt %23, %25
+    if %26 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %27:i32 = load %b
+        %28:i32 = add %27, 1i
+        store %b, %28
+        exit_if  # if_1
+      }
+    }
+    %29:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %30:i32 = load %29
+    store %c, %30
+    %x_63:i32 = load %c
+    %32:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_65:i32 = load %32
+    %34:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %x_67:i32 = load %34
+    %36:i32 = clamp %x_63, %x_65, %x_67
+    %37:ptr<function, i32, read_write> = access %arr, %36
+    %38:i32 = load %b
+    store %37, %38
+    %39:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %40:i32 = load %39
+    %41:ptr<function, i32, read_write> = access %arr, %40
+    %42:i32 = load %41
+    %43:f32 = convert %42
+    %44:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %45:i32 = load %44
+    %46:ptr<function, i32, read_write> = access %arr, %45
+    %47:i32 = load %46
+    %48:f32 = convert %47
+    %49:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %50:i32 = load %49
+    %51:ptr<function, i32, read_write> = access %arr, %50
+    %52:i32 = load %51
+    %53:f32 = convert %52
+    %54:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %55:i32 = load %54
+    %56:ptr<function, i32, read_write> = access %arr, %55
+    %57:i32 = load %56
+    %58:f32 = convert %57
+    %59:vec4<f32> = construct %43, %48, %53, %58
+    store %x_GLF_color, %59
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b4 {
+  %b4 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %62:void = call %main_1
+    %63:vec4<f32> = load %x_GLF_color
+    %64:main_out = construct %63
+    ret %64
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3273a1e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,117 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_11:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %arr:ptr<function, array<i32, 3>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %10:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_40:i32 = load %10
+    %12:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_42:i32 = load %12
+    %14:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_44:i32 = load %14
+    %16:array<i32, 3> = construct %x_40, %x_42, %x_44
+    store %arr, %16
+    %17:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %x_47:i32 = load %17
+    %19:ptr<function, i32, read_write> = access %arr, %x_47
+    %x_49:i32 = load %19
+    store %a, %x_49
+    %x_50:i32 = load %a
+    %22:i32 = sub %x_50, 1i
+    store %b, %22
+    %x_53:f32 = load_vector_element %gl_FragCoord, 0u
+    %24:ptr<uniform, f32, read> = access %x_11, 0u, 0i, 0u
+    %x_55:f32 = load %24
+    %26:bool = lt %x_53, %x_55
+    if %26 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_59:i32 = load %b
+        %28:i32 = add %x_59, 1i
+        store %b, %28
+        exit_if  # if_1
+      }
+    }
+    %29:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %x_62:i32 = load %29
+    store %c, %x_62
+    %x_63:i32 = load %c
+    %32:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_65:i32 = load %32
+    %34:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %x_67:i32 = load %34
+    %x_69:i32 = load %b
+    %37:i32 = clamp %x_63, %x_65, %x_67
+    %38:ptr<function, i32, read_write> = access %arr, %37
+    store %38, %x_69
+    %39:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %x_72:i32 = load %39
+    %41:ptr<function, i32, read_write> = access %arr, %x_72
+    %x_74:i32 = load %41
+    %43:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_77:i32 = load %43
+    %45:ptr<function, i32, read_write> = access %arr, %x_77
+    %x_79:i32 = load %45
+    %47:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_82:i32 = load %47
+    %49:ptr<function, i32, read_write> = access %arr, %x_82
+    %x_84:i32 = load %49
+    %51:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %x_87:i32 = load %51
+    %53:ptr<function, i32, read_write> = access %arr, %x_87
+    %x_89:i32 = load %53
+    %55:f32 = convert %x_74
+    %56:f32 = convert %x_79
+    %57:f32 = convert %x_84
+    %58:f32 = convert %x_89
+    %59:vec4<f32> = construct %55, %56, %57, %58
+    store %x_GLF_color, %59
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b4 {
+  %b4 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %62:void = call %main_1
+    %63:vec4<f32> = load %x_GLF_color
+    %64:main_out = construct %63
+    ret %64
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..d136454
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,400 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 20> @offset(0)
+}
+
+buf1 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_19:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %arr0:ptr<function, array<i32, 10>, read_write> = var
+    %arr1:ptr<function, array<i32, 10>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %limiter0:ptr<function, i32, read_write> = var
+    %limiter1:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %limiter2:ptr<function, i32, read_write> = var
+    %limiter3:ptr<function, i32, read_write> = var
+    %d:ptr<function, i32, read_write> = var
+    %ref0:ptr<function, array<i32, 10>, read_write> = var
+    %ref1:ptr<function, array<i32, 10>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %17:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %18:i32 = load %17
+    %19:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %20:i32 = load %19
+    %21:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %22:i32 = load %21
+    %23:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %24:i32 = load %23
+    %25:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+    %26:i32 = load %25
+    %27:ptr<uniform, i32, read> = access %x_6, 0u, 7i, 0u
+    %28:i32 = load %27
+    %29:ptr<uniform, i32, read> = access %x_6, 0u, 8i, 0u
+    %30:i32 = load %29
+    %31:ptr<uniform, i32, read> = access %x_6, 0u, 9i, 0u
+    %32:i32 = load %31
+    %33:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %34:i32 = load %33
+    %35:ptr<uniform, i32, read> = access %x_6, 0u, 10i, 0u
+    %36:i32 = load %35
+    %37:array<i32, 10> = construct %18, %20, %22, %24, %26, %28, %30, %32, %34, %36
+    store %arr0, %37
+    %38:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %39:i32 = load %38
+    %40:ptr<uniform, i32, read> = access %x_6, 0u, 12i, 0u
+    %41:i32 = load %40
+    %42:ptr<uniform, i32, read> = access %x_6, 0u, 15i, 0u
+    %43:i32 = load %42
+    %44:ptr<uniform, i32, read> = access %x_6, 0u, 16i, 0u
+    %45:i32 = load %44
+    %46:ptr<uniform, i32, read> = access %x_6, 0u, 17i, 0u
+    %47:i32 = load %46
+    %48:ptr<uniform, i32, read> = access %x_6, 0u, 13i, 0u
+    %49:i32 = load %48
+    %50:ptr<uniform, i32, read> = access %x_6, 0u, 14i, 0u
+    %51:i32 = load %50
+    %52:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
+    %53:i32 = load %52
+    %54:ptr<uniform, i32, read> = access %x_6, 0u, 18i, 0u
+    %55:i32 = load %54
+    %56:ptr<uniform, i32, read> = access %x_6, 0u, 19i, 0u
+    %57:i32 = load %56
+    %58:array<i32, 10> = construct %39, %41, %43, %45, %47, %49, %51, %53, %55, %57
+    store %arr1, %58
+    %59:ptr<uniform, i32, read> = access %x_6, 0u, 8i, 0u
+    %60:i32 = load %59
+    store %a, %60
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %61:i32 = load %a
+        %62:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %63:i32 = load %62
+        %64:bool = lt %61, %63
+        if %64 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %65:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %66:i32 = load %65
+        store %limiter0, %66
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %67:i32 = load %limiter0
+            %68:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+            %69:i32 = load %68
+            %70:bool = lt %67, %69
+            if %70 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %71:i32 = load %limiter0
+            %72:i32 = add %71, 1i
+            store %limiter0, %72
+            %73:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+            %74:i32 = load %73
+            store %limiter1, %74
+            %75:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+            %76:i32 = load %75
+            store %b, %76
+            loop [b: %b11, c: %b12] {  # loop_3
+              %b11 = block {  # body
+                %77:i32 = load %b
+                %78:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                %79:i32 = load %78
+                %80:bool = lt %77, %79
+                if %80 [t: %b13, f: %b14] {  # if_3
+                  %b13 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b14 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %81:i32 = load %limiter1
+                %82:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+                %83:i32 = load %82
+                %84:bool = gt %81, %83
+                if %84 [t: %b15] {  # if_4
+                  %b15 = block {  # true
+                    exit_loop  # loop_3
+                  }
+                }
+                %85:i32 = load %limiter1
+                %86:i32 = add %85, 1i
+                store %limiter1, %86
+                %x_145:i32 = load %b
+                %88:ptr<function, i32, read_write> = access %arr0, %x_145
+                %89:i32 = load %a
+                %90:ptr<function, i32, read_write> = access %arr1, %89
+                %91:i32 = load %90
+                store %88, %91
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %92:i32 = load %b
+                %93:i32 = add %92, 1i
+                store %b, %93
+                next_iteration %b11
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            next_iteration %b7
+          }
+        }
+        store %limiter2, 0i
+        loop [b: %b16, c: %b17] {  # loop_4
+          %b16 = block {  # body
+            %94:i32 = load %limiter2
+            %95:bool = lt %94, 5i
+            if %95 [t: %b18, f: %b19] {  # if_5
+              %b18 = block {  # true
+                exit_if  # if_5
+              }
+              %b19 = block {  # false
+                exit_loop  # loop_4
+              }
+            }
+            %96:i32 = load %limiter2
+            %97:i32 = add %96, 1i
+            store %limiter2, %97
+            %98:ptr<function, i32, read_write> = access %arr0, 1i
+            %99:ptr<function, i32, read_write> = access %arr1, 1i
+            %100:i32 = load %99
+            store %98, %100
+            continue %b17
+          }
+          %b17 = block {  # continuing
+            next_iteration %b16
+          }
+        }
+        loop [b: %b20, c: %b21] {  # loop_5
+          %b20 = block {  # body
+            store %limiter3, 0i
+            store %d, 0i
+            loop [b: %b22, c: %b23] {  # loop_6
+              %b22 = block {  # body
+                %101:i32 = load %d
+                %102:bool = lt %101, 10i
+                if %102 [t: %b24, f: %b25] {  # if_6
+                  %b24 = block {  # true
+                    exit_if  # if_6
+                  }
+                  %b25 = block {  # false
+                    exit_loop  # loop_6
+                  }
+                }
+                %103:i32 = load %limiter3
+                %104:bool = gt %103, 4i
+                if %104 [t: %b26] {  # if_7
+                  %b26 = block {  # true
+                    exit_loop  # loop_6
+                  }
+                }
+                %105:i32 = load %limiter3
+                %106:i32 = add %105, 1i
+                store %limiter3, %106
+                %x_181:i32 = load %d
+                %108:ptr<function, i32, read_write> = access %arr1, %x_181
+                %109:i32 = load %d
+                %110:ptr<function, i32, read_write> = access %arr0, %109
+                %111:i32 = load %110
+                store %108, %111
+                continue %b23
+              }
+              %b23 = block {  # continuing
+                %112:i32 = load %d
+                %113:i32 = add %112, 1i
+                store %d, %113
+                next_iteration %b22
+              }
+            }
+            continue %b21
+          }
+          %b21 = block {  # continuing
+            %114:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+            %x_189:i32 = load %114
+            %116:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+            %x_191:i32 = load %116
+            %118:bool = eq %x_189, %x_191
+            %119:bool = eq %118, false
+            break_if %119 %b20
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %120:i32 = load %a
+        %121:i32 = add %120, 1i
+        store %a, %121
+        next_iteration %b3
+      }
+    }
+    %122:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
+    %123:i32 = load %122
+    %124:ptr<uniform, i32, read> = access %x_6, 0u, 12i, 0u
+    %125:i32 = load %124
+    %126:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
+    %127:i32 = load %126
+    %128:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %129:i32 = load %128
+    %130:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+    %131:i32 = load %130
+    %132:ptr<uniform, i32, read> = access %x_6, 0u, 7i, 0u
+    %133:i32 = load %132
+    %134:ptr<uniform, i32, read> = access %x_6, 0u, 8i, 0u
+    %135:i32 = load %134
+    %136:ptr<uniform, i32, read> = access %x_6, 0u, 9i, 0u
+    %137:i32 = load %136
+    %138:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %139:i32 = load %138
+    %140:ptr<uniform, i32, read> = access %x_6, 0u, 10i, 0u
+    %141:i32 = load %140
+    %142:array<i32, 10> = construct %123, %125, %127, %129, %131, %133, %135, %137, %139, %141
+    store %ref0, %142
+    %143:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
+    %144:i32 = load %143
+    %145:ptr<uniform, i32, read> = access %x_6, 0u, 12i, 0u
+    %146:i32 = load %145
+    %147:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
+    %148:i32 = load %147
+    %149:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %150:i32 = load %149
+    %151:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+    %152:i32 = load %151
+    %153:ptr<uniform, i32, read> = access %x_6, 0u, 13i, 0u
+    %154:i32 = load %153
+    %155:ptr<uniform, i32, read> = access %x_6, 0u, 14i, 0u
+    %156:i32 = load %155
+    %157:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
+    %158:i32 = load %157
+    %159:ptr<uniform, i32, read> = access %x_6, 0u, 18i, 0u
+    %160:i32 = load %159
+    %161:ptr<uniform, i32, read> = access %x_6, 0u, 19i, 0u
+    %162:i32 = load %161
+    %163:array<i32, 10> = construct %144, %146, %148, %150, %152, %154, %156, %158, %160, %162
+    store %ref1, %163
+    %164:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %165:i32 = load %164
+    %166:f32 = convert %165
+    %167:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %168:i32 = load %167
+    %169:f32 = convert %168
+    %170:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %171:i32 = load %170
+    %172:f32 = convert %171
+    %173:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %174:i32 = load %173
+    %175:f32 = convert %174
+    %176:vec4<f32> = construct %166, %169, %172, %175
+    store %x_GLF_color, %176
+    %177:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %178:i32 = load %177
+    store %i, %178
+    loop [b: %b27, c: %b28] {  # loop_7
+      %b27 = block {  # body
+        %x_277:ptr<function, bool, read_write> = var
+        %x_278:ptr<function, bool, read_write> = var
+        %181:i32 = load %i
+        %182:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %183:i32 = load %182
+        %184:bool = lt %181, %183
+        if %184 [t: %b29, f: %b30] {  # if_8
+          %b29 = block {  # true
+            exit_if  # if_8
+          }
+          %b30 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %185:i32 = load %i
+        %186:ptr<function, i32, read_write> = access %arr0, %185
+        %187:i32 = load %186
+        %188:i32 = load %i
+        %189:ptr<function, i32, read_write> = access %ref0, %188
+        %190:i32 = load %189
+        %x_267:bool = neq %187, %190
+        store %x_278, %x_267
+        %192:bool = eq %x_267, false
+        if %192 [t: %b31] {  # if_9
+          %b31 = block {  # true
+            %193:i32 = load %i
+            %194:ptr<function, i32, read_write> = access %arr1, %193
+            %195:i32 = load %194
+            %196:i32 = load %i
+            %197:ptr<function, i32, read_write> = access %ref1, %196
+            %198:i32 = load %197
+            %199:bool = neq %195, %198
+            store %x_277, %199
+            %200:bool = load %x_277
+            store %x_278, %200
+            exit_if  # if_9
+          }
+        }
+        %201:bool = load %x_278
+        if %201 [t: %b32] {  # if_10
+          %b32 = block {  # true
+            %202:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+            %203:i32 = load %202
+            %204:f32 = convert %203
+            %205:vec4<f32> = construct %204
+            store %x_GLF_color, %205
+            exit_if  # if_10
+          }
+        }
+        continue %b28
+      }
+      %b28 = block {  # continuing
+        %206:i32 = load %i
+        %207:i32 = add %206, 1i
+        store %i, %207
+        next_iteration %b27
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b33 {
+  %b33 = block {
+    %209:void = call %main_1
+    %210:vec4<f32> = load %x_GLF_color
+    %211:main_out = construct %210
+    ret %211
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fa567da
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,400 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 20> @offset(0)
+}
+
+buf1 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_19:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %arr0:ptr<function, array<i32, 10>, read_write> = var
+    %arr1:ptr<function, array<i32, 10>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %limiter0:ptr<function, i32, read_write> = var
+    %limiter1:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %limiter2:ptr<function, i32, read_write> = var
+    %limiter3:ptr<function, i32, read_write> = var
+    %d:ptr<function, i32, read_write> = var
+    %ref0:ptr<function, array<i32, 10>, read_write> = var
+    %ref1:ptr<function, array<i32, 10>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %17:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_59:i32 = load %17
+    %19:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_61:i32 = load %19
+    %21:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %x_63:i32 = load %21
+    %23:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %x_65:i32 = load %23
+    %25:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+    %x_67:i32 = load %25
+    %27:ptr<uniform, i32, read> = access %x_6, 0u, 7i, 0u
+    %x_69:i32 = load %27
+    %29:ptr<uniform, i32, read> = access %x_6, 0u, 8i, 0u
+    %x_71:i32 = load %29
+    %31:ptr<uniform, i32, read> = access %x_6, 0u, 9i, 0u
+    %x_73:i32 = load %31
+    %33:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_75:i32 = load %33
+    %35:ptr<uniform, i32, read> = access %x_6, 0u, 10i, 0u
+    %x_77:i32 = load %35
+    %37:array<i32, 10> = construct %x_59, %x_61, %x_63, %x_65, %x_67, %x_69, %x_71, %x_73, %x_75, %x_77
+    store %arr0, %37
+    %38:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_80:i32 = load %38
+    %40:ptr<uniform, i32, read> = access %x_6, 0u, 12i, 0u
+    %x_82:i32 = load %40
+    %42:ptr<uniform, i32, read> = access %x_6, 0u, 15i, 0u
+    %x_84:i32 = load %42
+    %44:ptr<uniform, i32, read> = access %x_6, 0u, 16i, 0u
+    %x_86:i32 = load %44
+    %46:ptr<uniform, i32, read> = access %x_6, 0u, 17i, 0u
+    %x_88:i32 = load %46
+    %48:ptr<uniform, i32, read> = access %x_6, 0u, 13i, 0u
+    %x_90:i32 = load %48
+    %50:ptr<uniform, i32, read> = access %x_6, 0u, 14i, 0u
+    %x_92:i32 = load %50
+    %52:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
+    %x_94:i32 = load %52
+    %54:ptr<uniform, i32, read> = access %x_6, 0u, 18i, 0u
+    %x_96:i32 = load %54
+    %56:ptr<uniform, i32, read> = access %x_6, 0u, 19i, 0u
+    %x_98:i32 = load %56
+    %58:array<i32, 10> = construct %x_80, %x_82, %x_84, %x_86, %x_88, %x_90, %x_92, %x_94, %x_96, %x_98
+    store %arr1, %58
+    %59:ptr<uniform, i32, read> = access %x_6, 0u, 8i, 0u
+    %x_101:i32 = load %59
+    store %a, %x_101
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_106:i32 = load %a
+        %62:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_108:i32 = load %62
+        %64:bool = lt %x_106, %x_108
+        if %64 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %65:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_112:i32 = load %65
+        store %limiter0, %x_112
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %x_117:i32 = load %limiter0
+            %68:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+            %x_119:i32 = load %68
+            %70:bool = lt %x_117, %x_119
+            if %70 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_122:i32 = load %limiter0
+            %72:i32 = add %x_122, 1i
+            store %limiter0, %72
+            %73:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+            %x_125:i32 = load %73
+            store %limiter1, %x_125
+            %75:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+            %x_127:i32 = load %75
+            store %b, %x_127
+            loop [b: %b11, c: %b12] {  # loop_3
+              %b11 = block {  # body
+                %x_132:i32 = load %b
+                %78:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                %x_134:i32 = load %78
+                %80:bool = lt %x_132, %x_134
+                if %80 [t: %b13, f: %b14] {  # if_3
+                  %b13 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b14 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %x_137:i32 = load %limiter1
+                %82:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+                %x_139:i32 = load %82
+                %84:bool = gt %x_137, %x_139
+                if %84 [t: %b15] {  # if_4
+                  %b15 = block {  # true
+                    exit_loop  # loop_3
+                  }
+                }
+                %x_143:i32 = load %limiter1
+                %86:i32 = add %x_143, 1i
+                store %limiter1, %86
+                %x_145:i32 = load %b
+                %x_146:i32 = load %a
+                %89:ptr<function, i32, read_write> = access %arr1, %x_146
+                %x_148:i32 = load %89
+                %91:ptr<function, i32, read_write> = access %arr0, %x_145
+                store %91, %x_148
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %x_150:i32 = load %b
+                %93:i32 = add %x_150, 1i
+                store %b, %93
+                next_iteration %b11
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            next_iteration %b7
+          }
+        }
+        store %limiter2, 0i
+        loop [b: %b16, c: %b17] {  # loop_4
+          %b16 = block {  # body
+            %x_156:i32 = load %limiter2
+            %95:bool = lt %x_156, 5i
+            if %95 [t: %b18, f: %b19] {  # if_5
+              %b18 = block {  # true
+                exit_if  # if_5
+              }
+              %b19 = block {  # false
+                exit_loop  # loop_4
+              }
+            }
+            %x_159:i32 = load %limiter2
+            %97:i32 = add %x_159, 1i
+            store %limiter2, %97
+            %98:ptr<function, i32, read_write> = access %arr1, 1i
+            %x_162:i32 = load %98
+            %100:ptr<function, i32, read_write> = access %arr0, 1i
+            store %100, %x_162
+            continue %b17
+          }
+          %b17 = block {  # continuing
+            next_iteration %b16
+          }
+        }
+        loop [b: %b20, c: %b21] {  # loop_5
+          %b20 = block {  # body
+            store %limiter3, 0i
+            store %d, 0i
+            loop [b: %b22, c: %b23] {  # loop_6
+              %b22 = block {  # body
+                %x_172:i32 = load %d
+                %102:bool = lt %x_172, 10i
+                if %102 [t: %b24, f: %b25] {  # if_6
+                  %b24 = block {  # true
+                    exit_if  # if_6
+                  }
+                  %b25 = block {  # false
+                    exit_loop  # loop_6
+                  }
+                }
+                %x_175:i32 = load %limiter3
+                %104:bool = gt %x_175, 4i
+                if %104 [t: %b26] {  # if_7
+                  %b26 = block {  # true
+                    exit_loop  # loop_6
+                  }
+                }
+                %x_179:i32 = load %limiter3
+                %106:i32 = add %x_179, 1i
+                store %limiter3, %106
+                %x_181:i32 = load %d
+                %x_182:i32 = load %d
+                %109:ptr<function, i32, read_write> = access %arr0, %x_182
+                %x_184:i32 = load %109
+                %111:ptr<function, i32, read_write> = access %arr1, %x_181
+                store %111, %x_184
+                continue %b23
+              }
+              %b23 = block {  # continuing
+                %x_186:i32 = load %d
+                %113:i32 = add %x_186, 1i
+                store %d, %113
+                next_iteration %b22
+              }
+            }
+            continue %b21
+          }
+          %b21 = block {  # continuing
+            %114:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+            %x_189:i32 = load %114
+            %116:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+            %x_191:i32 = load %116
+            %118:bool = eq %x_189, %x_191
+            %119:bool = eq %118, false
+            break_if %119 %b20
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_193:i32 = load %a
+        %121:i32 = add %x_193, 1i
+        store %a, %121
+        next_iteration %b3
+      }
+    }
+    %122:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
+    %x_196:i32 = load %122
+    %124:ptr<uniform, i32, read> = access %x_6, 0u, 12i, 0u
+    %x_198:i32 = load %124
+    %126:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
+    %x_200:i32 = load %126
+    %128:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %x_202:i32 = load %128
+    %130:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+    %x_204:i32 = load %130
+    %132:ptr<uniform, i32, read> = access %x_6, 0u, 7i, 0u
+    %x_206:i32 = load %132
+    %134:ptr<uniform, i32, read> = access %x_6, 0u, 8i, 0u
+    %x_208:i32 = load %134
+    %136:ptr<uniform, i32, read> = access %x_6, 0u, 9i, 0u
+    %x_210:i32 = load %136
+    %138:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_212:i32 = load %138
+    %140:ptr<uniform, i32, read> = access %x_6, 0u, 10i, 0u
+    %x_214:i32 = load %140
+    %142:array<i32, 10> = construct %x_196, %x_198, %x_200, %x_202, %x_204, %x_206, %x_208, %x_210, %x_212, %x_214
+    store %ref0, %142
+    %143:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
+    %x_217:i32 = load %143
+    %145:ptr<uniform, i32, read> = access %x_6, 0u, 12i, 0u
+    %x_219:i32 = load %145
+    %147:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
+    %x_221:i32 = load %147
+    %149:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %x_223:i32 = load %149
+    %151:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+    %x_225:i32 = load %151
+    %153:ptr<uniform, i32, read> = access %x_6, 0u, 13i, 0u
+    %x_227:i32 = load %153
+    %155:ptr<uniform, i32, read> = access %x_6, 0u, 14i, 0u
+    %x_229:i32 = load %155
+    %157:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
+    %x_231:i32 = load %157
+    %159:ptr<uniform, i32, read> = access %x_6, 0u, 18i, 0u
+    %x_233:i32 = load %159
+    %161:ptr<uniform, i32, read> = access %x_6, 0u, 19i, 0u
+    %x_235:i32 = load %161
+    %163:array<i32, 10> = construct %x_217, %x_219, %x_221, %x_223, %x_225, %x_227, %x_229, %x_231, %x_233, %x_235
+    store %ref1, %163
+    %164:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_238:i32 = load %164
+    %166:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_241:i32 = load %166
+    %168:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_244:i32 = load %168
+    %170:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_247:i32 = load %170
+    %172:f32 = convert %x_238
+    %173:f32 = convert %x_241
+    %174:f32 = convert %x_244
+    %175:f32 = convert %x_247
+    %176:vec4<f32> = construct %172, %173, %174, %175
+    store %x_GLF_color, %176
+    %177:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_251:i32 = load %177
+    store %i, %x_251
+    loop [b: %b27, c: %b28] {  # loop_7
+      %b27 = block {  # body
+        %x_277:ptr<function, bool, read_write> = var
+        %x_278_phi:ptr<function, bool, read_write> = var
+        %x_256:i32 = load %i
+        %182:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_258:i32 = load %182
+        %184:bool = lt %x_256, %x_258
+        if %184 [t: %b29, f: %b30] {  # if_8
+          %b29 = block {  # true
+            exit_if  # if_8
+          }
+          %b30 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %x_261:i32 = load %i
+        %186:ptr<function, i32, read_write> = access %arr0, %x_261
+        %x_263:i32 = load %186
+        %x_264:i32 = load %i
+        %189:ptr<function, i32, read_write> = access %ref0, %x_264
+        %x_266:i32 = load %189
+        %x_267:bool = neq %x_263, %x_266
+        store %x_278_phi, %x_267
+        %192:bool = eq %x_267, false
+        if %192 [t: %b31] {  # if_9
+          %b31 = block {  # true
+            %x_271:i32 = load %i
+            %194:ptr<function, i32, read_write> = access %arr1, %x_271
+            %x_273:i32 = load %194
+            %x_274:i32 = load %i
+            %197:ptr<function, i32, read_write> = access %ref1, %x_274
+            %x_276:i32 = load %197
+            %199:bool = neq %x_273, %x_276
+            store %x_277, %199
+            %200:bool = load %x_277
+            store %x_278_phi, %200
+            exit_if  # if_9
+          }
+        }
+        %x_278:bool = load %x_278_phi
+        if %x_278 [t: %b32] {  # if_10
+          %b32 = block {  # true
+            %202:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+            %x_282:i32 = load %202
+            %x_283:f32 = convert %x_282
+            %205:vec4<f32> = construct %x_283, %x_283, %x_283, %x_283
+            store %x_GLF_color, %205
+            exit_if  # if_10
+          }
+        }
+        continue %b28
+      }
+      %b28 = block {  # continuing
+        %x_285:i32 = load %i
+        %207:i32 = add %x_285, 1i
+        store %i, %207
+        next_iteration %b27
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b33 {
+  %b33 = block {
+    %209:void = call %main_1
+    %210:vec4<f32> = load %x_GLF_color
+    %211:main_out = construct %210
+    ret %211
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..a28f9da
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,160 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 7> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %v2:ptr<function, vec4<f32>, read_write> = var
+    %v3:ptr<function, vec4<f32>, read_write> = var
+    %v4:ptr<function, vec4<f32>, read_write> = var
+    %x_69:ptr<function, bool, read_write> = var
+    %x_70:ptr<function, bool, read_write> = var
+    %x_77:ptr<function, bool, read_write> = var
+    %x_78:ptr<function, bool, read_write> = var
+    %x_85:ptr<function, bool, read_write> = var
+    %x_86:ptr<function, bool, read_write> = var
+    %x_93:ptr<function, bool, read_write> = var
+    %x_94:ptr<function, bool, read_write> = var
+    %16:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %17:f32 = load %16
+    %18:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %19:f32 = load %18
+    %20:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %21:f32 = load %20
+    %22:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %23:f32 = load %22
+    %24:vec4<f32> = construct %17, %19, %21, %23
+    store %v1, %24
+    store %v2, vec4<f32>(1.57079637050628662109f, 1.11976957321166992188f, 1.0f, 0.92729520797729492188f)
+    %25:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %26:f32 = load %25
+    %27:vec4<f32> = construct %26
+    store %v3, %27
+    %28:vec4<f32> = load %v1
+    %29:vec4<f32> = load %v2
+    %30:vec4<f32> = load %v3
+    %31:vec4<f32> = smoothstep %28, %29, %30
+    store %v4, %31
+    %32:vec4<f32> = load %v4
+    %33:vec4<f32> = swizzle %32, xywx
+    store %x_GLF_color, %33
+    %34:f32 = load_vector_element %v4, 0u
+    %35:ptr<uniform, f32, read> = access %x_6, 0u, 4i, 0u
+    %36:f32 = load %35
+    %x_62:bool = gt %34, %36
+    store %x_70, %x_62
+    if %x_62 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %38:f32 = load_vector_element %v4, 0u
+        %39:ptr<uniform, f32, read> = access %x_6, 0u, 5i, 0u
+        %40:f32 = load %39
+        %41:bool = lt %38, %40
+        store %x_69, %41
+        %42:bool = load %x_69
+        store %x_70, %42
+        exit_if  # if_1
+      }
+    }
+    %43:bool = load %x_70
+    store %x_78, %43
+    %44:bool = load %x_70
+    if %44 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %45:f32 = load_vector_element %v4, 1u
+        %46:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %47:f32 = load %46
+        %48:bool = gt %45, %47
+        store %x_77, %48
+        %49:bool = load %x_77
+        store %x_78, %49
+        exit_if  # if_2
+      }
+    }
+    %50:bool = load %x_78
+    store %x_86, %50
+    %51:bool = load %x_78
+    if %51 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        %52:f32 = load_vector_element %v4, 1u
+        %53:ptr<uniform, f32, read> = access %x_6, 0u, 6i, 0u
+        %54:f32 = load %53
+        %55:bool = lt %52, %54
+        store %x_85, %55
+        %56:bool = load %x_85
+        store %x_86, %56
+        exit_if  # if_3
+      }
+    }
+    %57:bool = load %x_86
+    store %x_94, %57
+    %58:bool = load %x_86
+    if %58 [t: %b6] {  # if_4
+      %b6 = block {  # true
+        %59:f32 = load_vector_element %v4, 3u
+        %60:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %61:f32 = load %60
+        %62:bool = eq %59, %61
+        store %x_93, %62
+        %63:bool = load %x_93
+        store %x_94, %63
+        exit_if  # if_4
+      }
+    }
+    %64:bool = load %x_94
+    if %64 [t: %b7, f: %b8] {  # if_5
+      %b7 = block {  # true
+        %65:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %66:f32 = load %65
+        %67:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %68:f32 = load %67
+        %69:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %70:f32 = load %69
+        %71:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %72:f32 = load %71
+        %73:vec4<f32> = construct %66, %68, %70, %72
+        store %x_GLF_color, %73
+        exit_if  # if_5
+      }
+      %b8 = block {  # false
+        %74:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %75:f32 = load %74
+        %76:vec4<f32> = construct %75
+        store %x_GLF_color, %76
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %78:void = call %main_1
+    %79:vec4<f32> = load %x_GLF_color
+    %80:main_out = construct %79
+    ret %80
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2cb4587
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,161 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 7> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %v2:ptr<function, vec4<f32>, read_write> = var
+    %v3:ptr<function, vec4<f32>, read_write> = var
+    %v4:ptr<function, vec4<f32>, read_write> = var
+    %x_69:ptr<function, bool, read_write> = var
+    %x_77:ptr<function, bool, read_write> = var
+    %x_85:ptr<function, bool, read_write> = var
+    %x_93:ptr<function, bool, read_write> = var
+    %x_70_phi:ptr<function, bool, read_write> = var
+    %x_78_phi:ptr<function, bool, read_write> = var
+    %x_86_phi:ptr<function, bool, read_write> = var
+    %x_94_phi:ptr<function, bool, read_write> = var
+    %16:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %x_41:f32 = load %16
+    %18:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %x_43:f32 = load %18
+    %20:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_45:f32 = load %20
+    %22:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %x_47:f32 = load %22
+    %24:vec4<f32> = construct %x_41, %x_43, %x_45, %x_47
+    store %v1, %24
+    store %v2, vec4<f32>(1.57079637050628662109f, 1.11976957321166992188f, 1.0f, 0.92729520797729492188f)
+    %25:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_50:f32 = load %25
+    %27:vec4<f32> = construct %x_50, %x_50, %x_50, %x_50
+    store %v3, %27
+    %x_52:vec4<f32> = load %v1
+    %x_53:vec4<f32> = load %v2
+    %x_54:vec4<f32> = load %v3
+    %31:vec4<f32> = smoothstep %x_52, %x_53, %x_54
+    store %v4, %31
+    %x_56:vec4<f32> = load %v4
+    %33:f32 = access %x_56, 0u
+    %34:f32 = access %x_56, 1u
+    %35:f32 = access %x_56, 3u
+    %36:f32 = access %x_56, 0u
+    %37:vec4<f32> = construct %33, %34, %35, %36
+    store %x_GLF_color, %37
+    %x_59:f32 = load_vector_element %v4, 0u
+    %39:ptr<uniform, f32, read> = access %x_6, 0u, 4i, 0u
+    %x_61:f32 = load %39
+    %x_62:bool = gt %x_59, %x_61
+    store %x_70_phi, %x_62
+    if %x_62 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_66:f32 = load_vector_element %v4, 0u
+        %43:ptr<uniform, f32, read> = access %x_6, 0u, 5i, 0u
+        %x_68:f32 = load %43
+        %45:bool = lt %x_66, %x_68
+        store %x_69, %45
+        %46:bool = load %x_69
+        store %x_70_phi, %46
+        exit_if  # if_1
+      }
+    }
+    %x_70:bool = load %x_70_phi
+    store %x_78_phi, %x_70
+    if %x_70 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %x_74:f32 = load_vector_element %v4, 1u
+        %49:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %x_76:f32 = load %49
+        %51:bool = gt %x_74, %x_76
+        store %x_77, %51
+        %52:bool = load %x_77
+        store %x_78_phi, %52
+        exit_if  # if_2
+      }
+    }
+    %x_78:bool = load %x_78_phi
+    store %x_86_phi, %x_78
+    if %x_78 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        %x_82:f32 = load_vector_element %v4, 1u
+        %55:ptr<uniform, f32, read> = access %x_6, 0u, 6i, 0u
+        %x_84:f32 = load %55
+        %57:bool = lt %x_82, %x_84
+        store %x_85, %57
+        %58:bool = load %x_85
+        store %x_86_phi, %58
+        exit_if  # if_3
+      }
+    }
+    %x_86:bool = load %x_86_phi
+    store %x_94_phi, %x_86
+    if %x_86 [t: %b6] {  # if_4
+      %b6 = block {  # true
+        %x_90:f32 = load_vector_element %v4, 3u
+        %61:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_92:f32 = load %61
+        %63:bool = eq %x_90, %x_92
+        store %x_93, %63
+        %64:bool = load %x_93
+        store %x_94_phi, %64
+        exit_if  # if_4
+      }
+    }
+    %x_94:bool = load %x_94_phi
+    if %x_94 [t: %b7, f: %b8] {  # if_5
+      %b7 = block {  # true
+        %66:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_99:f32 = load %66
+        %68:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_101:f32 = load %68
+        %70:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_103:f32 = load %70
+        %72:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_105:f32 = load %72
+        %74:vec4<f32> = construct %x_99, %x_101, %x_103, %x_105
+        store %x_GLF_color, %74
+        exit_if  # if_5
+      }
+      %b8 = block {  # false
+        %75:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_108:f32 = load %75
+        %77:vec4<f32> = construct %x_108, %x_108, %x_108, %x_108
+        store %x_GLF_color, %77
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %79:void = call %main_1
+    %80:vec4<f32> = load %x_GLF_color
+    %81:main_out = construct %80
+    ret %81
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..d106aa1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,116 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %f:ptr<function, f32, read_write> = var
+    %x_56:ptr<function, bool, read_write> = var
+    %x_57:ptr<function, bool, read_write> = var
+    %9:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %10:i32 = load %9
+    %11:f32 = convert %10
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %13:i32 = load %12
+    %14:f32 = convert %13
+    %15:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %16:i32 = load %15
+    %17:f32 = convert %16
+    %18:vec4<f32> = construct %11, %14, -621.59600830078125f, %17
+    store %v, %18
+    %19:vec4<f32> = load %v
+    %20:vec4<f32> = trunc %19
+    %21:vec4<f32> = atan %20
+    %22:f32 = access %21, 2u
+    store %f, %22
+    %23:f32 = load %f
+    %24:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+    %25:f32 = load %24
+    %26:f32 = negation %25
+    %x_49:bool = gt %23, %26
+    store %x_57, %x_49
+    if %x_49 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %28:f32 = load %f
+        %29:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+        %30:f32 = load %29
+        %31:f32 = negation %30
+        %32:bool = lt %28, %31
+        store %x_56, %32
+        %33:bool = load %x_56
+        store %x_57, %33
+        exit_if  # if_1
+      }
+    }
+    %34:bool = load %x_57
+    if %34 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %35:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %36:i32 = load %35
+        %37:f32 = convert %36
+        %38:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %39:i32 = load %38
+        %40:f32 = convert %39
+        %41:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %42:i32 = load %41
+        %43:f32 = convert %42
+        %44:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %45:i32 = load %44
+        %46:f32 = convert %45
+        %47:vec4<f32> = construct %37, %40, %43, %46
+        store %x_GLF_color, %47
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %48:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %49:i32 = load %48
+        %50:f32 = convert %49
+        %51:vec4<f32> = construct %50
+        store %x_GLF_color, %51
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %53:void = call %main_1
+    %54:vec4<f32> = load %x_GLF_color
+    %55:main_out = construct %54
+    ret %55
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3d057c0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,116 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %f:ptr<function, f32, read_write> = var
+    %x_56:ptr<function, bool, read_write> = var
+    %x_57_phi:ptr<function, bool, read_write> = var
+    %9:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_32:i32 = load %9
+    %11:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_35:i32 = load %11
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_38:i32 = load %13
+    %15:f32 = convert %x_32
+    %16:f32 = convert %x_35
+    %17:f32 = convert %x_38
+    %18:vec4<f32> = construct %15, %16, -621.59600830078125f, %17
+    store %v, %18
+    %x_41:vec4<f32> = load %v
+    %20:vec4<f32> = trunc %x_41
+    %21:vec4<f32> = atan %20
+    %22:f32 = access %21, 2u
+    store %f, %22
+    %x_45:f32 = load %f
+    %24:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+    %x_47:f32 = load %24
+    %26:f32 = negation %x_47
+    %x_49:bool = gt %x_45, %26
+    store %x_57_phi, %x_49
+    if %x_49 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_52:f32 = load %f
+        %29:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+        %x_54:f32 = load %29
+        %31:f32 = negation %x_54
+        %32:bool = lt %x_52, %31
+        store %x_56, %32
+        %33:bool = load %x_56
+        store %x_57_phi, %33
+        exit_if  # if_1
+      }
+    }
+    %x_57:bool = load %x_57_phi
+    if %x_57 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %35:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_62:i32 = load %35
+        %37:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_65:i32 = load %37
+        %39:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_68:i32 = load %39
+        %41:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_71:i32 = load %41
+        %43:f32 = convert %x_62
+        %44:f32 = convert %x_65
+        %45:f32 = convert %x_68
+        %46:f32 = convert %x_71
+        %47:vec4<f32> = construct %43, %44, %45, %46
+        store %x_GLF_color, %47
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %48:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_75:i32 = load %48
+        %x_76:f32 = convert %x_75
+        %51:vec4<f32> = construct %x_76, %x_76, %x_76, %x_76
+        store %x_GLF_color, %51
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %53:void = call %main_1
+    %54:vec4<f32> = load %x_GLF_color
+    %55:main_out = construct %54
+    ret %55
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2a45dc4
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,99 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_i1_ = func(%x:ptr<function, i32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %5:i32 = load %x
+    %6:bool = eq %5, 10i
+    if %6 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        discard
+        exit_if  # if_1
+      }
+    }
+    %x_49:i32 = load %x
+    ret %x_49
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %x_35:ptr<function, i32, read_write> = var
+    %x_37:ptr<function, i32, read_write> = var
+    store %a, 0i
+    %14:ptr<uniform, i32, read> = access %x_9, 0u
+    %x_33:i32 = load %14
+    store %b, %x_33
+    store %x_35, %x_33
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %16:i32 = load %x_35
+        store %param, %16
+        %17:i32 = call %func_i1_, %param
+        store %x_37, %17
+        %18:i32 = load %x_37
+        store %a, %18
+        %19:i32 = load %x_35
+        %x_36:i32 = add %19, 1i
+        store %b, %x_36
+        store %x_35, %x_36
+        %21:bool = lt %x_36, 4i
+        if %21 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        next_iteration %b5
+      }
+    }
+    %22:i32 = load %x_37
+    %23:bool = eq %22, 3i
+    if %23 [t: %b9, f: %b10] {  # if_3
+      %b9 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b10 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %25:void = call %main_1
+    %26:vec4<f32> = load %x_GLF_color
+    %27:main_out = construct %26
+    ret %27
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..95960d1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,98 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_i1_ = func(%x:ptr<function, i32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %x_45:i32 = load %x
+    %6:bool = eq %x_45, 10i
+    if %6 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        discard
+        exit_if  # if_1
+      }
+    }
+    %x_49:i32 = load %x
+    ret %x_49
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %x_37:ptr<function, i32, read_write> = var
+    %x_35_phi:ptr<function, i32, read_write> = var
+    store %a, 0i
+    %14:ptr<uniform, i32, read> = access %x_9, 0u
+    %x_33:i32 = load %14
+    store %b, %x_33
+    store %x_35_phi, %x_33
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %x_35:i32 = load %x_35_phi
+        store %param, %x_35
+        %17:i32 = call %func_i1_, %param
+        store %x_37, %17
+        %18:i32 = load %x_37
+        store %a, %18
+        %x_36:i32 = add %x_35, 1i
+        store %b, %x_36
+        store %x_35_phi, %x_36
+        %20:bool = lt %x_36, 4i
+        if %20 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        next_iteration %b5
+      }
+    }
+    %21:i32 = load %x_37
+    %22:bool = eq %21, 3i
+    if %22 [t: %b9, f: %b10] {  # if_3
+      %b9 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b10 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %24:void = call %main_1
+    %25:vec4<f32> = load %x_GLF_color
+    %26:main_out = construct %25
+    ret %26
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..e0d0933
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,120 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_11:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%f1_ = func():i32 -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %a, 256i
+    %8:f32 = load_vector_element %gl_FragCoord, 1u
+    %9:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %10:f32 = load %9
+    %11:bool = gt %8, %10
+    if %11 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %12:i32 = load %a
+        %13:i32 = add %12, 1i
+        store %a, %13
+        exit_if  # if_1
+      }
+    }
+    %14:i32 = load %a
+    %15:i32 = countOneBits %14
+    store %i, %15
+    %16:i32 = load %i
+    %17:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+    %18:i32 = load %17
+    %19:bool = lt %16, %18
+    if %19 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %20:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+        %x_82:i32 = load %20
+        ret %x_82
+      }
+    }
+    %x_83:i32 = load %i
+    ret %x_83
+  }
+}
+%main_1 = func():void -> %b5 {
+  %b5 = block {
+    %a_1:ptr<function, i32, read_write> = var
+    %x_38:i32 = call %f1_
+    store %a_1, %x_38
+    %26:i32 = load %a_1
+    %27:ptr<uniform, i32, read> = access %x_11, 0u, 2i, 0u
+    %28:i32 = load %27
+    %29:bool = eq %26, %28
+    if %29 [t: %b6, f: %b7] {  # if_3
+      %b6 = block {  # true
+        %30:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+        %31:i32 = load %30
+        %32:f32 = convert %31
+        %33:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %34:i32 = load %33
+        %35:f32 = convert %34
+        %36:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %37:i32 = load %36
+        %38:f32 = convert %37
+        %39:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+        %40:i32 = load %39
+        %41:f32 = convert %40
+        %42:vec4<f32> = construct %32, %35, %38, %41
+        store %x_GLF_color, %42
+        exit_if  # if_3
+      }
+      %b7 = block {  # false
+        %43:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %44:i32 = load %43
+        %45:f32 = convert %44
+        %46:vec4<f32> = construct %45
+        store %x_GLF_color, %46
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b8 {
+  %b8 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %49:void = call %main_1
+    %50:vec4<f32> = load %x_GLF_color
+    %51:main_out = construct %50
+    ret %51
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7100815
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,120 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_11:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%f1_ = func():i32 -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %a, 256i
+    %x_65:f32 = load_vector_element %gl_FragCoord, 1u
+    %9:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_67:f32 = load %9
+    %11:bool = gt %x_65, %x_67
+    if %11 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_71:i32 = load %a
+        %13:i32 = add %x_71, 1i
+        store %a, %13
+        exit_if  # if_1
+      }
+    }
+    %x_73:i32 = load %a
+    %15:i32 = countOneBits %x_73
+    store %i, %15
+    %x_75:i32 = load %i
+    %17:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+    %x_77:i32 = load %17
+    %19:bool = lt %x_75, %x_77
+    if %19 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %20:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+        %x_82:i32 = load %20
+        ret %x_82
+      }
+    }
+    %x_83:i32 = load %i
+    ret %x_83
+  }
+}
+%main_1 = func():void -> %b5 {
+  %b5 = block {
+    %a_1:ptr<function, i32, read_write> = var
+    %x_38:i32 = call %f1_
+    store %a_1, %x_38
+    %x_39:i32 = load %a_1
+    %27:ptr<uniform, i32, read> = access %x_11, 0u, 2i, 0u
+    %x_41:i32 = load %27
+    %29:bool = eq %x_39, %x_41
+    if %29 [t: %b6, f: %b7] {  # if_3
+      %b6 = block {  # true
+        %30:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+        %x_47:i32 = load %30
+        %32:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %x_50:i32 = load %32
+        %34:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %x_53:i32 = load %34
+        %36:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+        %x_56:i32 = load %36
+        %38:f32 = convert %x_47
+        %39:f32 = convert %x_50
+        %40:f32 = convert %x_53
+        %41:f32 = convert %x_56
+        %42:vec4<f32> = construct %38, %39, %40, %41
+        store %x_GLF_color, %42
+        exit_if  # if_3
+      }
+      %b7 = block {  # false
+        %43:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %x_60:i32 = load %43
+        %x_61:f32 = convert %x_60
+        %46:vec4<f32> = construct %x_61, %x_61, %x_61, %x_61
+        store %x_GLF_color, %46
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b8 {
+  %b8 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %49:void = call %main_1
+    %50:vec4<f32> = load %x_GLF_color
+    %51:main_out = construct %50
+    ret %51
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..8dc4287
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.spvasm.expected.ir.msl
@@ -0,0 +1,117 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_28:ptr<function, i32, read_write> = var
+    %x_31:ptr<function, i32, read_write> = var
+    %x_29:ptr<function, i32, read_write> = var
+    %x_42:ptr<function, i32, read_write> = var
+    %x_24:i32 = let -2147483648i
+    %9:ptr<uniform, i32, read> = access %x_5, 0u, 3i, 0u
+    %10:i32 = load %9
+    store %x_28, %10
+    store %x_31, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_32:ptr<function, i32, read_write> = var
+        %12:i32 = load %x_28
+        store %x_42, %12
+        %13:i32 = load %x_31
+        %14:i32 = sub %x_24, 1i
+        %15:bool = lte %13, %14
+        if %15 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %16:i32 = load %x_28
+        %17:i32 = load %x_31
+        %18:i32 = add %16, %17
+        store %x_29, %18
+        %19:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %20:i32 = load %19
+        %21:bool = eq %20, 1i
+        if %21 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %22:i32 = load %x_29
+            store %x_42, %22
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %23:i32 = load %x_31
+        %24:i32 = add %23, 1i
+        store %x_32, %24
+        %25:i32 = load %x_29
+        store %x_28, %25
+        %26:i32 = load %x_32
+        store %x_31, %26
+        next_iteration %b3
+      }
+    }
+    %27:i32 = load %x_42
+    %28:ptr<uniform, i32, read> = access %x_5, 0u, 2i, 0u
+    %29:i32 = load %28
+    %30:bool = eq %27, %29
+    if %30 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %31:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %32:i32 = load %31
+        %x_51:f32 = convert %32
+        %34:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %35:i32 = load %34
+        %x_54:f32 = convert %35
+        %37:vec4<f32> = construct %x_51, %x_54, %x_54, %x_51
+        store %x_GLF_color, %37
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %38:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %39:i32 = load %38
+        %40:f32 = convert %39
+        %41:vec4<f32> = construct %40
+        store %x_GLF_color, %41
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..354cb39
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl.expected.ir.msl
@@ -0,0 +1,120 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_28:ptr<function, i32, read_write> = var
+    %x_29:ptr<function, i32, read_write> = var
+    %x_28_phi:ptr<function, i32, read_write> = var
+    %x_31_phi:ptr<function, i32, read_write> = var
+    %x_42_phi:ptr<function, i32, read_write> = var
+    %x_24:i32 = let -2147483648i
+    %10:ptr<uniform, i32, read> = access %x_5, 0u, 3i, 0u
+    %x_26:i32 = load %10
+    store %x_28_phi, %x_26
+    store %x_31_phi, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_32:ptr<function, i32, read_write> = var
+        %13:i32 = load %x_28_phi
+        store %x_28, %13
+        %x_31:i32 = load %x_31_phi
+        %15:i32 = load %x_28
+        store %x_42_phi, %15
+        %16:i32 = sub %x_24, 1i
+        %17:bool = lte %x_31, %16
+        if %17 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %18:i32 = load %x_28
+        %19:i32 = bitcast %x_31
+        %20:i32 = add %18, %19
+        %21:i32 = bitcast %20
+        store %x_29, %21
+        %22:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %x_38:i32 = load %22
+        %24:bool = eq %x_38, 1i
+        if %24 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %25:i32 = load %x_29
+            store %x_42_phi, %25
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %26:i32 = add %x_31, 1i
+        store %x_32, %26
+        %27:i32 = load %x_29
+        store %x_28_phi, %27
+        %28:i32 = load %x_32
+        store %x_31_phi, %28
+        next_iteration %b3
+      }
+    }
+    %x_42:i32 = load %x_42_phi
+    %30:ptr<uniform, i32, read> = access %x_5, 0u, 2i, 0u
+    %x_44:i32 = load %30
+    %32:bool = eq %x_42, %x_44
+    if %32 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %33:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %x_50:i32 = load %33
+        %x_51:f32 = convert %x_50
+        %36:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %x_53:i32 = load %36
+        %x_54:f32 = convert %x_53
+        %39:vec4<f32> = construct %x_51, %x_54, %x_54, %x_51
+        store %x_GLF_color, %39
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %40:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %x_57:i32 = load %40
+        %x_58:f32 = convert %x_57
+        %43:vec4<f32> = construct %x_58, %x_58, %x_58, %x_58
+        store %x_GLF_color, %43
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %45:void = call %main_1
+    %46:vec4<f32> = load %x_GLF_color
+    %47:main_out = construct %46
+    ret %47
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b37552a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,111 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf2 = struct @align(4) {
+  zero:f32 @offset(0)
+}
+
+strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %x_32:ptr<function, i32, read_write> = var
+    %8:ptr<uniform, f32, read> = access %x_6, 0u
+    %9:f32 = load %8
+    %10:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %11:f32 = load %10
+    %12:bool = lt %9, %11
+    if %12 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %13:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %14:i32 = load %13
+        store %x_32, %14
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %15:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %16:i32 = load %15
+        store %x_32, %16
+        exit_if  # if_1
+      }
+    }
+    %17:i32 = load %x_32
+    %18:i32 = or %17, 1i
+    %19:i32 = complement %18
+    store %a, %19
+    %20:i32 = load %a
+    %21:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+    %22:i32 = load %21
+    %23:i32 = complement %22
+    %24:bool = eq %20, %23
+    if %24 [t: %b5, f: %b6] {  # if_2
+      %b5 = block {  # true
+        %25:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %26:i32 = load %25
+        %27:f32 = convert %26
+        %28:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %29:i32 = load %28
+        %30:f32 = convert %29
+        %31:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %32:i32 = load %31
+        %33:f32 = convert %32
+        %34:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %35:i32 = load %34
+        %36:f32 = convert %35
+        %37:vec4<f32> = construct %27, %30, %33, %36
+        store %x_GLF_color, %37
+        exit_if  # if_2
+      }
+      %b6 = block {  # false
+        %38:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %39:i32 = load %38
+        %40:f32 = convert %39
+        %41:vec4<f32> = construct %40
+        store %x_GLF_color, %41
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..412cb3d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,111 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf2 = struct @align(4) {
+  zero:f32 @offset(0)
+}
+
+strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %x_32:ptr<function, i32, read_write> = var
+    %8:ptr<uniform, f32, read> = access %x_6, 0u
+    %x_34:f32 = load %8
+    %10:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_36:f32 = load %10
+    %12:bool = lt %x_34, %x_36
+    if %12 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %13:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_42:i32 = load %13
+        store %x_32, %x_42
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %15:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_44:i32 = load %15
+        store %x_32, %x_44
+        exit_if  # if_1
+      }
+    }
+    %x_45:i32 = load %x_32
+    %18:i32 = or %x_45, 1i
+    %19:i32 = complement %18
+    store %a, %19
+    %x_48:i32 = load %a
+    %21:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+    %x_50:i32 = load %21
+    %23:i32 = complement %x_50
+    %24:bool = eq %x_48, %23
+    if %24 [t: %b5, f: %b6] {  # if_2
+      %b5 = block {  # true
+        %25:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_57:i32 = load %25
+        %27:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_60:i32 = load %27
+        %29:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_63:i32 = load %29
+        %31:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_66:i32 = load %31
+        %33:f32 = convert %x_57
+        %34:f32 = convert %x_60
+        %35:f32 = convert %x_63
+        %36:f32 = convert %x_66
+        %37:vec4<f32> = construct %33, %34, %35, %36
+        store %x_GLF_color, %37
+        exit_if  # if_2
+      }
+      %b6 = block {  # false
+        %38:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_70:i32 = load %38
+        %x_71:f32 = convert %x_70
+        %41:vec4<f32> = construct %x_71, %x_71, %x_71, %x_71
+        store %x_GLF_color, %41
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b69a06
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,259 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %sums:ptr<function, array<f32, 2>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %d:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, mat2x2<f32>, read_write> = var
+    %indexable_1:ptr<function, mat2x2<f32>, read_write> = var
+    %x_158:ptr<function, bool, read_write> = var
+    %x_159:ptr<function, bool, read_write> = var
+    %14:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_16:i32 = load %14
+    %16:ptr<function, f32, read_write> = access %sums, %x_16
+    %17:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %18:f32 = load %17
+    %19:f32 = negation %18
+    store %16, %19
+    %20:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_18:i32 = load %20
+    %22:ptr<function, f32, read_write> = access %sums, %x_18
+    %23:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %24:f32 = load %23
+    %25:f32 = negation %24
+    store %22, %25
+    %26:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %27:i32 = load %26
+    store %a, %27
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %28:i32 = load %a
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %30:i32 = load %29
+        %31:bool = lt %28, %30
+        if %31 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %32:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %33:i32 = load %32
+        store %b, %33
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %34:i32 = load %b
+            %35:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+            %36:i32 = load %35
+            %37:bool = lt %34, %36
+            if %37 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %38:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %39:i32 = load %38
+            store %c, %39
+            loop [b: %b11, c: %b12] {  # loop_3
+              %b11 = block {  # body
+                %40:i32 = load %c
+                %41:i32 = load %a
+                %42:bool = lte %40, %41
+                if %42 [t: %b13, f: %b14] {  # if_3
+                  %b13 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b14 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %43:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                %44:i32 = load %43
+                store %d, %44
+                loop [b: %b15, c: %b16] {  # loop_4
+                  %b15 = block {  # body
+                    %45:i32 = load %d
+                    %46:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+                    %47:i32 = load %46
+                    %48:bool = lt %45, %47
+                    if %48 [t: %b17, f: %b18] {  # if_4
+                      %b17 = block {  # true
+                        exit_if  # if_4
+                      }
+                      %b18 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %x_31:i32 = load %a
+                    %50:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+                    %51:i32 = load %50
+                    %x_125:f32 = convert %51
+                    %x_33:i32 = load %c
+                    %54:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+                    %x_34:i32 = load %54
+                    %56:vec2<f32> = construct %x_125, 0.0f
+                    %57:vec2<f32> = construct 0.0f, %x_125
+                    %58:mat2x2<f32> = construct %56, %57
+                    store %indexable, %58
+                    %59:ptr<function, f32, read_write> = access %sums, %x_31
+                    %60:ptr<function, vec2<f32>, read_write> = access %indexable, %x_33
+                    %61:f32 = load_vector_element %60, %x_34
+                    store %59, %61
+                    %x_35:i32 = load %a
+                    %63:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+                    %64:i32 = load %63
+                    %x_134:f32 = convert %64
+                    %x_37:i32 = load %c
+                    %67:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+                    %x_38:i32 = load %67
+                    %69:vec2<f32> = construct %x_134, 0.0f
+                    %70:vec2<f32> = construct 0.0f, %x_134
+                    %71:mat2x2<f32> = construct %69, %70
+                    store %indexable_1, %71
+                    %72:ptr<function, f32, read_write> = access %sums, %x_35
+                    %73:ptr<function, f32, read_write> = access %sums, %x_35
+                    %74:f32 = load %73
+                    %75:ptr<function, vec2<f32>, read_write> = access %indexable_1, %x_37
+                    %76:f32 = load_vector_element %75, %x_38
+                    %77:f32 = add %74, %76
+                    store %72, %77
+                    continue %b16
+                  }
+                  %b16 = block {  # continuing
+                    %78:i32 = load %d
+                    %79:i32 = add %78, 1i
+                    store %d, %79
+                    next_iteration %b15
+                  }
+                }
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %80:i32 = load %c
+                %81:i32 = add %80, 1i
+                store %c, %81
+                next_iteration %b11
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %82:i32 = load %b
+            %83:i32 = add %82, 1i
+            store %b, %83
+            next_iteration %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %84:i32 = load %a
+        %85:i32 = add %84, 1i
+        store %a, %85
+        next_iteration %b3
+      }
+    }
+    %86:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %87:i32 = load %86
+    %88:ptr<function, f32, read_write> = access %sums, %87
+    %89:f32 = load %88
+    %90:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %91:f32 = load %90
+    %x_150:bool = eq %89, %91
+    store %x_159, %x_150
+    if %x_150 [t: %b19] {  # if_5
+      %b19 = block {  # true
+        %93:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %94:i32 = load %93
+        %95:ptr<function, f32, read_write> = access %sums, %94
+        %96:f32 = load %95
+        %97:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+        %98:f32 = load %97
+        %99:bool = eq %96, %98
+        store %x_158, %99
+        %100:bool = load %x_158
+        store %x_159, %100
+        exit_if  # if_5
+      }
+    }
+    %101:bool = load %x_159
+    if %101 [t: %b20, f: %b21] {  # if_6
+      %b20 = block {  # true
+        %102:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %103:i32 = load %102
+        %104:f32 = convert %103
+        %105:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %106:i32 = load %105
+        %107:f32 = convert %106
+        %108:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %109:i32 = load %108
+        %110:f32 = convert %109
+        %111:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %112:i32 = load %111
+        %113:f32 = convert %112
+        %114:vec4<f32> = construct %104, %107, %110, %113
+        store %x_GLF_color, %114
+        exit_if  # if_6
+      }
+      %b21 = block {  # false
+        %115:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %116:i32 = load %115
+        %117:f32 = convert %116
+        %118:vec4<f32> = construct %117
+        store %x_GLF_color, %118
+        exit_if  # if_6
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b22 {
+  %b22 = block {
+    %120:void = call %main_1
+    %121:vec4<f32> = load %x_GLF_color
+    %122:main_out = construct %121
+    ret %122
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c9e8ed6
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,259 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %sums:ptr<function, array<f32, 2>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %d:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, mat2x2<f32>, read_write> = var
+    %indexable_1:ptr<function, mat2x2<f32>, read_write> = var
+    %x_158:ptr<function, bool, read_write> = var
+    %x_159_phi:ptr<function, bool, read_write> = var
+    %14:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_16:i32 = load %14
+    %16:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_85:f32 = load %16
+    %18:ptr<function, f32, read_write> = access %sums, %x_16
+    %19:f32 = negation %x_85
+    store %18, %19
+    %20:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_18:i32 = load %20
+    %22:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_90:f32 = load %22
+    %24:ptr<function, f32, read_write> = access %sums, %x_18
+    %25:f32 = negation %x_90
+    store %24, %25
+    %26:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_19:i32 = load %26
+    store %a, %x_19
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_20:i32 = load %a
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_21:i32 = load %29
+        %31:bool = lt %x_20, %x_21
+        if %31 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %32:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_22:i32 = load %32
+        store %b, %x_22
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %x_23:i32 = load %b
+            %35:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+            %x_24:i32 = load %35
+            %37:bool = lt %x_23, %x_24
+            if %37 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %38:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %x_25:i32 = load %38
+            store %c, %x_25
+            loop [b: %b11, c: %b12] {  # loop_3
+              %b11 = block {  # body
+                %x_26:i32 = load %c
+                %x_27:i32 = load %a
+                %42:bool = lte %x_26, %x_27
+                if %42 [t: %b13, f: %b14] {  # if_3
+                  %b13 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b14 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %43:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                %x_28:i32 = load %43
+                store %d, %x_28
+                loop [b: %b15, c: %b16] {  # loop_4
+                  %b15 = block {  # body
+                    %x_29:i32 = load %d
+                    %46:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+                    %x_30:i32 = load %46
+                    %48:bool = lt %x_29, %x_30
+                    if %48 [t: %b17, f: %b18] {  # if_4
+                      %b17 = block {  # true
+                        exit_if  # if_4
+                      }
+                      %b18 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %x_31:i32 = load %a
+                    %50:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+                    %x_32:i32 = load %50
+                    %x_125:f32 = convert %x_32
+                    %x_33:i32 = load %c
+                    %54:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+                    %x_34:i32 = load %54
+                    %56:vec2<f32> = construct %x_125, 0.0f
+                    %57:vec2<f32> = construct 0.0f, %x_125
+                    %58:mat2x2<f32> = construct %56, %57
+                    store %indexable, %58
+                    %59:ptr<function, vec2<f32>, read_write> = access %indexable, %x_33
+                    %x_131:f32 = load_vector_element %59, %x_34
+                    %61:ptr<function, f32, read_write> = access %sums, %x_31
+                    store %61, %x_131
+                    %x_35:i32 = load %a
+                    %63:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+                    %x_36:i32 = load %63
+                    %x_134:f32 = convert %x_36
+                    %x_37:i32 = load %c
+                    %67:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+                    %x_38:i32 = load %67
+                    %69:vec2<f32> = construct %x_134, 0.0f
+                    %70:vec2<f32> = construct 0.0f, %x_134
+                    %71:mat2x2<f32> = construct %69, %70
+                    store %indexable_1, %71
+                    %72:ptr<function, vec2<f32>, read_write> = access %indexable_1, %x_37
+                    %x_140:f32 = load_vector_element %72, %x_38
+                    %74:ptr<function, f32, read_write> = access %sums, %x_35
+                    %x_142:f32 = load %74
+                    %76:ptr<function, f32, read_write> = access %sums, %x_35
+                    %77:f32 = add %x_142, %x_140
+                    store %76, %77
+                    continue %b16
+                  }
+                  %b16 = block {  # continuing
+                    %x_39:i32 = load %d
+                    %79:i32 = add %x_39, 1i
+                    store %d, %79
+                    next_iteration %b15
+                  }
+                }
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %x_41:i32 = load %c
+                %81:i32 = add %x_41, 1i
+                store %c, %81
+                next_iteration %b11
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %x_43:i32 = load %b
+            %83:i32 = add %x_43, 1i
+            store %b, %83
+            next_iteration %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_45:i32 = load %a
+        %85:i32 = add %x_45, 1i
+        store %a, %85
+        next_iteration %b3
+      }
+    }
+    %86:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_47:i32 = load %86
+    %88:ptr<function, f32, read_write> = access %sums, %x_47
+    %x_147:f32 = load %88
+    %90:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %x_149:f32 = load %90
+    %x_150:bool = eq %x_147, %x_149
+    store %x_159_phi, %x_150
+    if %x_150 [t: %b19] {  # if_5
+      %b19 = block {  # true
+        %93:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_48:i32 = load %93
+        %95:ptr<function, f32, read_write> = access %sums, %x_48
+        %x_155:f32 = load %95
+        %97:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+        %x_157:f32 = load %97
+        %99:bool = eq %x_155, %x_157
+        store %x_158, %99
+        %100:bool = load %x_158
+        store %x_159_phi, %100
+        exit_if  # if_5
+      }
+    }
+    %x_159:bool = load %x_159_phi
+    if %x_159 [t: %b20, f: %b21] {  # if_6
+      %b20 = block {  # true
+        %102:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_49:i32 = load %102
+        %104:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_50:i32 = load %104
+        %106:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_51:i32 = load %106
+        %108:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_52:i32 = load %108
+        %110:f32 = convert %x_49
+        %111:f32 = convert %x_50
+        %112:f32 = convert %x_51
+        %113:f32 = convert %x_52
+        %114:vec4<f32> = construct %110, %111, %112, %113
+        store %x_GLF_color, %114
+        exit_if  # if_6
+      }
+      %b21 = block {  # false
+        %115:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_53:i32 = load %115
+        %x_173:f32 = convert %x_53
+        %118:vec4<f32> = construct %x_173, %x_173, %x_173, %x_173
+        store %x_GLF_color, %118
+        exit_if  # if_6
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b22 {
+  %b22 = block {
+    %120:void = call %main_1
+    %121:vec4<f32> = load %x_GLF_color
+    %122:main_out = construct %121
+    ret %122
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..99c379c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,73 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    store %f, 142.6999969482421875f
+    %5:f32 = load %f
+    %6:i32 = convert %5
+    %7:f32 = convert %6
+    %8:bool = gt %7, 100.0f
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %9:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %10:i32 = load %9
+        %11:f32 = convert %10
+        %12:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %13:i32 = load %12
+        %14:f32 = convert %13
+        %15:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %16:i32 = load %15
+        %17:f32 = convert %16
+        %18:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %19:i32 = load %18
+        %20:f32 = convert %19
+        %21:vec4<f32> = construct %11, %14, %17, %20
+        store %x_GLF_color, %21
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %22:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %23:i32 = load %22
+        %24:f32 = convert %23
+        %25:vec4<f32> = construct %24
+        store %x_GLF_color, %25
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %27:void = call %main_1
+    %28:vec4<f32> = load %x_GLF_color
+    %29:main_out = construct %28
+    ret %29
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fa66a67
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,73 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    store %f, 142.6999969482421875f
+    %x_25:f32 = load %f
+    %6:i32 = convert %x_25
+    %7:f32 = convert %6
+    %8:bool = gt %7, 100.0f
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %9:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_33:i32 = load %9
+        %11:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_36:i32 = load %11
+        %13:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_39:i32 = load %13
+        %15:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_42:i32 = load %15
+        %17:f32 = convert %x_33
+        %18:f32 = convert %x_36
+        %19:f32 = convert %x_39
+        %20:f32 = convert %x_42
+        %21:vec4<f32> = construct %17, %18, %19, %20
+        store %x_GLF_color, %21
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %22:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_46:i32 = load %22
+        %x_47:f32 = convert %x_46
+        %25:vec4<f32> = construct %x_47, %x_47, %x_47, %x_47
+        store %x_GLF_color, %25
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %27:void = call %main_1
+    %28:vec4<f32> = load %x_GLF_color
+    %29:main_out = construct %28
+    ret %29
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..a4b4880
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,139 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %sums:ptr<function, array<f32, 3>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, mat2x4<f32>, read_write> = var
+    %8:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %9:f32 = load %8
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %11:f32 = load %10
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %13:f32 = load %12
+    %14:array<f32, 3> = construct %9, %11, %13
+    store %sums, %14
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %15:i32 = load %i
+        %16:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %17:i32 = load %16
+        %18:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %19:i32 = load %18
+        %20:i32 = clamp %17, %19, 2i
+        %21:bool = lt %15, %20
+        if %21 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %22:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %x_59:i32 = load %22
+        %24:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_61:f32 = load %24
+        %x_65:i32 = load %i
+        %27:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_67:i32 = load %27
+        %29:vec4<f32> = construct %x_61, 0.0f, 0.0f, 0.0f
+        %30:vec4<f32> = construct 0.0f, %x_61, 0.0f, 0.0f
+        %31:mat2x4<f32> = construct %29, %30
+        store %indexable, %31
+        %32:ptr<function, f32, read_write> = access %sums, %x_59
+        %33:ptr<function, f32, read_write> = access %sums, %x_59
+        %34:f32 = load %33
+        %35:ptr<function, vec4<f32>, read_write> = access %indexable, %x_65
+        %36:f32 = load_vector_element %35, %x_67
+        %37:f32 = add %34, %36
+        store %32, %37
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %38:i32 = load %i
+        %39:i32 = add %38, 1i
+        store %i, %39
+        next_iteration %b3
+      }
+    }
+    %40:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+    %41:i32 = load %40
+    %42:ptr<function, f32, read_write> = access %sums, %41
+    %43:f32 = load %42
+    %44:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %45:f32 = load %44
+    %46:bool = eq %43, %45
+    if %46 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %47:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %48:i32 = load %47
+        %49:f32 = convert %48
+        %50:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %51:i32 = load %50
+        %52:f32 = convert %51
+        %53:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %54:i32 = load %53
+        %55:f32 = convert %54
+        %56:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %57:i32 = load %56
+        %58:f32 = convert %57
+        %59:vec4<f32> = construct %49, %52, %55, %58
+        store %x_GLF_color, %59
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %60:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %61:i32 = load %60
+        %62:f32 = convert %61
+        %63:vec4<f32> = construct %62
+        store %x_GLF_color, %63
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %65:void = call %main_1
+    %66:vec4<f32> = load %x_GLF_color
+    %67:main_out = construct %66
+    ret %67
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b1382f5
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,139 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %sums:ptr<function, array<f32, 3>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, mat2x4<f32>, read_write> = var
+    %8:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_40:f32 = load %8
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_42:f32 = load %10
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_44:f32 = load %12
+    %14:array<f32, 3> = construct %x_40, %x_42, %x_44
+    store %sums, %14
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_50:i32 = load %i
+        %16:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_52:i32 = load %16
+        %18:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_54:i32 = load %18
+        %20:i32 = clamp %x_52, %x_54, 2i
+        %21:bool = lt %x_50, %20
+        if %21 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %22:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %x_59:i32 = load %22
+        %24:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_61:f32 = load %24
+        %x_65:i32 = load %i
+        %27:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_67:i32 = load %27
+        %29:vec4<f32> = construct %x_61, 0.0f, 0.0f, 0.0f
+        %30:vec4<f32> = construct 0.0f, %x_61, 0.0f, 0.0f
+        %31:mat2x4<f32> = construct %29, %30
+        store %indexable, %31
+        %32:ptr<function, vec4<f32>, read_write> = access %indexable, %x_65
+        %x_69:f32 = load_vector_element %32, %x_67
+        %34:ptr<function, f32, read_write> = access %sums, %x_59
+        %x_71:f32 = load %34
+        %36:ptr<function, f32, read_write> = access %sums, %x_59
+        %37:f32 = add %x_71, %x_69
+        store %36, %37
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_74:i32 = load %i
+        %39:i32 = add %x_74, 1i
+        store %i, %39
+        next_iteration %b3
+      }
+    }
+    %40:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+    %x_77:i32 = load %40
+    %42:ptr<function, f32, read_write> = access %sums, %x_77
+    %x_79:f32 = load %42
+    %44:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_81:f32 = load %44
+    %46:bool = eq %x_79, %x_81
+    if %46 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %47:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_87:i32 = load %47
+        %49:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_90:i32 = load %49
+        %51:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_93:i32 = load %51
+        %53:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_96:i32 = load %53
+        %55:f32 = convert %x_87
+        %56:f32 = convert %x_90
+        %57:f32 = convert %x_93
+        %58:f32 = convert %x_96
+        %59:vec4<f32> = construct %55, %56, %57, %58
+        store %x_GLF_color, %59
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %60:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_100:i32 = load %60
+        %x_101:f32 = convert %x_100
+        %63:vec4<f32> = construct %x_101, %x_101, %x_101, %x_101
+        store %x_GLF_color, %63
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %65:void = call %main_1
+    %66:vec4<f32> = load %x_GLF_color
+    %67:main_out = construct %66
+    ret %67
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..74f3920
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,90 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    store %a, 1.0f
+    %7:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %8:f32 = load %7
+    %9:f32 = load %a
+    %10:f32 = select 0.0f, %9, false
+    %11:f32 = clamp %8, %10, 1.0f
+    store %b, %11
+    %12:f32 = load %b
+    %13:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %14:f32 = load %13
+    %15:bool = eq %12, %14
+    if %15 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %16:f32 = load %b
+        %17:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %18:f32 = load %17
+        %19:f32 = mul %16, %18
+        %20:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %21:i32 = load %20
+        %22:f32 = convert %21
+        %23:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %24:i32 = load %23
+        %25:f32 = convert %24
+        %26:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %27:i32 = load %26
+        %28:f32 = convert %27
+        %29:vec4<f32> = construct %19, %22, %25, %28
+        store %x_GLF_color, %29
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %30:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %31:i32 = load %30
+        %32:f32 = convert %31
+        %33:vec4<f32> = construct %32
+        store %x_GLF_color, %33
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %35:void = call %main_1
+    %36:vec4<f32> = load %x_GLF_color
+    %37:main_out = construct %36
+    ret %37
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5752f7f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,90 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    store %a, 1.0f
+    %7:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_33:f32 = load %7
+    %x_34:f32 = load %a
+    %10:f32 = select 0.0f, %x_34, false
+    %11:f32 = clamp %x_33, %10, 1.0f
+    store %b, %11
+    %x_37:f32 = load %b
+    %13:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_39:f32 = load %13
+    %15:bool = eq %x_37, %x_39
+    if %15 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %x_44:f32 = load %b
+        %17:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %x_46:f32 = load %17
+        %19:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_49:i32 = load %19
+        %21:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_52:i32 = load %21
+        %23:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_55:i32 = load %23
+        %25:f32 = mul %x_44, %x_46
+        %26:f32 = convert %x_49
+        %27:f32 = convert %x_52
+        %28:f32 = convert %x_55
+        %29:vec4<f32> = construct %25, %26, %27, %28
+        store %x_GLF_color, %29
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %30:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_59:i32 = load %30
+        %x_60:f32 = convert %x_59
+        %33:vec4<f32> = construct %x_60, %x_60, %x_60, %x_60
+        store %x_GLF_color, %33
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %35:void = call %main_1
+    %36:vec4<f32> = load %x_GLF_color
+    %37:main_out = construct %36
+    ret %37
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..fe83ec1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,169 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %8:i32 = load %7
+    %9:f32 = convert %8
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %11:i32 = load %10
+    %12:f32 = convert %11
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %14:i32 = load %13
+    %15:f32 = convert %14
+    %16:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %17:i32 = load %16
+    %18:f32 = convert %17
+    %19:vec4<f32> = construct %9, %12, %15, %18
+    store %v, %19
+    %20:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %21:i32 = load %20
+    store %i, %21
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %22:i32 = load %i
+        %23:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %24:i32 = load %23
+        %25:bool = lt %22, %24
+        if %25 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %26:f32 = load_vector_element %v, 0u
+        %27:f32 = load_vector_element %v, 1u
+        %28:f32 = load_vector_element %v, 2u
+        %29:f32 = load_vector_element %v, 3u
+        %30:vec4<f32> = construct %26, %27, %28, %29
+        %31:f32 = load_vector_element %v, 0u
+        %32:f32 = load_vector_element %v, 1u
+        %33:f32 = load_vector_element %v, 2u
+        %34:f32 = load_vector_element %v, 3u
+        %35:vec4<f32> = construct %31, %32, %33, %34
+        %36:f32 = load_vector_element %v, 0u
+        %37:f32 = load_vector_element %v, 1u
+        %38:f32 = load_vector_element %v, 2u
+        %39:f32 = load_vector_element %v, 3u
+        %40:vec4<f32> = construct %36, %37, %38, %39
+        %41:f32 = load_vector_element %v, 0u
+        %42:f32 = load_vector_element %v, 1u
+        %43:f32 = load_vector_element %v, 2u
+        %44:f32 = load_vector_element %v, 3u
+        %45:vec4<f32> = construct %41, %42, %43, %44
+        %46:mat4x4<f32> = construct %30, %35, %40, %45
+        %47:i32 = load %i
+        %48:f32 = access %46, 0u, %47
+        %49:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+        %50:f32 = load %49
+        %51:bool = gt %48, %50
+        if %51 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %x_96:i32 = load %i
+            %53:vec4<f32> = load %v
+            %54:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+            %55:f32 = load %54
+            %56:vec4<f32> = construct %55
+            %57:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+            %58:f32 = load %57
+            %59:vec4<f32> = construct %58
+            %60:vec4<f32> = clamp %53, %56, %59
+            %61:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %62:i32 = load %61
+            %63:f32 = access %60, %62
+            store_vector_element %v, %x_96, %63
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %64:i32 = load %i
+        %65:i32 = add %64, 1i
+        store %i, %65
+        next_iteration %b3
+      }
+    }
+    %66:vec4<f32> = load %v
+    %67:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %68:i32 = load %67
+    %69:f32 = convert %68
+    %70:vec4<f32> = construct %69
+    %71:vec4<bool> = eq %66, %70
+    %72:bool = all %71
+    if %72 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %73:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %74:i32 = load %73
+        %75:f32 = convert %74
+        %76:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %77:i32 = load %76
+        %78:f32 = convert %77
+        %79:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %80:i32 = load %79
+        %81:f32 = convert %80
+        %82:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %83:i32 = load %82
+        %84:f32 = convert %83
+        %85:vec4<f32> = construct %75, %78, %81, %84
+        store %x_GLF_color, %85
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %86:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %87:i32 = load %86
+        %88:f32 = convert %87
+        %89:vec4<f32> = construct %88
+        store %x_GLF_color, %89
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %91:void = call %main_1
+    %92:vec4<f32> = load %x_GLF_color
+    %93:main_out = construct %92
+    ret %93
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..203245d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,173 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_40:i32 = load %7
+    %9:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_43:i32 = load %9
+    %11:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_46:i32 = load %11
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_49:i32 = load %13
+    %15:f32 = convert %x_40
+    %16:f32 = convert %x_43
+    %17:f32 = convert %x_46
+    %18:f32 = convert %x_49
+    %19:vec4<f32> = construct %15, %16, %17, %18
+    store %v, %19
+    %20:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %x_53:i32 = load %20
+    store %i, %x_53
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_58:i32 = load %i
+        %23:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_60:i32 = load %23
+        %25:bool = lt %x_58, %x_60
+        if %25 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_63:vec4<f32> = load %v
+        %x_64:vec4<f32> = load %v
+        %x_65:vec4<f32> = load %v
+        %x_66:vec4<f32> = load %v
+        %x_88:i32 = load %i
+        %31:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+        %x_92:f32 = load %31
+        %33:f32 = access %x_63, 0u
+        %34:f32 = access %x_63, 1u
+        %35:f32 = access %x_63, 2u
+        %36:f32 = access %x_63, 3u
+        %37:vec4<f32> = construct %33, %34, %35, %36
+        %38:f32 = access %x_64, 0u
+        %39:f32 = access %x_64, 1u
+        %40:f32 = access %x_64, 2u
+        %41:f32 = access %x_64, 3u
+        %42:vec4<f32> = construct %38, %39, %40, %41
+        %43:f32 = access %x_65, 0u
+        %44:f32 = access %x_65, 1u
+        %45:f32 = access %x_65, 2u
+        %46:f32 = access %x_65, 3u
+        %47:vec4<f32> = construct %43, %44, %45, %46
+        %48:f32 = access %x_66, 0u
+        %49:f32 = access %x_66, 1u
+        %50:f32 = access %x_66, 2u
+        %51:f32 = access %x_66, 3u
+        %52:vec4<f32> = construct %48, %49, %50, %51
+        %53:mat4x4<f32> = construct %37, %42, %47, %52
+        %54:f32 = access %53, 0u, %x_88
+        %55:bool = gt %54, %x_92
+        if %55 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %x_96:i32 = load %i
+            %x_97:vec4<f32> = load %v
+            %58:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+            %x_99:f32 = load %58
+            %60:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+            %x_102:f32 = load %60
+            %62:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %x_106:i32 = load %62
+            %64:vec4<f32> = construct %x_99, %x_99, %x_99, %x_99
+            %65:vec4<f32> = construct %x_102, %x_102, %x_102, %x_102
+            %66:vec4<f32> = clamp %x_97, %64, %65
+            %67:f32 = access %66, %x_106
+            store_vector_element %v, %x_96, %67
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_109:i32 = load %i
+        %69:i32 = add %x_109, 1i
+        store %i, %69
+        next_iteration %b3
+      }
+    }
+    %x_111:vec4<f32> = load %v
+    %71:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_113:i32 = load %71
+    %x_114:f32 = convert %x_113
+    %74:vec4<f32> = construct %x_114, %x_114, %x_114, %x_114
+    %75:vec4<bool> = eq %x_111, %74
+    %76:bool = all %75
+    if %76 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %77:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_122:i32 = load %77
+        %79:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %x_125:i32 = load %79
+        %81:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %x_128:i32 = load %81
+        %83:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_131:i32 = load %83
+        %85:f32 = convert %x_122
+        %86:f32 = convert %x_125
+        %87:f32 = convert %x_128
+        %88:f32 = convert %x_131
+        %89:vec4<f32> = construct %85, %86, %87, %88
+        store %x_GLF_color, %89
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %90:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %x_135:i32 = load %90
+        %x_136:f32 = convert %x_135
+        %93:vec4<f32> = construct %x_136, %x_136, %x_136, %x_136
+        store %x_GLF_color, %93
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %95:void = call %main_1
+    %96:vec4<f32> = load %x_GLF_color
+    %97:main_out = construct %96
+    ret %97
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..234af99
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,95 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v0:ptr<function, vec2<f32>, read_write> = var
+    %v1:ptr<function, vec2<f32>, read_write> = var
+    %7:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %8:f32 = load %7
+    %9:vec2<f32> = construct %8, -580.0150146484375f
+    store %v0, %9
+    %10:vec2<f32> = load %v0
+    %11:vec2<f32> = ceil %10
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %13:f32 = load %12
+    %14:f32 = negation %13
+    %15:vec2<f32> = construct %14
+    %16:vec2<f32> = clamp %11, %15, vec2<f32>(100.0f)
+    store %v1, %16
+    %17:f32 = load_vector_element %v1, 1u
+    %18:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %19:f32 = load %18
+    %20:f32 = negation %19
+    %21:bool = eq %17, %20
+    if %21 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %22:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %23:i32 = load %22
+        %24:f32 = convert %23
+        %25:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %26:i32 = load %25
+        %27:f32 = convert %26
+        %28:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %29:i32 = load %28
+        %30:f32 = convert %29
+        %31:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %32:i32 = load %31
+        %33:f32 = convert %32
+        %34:vec4<f32> = construct %24, %27, %30, %33
+        store %x_GLF_color, %34
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %35:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %36:i32 = load %35
+        %37:f32 = convert %36
+        %38:vec4<f32> = construct %37
+        store %x_GLF_color, %38
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %40:void = call %main_1
+    %41:vec4<f32> = load %x_GLF_color
+    %42:main_out = construct %41
+    ret %42
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7227d5a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,95 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v0:ptr<function, vec2<f32>, read_write> = var
+    %v1:ptr<function, vec2<f32>, read_write> = var
+    %7:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_36:f32 = load %7
+    %9:vec2<f32> = construct %x_36, -580.0150146484375f
+    store %v0, %9
+    %x_38:vec2<f32> = load %v0
+    %11:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_41:f32 = load %11
+    %x_42:f32 = negation %x_41
+    %14:vec2<f32> = ceil %x_38
+    %15:vec2<f32> = construct %x_42, %x_42
+    %16:vec2<f32> = clamp %14, %15, vec2<f32>(100.0f)
+    store %v1, %16
+    %x_46:f32 = load_vector_element %v1, 1u
+    %18:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_48:f32 = load %18
+    %20:f32 = negation %x_48
+    %21:bool = eq %x_46, %20
+    if %21 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %22:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_55:i32 = load %22
+        %24:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_58:i32 = load %24
+        %26:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_61:i32 = load %26
+        %28:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_64:i32 = load %28
+        %30:f32 = convert %x_55
+        %31:f32 = convert %x_58
+        %32:f32 = convert %x_61
+        %33:f32 = convert %x_64
+        %34:vec4<f32> = construct %30, %31, %32, %33
+        store %x_GLF_color, %34
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %35:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_68:i32 = load %35
+        %x_69:f32 = convert %x_68
+        %38:vec4<f32> = construct %x_69, %x_69, %x_69, %x_69
+        store %x_GLF_color, %38
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %40:void = call %main_1
+    %41:vec4<f32> = load %x_GLF_color
+    %42:main_out = construct %41
+    ret %42
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..a3d3f99
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,97 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v0:ptr<function, vec2<f32>, read_write> = var
+    %v1:ptr<function, vec2<f32>, read_write> = var
+    %7:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %8:f32 = load %7
+    %9:vec2<f32> = construct %8, 3.79999995231628417969f
+    store %v0, %9
+    %10:vec2<f32> = load %v0
+    %11:vec2<f32> = sub %10, vec2<f32>(1.0f)
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %13:f32 = load %12
+    %14:vec2<f32> = construct %13
+    %15:vec2<f32> = clamp %11, vec2<f32>(0.0f), %14
+    store %v1, %15
+    %16:vec2<f32> = load %v1
+    %17:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %18:f32 = load %17
+    %19:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %20:f32 = load %19
+    %21:vec2<f32> = construct %18, %20
+    %22:vec2<bool> = eq %16, %21
+    %23:bool = all %22
+    if %23 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %24:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %25:i32 = load %24
+        %26:f32 = convert %25
+        %27:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %28:i32 = load %27
+        %29:f32 = convert %28
+        %30:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %31:i32 = load %30
+        %32:f32 = convert %31
+        %33:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %34:i32 = load %33
+        %35:f32 = convert %34
+        %36:vec4<f32> = construct %26, %29, %32, %35
+        store %x_GLF_color, %36
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %37:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %38:i32 = load %37
+        %39:f32 = convert %38
+        %40:vec4<f32> = construct %39
+        store %x_GLF_color, %40
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %42:void = call %main_1
+    %43:vec4<f32> = load %x_GLF_color
+    %44:main_out = construct %43
+    ret %44
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..02f689a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,97 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v0:ptr<function, vec2<f32>, read_write> = var
+    %v1:ptr<function, vec2<f32>, read_write> = var
+    %7:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %x_37:f32 = load %7
+    %9:vec2<f32> = construct %x_37, 3.79999995231628417969f
+    store %v0, %9
+    %x_39:vec2<f32> = load %v0
+    %11:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_43:f32 = load %11
+    %13:vec2<f32> = sub %x_39, vec2<f32>(1.0f)
+    %14:vec2<f32> = construct %x_43, %x_43
+    %15:vec2<f32> = clamp %13, vec2<f32>(0.0f), %14
+    store %v1, %15
+    %x_47:vec2<f32> = load %v1
+    %17:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_49:f32 = load %17
+    %19:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_51:f32 = load %19
+    %21:vec2<f32> = construct %x_49, %x_51
+    %22:vec2<bool> = eq %x_47, %21
+    %23:bool = all %22
+    if %23 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %24:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_59:i32 = load %24
+        %26:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_62:i32 = load %26
+        %28:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_65:i32 = load %28
+        %30:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_68:i32 = load %30
+        %32:f32 = convert %x_59
+        %33:f32 = convert %x_62
+        %34:f32 = convert %x_65
+        %35:f32 = convert %x_68
+        %36:vec4<f32> = construct %32, %33, %34, %35
+        store %x_GLF_color, %36
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %37:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_72:i32 = load %37
+        %x_73:f32 = convert %x_72
+        %40:vec4<f32> = construct %x_73, %x_73, %x_73, %x_73
+        store %x_GLF_color, %40
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %42:void = call %main_1
+    %43:vec4<f32> = load %x_GLF_color
+    %44:main_out = construct %43
+    ret %44
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..e3d58bc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,94 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+buf1 = struct @align(4) {
+  zero:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v0:ptr<function, vec2<f32>, read_write> = var
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %x_57:ptr<function, vec4<f32>, read_write> = var
+    %8:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %9:f32 = load %8
+    %10:vec2<f32> = construct %9
+    store %v0, %10
+    %11:f32 = load_vector_element %v0, 0u
+    %x_36:vec4<f32> = construct %11
+    store %v1, %x_36
+    %13:ptr<uniform, f32, read> = access %x_9, 0u
+    %14:f32 = load %13
+    %15:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %16:f32 = load %15
+    %17:bool = eq %14, %16
+    %18:bool = eq %17, false
+    if %18 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %19:ptr<uniform, f32, read> = access %x_9, 0u
+        %20:f32 = load %19
+        %21:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %22:f32 = load %21
+        %23:bool = eq %20, %22
+        if %23 [t: %b5] {  # if_2
+          %b5 = block {  # true
+            ret
+          }
+        }
+        %24:f32 = access %x_36, 0u
+        %25:vec2<f32> = swizzle %x_36, yz
+        %26:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %27:f32 = load %26
+        %28:vec2<f32> = construct %27
+        %29:vec2<f32> = sub %25, %28
+        %30:vec2<f32> = swizzle %29, xy
+        %31:f32 = access %x_36, 3u
+        %32:vec4<f32> = construct %24, %30, %31
+        store %x_57, %32
+        %33:vec4<f32> = load %x_57
+        store %v1, %33
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        discard
+        exit_if  # if_1
+      }
+    }
+    %34:vec4<f32> = load %x_57
+    store %x_GLF_color, %34
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %36:void = call %main_1
+    %37:vec4<f32> = load %x_GLF_color
+    %38:main_out = construct %37
+    ret %38
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..58e9bb9
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,97 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+buf1 = struct @align(4) {
+  zero:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v0:ptr<function, vec2<f32>, read_write> = var
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %x_57:ptr<function, vec4<f32>, read_write> = var
+    %8:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_32:f32 = load %8
+    %10:vec2<f32> = construct %x_32, %x_32
+    store %v0, %10
+    %x_35:f32 = load_vector_element %v0, 0u
+    %x_36:vec4<f32> = construct %x_35, %x_35, %x_35, %x_35
+    store %v1, %x_36
+    %13:ptr<uniform, f32, read> = access %x_9, 0u
+    %x_38:f32 = load %13
+    %15:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_40:f32 = load %15
+    %17:bool = eq %x_38, %x_40
+    %18:bool = eq %17, false
+    if %18 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %19:ptr<uniform, f32, read> = access %x_9, 0u
+        %x_46:f32 = load %19
+        %21:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_48:f32 = load %21
+        %23:bool = eq %x_46, %x_48
+        if %23 [t: %b5] {  # if_2
+          %b5 = block {  # true
+            ret
+          }
+        }
+        %24:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_53:f32 = load %24
+        %26:f32 = access %x_36, 1u
+        %27:f32 = access %x_36, 2u
+        %28:vec2<f32> = construct %26, %27
+        %29:vec2<f32> = construct %x_53, %x_53
+        %x_56:vec2<f32> = sub %28, %29
+        %31:f32 = access %x_36, 0u
+        %32:f32 = access %x_56, 0u
+        %33:f32 = access %x_56, 1u
+        %34:f32 = access %x_36, 3u
+        %35:vec4<f32> = construct %31, %32, %33, %34
+        store %x_57, %35
+        %36:vec4<f32> = load %x_57
+        store %v1, %36
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        discard
+        exit_if  # if_1
+      }
+    }
+    %37:vec4<f32> = load %x_57
+    store %x_GLF_color, %37
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %39:void = call %main_1
+    %40:vec4<f32> = load %x_GLF_color
+    %41:main_out = construct %40
+    ret %41
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f604119
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,226 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf2 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+buf3 = struct @align(4) {
+  three:i32 @offset(0)
+}
+
+strided_arr_2 = struct @align(4) {
+  el:u32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_uint_values:array<strided_arr_2, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_12:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_14:ptr<uniform, buf3, read> = var @binding_point(0, 3)
+  %x_16:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%func0_ = func():void -> %b2 {
+  %b2 = block {
+    %tmp:ptr<function, vec4<f32>, read_write> = var
+    %9:f32 = load_vector_element %gl_FragCoord, 0u
+    %10:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %11:f32 = load %10
+    %12:bool = gt %9, %11
+    if %12 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %13:vec4<f32> = load %x_GLF_color
+        store %tmp, %13
+        exit_if  # if_1
+      }
+    }
+    %14:vec4<f32> = load %tmp
+    store %x_GLF_color, %14
+    ret
+  }
+}
+%func1_ = func():i32 -> %b4 {
+  %b4 = block {
+    %a:ptr<function, i32, read_write> = var
+    %17:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+    %18:i32 = load %17
+    store %a, %18
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %19:i32 = load %a
+        %20:ptr<uniform, i32, read> = access %x_12, 0u, 3i, 0u
+        %21:i32 = load %20
+        %22:bool = lt %19, %21
+        if %22 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %23:ptr<uniform, i32, read> = access %x_14, 0u
+        %24:i32 = load %23
+        %25:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+        %26:i32 = load %25
+        %27:bool = gt %24, %26
+        if %27 [t: %b9, f: %b10] {  # if_3
+          %b9 = block {  # true
+            %28:void = call %func0_
+            %29:ptr<uniform, i32, read> = access %x_12, 0u, 3i, 0u
+            %30:i32 = load %29
+            store %a, %30
+            exit_if  # if_3
+          }
+          %b10 = block {  # false
+            %31:void = call %func0_
+            exit_if  # if_3
+          }
+        }
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        next_iteration %b5
+      }
+    }
+    %x_144:i32 = load %a
+    ret %x_144
+  }
+}
+%main_1 = func():void -> %b11 {
+  %b11 = block {
+    %a_1:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %37:f32 = load_vector_element %gl_FragCoord, 0u
+    %38:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %39:f32 = load %38
+    %40:bool = gt %37, %39
+    if %40 [t: %b12, f: %b13] {  # if_4
+      %b12 = block {  # true
+        %41:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %42:f32 = load %41
+        %43:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+        %44:f32 = load %43
+        %45:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %46:f32 = load %45
+        %47:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+        %48:f32 = load %47
+        %49:vec4<f32> = construct %42, %44, %46, %48
+        store %x_GLF_color, %49
+        exit_if  # if_4
+      }
+      %b13 = block {  # false
+        %50:ptr<uniform, u32, read> = access %x_16, 0u, 0i, 0u
+        %51:u32 = load %50
+        %52:vec4<f32> = unpack4x8snorm %51
+        store %x_GLF_color, %52
+        exit_if  # if_4
+      }
+    }
+    %53:ptr<uniform, i32, read> = access %x_12, 0u, 2i, 0u
+    %54:i32 = load %53
+    store %a_1, %54
+    store %i, 0i
+    loop [b: %b14, c: %b15] {  # loop_2
+      %b14 = block {  # body
+        %55:i32 = load %i
+        %56:bool = lt %55, 5i
+        if %56 [t: %b16, f: %b17] {  # if_5
+          %b16 = block {  # true
+            exit_if  # if_5
+          }
+          %b17 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        store %j, 0i
+        loop [b: %b18, c: %b19] {  # loop_3
+          %b18 = block {  # body
+            %57:i32 = load %j
+            %58:bool = lt %57, 2i
+            if %58 [t: %b20, f: %b21] {  # if_6
+              %b20 = block {  # true
+                exit_if  # if_6
+              }
+              %b21 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %x_91:i32 = call %func1_
+            %60:i32 = load %a_1
+            %61:i32 = add %60, %x_91
+            store %a_1, %61
+            continue %b19
+          }
+          %b19 = block {  # continuing
+            %62:i32 = load %j
+            %63:i32 = add %62, 1i
+            store %j, %63
+            next_iteration %b18
+          }
+        }
+        continue %b15
+      }
+      %b15 = block {  # continuing
+        %64:i32 = load %i
+        %65:i32 = add %64, 1i
+        store %i, %65
+        next_iteration %b14
+      }
+    }
+    %66:i32 = load %a_1
+    %67:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
+    %68:i32 = load %67
+    %69:bool = eq %66, %68
+    if %69 [t: %b22] {  # if_7
+      %b22 = block {  # true
+        %70:f32 = load_vector_element %x_GLF_color, 2u
+        %71:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %72:f32 = load %71
+        %73:f32 = sub %70, %72
+        store_vector_element %x_GLF_color, 2u, %73
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b23 {
+  %b23 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %76:void = call %main_1
+    %77:vec4<f32> = load %x_GLF_color
+    %78:main_out = construct %77
+    ret %78
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0a80ccc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,226 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf2 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+buf3 = struct @align(4) {
+  three:i32 @offset(0)
+}
+
+strided_arr_2 = struct @align(4) {
+  el:u32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_uint_values:array<strided_arr_2, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_12:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_14:ptr<uniform, buf3, read> = var @binding_point(0, 3)
+  %x_16:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%func0_ = func():void -> %b2 {
+  %b2 = block {
+    %tmp:ptr<function, vec4<f32>, read_write> = var
+    %x_112:f32 = load_vector_element %gl_FragCoord, 0u
+    %10:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %x_114:f32 = load %10
+    %12:bool = gt %x_112, %x_114
+    if %12 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_118:vec4<f32> = load %x_GLF_color
+        store %tmp, %x_118
+        exit_if  # if_1
+      }
+    }
+    %x_119:vec4<f32> = load %tmp
+    store %x_GLF_color, %x_119
+    ret
+  }
+}
+%func1_ = func():i32 -> %b4 {
+  %b4 = block {
+    %a:ptr<function, i32, read_write> = var
+    %17:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+    %x_122:i32 = load %17
+    store %a, %x_122
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %x_127:i32 = load %a
+        %20:ptr<uniform, i32, read> = access %x_12, 0u, 3i, 0u
+        %x_129:i32 = load %20
+        %22:bool = lt %x_127, %x_129
+        if %22 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %23:ptr<uniform, i32, read> = access %x_14, 0u
+        %x_133:i32 = load %23
+        %25:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+        %x_135:i32 = load %25
+        %27:bool = gt %x_133, %x_135
+        if %27 [t: %b9, f: %b10] {  # if_3
+          %b9 = block {  # true
+            %28:void = call %func0_
+            %29:ptr<uniform, i32, read> = access %x_12, 0u, 3i, 0u
+            %x_142:i32 = load %29
+            store %a, %x_142
+            exit_if  # if_3
+          }
+          %b10 = block {  # false
+            %31:void = call %func0_
+            exit_if  # if_3
+          }
+        }
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        next_iteration %b5
+      }
+    }
+    %x_144:i32 = load %a
+    ret %x_144
+  }
+}
+%main_1 = func():void -> %b11 {
+  %b11 = block {
+    %a_1:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %x_56:f32 = load_vector_element %gl_FragCoord, 0u
+    %38:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %x_58:f32 = load %38
+    %40:bool = gt %x_56, %x_58
+    if %40 [t: %b12, f: %b13] {  # if_4
+      %b12 = block {  # true
+        %41:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %x_64:f32 = load %41
+        %43:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+        %x_66:f32 = load %43
+        %45:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %x_68:f32 = load %45
+        %47:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+        %x_70:f32 = load %47
+        %49:vec4<f32> = construct %x_64, %x_66, %x_68, %x_70
+        store %x_GLF_color, %49
+        exit_if  # if_4
+      }
+      %b13 = block {  # false
+        %50:ptr<uniform, u32, read> = access %x_16, 0u, 0i, 0u
+        %x_73:u32 = load %50
+        %52:vec4<f32> = unpack4x8snorm %x_73
+        store %x_GLF_color, %52
+        exit_if  # if_4
+      }
+    }
+    %53:ptr<uniform, i32, read> = access %x_12, 0u, 2i, 0u
+    %x_76:i32 = load %53
+    store %a_1, %x_76
+    store %i, 0i
+    loop [b: %b14, c: %b15] {  # loop_2
+      %b14 = block {  # body
+        %x_81:i32 = load %i
+        %56:bool = lt %x_81, 5i
+        if %56 [t: %b16, f: %b17] {  # if_5
+          %b16 = block {  # true
+            exit_if  # if_5
+          }
+          %b17 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        store %j, 0i
+        loop [b: %b18, c: %b19] {  # loop_3
+          %b18 = block {  # body
+            %x_88:i32 = load %j
+            %58:bool = lt %x_88, 2i
+            if %58 [t: %b20, f: %b21] {  # if_6
+              %b20 = block {  # true
+                exit_if  # if_6
+              }
+              %b21 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %x_91:i32 = call %func1_
+            %x_92:i32 = load %a_1
+            %61:i32 = add %x_92, %x_91
+            store %a_1, %61
+            continue %b19
+          }
+          %b19 = block {  # continuing
+            %x_94:i32 = load %j
+            %63:i32 = add %x_94, 1i
+            store %j, %63
+            next_iteration %b18
+          }
+        }
+        continue %b15
+      }
+      %b15 = block {  # continuing
+        %x_96:i32 = load %i
+        %65:i32 = add %x_96, 1i
+        store %i, %65
+        next_iteration %b14
+      }
+    }
+    %x_98:i32 = load %a_1
+    %67:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
+    %x_100:i32 = load %67
+    %69:bool = eq %x_98, %x_100
+    if %69 [t: %b22] {  # if_7
+      %b22 = block {  # true
+        %70:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %x_105:f32 = load %70
+        %x_107:f32 = load_vector_element %x_GLF_color, 2u
+        %73:f32 = sub %x_107, %x_105
+        store_vector_element %x_GLF_color, 2u, %73
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b23 {
+  %b23 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %76:void = call %main_1
+    %77:vec4<f32> = load %x_GLF_color
+    %78:main_out = construct %77
+    ret %78
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..4f7620e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.spvasm.expected.ir.msl
@@ -0,0 +1,82 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 5> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_35:f32 = load %5
+    %7:f32 = load_vector_element %gl_FragCoord, 0u
+    %8:bool = gt %7, %x_35
+    if %8 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %9:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %10:f32 = load %9
+        %11:vec4<f32> = construct %10
+        store %x_GLF_color, %11
+        %12:f32 = load_vector_element %gl_FragCoord, 1u
+        %13:bool = gt %12, %x_35
+        if %13 [t: %b4] {  # if_2
+          %b4 = block {  # true
+            %14:ptr<uniform, f32, read> = access %x_6, 0u, 4i, 0u
+            %15:f32 = load %14
+            %16:vec4<f32> = construct %15
+            store %x_GLF_color, %16
+            exit_if  # if_2
+          }
+        }
+        %17:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %18:f32 = load %17
+        %19:vec4<f32> = construct %18
+        store %x_GLF_color, %19
+        exit_if  # if_1
+      }
+    }
+    %20:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_54:f32 = load %20
+    %22:vec4<f32> = construct %x_35, %x_54, %x_54, 10.0f
+    store %x_GLF_color, %22
+    %23:vec4<f32> = construct %x_35, 0.0f, 0.0f, 0.0f
+    %24:vec4<f32> = construct 0.0f, %x_35, 0.0f, 0.0f
+    %25:vec4<f32> = construct 0.0f, 0.0f, %x_35, 0.0f
+    %26:vec4<f32> = construct 0.0f, 0.0f, 0.0f, %x_35
+    %27:mat4x4<f32> = construct %23, %24, %25, %26
+    %28:vec4<f32> = load %x_GLF_color
+    %29:vec4<f32> = mul %27, %28
+    store %x_GLF_color, %29
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b5 {
+  %b5 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %32:void = call %main_1
+    %33:vec4<f32> = load %x_GLF_color
+    %34:main_out = construct %33
+    ret %34
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dff3955
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl.expected.ir.msl
@@ -0,0 +1,82 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 5> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_33:f32 = load_vector_element %gl_FragCoord, 0u
+    %6:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_35:f32 = load %6
+    %8:bool = gt %x_33, %x_35
+    if %8 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %9:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %x_40:f32 = load %9
+        %11:vec4<f32> = construct %x_40, %x_40, %x_40, %x_40
+        store %x_GLF_color, %11
+        %x_43:f32 = load_vector_element %gl_FragCoord, 1u
+        %13:bool = gt %x_43, %x_35
+        if %13 [t: %b4] {  # if_2
+          %b4 = block {  # true
+            %14:ptr<uniform, f32, read> = access %x_6, 0u, 4i, 0u
+            %x_48:f32 = load %14
+            %16:vec4<f32> = construct %x_48, %x_48, %x_48, %x_48
+            store %x_GLF_color, %16
+            exit_if  # if_2
+          }
+        }
+        %17:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %x_51:f32 = load %17
+        %19:vec4<f32> = construct %x_51, %x_51, %x_51, %x_51
+        store %x_GLF_color, %19
+        exit_if  # if_1
+      }
+    }
+    %20:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_54:f32 = load %20
+    %22:vec4<f32> = construct %x_35, %x_54, %x_54, 10.0f
+    store %x_GLF_color, %22
+    %x_61:vec4<f32> = load %x_GLF_color
+    %24:vec4<f32> = construct %x_35, 0.0f, 0.0f, 0.0f
+    %25:vec4<f32> = construct 0.0f, %x_35, 0.0f, 0.0f
+    %26:vec4<f32> = construct 0.0f, 0.0f, %x_35, 0.0f
+    %27:vec4<f32> = construct 0.0f, 0.0f, 0.0f, %x_35
+    %28:mat4x4<f32> = construct %24, %25, %26, %27
+    %29:vec4<f32> = mul %28, %x_61
+    store %x_GLF_color, %29
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b5 {
+  %b5 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %32:void = call %main_1
+    %33:vec4<f32> = load %x_GLF_color
+    %34:main_out = construct %33
+    ret %34
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f66909a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,96 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  v1:vec2<f32> @offset(0)
+}
+
+strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %b:ptr<function, bool, read_write> = var
+    store %b, true
+    %6:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %7:f32 = load_vector_element %6, 0u
+    %8:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %9:f32 = load_vector_element %8, 1u
+    %10:bool = gt %7, %9
+    if %10 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %11:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %12:f32 = load_vector_element %11, 0u
+        %13:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %14:f32 = load_vector_element %13, 1u
+        %15:bool = lt %12, %14
+        if %15 [t: %b4] {  # if_2
+          %b4 = block {  # true
+            store %b, false
+            exit_if  # if_2
+          }
+        }
+        exit_if  # if_1
+      }
+    }
+    %16:bool = load %b
+    if %16 [t: %b5, f: %b6] {  # if_3
+      %b5 = block {  # true
+        %17:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %18:i32 = load %17
+        %19:f32 = convert %18
+        %20:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %21:i32 = load %20
+        %22:f32 = convert %21
+        %23:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %24:i32 = load %23
+        %25:f32 = convert %24
+        %26:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %27:i32 = load %26
+        %28:f32 = convert %27
+        %29:vec4<f32> = construct %19, %22, %25, %28
+        store %x_GLF_color, %29
+        exit_if  # if_3
+      }
+      %b6 = block {  # false
+        %30:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %31:i32 = load %30
+        %32:f32 = convert %31
+        %33:vec4<f32> = construct %32
+        store %x_GLF_color, %33
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %35:void = call %main_1
+    %36:vec4<f32> = load %x_GLF_color
+    %37:main_out = construct %36
+    ret %37
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bd3f87f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,96 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  v1:vec2<f32> @offset(0)
+}
+
+strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %b:ptr<function, bool, read_write> = var
+    store %b, true
+    %6:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_38:f32 = load_vector_element %6, 0u
+    %8:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_40:f32 = load_vector_element %8, 1u
+    %10:bool = gt %x_38, %x_40
+    if %10 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %11:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %x_45:f32 = load_vector_element %11, 0u
+        %13:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %x_47:f32 = load_vector_element %13, 1u
+        %15:bool = lt %x_45, %x_47
+        if %15 [t: %b4] {  # if_2
+          %b4 = block {  # true
+            store %b, false
+            exit_if  # if_2
+          }
+        }
+        exit_if  # if_1
+      }
+    }
+    %x_51:bool = load %b
+    if %x_51 [t: %b5, f: %b6] {  # if_3
+      %b5 = block {  # true
+        %17:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_10:i32 = load %17
+        %19:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_11:i32 = load %19
+        %21:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_12:i32 = load %21
+        %23:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_13:i32 = load %23
+        %25:f32 = convert %x_10
+        %26:f32 = convert %x_11
+        %27:f32 = convert %x_12
+        %28:f32 = convert %x_13
+        %29:vec4<f32> = construct %25, %26, %27, %28
+        store %x_GLF_color, %29
+        exit_if  # if_3
+      }
+      %b6 = block {  # false
+        %30:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_14:i32 = load %30
+        %x_65:f32 = convert %x_14
+        %33:vec4<f32> = construct %x_65, %x_65, %x_65, %x_65
+        store %x_GLF_color, %33
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %35:void = call %main_1
+    %36:vec4<f32> = load %x_GLF_color
+    %37:main_out = construct %36
+    ret %37
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b10dd50
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,113 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %7:i32 = load %6
+    store %a, %7
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %9:i32 = load %8
+    store %i, %9
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %10:i32 = load %i
+        %11:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %12:i32 = load %11
+        %13:bool = lt %10, %12
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %14:i32 = load %i
+        %15:i32 = complement %14
+        %16:bool = neq %15, 0i
+        if %16 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %17:i32 = load %a
+            %18:i32 = add %17, 1i
+            store %a, %18
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %19:i32 = load %i
+        %20:i32 = add %19, 1i
+        store %i, %20
+        next_iteration %b3
+      }
+    }
+    %21:i32 = load %a
+    %22:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %23:i32 = load %22
+    %24:bool = eq %21, %23
+    if %24 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %26:i32 = load %25
+        %27:f32 = convert %26
+        %28:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %29:i32 = load %28
+        %30:f32 = convert %29
+        %31:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %32:i32 = load %31
+        %33:f32 = convert %32
+        %34:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %35:i32 = load %34
+        %36:f32 = convert %35
+        %37:vec4<f32> = construct %27, %30, %33, %36
+        store %x_GLF_color, %37
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %38:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %39:i32 = load %38
+        %40:f32 = convert %39
+        %41:vec4<f32> = construct %40
+        store %x_GLF_color, %41
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..67e9a0f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,113 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_26:i32 = load %6
+    store %a, %x_26
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_28:i32 = load %8
+    store %i, %x_28
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_33:i32 = load %i
+        %11:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_35:i32 = load %11
+        %13:bool = lt %x_33, %x_35
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_38:i32 = load %i
+        %15:i32 = complement %x_38
+        %16:bool = neq %15, 0i
+        if %16 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %x_43:i32 = load %a
+            %18:i32 = add %x_43, 1i
+            store %a, %18
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_45:i32 = load %i
+        %20:i32 = add %x_45, 1i
+        store %i, %20
+        next_iteration %b3
+      }
+    }
+    %x_47:i32 = load %a
+    %22:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_49:i32 = load %22
+    %24:bool = eq %x_47, %x_49
+    if %24 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_55:i32 = load %25
+        %27:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_58:i32 = load %27
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_61:i32 = load %29
+        %31:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_64:i32 = load %31
+        %33:f32 = convert %x_55
+        %34:f32 = convert %x_58
+        %35:f32 = convert %x_61
+        %36:f32 = convert %x_64
+        %37:vec4<f32> = construct %33, %34, %35, %36
+        store %x_GLF_color, %37
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %38:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_68:i32 = load %38
+        %x_69:f32 = convert %x_68
+        %41:vec4<f32> = construct %x_69, %x_69, %x_69, %x_69
+        store %x_GLF_color, %41
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..8a40bfd
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,118 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+buf2 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_11:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %a, 1i
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %9:i32 = load %8
+    %10:f32 = convert %9
+    %11:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %12:i32 = load %11
+    %13:f32 = convert %12
+    %14:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %15:i32 = load %14
+    %16:f32 = convert %15
+    %17:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %18:i32 = load %17
+    %19:f32 = convert %18
+    %20:vec4<f32> = construct %10, %13, %16, %19
+    store %x_GLF_color, %20
+    %21:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %22:i32 = load %21
+    store %i, %22
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %23:i32 = load %i
+        %24:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %25:i32 = load %24
+        %26:bool = lt %23, %25
+        if %26 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_61:i32 = load %a
+        %28:i32 = load %a
+        %29:i32 = add %28, 1i
+        store %a, %29
+        %30:bool = gt %x_61, 3i
+        if %30 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %31:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+        %32:f32 = load_vector_element %31, 0u
+        %33:ptr<uniform, f32, read> = access %x_11, 0u, 0i, 0u
+        %34:f32 = load %33
+        %35:bool = gt %32, %34
+        if %35 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            discard
+            exit_if  # if_3
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %36:i32 = load %i
+        %37:i32 = add %36, 1i
+        store %i, %37
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %39:void = call %main_1
+    %40:vec4<f32> = load %x_GLF_color
+    %41:main_out = construct %40
+    ret %41
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cc0f6a9
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,117 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+buf2 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_11:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %a, 1i
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_38:i32 = load %8
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_41:i32 = load %10
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_44:i32 = load %12
+    %14:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_47:i32 = load %14
+    %16:f32 = convert %x_38
+    %17:f32 = convert %x_41
+    %18:f32 = convert %x_44
+    %19:f32 = convert %x_47
+    %20:vec4<f32> = construct %16, %17, %18, %19
+    store %x_GLF_color, %20
+    %21:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_51:i32 = load %21
+    store %i, %x_51
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_56:i32 = load %i
+        %24:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_58:i32 = load %24
+        %26:bool = lt %x_56, %x_58
+        if %26 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_61:i32 = load %a
+        %28:i32 = add %x_61, 1i
+        store %a, %28
+        %29:bool = gt %x_61, 3i
+        if %29 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %30:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+        %x_67:f32 = load_vector_element %30, 0u
+        %32:ptr<uniform, f32, read> = access %x_11, 0u, 0i, 0u
+        %x_69:f32 = load %32
+        %34:bool = gt %x_67, %x_69
+        if %34 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            discard
+            exit_if  # if_3
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_73:i32 = load %i
+        %36:i32 = add %x_73, 1i
+        store %i, %36
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %38:void = call %main_1
+    %39:vec4<f32> = load %x_GLF_color
+    %40:main_out = construct %39
+    ret %40
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..0c0c661
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,55 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  quarter:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %5:ptr<uniform, f32, read> = access %x_6, 0u
+    %6:f32 = load %5
+    %7:vec4<f32> = construct 424.113006591796875f, %6, 1.29999995231628417969f, 19.6200008392333984375f
+    %8:vec4<f32> = ceil %7
+    store %v, %8
+    %9:vec4<f32> = load %v
+    %10:vec4<bool> = eq %9, vec4<f32>(425.0f, 1.0f, 2.0f, 20.0f)
+    %11:bool = all %10
+    if %11 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %13:void = call %main_1
+    %14:vec4<f32> = load %x_GLF_color
+    %15:main_out = construct %14
+    ret %15
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c77e92e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,55 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  quarter:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %5:ptr<uniform, f32, read> = access %x_6, 0u
+    %x_32:f32 = load %5
+    %7:vec4<f32> = construct 424.113006591796875f, %x_32, 1.29999995231628417969f, 19.6200008392333984375f
+    %8:vec4<f32> = ceil %7
+    store %v, %8
+    %x_35:vec4<f32> = load %v
+    %10:vec4<bool> = eq %x_35, vec4<f32>(425.0f, 1.0f, 2.0f, 20.0f)
+    %11:bool = all %10
+    if %11 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %13:void = call %main_1
+    %14:vec4<f32> = load %x_GLF_color
+    %15:main_out = construct %14
+    ret %15
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..30f98f3
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,55 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, f32, read> = access %x_5, 0u
+    %5:f32 = load %4
+    %6:f32 = clamp 2.0f, %5, 1.0f
+    %7:ptr<uniform, f32, read> = access %x_5, 0u
+    %8:f32 = load %7
+    %9:f32 = clamp -1.0f, 0.0f, %8
+    %10:vec4<f32> = construct %6, %9, 0.0f, 1.0f
+    %11:vec4<bool> = neq %10, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    %12:bool = any %11
+    if %12 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %14:void = call %main_1
+    %15:vec4<f32> = load %x_GLF_color
+    %16:main_out = construct %15
+    ret %16
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b50cf16
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,55 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, f32, read> = access %x_5, 0u
+    %x_25:f32 = load %4
+    %6:ptr<uniform, f32, read> = access %x_5, 0u
+    %x_28:f32 = load %6
+    %8:f32 = clamp 2.0f, %x_25, 1.0f
+    %9:f32 = clamp -1.0f, 0.0f, %x_28
+    %10:vec4<f32> = construct %8, %9, 0.0f, 1.0f
+    %11:vec4<bool> = neq %10, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    %12:bool = any %11
+    if %12 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %14:void = call %main_1
+    %15:vec4<f32> = load %x_GLF_color
+    %16:main_out = construct %15
+    ret %16
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..d87e38b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,58 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    store %x_GLF_color, vec4<f32>(0.0f)
+    %5:ptr<uniform, f32, read> = access %x_6, 0u
+    %6:f32 = load %5
+    %7:f32 = clamp %6, 1.0f, 1.0f
+    store %f, %7
+    %8:f32 = load %f
+    %9:ptr<uniform, f32, read> = access %x_6, 0u
+    %10:f32 = load %9
+    %11:bool = gt %8, %10
+    if %11 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %12:f32 = load %f
+        %13:vec4<f32> = construct %12, 0.0f, 0.0f, 1.0f
+        store %x_GLF_color, %13
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %15:void = call %main_1
+    %16:vec4<f32> = load %x_GLF_color
+    %17:main_out = construct %16
+    ret %17
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5335a88
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,58 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    store %x_GLF_color, vec4<f32>(0.0f)
+    %5:ptr<uniform, f32, read> = access %x_6, 0u
+    %x_23:f32 = load %5
+    %7:f32 = clamp %x_23, 1.0f, 1.0f
+    store %f, %7
+    %x_25:f32 = load %f
+    %9:ptr<uniform, f32, read> = access %x_6, 0u
+    %x_27:f32 = load %9
+    %11:bool = gt %x_25, %x_27
+    if %11 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %x_32:f32 = load %f
+        %13:vec4<f32> = construct %x_32, 0.0f, 0.0f, 1.0f
+        store %x_GLF_color, %13
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %15:void = call %main_1
+    %16:vec4<f32> = load %x_GLF_color
+    %17:main_out = construct %16
+    ret %17
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..8b83677
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,71 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  fourtytwo:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_36:ptr<function, bool, read_write> = var
+    %x_37:ptr<function, bool, read_write> = var
+    %6:ptr<uniform, f32, read> = access %x_5, 0u
+    %7:f32 = load %6
+    %8:ptr<uniform, f32, read> = access %x_5, 0u
+    %9:f32 = load %8
+    %10:f32 = clamp 1.0f, %7, %9
+    %x_27:bool = gt %10, 42.0f
+    store %x_37, %x_27
+    %12:bool = eq %x_27, false
+    if %12 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %13:ptr<uniform, f32, read> = access %x_5, 0u
+        %14:f32 = load %13
+        %15:ptr<uniform, f32, read> = access %x_5, 0u
+        %16:f32 = load %15
+        %17:f32 = clamp 1.0f, %14, %16
+        %18:bool = lt %17, 42.0f
+        store %x_36, %18
+        %19:bool = load %x_36
+        store %x_37, %19
+        exit_if  # if_1
+      }
+    }
+    %20:bool = load %x_37
+    if %20 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %22:void = call %main_1
+    %23:vec4<f32> = load %x_GLF_color
+    %24:main_out = construct %23
+    ret %24
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..97ad25f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,71 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  fourtytwo:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_36:ptr<function, bool, read_write> = var
+    %x_37_phi:ptr<function, bool, read_write> = var
+    %6:ptr<uniform, f32, read> = access %x_5, 0u
+    %x_23:f32 = load %6
+    %8:ptr<uniform, f32, read> = access %x_5, 0u
+    %x_25:f32 = load %8
+    %10:f32 = clamp 1.0f, %x_23, %x_25
+    %x_27:bool = gt %10, 42.0f
+    store %x_37_phi, %x_27
+    %12:bool = eq %x_27, false
+    if %12 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %13:ptr<uniform, f32, read> = access %x_5, 0u
+        %x_32:f32 = load %13
+        %15:ptr<uniform, f32, read> = access %x_5, 0u
+        %x_34:f32 = load %15
+        %17:f32 = clamp 1.0f, %x_32, %x_34
+        %18:bool = lt %17, 42.0f
+        store %x_36, %18
+        %19:bool = load %x_36
+        store %x_37_phi, %19
+        exit_if  # if_1
+      }
+    }
+    %x_37:bool = load %x_37_phi
+    if %x_37 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %22:void = call %main_1
+    %23:vec4<f32> = load %x_GLF_color
+    %24:main_out = construct %23
+    ret %24
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7edbef7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.spvasm.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %5:f32 = load_vector_element %gl_FragCoord, 0u
+    %6:ptr<uniform, f32, read> = access %x_6, 0u
+    %7:f32 = load %6
+    %8:f32 = add 2.0f, %7
+    %9:f32 = clamp %5, 1.0f, %8
+    %10:bool = gte 3.0f, %9
+    if %10 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b5 {
+  %b5 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %13:void = call %main_1
+    %14:vec4<f32> = load %x_GLF_color
+    %15:main_out = construct %14
+    ret %15
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c509e16
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_29:f32 = load_vector_element %gl_FragCoord, 0u
+    %6:ptr<uniform, f32, read> = access %x_6, 0u
+    %x_31:f32 = load %6
+    %8:f32 = add 2.0f, %x_31
+    %9:f32 = clamp %x_29, 1.0f, %8
+    %10:bool = gte 3.0f, %9
+    if %10 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b5 {
+  %b5 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %13:void = call %main_1
+    %14:vec4<f32> = load %x_GLF_color
+    %15:main_out = construct %14
+    ret %15
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..5765707
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,132 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %highSigned:ptr<function, i32, read_write> = var
+    %highUnsigned:ptr<function, u32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %data:ptr<function, array<i32, 2>, read_write> = var
+    %i_1:ptr<function, u32, read_write> = var
+    %x_78:ptr<function, bool, read_write> = var
+    %x_79:ptr<function, bool, read_write> = var
+    store %highSigned, 1i
+    store %highUnsigned, 2u
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %11:i32 = load %i
+        %12:i32 = load %highSigned
+        %13:i32 = min 10i, %12
+        %14:ptr<uniform, i32, read> = access %x_8, 0u
+        %15:i32 = load %14
+        %16:i32 = add %13, %15
+        %17:bool = lt %11, %16
+        if %17 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_50:i32 = load %i
+        %19:ptr<function, i32, read_write> = access %data, %x_50
+        store %19, 5i
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %20:i32 = load %i
+        %21:i32 = add %20, 1i
+        store %i, %21
+        next_iteration %b3
+      }
+    }
+    store %i_1, 1u
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %22:u32 = load %i_1
+        %23:u32 = load %highUnsigned
+        %24:u32 = min 10u, %23
+        %25:ptr<uniform, i32, read> = access %x_8, 0u
+        %26:i32 = load %25
+        %27:u32 = bitcast %26
+        %28:u32 = add %24, %27
+        %29:bool = lt %22, %28
+        if %29 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_67:u32 = load %i_1
+        %31:ptr<function, i32, read_write> = access %data, %x_67
+        store %31, 6i
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %32:u32 = load %i_1
+        %33:u32 = add %32, 1u
+        store %i_1, %33
+        next_iteration %b7
+      }
+    }
+    %34:ptr<function, i32, read_write> = access %data, 0i
+    %35:i32 = load %34
+    %x_73:bool = eq %35, 5i
+    store %x_79, %x_73
+    if %x_73 [t: %b11] {  # if_3
+      %b11 = block {  # true
+        %37:ptr<function, i32, read_write> = access %data, 1i
+        %38:i32 = load %37
+        %39:bool = eq %38, 6i
+        store %x_78, %39
+        %40:bool = load %x_78
+        store %x_79, %40
+        exit_if  # if_3
+      }
+    }
+    %41:bool = load %x_79
+    if %41 [t: %b12, f: %b13] {  # if_4
+      %b12 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_4
+      }
+      %b13 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b14 {
+  %b14 = block {
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c7ea801
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,132 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %highSigned:ptr<function, i32, read_write> = var
+    %highUnsigned:ptr<function, u32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %data:ptr<function, array<i32, 2>, read_write> = var
+    %i_1:ptr<function, u32, read_write> = var
+    %x_78:ptr<function, bool, read_write> = var
+    %x_79_phi:ptr<function, bool, read_write> = var
+    store %highSigned, 1i
+    store %highUnsigned, 2u
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_42:i32 = load %i
+        %x_43:i32 = load %highSigned
+        %13:ptr<uniform, i32, read> = access %x_8, 0u
+        %x_46:i32 = load %13
+        %15:i32 = min 10i, %x_43
+        %16:i32 = add %15, %x_46
+        %17:bool = lt %x_42, %16
+        if %17 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_50:i32 = load %i
+        %19:ptr<function, i32, read_write> = access %data, %x_50
+        store %19, 5i
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_52:i32 = load %i
+        %21:i32 = add %x_52, 1i
+        store %i, %21
+        next_iteration %b3
+      }
+    }
+    store %i_1, 1u
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_58:u32 = load %i_1
+        %x_59:u32 = load %highUnsigned
+        %24:ptr<uniform, i32, read> = access %x_8, 0u
+        %x_62:i32 = load %24
+        %26:u32 = min 10u, %x_59
+        %27:u32 = bitcast %x_62
+        %28:u32 = add %26, %27
+        %29:bool = lt %x_58, %28
+        if %29 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_67:u32 = load %i_1
+        %31:ptr<function, i32, read_write> = access %data, %x_67
+        store %31, 6i
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %x_69:u32 = load %i_1
+        %33:u32 = add %x_69, 1u
+        store %i_1, %33
+        next_iteration %b7
+      }
+    }
+    %34:ptr<function, i32, read_write> = access %data, 0i
+    %x_72:i32 = load %34
+    %x_73:bool = eq %x_72, 5i
+    store %x_79_phi, %x_73
+    if %x_73 [t: %b11] {  # if_3
+      %b11 = block {  # true
+        %37:ptr<function, i32, read_write> = access %data, 1i
+        %x_77:i32 = load %37
+        %39:bool = eq %x_77, 6i
+        store %x_78, %39
+        %40:bool = load %x_78
+        store %x_79_phi, %40
+        exit_if  # if_3
+      }
+    }
+    %x_79:bool = load %x_79_phi
+    if %x_79 [t: %b12, f: %b13] {  # if_4
+      %b12 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_4
+      }
+      %b13 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b14 {
+  %b14 = block {
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1c5f1fa
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    if true [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %4:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %5:i32 = load %4
+        %6:f32 = convert %5
+        %7:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %8:i32 = load %7
+        %9:f32 = convert %8
+        %10:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %11:i32 = load %10
+        %12:f32 = convert %11
+        %13:vec4<f32> = construct 1.0f, %6, %9, %12
+        store %x_GLF_color, %13
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %14:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %15:i32 = load %14
+        %16:f32 = convert %15
+        %17:vec4<f32> = construct %16
+        store %x_GLF_color, %17
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..916c106
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    if true [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %4:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %x_29:i32 = load %4
+        %6:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %x_32:i32 = load %6
+        %8:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %x_35:i32 = load %8
+        %10:f32 = convert %x_29
+        %11:f32 = convert %x_32
+        %12:f32 = convert %x_35
+        %13:vec4<f32> = construct 1.0f, %10, %11, %12
+        store %x_GLF_color, %13
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %14:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %x_39:i32 = load %14
+        %x_40:f32 = convert %x_39
+        %17:vec4<f32> = construct %x_40, %x_40, %x_40, %x_40
+        store %x_GLF_color, %17
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f871052
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,103 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %x_48:ptr<function, bool, read_write> = var
+    %x_49:ptr<function, bool, read_write> = var
+    store %f, 1626.509033203125f
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %9:i32 = load %8
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %11:i32 = load %10
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %13:i32 = load %12
+    %14:i32 = add %11, %13
+    %x_41:bool = eq %9, %14
+    store %x_49, %x_41
+    %16:bool = eq %x_41, false
+    if %16 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %17:f32 = load %f
+        %18:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %19:f32 = load %18
+        %20:bool = gt %17, %19
+        store %x_48, %20
+        %21:bool = load %x_48
+        store %x_49, %21
+        exit_if  # if_1
+      }
+    }
+    %22:bool = load %x_49
+    if %22 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %23:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %24:i32 = load %23
+        %25:f32 = convert %24
+        %26:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %27:i32 = load %26
+        %28:f32 = convert %27
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %30:i32 = load %29
+        %31:f32 = convert %30
+        %32:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %33:i32 = load %32
+        %34:f32 = convert %33
+        %35:vec4<f32> = construct %25, %28, %31, %34
+        store %x_GLF_color, %35
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %36:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %37:i32 = load %36
+        %38:f32 = convert %37
+        %39:vec4<f32> = construct %38
+        store %x_GLF_color, %39
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %41:void = call %main_1
+    %42:vec4<f32> = load %x_GLF_color
+    %43:main_out = construct %42
+    ret %43
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..abe9cfd
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,103 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %x_48:ptr<function, bool, read_write> = var
+    %x_49_phi:ptr<function, bool, read_write> = var
+    store %f, 1626.509033203125f
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_35:i32 = load %8
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_37:i32 = load %10
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_39:i32 = load %12
+    %14:i32 = add %x_37, %x_39
+    %x_41:bool = eq %x_35, %14
+    store %x_49_phi, %x_41
+    %16:bool = eq %x_41, false
+    if %16 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_45:f32 = load %f
+        %18:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %x_47:f32 = load %18
+        %20:bool = gt %x_45, %x_47
+        store %x_48, %20
+        %21:bool = load %x_48
+        store %x_49_phi, %21
+        exit_if  # if_1
+      }
+    }
+    %x_49:bool = load %x_49_phi
+    if %x_49 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %23:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_54:i32 = load %23
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_57:i32 = load %25
+        %27:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_60:i32 = load %27
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_63:i32 = load %29
+        %31:f32 = convert %x_54
+        %32:f32 = convert %x_57
+        %33:f32 = convert %x_60
+        %34:f32 = convert %x_63
+        %35:vec4<f32> = construct %31, %32, %33, %34
+        store %x_GLF_color, %35
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %36:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_67:i32 = load %36
+        %x_68:f32 = convert %x_67
+        %39:vec4<f32> = construct %x_68, %x_68, %x_68, %x_68
+        store %x_GLF_color, %39
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %41:void = call %main_1
+    %42:vec4<f32> = load %x_GLF_color
+    %43:main_out = construct %42
+    ret %43
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b1220a7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,93 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_30:ptr<function, bool, read_write> = var
+    %x_31:ptr<function, bool, read_write> = var
+    store %x_GLF_color, vec4<f32>(0.0f)
+    %6:ptr<uniform, f32, read> = access %x_5, 0u
+    %7:f32 = load %6
+    %x_24:bool = lt %7, 0.0f
+    store %x_31, %x_24
+    %9:bool = eq %x_24, false
+    if %9 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %10:ptr<uniform, f32, read> = access %x_5, 0u
+        %11:f32 = load %10
+        %12:bool = lt %11, 1.0f
+        store %x_30, %12
+        %13:bool = load %x_30
+        store %x_31, %13
+        exit_if  # if_1
+      }
+    }
+    %14:bool = load %x_31
+    if %14 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        ret
+      }
+    }
+    %15:ptr<uniform, f32, read> = access %x_5, 0u
+    %16:f32 = load %15
+    %17:bool = lt %16, 0.0f
+    if %17 [t: %b5, f: %b6] {  # if_3
+      %b5 = block {  # true
+        loop [b: %b7, c: %b8] {  # loop_1
+          %b7 = block {  # body
+            %18:ptr<uniform, f32, read> = access %x_5, 0u
+            %19:f32 = load %18
+            %20:bool = lt %19, 0.0f
+            if %20 [t: %b9, f: %b10] {  # if_4
+              %b9 = block {  # true
+                exit_if  # if_4
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            store %x_GLF_color, vec4<f32>(1.0f)
+            exit_loop  # loop_1
+          }
+          %b8 = block {  # continuing
+            next_iteration %b7
+          }
+        }
+        exit_if  # if_3
+      }
+      %b6 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %22:void = call %main_1
+    %23:vec4<f32> = load %x_GLF_color
+    %24:main_out = construct %23
+    ret %24
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c2891ba
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,93 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_30:ptr<function, bool, read_write> = var
+    %x_31_phi:ptr<function, bool, read_write> = var
+    store %x_GLF_color, vec4<f32>(0.0f)
+    %6:ptr<uniform, f32, read> = access %x_5, 0u
+    %x_23:f32 = load %6
+    %x_24:bool = lt %x_23, 0.0f
+    store %x_31_phi, %x_24
+    %9:bool = eq %x_24, false
+    if %9 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %10:ptr<uniform, f32, read> = access %x_5, 0u
+        %x_29:f32 = load %10
+        %12:bool = lt %x_29, 1.0f
+        store %x_30, %12
+        %13:bool = load %x_30
+        store %x_31_phi, %13
+        exit_if  # if_1
+      }
+    }
+    %x_31:bool = load %x_31_phi
+    if %x_31 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        ret
+      }
+    }
+    %15:ptr<uniform, f32, read> = access %x_5, 0u
+    %x_35:f32 = load %15
+    %17:bool = lt %x_35, 0.0f
+    if %17 [t: %b5, f: %b6] {  # if_3
+      %b5 = block {  # true
+        loop [b: %b7, c: %b8] {  # loop_1
+          %b7 = block {  # body
+            %18:ptr<uniform, f32, read> = access %x_5, 0u
+            %x_45:f32 = load %18
+            %20:bool = lt %x_45, 0.0f
+            if %20 [t: %b9, f: %b10] {  # if_4
+              %b9 = block {  # true
+                exit_if  # if_4
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            store %x_GLF_color, vec4<f32>(1.0f)
+            exit_loop  # loop_1
+          }
+          %b8 = block {  # continuing
+            next_iteration %b7
+          }
+        }
+        exit_if  # if_3
+      }
+      %b6 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %22:void = call %main_1
+    %23:vec4<f32> = load %x_GLF_color
+    %24:main_out = construct %23
+    ret %24
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94a54f7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,150 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_f1_ = func(%f:ptr<function, f32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %8:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %9:i32 = load %8
+    store %a, %9
+    %10:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+    %11:i32 = load %10
+    store %b, %11
+    %12:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+    %13:i32 = load %12
+    store %i, %13
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %14:i32 = load %i
+        %15:ptr<uniform, i32, read> = access %x_8, 0u, 4i, 0u
+        %16:i32 = load %15
+        %17:bool = lt %14, %16
+        if %17 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %18:i32 = load %a
+        %19:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+        %20:i32 = load %19
+        %21:bool = gt %18, %20
+        if %21 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %22:f32 = load %f
+        %23:i32 = convert %22
+        %24:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %25:i32 = load %24
+        %26:i32 = div %25, 2i
+        %27:i32 = sub %23, %26
+        %28:i32 = load %i
+        %29:i32 = add %27, %28
+        store %a, %29
+        %30:i32 = load %b
+        %31:i32 = add %30, 1i
+        store %b, %31
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %32:i32 = load %i
+        %33:i32 = add %32, 1i
+        store %i, %33
+        next_iteration %b3
+      }
+    }
+    %34:i32 = load %b
+    %35:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %36:i32 = load %35
+    %37:bool = eq %34, %36
+    if %37 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %38:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_100:i32 = load %38
+        ret %x_100
+      }
+      %b9 = block {  # false
+        %40:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %x_102:i32 = load %40
+        ret %x_102
+      }
+    }
+    unreachable
+  }
+}
+%main_1 = func():void -> %b10 {
+  %b10 = block {
+    %param:ptr<function, f32, read_write> = var
+    store %param, 0.69999998807907104492f
+    %x_34:i32 = call %func_f1_, %param
+    %45:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %46:i32 = load %45
+    %47:bool = eq %x_34, %46
+    if %47 [t: %b11, f: %b12] {  # if_4
+      %b11 = block {  # true
+        %48:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %49:i32 = load %48
+        %50:f32 = convert %49
+        %51:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %52:i32 = load %51
+        %53:f32 = convert %52
+        %54:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %55:i32 = load %54
+        %56:f32 = convert %55
+        %57:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %58:i32 = load %57
+        %59:f32 = convert %58
+        %60:vec4<f32> = construct %50, %53, %56, %59
+        store %x_GLF_color, %60
+        exit_if  # if_4
+      }
+      %b12 = block {  # false
+        %61:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %62:i32 = load %61
+        %63:f32 = convert %62
+        %64:vec4<f32> = construct %63
+        store %x_GLF_color, %64
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %66:void = call %main_1
+    %67:vec4<f32> = load %x_GLF_color
+    %68:main_out = construct %67
+    ret %68
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..21eadef
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,150 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_f1_ = func(%f:ptr<function, f32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %8:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %x_60:i32 = load %8
+    store %a, %x_60
+    %10:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+    %x_62:i32 = load %10
+    store %b, %x_62
+    %12:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+    %x_64:i32 = load %12
+    store %i, %x_64
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_69:i32 = load %i
+        %15:ptr<uniform, i32, read> = access %x_8, 0u, 4i, 0u
+        %x_71:i32 = load %15
+        %17:bool = lt %x_69, %x_71
+        if %17 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_74:i32 = load %a
+        %19:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+        %x_76:i32 = load %19
+        %21:bool = gt %x_74, %x_76
+        if %21 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %x_80:f32 = load %f
+        %23:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_83:i32 = load %23
+        %x_86:i32 = load %i
+        %26:i32 = convert %x_80
+        %27:i32 = div %x_83, 2i
+        %28:i32 = sub %26, %27
+        %29:i32 = add %28, %x_86
+        store %a, %29
+        %x_88:i32 = load %b
+        %31:i32 = add %x_88, 1i
+        store %b, %31
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_90:i32 = load %i
+        %33:i32 = add %x_90, 1i
+        store %i, %33
+        next_iteration %b3
+      }
+    }
+    %x_92:i32 = load %b
+    %35:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_94:i32 = load %35
+    %37:bool = eq %x_92, %x_94
+    if %37 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %38:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_100:i32 = load %38
+        ret %x_100
+      }
+      %b9 = block {  # false
+        %40:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %x_102:i32 = load %40
+        ret %x_102
+      }
+    }
+    unreachable
+  }
+}
+%main_1 = func():void -> %b10 {
+  %b10 = block {
+    %param:ptr<function, f32, read_write> = var
+    store %param, 0.69999998807907104492f
+    %x_34:i32 = call %func_f1_, %param
+    %45:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %x_36:i32 = load %45
+    %47:bool = eq %x_34, %x_36
+    if %47 [t: %b11, f: %b12] {  # if_4
+      %b11 = block {  # true
+        %48:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_42:i32 = load %48
+        %50:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %x_45:i32 = load %50
+        %52:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %x_48:i32 = load %52
+        %54:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_51:i32 = load %54
+        %56:f32 = convert %x_42
+        %57:f32 = convert %x_45
+        %58:f32 = convert %x_48
+        %59:f32 = convert %x_51
+        %60:vec4<f32> = construct %56, %57, %58, %59
+        store %x_GLF_color, %60
+        exit_if  # if_4
+      }
+      %b12 = block {  # false
+        %61:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %x_55:i32 = load %61
+        %x_56:f32 = convert %x_55
+        %64:vec4<f32> = construct %x_56, %x_56, %x_56, %x_56
+        store %x_GLF_color, %64
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %66:void = call %main_1
+    %67:vec4<f32> = load %x_GLF_color
+    %68:main_out = construct %67
+    ret %68
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..ec5ba1a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,56 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  one:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %mixed:ptr<function, vec2<f32>, read_write> = var
+    %5:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %6:vec2<f32> = load %5
+    %7:vec2<f32> = mix vec2<f32>(1.0f), %6, vec2<f32>(0.5f)
+    store %mixed, %7
+    %8:vec2<f32> = load %mixed
+    %9:vec2<bool> = eq %8, vec2<f32>(1.0f)
+    %10:bool = all %9
+    if %10 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %11:f32 = load_vector_element %mixed, 0u
+        %12:vec4<f32> = construct %11, 0.0f, 0.0f, 1.0f
+        store %x_GLF_color, %12
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %14:void = call %main_1
+    %15:vec4<f32> = load %x_GLF_color
+    %16:main_out = construct %15
+    ret %16
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..48ef682
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,56 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  one:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %mixed:ptr<function, vec2<f32>, read_write> = var
+    %5:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_30:vec2<f32> = load %5
+    %7:vec2<f32> = mix vec2<f32>(1.0f), %x_30, vec2<f32>(0.5f)
+    store %mixed, %7
+    %x_33:vec2<f32> = load %mixed
+    %9:vec2<bool> = eq %x_33, vec2<f32>(1.0f)
+    %10:bool = all %9
+    if %10 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %x_40:f32 = load_vector_element %mixed, 0u
+        %12:vec4<f32> = construct %x_40, 0.0f, 0.0f, 1.0f
+        store %x_GLF_color, %12
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %14:void = call %main_1
+    %15:vec4<f32> = load %x_GLF_color
+    %16:main_out = construct %15
+    ret %16
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..ea22f1c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,103 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+buf1 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %6:i32 = load %5
+    %7:f32 = convert %6
+    %8:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %9:i32 = load %8
+    %10:f32 = convert %9
+    %11:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %12:i32 = load %11
+    %13:f32 = convert %12
+    %14:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %15:i32 = load %14
+    %16:f32 = convert %15
+    %17:vec4<f32> = construct %7, %10, %13, %16
+    store %x_GLF_color, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %18:ptr<uniform, i32, read> = access %x_7, 0u
+        %19:i32 = load %18
+        %20:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %21:i32 = load %20
+        %22:bool = eq %19, %21
+        if %22 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            continue %b4
+          }
+        }
+        %23:ptr<uniform, i32, read> = access %x_7, 0u
+        %24:i32 = load %23
+        %25:ptr<uniform, i32, read> = access %x_5, 0u, 2i, 0u
+        %26:i32 = load %25
+        %27:bool = eq %24, %26
+        if %27 [t: %b6] {  # if_2
+          %b6 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %28:ptr<uniform, i32, read> = access %x_7, 0u
+        %29:i32 = load %28
+        %30:ptr<uniform, i32, read> = access %x_5, 0u, 3i, 0u
+        %31:i32 = load %30
+        %32:bool = eq %29, %31
+        if %32 [t: %b7] {  # if_3
+          %b7 = block {  # true
+            discard
+            exit_if  # if_3
+          }
+        }
+        ret
+      }
+      %b4 = block {  # continuing
+        break_if true %b3
+      }
+    }
+    %33:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %34:i32 = load %33
+    %35:f32 = convert %34
+    %36:vec4<f32> = construct %35
+    store %x_GLF_color, %36
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %38:void = call %main_1
+    %39:vec4<f32> = load %x_GLF_color
+    %40:main_out = construct %39
+    ret %40
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f4b6dc6
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,103 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+buf1 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_28:i32 = load %5
+    %7:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %x_31:i32 = load %7
+    %9:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %x_34:i32 = load %9
+    %11:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_37:i32 = load %11
+    %13:f32 = convert %x_28
+    %14:f32 = convert %x_31
+    %15:f32 = convert %x_34
+    %16:f32 = convert %x_37
+    %17:vec4<f32> = construct %13, %14, %15, %16
+    store %x_GLF_color, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %18:ptr<uniform, i32, read> = access %x_7, 0u
+        %x_45:i32 = load %18
+        %20:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %x_47:i32 = load %20
+        %22:bool = eq %x_45, %x_47
+        if %22 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            continue %b4
+          }
+        }
+        %23:ptr<uniform, i32, read> = access %x_7, 0u
+        %x_52:i32 = load %23
+        %25:ptr<uniform, i32, read> = access %x_5, 0u, 2i, 0u
+        %x_54:i32 = load %25
+        %27:bool = eq %x_52, %x_54
+        if %27 [t: %b6] {  # if_2
+          %b6 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %28:ptr<uniform, i32, read> = access %x_7, 0u
+        %x_59:i32 = load %28
+        %30:ptr<uniform, i32, read> = access %x_5, 0u, 3i, 0u
+        %x_61:i32 = load %30
+        %32:bool = eq %x_59, %x_61
+        if %32 [t: %b7] {  # if_3
+          %b7 = block {  # true
+            discard
+            exit_if  # if_3
+          }
+        }
+        ret
+      }
+      %b4 = block {  # continuing
+        break_if true %b3
+      }
+    }
+    %33:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %x_66:i32 = load %33
+    %x_67:f32 = convert %x_66
+    %36:vec4<f32> = construct %x_67, %x_67, %x_67, %x_67
+    store %x_GLF_color, %36
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %38:void = call %main_1
+    %39:vec4<f32> = load %x_GLF_color
+    %40:main_out = construct %39
+    ret %40
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..d8d38df6
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,168 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+Array = struct @align(4) {
+  values:array<i32, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_50:ptr<function, bool, read_write> = var, false
+    %x_15:ptr<function, i32, read_write> = var
+    %x_16:ptr<function, i32, read_write> = var
+    %param:ptr<function, Array, read_write> = var
+    %x_19:ptr<function, i32, read_write> = var
+    %x_20:ptr<function, i32, read_write> = var
+    store %param, Array(array<i32, 2>(0i))
+    store %x_50, false
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_63:ptr<function, bool, read_write> = var
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %11:ptr<uniform, i32, read> = access %x_8, 0u
+            %12:i32 = load %11
+            %13:ptr<function, i32, read_write> = access %param, 0u, %12
+            %14:i32 = load %13
+            %15:bool = eq %14, 1i
+            if %15 [t: %b7] {  # if_1
+              %b7 = block {  # true
+                store %x_50, true
+                store %x_15, 1i
+                store %x_19, 1i
+                store %x_63, true
+                exit_loop  # loop_2
+              }
+            }
+            store %x_19, 0i
+            store %x_63, false
+            exit_loop  # loop_2
+          }
+          %b6 = block {  # continuing
+            next_iteration %b5
+          }
+        }
+        %16:i32 = load %x_19
+        store %x_20, %16
+        %17:bool = load %x_63
+        if %17 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        store %x_50, true
+        store %x_15, 1i
+        store %x_20, 1i
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %18:i32 = load %x_20
+    store %x_16, %18
+    %19:i32 = load %x_20
+    %20:bool = eq %19, 1i
+    if %20 [t: %b9, f: %b10] {  # if_3
+      %b9 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b10 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %22:void = call %main_1
+    %23:vec4<f32> = load %x_GLF_color
+    %24:main_out = construct %23
+    ret %24
+  }
+}
+%func_struct_Array_i1_2_1_ = func(%a:ptr<function, Array, read_write>):i32 -> %b12 {
+  %b12 = block {
+    %x_70:ptr<function, bool, read_write> = var, false
+    %x_12:ptr<function, i32, read_write> = var
+    %x_72:ptr<function, bool, read_write> = var
+    %x_13:ptr<function, i32, read_write> = var
+    %x_14:ptr<function, i32, read_write> = var
+    store %x_72, false
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %x_77:ptr<function, bool, read_write> = var
+        %x_87:ptr<function, bool, read_write> = var
+        %34:bool = load %x_72
+        store %x_77, %34
+        loop [b: %b15, c: %b16] {  # loop_4
+          %b15 = block {  # body
+            %35:ptr<uniform, i32, read> = access %x_8, 0u
+            %36:i32 = load %35
+            %37:ptr<function, i32, read_write> = access %a, 0u, %36
+            %38:i32 = load %37
+            %39:bool = eq %38, 1i
+            if %39 [t: %b17] {  # if_4
+              %b17 = block {  # true
+                store %x_70, true
+                store %x_12, 1i
+                store %x_13, 1i
+                store %x_87, true
+                exit_loop  # loop_4
+              }
+            }
+            store %x_13, 0i
+            %40:bool = load %x_77
+            store %x_87, %40
+            exit_loop  # loop_4
+          }
+          %b16 = block {  # continuing
+            store %x_77, false
+            next_iteration %b15
+          }
+        }
+        %41:i32 = load %x_13
+        store %x_14, %41
+        %42:bool = load %x_87
+        if %42 [t: %b18] {  # if_5
+          %b18 = block {  # true
+            exit_loop  # loop_3
+          }
+        }
+        store %x_70, true
+        store %x_12, 1i
+        store %x_14, 1i
+        exit_loop  # loop_3
+      }
+      %b14 = block {  # continuing
+        store %x_72, false
+        next_iteration %b13
+      }
+    }
+    %43:i32 = load %x_14
+    ret %43
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a4c26b0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,176 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+Array = struct @align(4) {
+  values:array<i32, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_50:ptr<function, bool, read_write> = var, false
+    %x_15:ptr<function, i32, read_write> = var
+    %x_16:ptr<function, i32, read_write> = var
+    %param:ptr<function, Array, read_write> = var
+    %x_19:ptr<function, i32, read_write> = var
+    %x_20_phi:ptr<function, i32, read_write> = var
+    store %param, Array(array<i32, 2>(0i))
+    store %x_50, false
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_19_phi:ptr<function, i32, read_write> = var
+        %x_63_phi:ptr<function, bool, read_write> = var
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %12:ptr<uniform, i32, read> = access %x_8, 0u
+            %x_17:i32 = load %12
+            %14:ptr<function, i32, read_write> = access %param, 0u, %x_17
+            %x_18:i32 = load %14
+            %16:bool = eq %x_18, 1i
+            if %16 [t: %b7] {  # if_1
+              %b7 = block {  # true
+                store %x_50, true
+                store %x_15, 1i
+                store %x_19_phi, 1i
+                store %x_63_phi, true
+                exit_loop  # loop_2
+              }
+            }
+            store %x_19_phi, 0i
+            store %x_63_phi, false
+            exit_loop  # loop_2
+          }
+          %b6 = block {  # continuing
+            next_iteration %b5
+          }
+        }
+        %17:i32 = load %x_19_phi
+        store %x_19, %17
+        %x_63:bool = load %x_63_phi
+        %19:i32 = load %x_19
+        store %x_20_phi, %19
+        if %x_63 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        store %x_50, true
+        store %x_15, 1i
+        store %x_20_phi, 1i
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %x_20:i32 = load %x_20_phi
+    store %x_16, %x_20
+    %21:bool = eq %x_20, 1i
+    if %21 [t: %b9, f: %b10] {  # if_3
+      %b9 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b10 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %23:void = call %main_1
+    %24:vec4<f32> = load %x_GLF_color
+    %25:main_out = construct %24
+    ret %25
+  }
+}
+%func_struct_Array_i1_2_1_ = func(%a:ptr<function, Array, read_write>):i32 -> %b12 {
+  %b12 = block {
+    %x_70:ptr<function, bool, read_write> = var, false
+    %x_12:ptr<function, i32, read_write> = var
+    %x_13:ptr<function, i32, read_write> = var
+    %x_72_phi:ptr<function, bool, read_write> = var
+    %x_14_phi:ptr<function, i32, read_write> = var
+    store %x_72_phi, false
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %x_77:ptr<function, bool, read_write> = var
+        %x_77_phi:ptr<function, bool, read_write> = var
+        %x_13_phi:ptr<function, i32, read_write> = var
+        %x_87_phi:ptr<function, bool, read_write> = var
+        %x_72:bool = load %x_72_phi
+        store %x_77_phi, %x_72
+        loop [b: %b15, c: %b16] {  # loop_4
+          %b15 = block {  # body
+            %38:bool = load %x_77_phi
+            store %x_77, %38
+            %39:ptr<uniform, i32, read> = access %x_8, 0u
+            %x_10:i32 = load %39
+            %41:ptr<function, i32, read_write> = access %a, 0u, %x_10
+            %x_11:i32 = load %41
+            %43:bool = eq %x_11, 1i
+            if %43 [t: %b17] {  # if_4
+              %b17 = block {  # true
+                store %x_70, true
+                store %x_12, 1i
+                store %x_13_phi, 1i
+                store %x_87_phi, true
+                exit_loop  # loop_4
+              }
+            }
+            store %x_13_phi, 0i
+            %44:bool = load %x_77
+            store %x_87_phi, %44
+            exit_loop  # loop_4
+          }
+          %b16 = block {  # continuing
+            store %x_77_phi, false
+            next_iteration %b15
+          }
+        }
+        %45:i32 = load %x_13_phi
+        store %x_13, %45
+        %x_87:bool = load %x_87_phi
+        %47:i32 = load %x_13
+        store %x_14_phi, %47
+        if %x_87 [t: %b18] {  # if_5
+          %b18 = block {  # true
+            exit_loop  # loop_3
+          }
+        }
+        store %x_70, true
+        store %x_12, 1i
+        store %x_14_phi, 1i
+        exit_loop  # loop_3
+      }
+      %b14 = block {  # continuing
+        store %x_72_phi, false
+        next_iteration %b13
+      }
+    }
+    %x_14:i32 = load %x_14_phi
+    ret %x_14
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..79b6ff0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+Array = struct @align(4) {
+  values:array<i32, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, Array, read_write> = var
+    %b:ptr<function, Array, read_write> = var
+    %one:ptr<function, f32, read_write> = var
+    %7:ptr<uniform, i32, read> = access %x_7, 0u
+    %x_10:i32 = load %7
+    %9:ptr<function, i32, read_write> = access %a, 0u, %x_10
+    store %9, 1i
+    %10:Array = load %a
+    store %b, %10
+    store %one, 0.0f
+    %11:ptr<uniform, i32, read> = access %x_7, 0u
+    %12:i32 = load %11
+    %13:ptr<function, i32, read_write> = access %b, 0u, %12
+    %14:i32 = load %13
+    %15:bool = eq %14, 1i
+    if %15 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        store %one, 1.0f
+        exit_if  # if_1
+      }
+    }
+    %16:f32 = load %one
+    %17:vec4<f32> = construct %16, 0.0f, 0.0f, 1.0f
+    store %x_GLF_color, %17
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b4 {
+  %b4 = block {
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f437821
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+Array = struct @align(4) {
+  values:array<i32, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, Array, read_write> = var
+    %b:ptr<function, Array, read_write> = var
+    %one:ptr<function, f32, read_write> = var
+    %7:ptr<uniform, i32, read> = access %x_7, 0u
+    %x_10:i32 = load %7
+    %9:ptr<function, i32, read_write> = access %a, 0u, %x_10
+    store %9, 1i
+    %x_35:Array = load %a
+    store %b, %x_35
+    store %one, 0.0f
+    %11:ptr<uniform, i32, read> = access %x_7, 0u
+    %x_11:i32 = load %11
+    %13:ptr<function, i32, read_write> = access %b, 0u, %x_11
+    %x_12:i32 = load %13
+    %15:bool = eq %x_12, 1i
+    if %15 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        store %one, 1.0f
+        exit_if  # if_1
+      }
+    }
+    %x_41:f32 = load %one
+    %17:vec4<f32> = construct %x_41, 0.0f, 0.0f, 1.0f
+    store %x_GLF_color, %17
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b4 {
+  %b4 = block {
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..a354e414
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,177 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+Array = struct @align(4) {
+  values:array<i32, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_52:ptr<function, bool, read_write> = var, false
+    %x_17:ptr<function, i32, read_write> = var
+    %x_18:ptr<function, i32, read_write> = var
+    %x_16:ptr<function, array<i32, 2>, read_write> = var
+    %param:ptr<function, Array, read_write> = var
+    %x_20:ptr<function, i32, read_write> = var
+    %x_21:ptr<function, i32, read_write> = var
+    %11:ptr<uniform, i32, read> = access %x_8, 0u
+    %x_12:i32 = load %11
+    %x_22:array<i32, 2> = load %x_16
+    %x_23_1:ptr<function, array<i32, 2>, read_write> = var, %x_22
+    %15:ptr<function, i32, read_write> = access %x_23_1, 0u
+    store %15, %x_12
+    %16:array<i32, 2> = load %x_23_1
+    store %x_16, %16
+    %17:array<i32, 2> = load %x_16
+    %18:Array = construct %17
+    store %param, %18
+    store %x_52, false
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_67:ptr<function, bool, read_write> = var
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %20:ptr<function, i32, read_write> = access %param, 0u, %x_12
+            %21:i32 = load %20
+            %22:bool = eq %21, 0i
+            if %22 [t: %b7] {  # if_1
+              %b7 = block {  # true
+                store %x_52, true
+                store %x_17, 42i
+                store %x_20, 42i
+                store %x_67, true
+                exit_loop  # loop_2
+              }
+            }
+            store %x_20, 0i
+            store %x_67, false
+            exit_loop  # loop_2
+          }
+          %b6 = block {  # continuing
+            next_iteration %b5
+          }
+        }
+        %23:i32 = load %x_20
+        store %x_21, %23
+        %24:bool = load %x_67
+        if %24 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        store %x_52, true
+        store %x_17, 42i
+        store %x_21, 42i
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %25:i32 = load %x_21
+    store %x_18, %25
+    %26:i32 = load %x_21
+    %27:bool = eq %26, 42i
+    if %27 [t: %b9, f: %b10] {  # if_3
+      %b9 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b10 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %29:void = call %main_1
+    %30:vec4<f32> = load %x_GLF_color
+    %31:main_out = construct %30
+    ret %31
+  }
+}
+%func_struct_Array_i1_2_1_ = func(%a:ptr<function, Array, read_write>):i32 -> %b12 {
+  %b12 = block {
+    %x_74:ptr<function, bool, read_write> = var, false
+    %x_13:ptr<function, i32, read_write> = var
+    %x_76:ptr<function, bool, read_write> = var
+    %x_14:ptr<function, i32, read_write> = var
+    %x_15:ptr<function, i32, read_write> = var
+    store %x_76, false
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %x_81:ptr<function, bool, read_write> = var
+        %x_91:ptr<function, bool, read_write> = var
+        %41:bool = load %x_76
+        store %x_81, %41
+        loop [b: %b15, c: %b16] {  # loop_4
+          %b15 = block {  # body
+            %42:ptr<uniform, i32, read> = access %x_8, 0u
+            %43:i32 = load %42
+            %44:ptr<function, i32, read_write> = access %a, 0u, %43
+            %45:i32 = load %44
+            %46:bool = eq %45, 0i
+            if %46 [t: %b17] {  # if_4
+              %b17 = block {  # true
+                store %x_74, true
+                store %x_13, 42i
+                store %x_14, 42i
+                store %x_91, true
+                exit_loop  # loop_4
+              }
+            }
+            store %x_14, 0i
+            %47:bool = load %x_81
+            store %x_91, %47
+            exit_loop  # loop_4
+          }
+          %b16 = block {  # continuing
+            store %x_81, false
+            next_iteration %b15
+          }
+        }
+        %48:i32 = load %x_14
+        store %x_15, %48
+        %49:bool = load %x_91
+        if %49 [t: %b18] {  # if_5
+          %b18 = block {  # true
+            exit_loop  # loop_3
+          }
+        }
+        store %x_74, true
+        store %x_13, 42i
+        store %x_15, 42i
+        exit_loop  # loop_3
+      }
+      %b14 = block {  # continuing
+        store %x_76, false
+        next_iteration %b13
+      }
+    }
+    %50:i32 = load %x_15
+    ret %50
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5158781
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,185 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+Array = struct @align(4) {
+  values:array<i32, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_52:ptr<function, bool, read_write> = var, false
+    %x_17:ptr<function, i32, read_write> = var
+    %x_18:ptr<function, i32, read_write> = var
+    %x_16:ptr<function, array<i32, 2>, read_write> = var
+    %param:ptr<function, Array, read_write> = var
+    %x_20:ptr<function, i32, read_write> = var
+    %x_21_phi:ptr<function, i32, read_write> = var
+    %11:ptr<uniform, i32, read> = access %x_8, 0u
+    %x_12:i32 = load %11
+    %x_22:array<i32, 2> = load %x_16
+    %x_23_1:ptr<function, array<i32, 2>, read_write> = var, %x_22
+    %15:ptr<function, i32, read_write> = access %x_23_1, 0u
+    store %15, %x_12
+    %x_23:array<i32, 2> = load %x_23_1
+    store %x_16, %x_23
+    %x_54:array<i32, 2> = load %x_16
+    %18:Array = construct %x_54
+    store %param, %18
+    store %x_52, false
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_20_phi:ptr<function, i32, read_write> = var
+        %x_67_phi:ptr<function, bool, read_write> = var
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %21:ptr<function, i32, read_write> = access %param, 0u, %x_12
+            %x_19:i32 = load %21
+            %23:bool = eq %x_19, 0i
+            if %23 [t: %b7] {  # if_1
+              %b7 = block {  # true
+                store %x_52, true
+                store %x_17, 42i
+                store %x_20_phi, 42i
+                store %x_67_phi, true
+                exit_loop  # loop_2
+              }
+            }
+            store %x_20_phi, 0i
+            store %x_67_phi, false
+            exit_loop  # loop_2
+          }
+          %b6 = block {  # continuing
+            next_iteration %b5
+          }
+        }
+        %24:i32 = load %x_20_phi
+        store %x_20, %24
+        %x_67:bool = load %x_67_phi
+        %26:i32 = load %x_20
+        store %x_21_phi, %26
+        if %x_67 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        store %x_52, true
+        store %x_17, 42i
+        store %x_21_phi, 42i
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %x_21:i32 = load %x_21_phi
+    store %x_18, %x_21
+    %28:bool = eq %x_21, 42i
+    if %28 [t: %b9, f: %b10] {  # if_3
+      %b9 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b10 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %30:void = call %main_1
+    %31:vec4<f32> = load %x_GLF_color
+    %32:main_out = construct %31
+    ret %32
+  }
+}
+%func_struct_Array_i1_2_1_ = func(%a:ptr<function, Array, read_write>):i32 -> %b12 {
+  %b12 = block {
+    %x_74:ptr<function, bool, read_write> = var, false
+    %x_13:ptr<function, i32, read_write> = var
+    %x_14:ptr<function, i32, read_write> = var
+    %x_76_phi:ptr<function, bool, read_write> = var
+    %x_15_phi:ptr<function, i32, read_write> = var
+    store %x_76_phi, false
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %x_81:ptr<function, bool, read_write> = var
+        %x_81_phi:ptr<function, bool, read_write> = var
+        %x_14_phi:ptr<function, i32, read_write> = var
+        %x_91_phi:ptr<function, bool, read_write> = var
+        %x_76:bool = load %x_76_phi
+        store %x_81_phi, %x_76
+        loop [b: %b15, c: %b16] {  # loop_4
+          %b15 = block {  # body
+            %45:bool = load %x_81_phi
+            store %x_81, %45
+            %46:ptr<uniform, i32, read> = access %x_8, 0u
+            %x_10:i32 = load %46
+            %48:ptr<function, i32, read_write> = access %a, 0u, %x_10
+            %x_11:i32 = load %48
+            %50:bool = eq %x_11, 0i
+            if %50 [t: %b17] {  # if_4
+              %b17 = block {  # true
+                store %x_74, true
+                store %x_13, 42i
+                store %x_14_phi, 42i
+                store %x_91_phi, true
+                exit_loop  # loop_4
+              }
+            }
+            store %x_14_phi, 0i
+            %51:bool = load %x_81
+            store %x_91_phi, %51
+            exit_loop  # loop_4
+          }
+          %b16 = block {  # continuing
+            store %x_81_phi, false
+            next_iteration %b15
+          }
+        }
+        %52:i32 = load %x_14_phi
+        store %x_14, %52
+        %x_91:bool = load %x_91_phi
+        %54:i32 = load %x_14
+        store %x_15_phi, %54
+        if %x_91 [t: %b18] {  # if_5
+          %b18 = block {  # true
+            exit_loop  # loop_3
+          }
+        }
+        store %x_74, true
+        store %x_13, 42i
+        store %x_15_phi, 42i
+        exit_loop  # loop_3
+      }
+      %b14 = block {  # continuing
+        store %x_76_phi, false
+        next_iteration %b13
+      }
+    }
+    %x_15:i32 = load %x_15_phi
+    ret %x_15
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..39f34ab
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,65 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %6:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %7:f32 = load %6
+    %8:vec4<f32> = construct %7
+    %9:vec4<f32> = clamp vec4<f32>(1.54308056831359863281f), %8, vec4<f32>(1.0f)
+    store %v, %9
+    %10:f32 = load_vector_element %v, 0u
+    %11:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %12:i32 = load %11
+    %13:f32 = convert %12
+    %14:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %15:i32 = load %14
+    %16:f32 = convert %15
+    %17:f32 = load_vector_element %v, 2u
+    %18:vec4<f32> = construct %10, %13, %16, %17
+    store %x_GLF_color, %18
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b3 {
+  %b3 = block {
+    %20:void = call %main_1
+    %21:vec4<f32> = load %x_GLF_color
+    %22:main_out = construct %21
+    ret %22
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f749a4c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,65 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %6:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_33:f32 = load %6
+    %8:vec4<f32> = construct %x_33, %x_33, %x_33, %x_33
+    %9:vec4<f32> = clamp vec4<f32>(1.54308056831359863281f), %8, vec4<f32>(1.0f)
+    store %v, %9
+    %x_38:f32 = load_vector_element %v, 0u
+    %11:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_40:i32 = load %11
+    %13:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_43:i32 = load %13
+    %x_46:f32 = load_vector_element %v, 2u
+    %16:f32 = convert %x_40
+    %17:f32 = convert %x_43
+    %18:vec4<f32> = construct %x_38, %16, %17, %x_46
+    store %x_GLF_color, %18
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b3 {
+  %b3 = block {
+    %20:void = call %main_1
+    %21:vec4<f32> = load %x_GLF_color
+    %22:main_out = construct %21
+    ret %22
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1da115f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,184 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, array<i32, 2>, read_write> = var
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %11:i32 = load %10
+    store %a, %11
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %13:i32 = load %12
+    store %b, %13
+    %14:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %15:i32 = load %14
+    %16:f32 = convert %15
+    %17:vec4<f32> = construct %16
+    store %x_GLF_color, %17
+    %18:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %19:i32 = load %18
+    store %i, %19
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %20:i32 = load %i
+        %21:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %22:i32 = load %21
+        %23:bool = lt %20, %22
+        if %23 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %24:i32 = load %i
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %26:i32 = load %25
+        %27:bool = gt %24, %26
+        if %27 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %28:i32 = load %a
+            %29:i32 = add %28, 1i
+            store %a, %29
+            if false [t: %b8] {  # if_3
+              %b8 = block {  # true
+                %30:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+                %31:i32 = load %30
+                store %i_1, %31
+                loop [b: %b9, c: %b10] {  # loop_2
+                  %b9 = block {  # body
+                    %32:i32 = load %i_1
+                    %33:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+                    %34:i32 = load %33
+                    %35:bool = lt %32, %34
+                    if %35 [t: %b11, f: %b12] {  # if_4
+                      %b11 = block {  # true
+                        exit_if  # if_4
+                      }
+                      %b12 = block {  # false
+                        exit_loop  # loop_2
+                      }
+                    }
+                    ret
+                  }
+                  %b10 = block {  # continuing
+                    next_iteration %b9
+                  }
+                }
+                exit_if  # if_3
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %36:i32 = load %i
+        %37:i32 = add %36, 1i
+        store %i, %37
+        next_iteration %b3
+      }
+    }
+    %38:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %39:i32 = load %38
+    store %i_2, %39
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %40:i32 = load %i_2
+        %41:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %42:i32 = load %41
+        %43:bool = lt %40, %42
+        if %43 [t: %b15, f: %b16] {  # if_5
+          %b15 = block {  # true
+            exit_if  # if_5
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_93:i32 = load %b
+        %45:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %46:i32 = load %45
+        %47:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %48:i32 = load %47
+        %49:array<i32, 2> = construct %46, %48
+        store %indexable, %49
+        %50:i32 = load %a
+        %51:ptr<function, i32, read_write> = access %indexable, %x_93
+        %52:i32 = load %51
+        %53:i32 = add %50, %52
+        store %a, %53
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %54:i32 = load %i_2
+        %55:i32 = add %54, 1i
+        store %i_2, %55
+        next_iteration %b13
+      }
+    }
+    %56:i32 = load %a
+    %57:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %58:i32 = load %57
+    %59:bool = eq %56, %58
+    if %59 [t: %b17] {  # if_6
+      %b17 = block {  # true
+        %60:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %61:i32 = load %60
+        %62:f32 = convert %61
+        %63:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %64:i32 = load %63
+        %65:f32 = convert %64
+        %66:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %67:i32 = load %66
+        %68:f32 = convert %67
+        %69:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %70:i32 = load %69
+        %71:f32 = convert %70
+        %72:vec4<f32> = construct %62, %65, %68, %71
+        store %x_GLF_color, %72
+        exit_if  # if_6
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b18 {
+  %b18 = block {
+    %74:void = call %main_1
+    %75:vec4<f32> = load %x_GLF_color
+    %76:main_out = construct %75
+    ret %76
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9188359
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,184 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, array<i32, 2>, read_write> = var
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_36:i32 = load %10
+    store %a, %x_36
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_38:i32 = load %12
+    store %b, %x_38
+    %14:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_40:i32 = load %14
+    %x_41:f32 = convert %x_40
+    %17:vec4<f32> = construct %x_41, %x_41, %x_41, %x_41
+    store %x_GLF_color, %17
+    %18:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_44:i32 = load %18
+    store %i, %x_44
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_49:i32 = load %i
+        %21:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_51:i32 = load %21
+        %23:bool = lt %x_49, %x_51
+        if %23 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_54:i32 = load %i
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_56:i32 = load %25
+        %27:bool = gt %x_54, %x_56
+        if %27 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %x_60:i32 = load %a
+            %29:i32 = add %x_60, 1i
+            store %a, %29
+            if false [t: %b8] {  # if_3
+              %b8 = block {  # true
+                %30:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+                %x_65:i32 = load %30
+                store %i_1, %x_65
+                loop [b: %b9, c: %b10] {  # loop_2
+                  %b9 = block {  # body
+                    %x_70:i32 = load %i_1
+                    %33:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+                    %x_72:i32 = load %33
+                    %35:bool = lt %x_70, %x_72
+                    if %35 [t: %b11, f: %b12] {  # if_4
+                      %b11 = block {  # true
+                        exit_if  # if_4
+                      }
+                      %b12 = block {  # false
+                        exit_loop  # loop_2
+                      }
+                    }
+                    ret
+                  }
+                  %b10 = block {  # continuing
+                    next_iteration %b9
+                  }
+                }
+                exit_if  # if_3
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_75:i32 = load %i
+        %37:i32 = add %x_75, 1i
+        store %i, %37
+        next_iteration %b3
+      }
+    }
+    %38:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_78:i32 = load %38
+    store %i_2, %x_78
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %x_83:i32 = load %i_2
+        %41:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_85:i32 = load %41
+        %43:bool = lt %x_83, %x_85
+        if %43 [t: %b15, f: %b16] {  # if_5
+          %b15 = block {  # true
+            exit_if  # if_5
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %44:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_89:i32 = load %44
+        %46:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %x_91:i32 = load %46
+        %x_93:i32 = load %b
+        %49:array<i32, 2> = construct %x_89, %x_91
+        store %indexable, %49
+        %50:ptr<function, i32, read_write> = access %indexable, %x_93
+        %x_95:i32 = load %50
+        %x_96:i32 = load %a
+        %53:i32 = add %x_96, %x_95
+        store %a, %53
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %x_98:i32 = load %i_2
+        %55:i32 = add %x_98, 1i
+        store %i_2, %55
+        next_iteration %b13
+      }
+    }
+    %x_100:i32 = load %a
+    %57:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_102:i32 = load %57
+    %59:bool = eq %x_100, %x_102
+    if %59 [t: %b17] {  # if_6
+      %b17 = block {  # true
+        %60:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_107:i32 = load %60
+        %62:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_110:i32 = load %62
+        %64:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_113:i32 = load %64
+        %66:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_116:i32 = load %66
+        %68:f32 = convert %x_107
+        %69:f32 = convert %x_110
+        %70:f32 = convert %x_113
+        %71:f32 = convert %x_116
+        %72:vec4<f32> = construct %68, %69, %70, %71
+        store %x_GLF_color, %72
+        exit_if  # if_6
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b18 {
+  %b18 = block {
+    %74:void = call %main_1
+    %75:vec4<f32> = load %x_GLF_color
+    %76:main_out = construct %75
+    ret %76
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..3b2d2a2
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,136 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %A1:ptr<function, array<f32, 3>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %c:ptr<function, bool, read_write> = var
+    %x_36:ptr<function, bool, read_write> = var
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %11:f32 = load %10
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %13:f32 = load %12
+    %14:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %15:f32 = load %14
+    %16:array<f32, 3> = construct %11, %13, %15
+    store %A1, %16
+    %17:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %18:i32 = load %17
+    %19:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %20:i32 = load %19
+    %21:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %22:i32 = load %21
+    %23:i32 = clamp %18, %20, %22
+    store %a, %23
+    %24:i32 = load %a
+    %25:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %26:i32 = load %25
+    %27:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %28:i32 = load %27
+    %29:i32 = clamp %24, %26, %28
+    %30:ptr<function, f32, read_write> = access %A1, %29
+    %31:f32 = load %30
+    store %b, %31
+    %32:f32 = load %b
+    %33:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %34:i32 = load %33
+    %35:ptr<function, f32, read_write> = access %A1, %34
+    %36:f32 = load %35
+    %37:bool = lt %32, %36
+    if %37 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %38:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %39:f32 = load %38
+        %40:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %41:f32 = load %40
+        %42:bool = gt %39, %41
+        store %x_36, %42
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %43:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %44:f32 = load %43
+        %45:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %46:i32 = load %45
+        %47:ptr<function, f32, read_write> = access %A1, %46
+        %48:f32 = load %47
+        %49:bool = lt %44, %48
+        store %x_36, %49
+        exit_if  # if_1
+      }
+    }
+    %50:bool = load %x_36
+    store %c, %50
+    %51:bool = load %c
+    if %51 [t: %b5, f: %b6] {  # if_2
+      %b5 = block {  # true
+        %52:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %53:i32 = load %52
+        %54:f32 = convert %53
+        %55:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %56:i32 = load %55
+        %57:f32 = convert %56
+        %58:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %59:i32 = load %58
+        %60:f32 = convert %59
+        %61:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %62:i32 = load %61
+        %63:f32 = convert %62
+        %64:vec4<f32> = construct %54, %57, %60, %63
+        store %x_GLF_color, %64
+        exit_if  # if_2
+      }
+      %b6 = block {  # false
+        %65:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %66:f32 = load %65
+        %67:vec4<f32> = construct %66
+        store %x_GLF_color, %67
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %69:void = call %main_1
+    %70:vec4<f32> = load %x_GLF_color
+    %71:main_out = construct %70
+    ret %71
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cf6927c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,136 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %A1:ptr<function, array<f32, 3>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %c:ptr<function, bool, read_write> = var
+    %x_36:ptr<function, bool, read_write> = var
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %x_38:f32 = load %10
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_40:f32 = load %12
+    %14:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_42:f32 = load %14
+    %16:array<f32, 3> = construct %x_38, %x_40, %x_42
+    store %A1, %16
+    %17:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %x_45:i32 = load %17
+    %19:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %x_47:i32 = load %19
+    %21:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %x_49:i32 = load %21
+    %23:i32 = clamp %x_45, %x_47, %x_49
+    store %a, %23
+    %x_51:i32 = load %a
+    %25:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %x_53:i32 = load %25
+    %27:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %x_55:i32 = load %27
+    %29:i32 = clamp %x_51, %x_53, %x_55
+    %30:ptr<function, f32, read_write> = access %A1, %29
+    %x_58:f32 = load %30
+    store %b, %x_58
+    %x_59:f32 = load %b
+    %33:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %x_61:i32 = load %33
+    %35:ptr<function, f32, read_write> = access %A1, %x_61
+    %x_63:f32 = load %35
+    %37:bool = lt %x_59, %x_63
+    if %37 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %38:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_69:f32 = load %38
+        %40:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %x_71:f32 = load %40
+        %42:bool = gt %x_69, %x_71
+        store %x_36, %42
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %43:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_74:f32 = load %43
+        %45:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %x_76:i32 = load %45
+        %47:ptr<function, f32, read_write> = access %A1, %x_76
+        %x_78:f32 = load %47
+        %49:bool = lt %x_74, %x_78
+        store %x_36, %49
+        exit_if  # if_1
+      }
+    }
+    %x_80:bool = load %x_36
+    store %c, %x_80
+    %x_81:bool = load %c
+    if %x_81 [t: %b5, f: %b6] {  # if_2
+      %b5 = block {  # true
+        %52:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_86:i32 = load %52
+        %54:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_89:i32 = load %54
+        %56:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_92:i32 = load %56
+        %58:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_95:i32 = load %58
+        %60:f32 = convert %x_86
+        %61:f32 = convert %x_89
+        %62:f32 = convert %x_92
+        %63:f32 = convert %x_95
+        %64:vec4<f32> = construct %60, %61, %62, %63
+        store %x_GLF_color, %64
+        exit_if  # if_2
+      }
+      %b6 = block {  # false
+        %65:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_99:f32 = load %65
+        %67:vec4<f32> = construct %x_99, %x_99, %x_99, %x_99
+        store %x_GLF_color, %67
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %69:void = call %main_1
+    %70:vec4<f32> = load %x_GLF_color
+    %71:main_out = construct %70
+    ret %71
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..206d997
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,121 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %7:i32 = load %6
+    %8:f32 = convert %7
+    %9:vec4<f32> = construct %8
+    store %v, %9
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %11:i32 = load %10
+    store %i, %11
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %12:i32 = load %i
+        %13:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %14:i32 = load %13
+        %15:bool = lt %12, %14
+        if %15 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_50:i32 = load %i
+        %17:u32 = access vec3<u32>(0u, 1u, 2u), %x_50
+        %18:i32 = load %i
+        %19:f32 = convert %18
+        store_vector_element %v, %17, %19
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %20:i32 = load %i
+        %21:i32 = add %20, 1i
+        store %i, %21
+        next_iteration %b3
+      }
+    }
+    %22:vec4<f32> = load %v
+    %23:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %24:i32 = load %23
+    %25:f32 = convert %24
+    %26:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %27:i32 = load %26
+    %28:f32 = convert %27
+    %29:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %30:i32 = load %29
+    %31:f32 = convert %30
+    %32:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %33:i32 = load %32
+    %34:f32 = convert %33
+    %35:vec4<f32> = construct %25, %28, %31, %34
+    %36:vec4<bool> = eq %22, %35
+    %37:bool = all %36
+    if %37 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %38:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %39:i32 = load %38
+        %40:f32 = convert %39
+        %41:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %42:i32 = load %41
+        %43:f32 = convert %42
+        %44:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %45:i32 = load %44
+        %46:f32 = convert %45
+        %47:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %48:i32 = load %47
+        %49:f32 = convert %48
+        %50:vec4<f32> = construct %40, %43, %46, %49
+        store %x_GLF_color, %50
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %51:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %52:i32 = load %51
+        %53:f32 = convert %52
+        %54:vec4<f32> = construct %53
+        store %x_GLF_color, %54
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %56:void = call %main_1
+    %57:vec4<f32> = load %x_GLF_color
+    %58:main_out = construct %57
+    ret %58
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5fca3a6
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,121 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_36:i32 = load %6
+    %x_37:f32 = convert %x_36
+    %9:vec4<f32> = construct %x_37, %x_37, %x_37, %x_37
+    store %v, %9
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_40:i32 = load %10
+    store %i, %x_40
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_45:i32 = load %i
+        %13:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_47:i32 = load %13
+        %15:bool = lt %x_45, %x_47
+        if %15 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_50:i32 = load %i
+        %x_51:i32 = load %i
+        %18:u32 = access vec3<u32>(0u, 1u, 2u), %x_50
+        %19:f32 = convert %x_51
+        store_vector_element %v, %18, %19
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_55:i32 = load %i
+        %21:i32 = add %x_55, 1i
+        store %i, %21
+        next_iteration %b3
+      }
+    }
+    %x_57:vec4<f32> = load %v
+    %23:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_59:i32 = load %23
+    %25:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_62:i32 = load %25
+    %27:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_65:i32 = load %27
+    %29:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_68:i32 = load %29
+    %31:f32 = convert %x_59
+    %32:f32 = convert %x_62
+    %33:f32 = convert %x_65
+    %34:f32 = convert %x_68
+    %35:vec4<f32> = construct %31, %32, %33, %34
+    %36:vec4<bool> = eq %x_57, %35
+    %37:bool = all %36
+    if %37 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %38:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_77:i32 = load %38
+        %40:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_80:i32 = load %40
+        %42:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_83:i32 = load %42
+        %44:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_86:i32 = load %44
+        %46:f32 = convert %x_77
+        %47:f32 = convert %x_80
+        %48:f32 = convert %x_83
+        %49:f32 = convert %x_86
+        %50:vec4<f32> = construct %46, %47, %48, %49
+        store %x_GLF_color, %50
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %51:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_90:i32 = load %51
+        %x_91:f32 = convert %x_90
+        %54:vec4<f32> = construct %x_91, %x_91, %x_91, %x_91
+        store %x_GLF_color, %54
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %56:void = call %main_1
+    %57:vec4<f32> = load %x_GLF_color
+    %58:main_out = construct %57
+    ret %58
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7a289c4
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,150 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_12:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%func_f1_ = func(%b:ptr<function, f32, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %6:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %7:f32 = load %6
+    %8:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %9:f32 = load %8
+    %10:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %11:f32 = load %10
+    %12:vec4<f32> = construct %7, %9, %11, 1.0f
+    store %x_GLF_color, %12
+    %13:vec4<f32> = load %x_GLF_color
+    store %x_GLF_color, %13
+    %14:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %15:f32 = load %14
+    %16:f32 = load %b
+    %17:bool = gte %15, %16
+    if %17 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %18:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %x_104:f32 = load %18
+        ret %x_104
+      }
+    }
+    %20:ptr<uniform, f32, read> = access %x_7, 0u, 2i, 0u
+    %x_106:f32 = load %20
+    ret %x_106
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    %a:ptr<function, f32, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %param_1:ptr<function, f32, read_write> = var
+    %x_71:ptr<function, bool, read_write> = var
+    %x_72:ptr<function, bool, read_write> = var
+    %28:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %29:f32 = load %28
+    store %param, %29
+    %x_45:f32 = call %func_f1_, %param
+    store %a, %x_45
+    %31:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %32:f32 = load %31
+    %33:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %34:f32 = load %33
+    %35:f32 = add %32, %34
+    store %param_1, %35
+    %x_51:f32 = call %func_f1_, %param_1
+    %37:f32 = load %a
+    %38:f32 = add %37, %x_51
+    store %a, %38
+    %39:f32 = load %a
+    %40:ptr<uniform, f32, read> = access %x_7, 0u, 3i, 0u
+    %41:f32 = load %40
+    %x_57:bool = eq %39, %41
+    store %x_72, %x_57
+    if %x_57 [t: %b5] {  # if_2
+      %b5 = block {  # true
+        %43:vec4<f32> = load %x_GLF_color
+        %44:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %45:f32 = load %44
+        %46:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %47:f32 = load %46
+        %48:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+        %49:f32 = load %48
+        %50:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %51:f32 = load %50
+        %52:vec4<f32> = construct %45, %47, %49, %51
+        %53:vec4<bool> = eq %43, %52
+        %54:bool = all %53
+        store %x_71, %54
+        %55:bool = load %x_71
+        store %x_72, %55
+        exit_if  # if_2
+      }
+    }
+    %56:bool = load %x_72
+    if %56 [t: %b6, f: %b7] {  # if_3
+      %b6 = block {  # true
+        %57:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
+        %58:i32 = load %57
+        %59:f32 = convert %58
+        %60:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+        %61:i32 = load %60
+        %62:f32 = convert %61
+        %63:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+        %64:i32 = load %63
+        %65:f32 = convert %64
+        %66:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
+        %67:i32 = load %66
+        %68:f32 = convert %67
+        %69:vec4<f32> = construct %59, %62, %65, %68
+        store %x_GLF_color, %69
+        exit_if  # if_3
+      }
+      %b7 = block {  # false
+        %70:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+        %71:i32 = load %70
+        %72:f32 = convert %71
+        %73:vec4<f32> = construct %72
+        store %x_GLF_color, %73
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %75:void = call %main_1
+    %76:vec4<f32> = load %x_GLF_color
+    %77:main_out = construct %76
+    ret %77
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..283ac53
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,150 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_12:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%func_f1_ = func(%b:ptr<function, f32, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %6:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_90:f32 = load %6
+    %8:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_92:f32 = load %8
+    %10:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_94:f32 = load %10
+    %12:vec4<f32> = construct %x_90, %x_92, %x_94, 1.0f
+    store %x_GLF_color, %12
+    %x_96:vec4<f32> = load %x_GLF_color
+    store %x_GLF_color, %x_96
+    %14:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_98:f32 = load %14
+    %x_99:f32 = load %b
+    %17:bool = gte %x_98, %x_99
+    if %17 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %18:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %x_104:f32 = load %18
+        ret %x_104
+      }
+    }
+    %20:ptr<uniform, f32, read> = access %x_7, 0u, 2i, 0u
+    %x_106:f32 = load %20
+    ret %x_106
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    %a:ptr<function, f32, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %param_1:ptr<function, f32, read_write> = var
+    %x_71:ptr<function, bool, read_write> = var
+    %x_72_phi:ptr<function, bool, read_write> = var
+    %28:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_44:f32 = load %28
+    store %param, %x_44
+    %x_45:f32 = call %func_f1_, %param
+    store %a, %x_45
+    %31:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_47:f32 = load %31
+    %33:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_49:f32 = load %33
+    %35:f32 = add %x_47, %x_49
+    store %param_1, %35
+    %x_51:f32 = call %func_f1_, %param_1
+    %x_52:f32 = load %a
+    %38:f32 = add %x_52, %x_51
+    store %a, %38
+    %x_54:f32 = load %a
+    %40:ptr<uniform, f32, read> = access %x_7, 0u, 3i, 0u
+    %x_56:f32 = load %40
+    %x_57:bool = eq %x_54, %x_56
+    store %x_72_phi, %x_57
+    if %x_57 [t: %b5] {  # if_2
+      %b5 = block {  # true
+        %x_60:vec4<f32> = load %x_GLF_color
+        %44:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %x_62:f32 = load %44
+        %46:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %x_64:f32 = load %46
+        %48:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+        %x_66:f32 = load %48
+        %50:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %x_68:f32 = load %50
+        %52:vec4<f32> = construct %x_62, %x_64, %x_66, %x_68
+        %53:vec4<bool> = eq %x_60, %52
+        %54:bool = all %53
+        store %x_71, %54
+        %55:bool = load %x_71
+        store %x_72_phi, %55
+        exit_if  # if_2
+      }
+    }
+    %x_72:bool = load %x_72_phi
+    if %x_72 [t: %b6, f: %b7] {  # if_3
+      %b6 = block {  # true
+        %57:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
+        %x_15:i32 = load %57
+        %59:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+        %x_16:i32 = load %59
+        %61:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+        %x_17:i32 = load %61
+        %63:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
+        %x_18:i32 = load %63
+        %65:f32 = convert %x_15
+        %66:f32 = convert %x_16
+        %67:f32 = convert %x_17
+        %68:f32 = convert %x_18
+        %69:vec4<f32> = construct %65, %66, %67, %68
+        store %x_GLF_color, %69
+        exit_if  # if_3
+      }
+      %b7 = block {  # false
+        %70:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+        %x_19:i32 = load %70
+        %x_86:f32 = convert %x_19
+        %73:vec4<f32> = construct %x_86, %x_86, %x_86, %x_86
+        store %x_GLF_color, %73
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %75:void = call %main_1
+    %76:vec4<f32> = load %x_GLF_color
+    %77:main_out = construct %76
+    ret %77
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..61f2c9f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,83 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %5:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %6:f32 = load %5
+    store %a, %6
+    %7:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+    %8:f32 = load %7
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %10:f32 = load %9
+    %11:bool = gt %8, %10
+    if %11 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %12:f32 = load %a
+        %13:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %14:f32 = load %13
+        %15:f32 = add %12, %14
+        store %a, %15
+        %16:f32 = load %a
+        %17:vec4<f32> = construct %16
+        store %x_GLF_color, %17
+        %18:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %19:f32 = load %18
+        %20:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %21:f32 = load %20
+        %22:bool = gt %19, %21
+        if %22 [t: %b4] {  # if_2
+          %b4 = block {  # true
+            %23:f32 = load %a
+            %24:f32 = load_vector_element %x_GLF_color, 0u
+            %25:f32 = add %23, %24
+            store %a, %25
+            %26:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+            %27:f32 = load %26
+            %28:vec4<f32> = construct %27
+            store %x_GLF_color, %28
+            exit_if  # if_2
+          }
+        }
+        exit_if  # if_1
+      }
+    }
+    %29:f32 = load %a
+    %30:vec4<f32> = construct %29, 0.0f, 0.0f, 1.0f
+    store %x_GLF_color, %30
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %32:void = call %main_1
+    %33:vec4<f32> = load %x_GLF_color
+    %34:main_out = construct %33
+    ret %34
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28c7b73
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,83 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %5:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_30:f32 = load %5
+    store %a, %x_30
+    %7:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+    %x_32:f32 = load %7
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_34:f32 = load %9
+    %11:bool = gt %x_32, %x_34
+    if %11 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %12:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_39:f32 = load %12
+        %x_40:f32 = load %a
+        %15:f32 = add %x_40, %x_39
+        store %a, %15
+        %x_42:f32 = load %a
+        %17:vec4<f32> = construct %x_42, %x_42, %x_42, %x_42
+        store %x_GLF_color, %17
+        %18:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %x_45:f32 = load %18
+        %20:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_47:f32 = load %20
+        %22:bool = gt %x_45, %x_47
+        if %22 [t: %b4] {  # if_2
+          %b4 = block {  # true
+            %x_52:f32 = load_vector_element %x_GLF_color, 0u
+            %x_53:f32 = load %a
+            %25:f32 = add %x_53, %x_52
+            store %a, %25
+            %26:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+            %x_56:f32 = load %26
+            %28:vec4<f32> = construct %x_56, %x_56, %x_56, %x_56
+            store %x_GLF_color, %28
+            exit_if  # if_2
+          }
+        }
+        exit_if  # if_1
+      }
+    }
+    %x_58:f32 = load %a
+    %30:vec4<f32> = construct %x_58, 0.0f, 0.0f, 1.0f
+    store %x_GLF_color, %30
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %32:void = call %main_1
+    %33:vec4<f32> = load %x_GLF_color
+    %34:main_out = construct %33
+    ret %34
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..e6e37cc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,106 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %7:i32 = load %6
+    store %a, %7
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %9:i32 = load %8
+    %10:i32 = negation %9
+    store %i, %10
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %11:i32 = load %i
+        %x_36:i32 = add %11, 1i
+        store %i, %x_36
+        %13:i32 = reverseBits %x_36
+        %14:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %15:i32 = load %14
+        %16:bool = lte %13, %15
+        if %16 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %17:i32 = load %a
+        %18:i32 = add %17, 1i
+        store %a, %18
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %19:i32 = load %a
+    %20:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %21:i32 = load %20
+    %22:bool = eq %19, %21
+    if %22 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %23:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %24:i32 = load %23
+        %25:f32 = convert %24
+        %26:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %27:i32 = load %26
+        %28:f32 = convert %27
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %30:i32 = load %29
+        %31:f32 = convert %30
+        %32:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %33:i32 = load %32
+        %34:f32 = convert %33
+        %35:vec4<f32> = construct %25, %28, %31, %34
+        store %x_GLF_color, %35
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %36:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %37:i32 = load %36
+        %38:f32 = convert %37
+        %39:vec4<f32> = construct %38
+        store %x_GLF_color, %39
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %41:void = call %main_1
+    %42:vec4<f32> = load %x_GLF_color
+    %43:main_out = construct %42
+    ret %43
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9a7f8d1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,106 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_27:i32 = load %6
+    store %a, %x_27
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_29:i32 = load %8
+    %10:i32 = negation %x_29
+    store %i, %10
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_35:i32 = load %i
+        %x_36:i32 = add %x_35, 1i
+        store %i, %x_36
+        %13:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_39:i32 = load %13
+        %15:i32 = reverseBits %x_36
+        %16:bool = lte %15, %x_39
+        if %16 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_42:i32 = load %a
+        %18:i32 = add %x_42, 1i
+        store %a, %18
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %x_44:i32 = load %a
+    %20:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_46:i32 = load %20
+    %22:bool = eq %x_44, %x_46
+    if %22 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %23:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_52:i32 = load %23
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_55:i32 = load %25
+        %27:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_58:i32 = load %27
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_61:i32 = load %29
+        %31:f32 = convert %x_52
+        %32:f32 = convert %x_55
+        %33:f32 = convert %x_58
+        %34:f32 = convert %x_61
+        %35:vec4<f32> = construct %31, %32, %33, %34
+        store %x_GLF_color, %35
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %36:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_65:i32 = load %36
+        %x_66:f32 = convert %x_65
+        %39:vec4<f32> = construct %x_66, %x_66, %x_66, %x_66
+        store %x_GLF_color, %39
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %41:void = call %main_1
+    %42:vec4<f32> = load %x_GLF_color
+    %43:main_out = construct %42
+    ret %43
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..ce2d277
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,98 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(4) {
+  ten:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  minusEight:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %a, 0i
+    store %b, 0i
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %8:i32 = load %i
+        %9:ptr<uniform, i32, read> = access %x_8, 0u
+        %10:i32 = load %9
+        %11:bool = lt %8, %10
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %12:i32 = load %a
+        %13:bool = gt %12, 5i
+        if %13 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %14:i32 = load %a
+        %15:ptr<uniform, i32, read> = access %x_10, 0u
+        %16:i32 = load %15
+        %17:i32 = div %16, -4i
+        %18:i32 = add %14, %17
+        store %a, %18
+        %19:i32 = load %b
+        %20:i32 = add %19, 1i
+        store %b, %20
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %21:i32 = load %i
+        %22:i32 = add %21, 1i
+        store %i, %22
+        next_iteration %b3
+      }
+    }
+    %23:i32 = load %b
+    %24:bool = eq %23, 3i
+    if %24 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %26:void = call %main_1
+    %27:vec4<f32> = load %x_GLF_color
+    %28:main_out = construct %27
+    ret %28
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..641b671
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,98 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(4) {
+  ten:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  minusEight:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %a, 0i
+    store %b, 0i
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_36:i32 = load %i
+        %9:ptr<uniform, i32, read> = access %x_8, 0u
+        %x_38:i32 = load %9
+        %11:bool = lt %x_36, %x_38
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_41:i32 = load %a
+        %13:bool = gt %x_41, 5i
+        if %13 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %14:ptr<uniform, i32, read> = access %x_10, 0u
+        %x_46:i32 = load %14
+        %x_48:i32 = load %a
+        %17:i32 = div %x_46, -4i
+        %18:i32 = add %x_48, %17
+        store %a, %18
+        %x_50:i32 = load %b
+        %20:i32 = add %x_50, 1i
+        store %b, %20
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_52:i32 = load %i
+        %22:i32 = add %x_52, 1i
+        store %i, %22
+        next_iteration %b3
+      }
+    }
+    %x_54:i32 = load %b
+    %24:bool = eq %x_54, 3i
+    if %24 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %26:void = call %main_1
+    %27:vec4<f32> = load %x_GLF_color
+    %28:main_out = construct %27
+    ret %28
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..52e8acb
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,124 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %v:ptr<function, vec3<f32>, read_write> = var
+    %10:ptr<uniform, f32, read> = access %x_6, 0u
+    %11:f32 = load %10
+    store %f, %11
+    store %a, 1i
+    store %b, 0i
+    store %c, 1i
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %12:i32 = load %i
+        %13:bool = lt %12, 3i
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_50:i32 = load %i
+        %15:f32 = load %f
+        %16:i32 = load %i
+        %17:f32 = convert %16
+        %18:f32 = add %15, %17
+        store_vector_element %v, %x_50, %18
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %19:i32 = load %i
+        %20:i32 = add %19, 1i
+        store %i, %20
+        next_iteration %b3
+      }
+    }
+    %21:ptr<uniform, f32, read> = access %x_6, 0u
+    %22:f32 = load %21
+    %23:bool = eq %22, 1.0f
+    if %23 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        loop [b: %b8, c: %b9] {  # loop_2
+          %b8 = block {  # body
+            store %x_GLF_color, vec4<f32>(0.0f)
+            continue %b9
+          }
+          %b9 = block {  # continuing
+            %x_67:i32 = load %c
+            %x_68:i32 = load %a
+            %x_69:i32 = load %b
+            %27:i32 = or %x_68, %x_69
+            %28:i32 = and %x_67, %27
+            %29:bool = eq %28, 0i
+            %30:bool = eq %29, false
+            break_if %30 %b8
+          }
+        }
+        %31:ptr<uniform, f32, read> = access %x_6, 0u
+        %32:f32 = load %31
+        %33:bool = eq %32, 1.0f
+        if %33 [t: %b10] {  # if_3
+          %b10 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f)
+            exit_if  # if_3
+          }
+        }
+        exit_if  # if_2
+      }
+    }
+    %34:f32 = load_vector_element %v, 0u
+    %35:bool = eq %34, 1.0f
+    %36:f32 = select 0.0f, 1.0f, %35
+    %37:f32 = load_vector_element %v, 1u
+    %38:bool = eq %37, 2.0f
+    %39:f32 = select 1.0f, 0.0f, %38
+    %40:f32 = load_vector_element %v, 2u
+    %41:bool = eq %40, 3.0f
+    %42:f32 = select 1.0f, 0.0f, %41
+    %43:vec3<f32> = construct %36, %39, %42
+    %44:vec3<f32> = swizzle %43, xyz
+    %45:f32 = load_vector_element %x_GLF_color, 3u
+    %46:vec4<f32> = construct %44, %45
+    store %x_GLF_color, %46
+    store_vector_element %x_GLF_color, 3u, 1.0f
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %48:void = call %main_1
+    %49:vec4<f32> = load %x_GLF_color
+    %50:main_out = construct %49
+    ret %50
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..56e5362
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,127 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %v:ptr<function, vec3<f32>, read_write> = var
+    %10:ptr<uniform, f32, read> = access %x_6, 0u
+    %x_42:f32 = load %10
+    store %f, %x_42
+    store %a, 1i
+    store %b, 0i
+    store %c, 1i
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_47:i32 = load %i
+        %13:bool = lt %x_47, 3i
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_50:i32 = load %i
+        %x_51:f32 = load %f
+        %x_52:i32 = load %i
+        %17:f32 = convert %x_52
+        %18:f32 = add %x_51, %17
+        store_vector_element %v, %x_50, %18
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_56:i32 = load %i
+        %20:i32 = add %x_56, 1i
+        store %i, %20
+        next_iteration %b3
+      }
+    }
+    %21:ptr<uniform, f32, read> = access %x_6, 0u
+    %x_59:f32 = load %21
+    %23:bool = eq %x_59, 1.0f
+    if %23 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        loop [b: %b8, c: %b9] {  # loop_2
+          %b8 = block {  # body
+            store %x_GLF_color, vec4<f32>(0.0f)
+            continue %b9
+          }
+          %b9 = block {  # continuing
+            %x_67:i32 = load %c
+            %x_68:i32 = load %a
+            %x_69:i32 = load %b
+            %27:i32 = or %x_68, %x_69
+            %28:i32 = and %x_67, %27
+            %29:bool = eq %28, 0i
+            %30:bool = eq %29, false
+            break_if %30 %b8
+          }
+        }
+        %31:ptr<uniform, f32, read> = access %x_6, 0u
+        %x_74:f32 = load %31
+        %33:bool = eq %x_74, 1.0f
+        if %33 [t: %b10] {  # if_3
+          %b10 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f)
+            exit_if  # if_3
+          }
+        }
+        exit_if  # if_2
+      }
+    }
+    %x_79:f32 = load_vector_element %v, 0u
+    %x_83:f32 = load_vector_element %v, 1u
+    %x_87:f32 = load_vector_element %v, 2u
+    %37:bool = eq %x_79, 1.0f
+    %38:f32 = select 0.0f, 1.0f, %37
+    %39:bool = eq %x_83, 2.0f
+    %40:f32 = select 1.0f, 0.0f, %39
+    %41:bool = eq %x_87, 3.0f
+    %42:f32 = select 1.0f, 0.0f, %41
+    %x_90:vec3<f32> = construct %38, %40, %42
+    %x_91:vec4<f32> = load %x_GLF_color
+    %45:f32 = access %x_90, 0u
+    %46:f32 = access %x_90, 1u
+    %47:f32 = access %x_90, 2u
+    %48:f32 = access %x_91, 3u
+    %49:vec4<f32> = construct %45, %46, %47, %48
+    store %x_GLF_color, %49
+    store_vector_element %x_GLF_color, 3u, 1.0f
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %51:void = call %main_1
+    %52:vec4<f32> = load %x_GLF_color
+    %53:main_out = construct %52
+    ret %53
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..fcf1a62
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,154 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+buf2 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_global_loop_count:ptr<private, i32, read_write> = var
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_12:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %r:ptr<function, i32, read_write> = var
+    store %x_GLF_global_loop_count, 0i
+    %9:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %10:f32 = load %9
+    store %f, %10
+    %11:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %12:i32 = load %11
+    store %r, %12
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %13:i32 = load %r
+        %14:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %15:i32 = load %14
+        %16:bool = lt %13, %15
+        if %16 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %17:i32 = load %x_GLF_global_loop_count
+        %18:i32 = add %17, 1i
+        store %x_GLF_global_loop_count, %18
+        %19:f32 = load %f
+        %20:ptr<uniform, vec2<f32>, read> = access %x_12, 0u
+        %21:vec2<f32> = load %20
+        %22:vec2<f32> = dpdx %21
+        %23:f32 = access %22, 1u
+        %24:f32 = add %19, %23
+        store %f, %24
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %25:i32 = load %r
+        %26:i32 = add %25, 1i
+        store %r, %26
+        next_iteration %b3
+      }
+    }
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %27:i32 = load %x_GLF_global_loop_count
+        %28:bool = lt %27, 100i
+        if %28 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %29:i32 = load %x_GLF_global_loop_count
+        %30:i32 = add %29, 1i
+        store %x_GLF_global_loop_count, %30
+        %31:f32 = load %f
+        %32:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %33:f32 = load %32
+        %34:f32 = add %31, %33
+        store %f, %34
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        next_iteration %b7
+      }
+    }
+    %35:f32 = load %f
+    %36:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %37:f32 = load %36
+    %38:bool = eq %35, %37
+    if %38 [t: %b11, f: %b12] {  # if_3
+      %b11 = block {  # true
+        %39:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %40:i32 = load %39
+        %41:f32 = convert %40
+        %42:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %43:i32 = load %42
+        %44:f32 = convert %43
+        %45:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %46:i32 = load %45
+        %47:f32 = convert %46
+        %48:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %49:i32 = load %48
+        %50:f32 = convert %49
+        %51:vec4<f32> = construct %41, %44, %47, %50
+        store %x_GLF_color, %51
+        exit_if  # if_3
+      }
+      %b12 = block {  # false
+        %52:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %53:i32 = load %52
+        %54:f32 = convert %53
+        %55:vec4<f32> = construct %54
+        store %x_GLF_color, %55
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %57:void = call %main_1
+    %58:vec4<f32> = load %x_GLF_color
+    %59:main_out = construct %58
+    ret %59
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b4968c5
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,154 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+buf2 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_global_loop_count:ptr<private, i32, read_write> = var
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_12:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %r:ptr<function, i32, read_write> = var
+    store %x_GLF_global_loop_count, 0i
+    %9:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_42:f32 = load %9
+    store %f, %x_42
+    %11:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %x_44:i32 = load %11
+    store %r, %x_44
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_49:i32 = load %r
+        %14:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_51:i32 = load %14
+        %16:bool = lt %x_49, %x_51
+        if %16 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_54:i32 = load %x_GLF_global_loop_count
+        %18:i32 = add %x_54, 1i
+        store %x_GLF_global_loop_count, %18
+        %19:ptr<uniform, vec2<f32>, read> = access %x_12, 0u
+        %x_57:vec2<f32> = load %19
+        %x_60:f32 = load %f
+        %22:vec2<f32> = dpdx %x_57
+        %23:f32 = access %22, 1u
+        %24:f32 = add %x_60, %23
+        store %f, %24
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_62:i32 = load %r
+        %26:i32 = add %x_62, 1i
+        store %r, %26
+        next_iteration %b3
+      }
+    }
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_68:i32 = load %x_GLF_global_loop_count
+        %28:bool = lt %x_68, 100i
+        if %28 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_71:i32 = load %x_GLF_global_loop_count
+        %30:i32 = add %x_71, 1i
+        store %x_GLF_global_loop_count, %30
+        %31:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %x_74:f32 = load %31
+        %x_75:f32 = load %f
+        %34:f32 = add %x_75, %x_74
+        store %f, %34
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        next_iteration %b7
+      }
+    }
+    %x_77:f32 = load %f
+    %36:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_79:f32 = load %36
+    %38:bool = eq %x_77, %x_79
+    if %38 [t: %b11, f: %b12] {  # if_3
+      %b11 = block {  # true
+        %39:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_85:i32 = load %39
+        %41:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_88:i32 = load %41
+        %43:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_91:i32 = load %43
+        %45:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_94:i32 = load %45
+        %47:f32 = convert %x_85
+        %48:f32 = convert %x_88
+        %49:f32 = convert %x_91
+        %50:f32 = convert %x_94
+        %51:vec4<f32> = construct %47, %48, %49, %50
+        store %x_GLF_color, %51
+        exit_if  # if_3
+      }
+      %b12 = block {  # false
+        %52:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_98:i32 = load %52
+        %x_99:f32 = convert %x_98
+        %55:vec4<f32> = construct %x_99, %x_99, %x_99, %x_99
+        store %x_GLF_color, %55
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %57:void = call %main_1
+    %58:vec4<f32> = load %x_GLF_color
+    %59:main_out = construct %58
+    ret %59
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..adfcb43
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,112 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %a:ptr<function, f32, read_write> = var
+    %8:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %9:f32 = load %8
+    store %f, %9
+    %10:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %11:i32 = load %10
+    store %i, %11
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %12:i32 = load %i
+        %13:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %14:i32 = load %13
+        %15:bool = gt %12, %14
+        if %15 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %16:i32 = load %i
+        %17:f32 = convert %16
+        %18:f32 = max 1.0f, %17
+        %19:f32 = sub 1.0f, %18
+        store %a, %19
+        %20:f32 = load %a
+        %21:f32 = max %20, 0.0f
+        %22:f32 = min %21, 0.0f
+        store %f, %22
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %23:i32 = load %i
+        %24:i32 = sub %23, 1i
+        store %i, %24
+        next_iteration %b3
+      }
+    }
+    %25:f32 = load %f
+    %26:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %27:f32 = load %26
+    %28:bool = eq %25, %27
+    if %28 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %29:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %30:i32 = load %29
+        %31:f32 = convert %30
+        %32:f32 = load %f
+        %33:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %34:i32 = load %33
+        %35:f32 = convert %34
+        %36:vec4<f32> = construct %31, %32, %35, 1.0f
+        store %x_GLF_color, %36
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %38:void = call %main_1
+    %39:vec4<f32> = load %x_GLF_color
+    %40:main_out = construct %39
+    ret %40
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d39b642
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,112 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %a:ptr<function, f32, read_write> = var
+    %8:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_37:f32 = load %8
+    store %f, %x_37
+    %10:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %x_39:i32 = load %10
+    store %i, %x_39
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_44:i32 = load %i
+        %13:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_46:i32 = load %13
+        %15:bool = gt %x_44, %x_46
+        if %15 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_49:i32 = load %i
+        %17:f32 = convert %x_49
+        %18:f32 = max 1.0f, %17
+        %19:f32 = sub 1.0f, %18
+        store %a, %19
+        %x_53:f32 = load %a
+        %21:f32 = max %x_53, 0.0f
+        %22:f32 = min %21, 0.0f
+        store %f, %22
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_56:i32 = load %i
+        %24:i32 = sub %x_56, 1i
+        store %i, %24
+        next_iteration %b3
+      }
+    }
+    %x_58:f32 = load %f
+    %26:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_60:f32 = load %26
+    %28:bool = eq %x_58, %x_60
+    if %28 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %29:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %x_66:i32 = load %29
+        %x_68:f32 = load %f
+        %32:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_70:i32 = load %32
+        %34:f32 = convert %x_66
+        %35:f32 = convert %x_70
+        %36:vec4<f32> = construct %34, %x_68, %35, 1.0f
+        store %x_GLF_color, %36
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %38:void = call %main_1
+    %39:vec4<f32> = load %x_GLF_color
+    %40:main_out = construct %39
+    ret %40
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7966c89
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,110 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():i32 -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %6:i32 = load %5
+    store %i, %6
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %7:i32 = load %i
+        %8:i32 = add %7, 1i
+        store %i, %8
+        if true [t: %b5] {  # if_1
+          %b5 = block {  # true
+            if true [t: %b6] {  # if_2
+              %b6 = block {  # true
+                %9:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+                %x_65:i32 = load %9
+                ret %x_65
+              }
+            }
+            exit_if  # if_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_66:i32 = load %i
+        %12:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_68:i32 = load %12
+        %14:bool = lt %x_66, %x_68
+        %15:bool = eq %14, false
+        break_if %15 %b3
+      }
+    }
+    %16:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %x_71:i32 = load %16
+    ret %x_71
+  }
+}
+%main_1 = func():void -> %b7 {
+  %b7 = block {
+    %x_27:i32 = call %func_
+    %20:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %21:i32 = load %20
+    %22:bool = eq %x_27, %21
+    if %22 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %23:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %24:i32 = load %23
+        %25:f32 = convert %24
+        %26:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %27:i32 = load %26
+        %28:f32 = convert %27
+        %29:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %30:i32 = load %29
+        %31:f32 = convert %30
+        %32:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %33:i32 = load %32
+        %34:f32 = convert %33
+        %35:vec4<f32> = construct %25, %28, %31, %34
+        store %x_GLF_color, %35
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %36:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %37:i32 = load %36
+        %38:f32 = convert %37
+        %39:vec4<f32> = construct %38
+        store %x_GLF_color, %39
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %41:void = call %main_1
+    %42:vec4<f32> = load %x_GLF_color
+    %43:main_out = construct %42
+    ret %43
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9cf45b3
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,110 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():i32 -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %x_53:i32 = load %5
+    store %i, %x_53
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_58:i32 = load %i
+        %8:i32 = add %x_58, 1i
+        store %i, %8
+        if true [t: %b5] {  # if_1
+          %b5 = block {  # true
+            if true [t: %b6] {  # if_2
+              %b6 = block {  # true
+                %9:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+                %x_65:i32 = load %9
+                ret %x_65
+              }
+            }
+            exit_if  # if_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_66:i32 = load %i
+        %12:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_68:i32 = load %12
+        %14:bool = lt %x_66, %x_68
+        %15:bool = eq %14, false
+        break_if %15 %b3
+      }
+    }
+    %16:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %x_71:i32 = load %16
+    ret %x_71
+  }
+}
+%main_1 = func():void -> %b7 {
+  %b7 = block {
+    %x_27:i32 = call %func_
+    %20:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %x_29:i32 = load %20
+    %22:bool = eq %x_27, %x_29
+    if %22 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %23:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %x_35:i32 = load %23
+        %25:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_38:i32 = load %25
+        %27:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_41:i32 = load %27
+        %29:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %x_44:i32 = load %29
+        %31:f32 = convert %x_35
+        %32:f32 = convert %x_38
+        %33:f32 = convert %x_41
+        %34:f32 = convert %x_44
+        %35:vec4<f32> = construct %31, %32, %33, %34
+        store %x_GLF_color, %35
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %36:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_48:i32 = load %36
+        %x_49:f32 = convert %x_48
+        %39:vec4<f32> = construct %x_49, %x_49, %x_49, %x_49
+        store %x_GLF_color, %39
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %41:void = call %main_1
+    %42:vec4<f32> = load %x_GLF_color
+    %43:main_out = construct %42
+    ret %43
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..209f879
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,136 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %arr:ptr<function, array<i32, 10>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %arr, array<i32, 10>(1i, 2i, 3i, 4i, 5i, 6i, 7i, 8i, 9i, 10i)
+    store %a, 0i
+    %7:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %8:i32 = load %7
+    %9:ptr<function, i32, read_write> = access %arr, %8
+    %10:i32 = load %9
+    %11:bool = eq %10, 2i
+    if %11 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %12:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %13:i32 = load %12
+        store %i, %13
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %14:i32 = load %i
+            %15:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+            %16:i32 = load %15
+            %17:bool = lt %14, %16
+            if %17 [t: %b6, f: %b7] {  # if_2
+              %b6 = block {  # true
+                exit_if  # if_2
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            %18:i32 = load %i
+            %19:i32 = add %18, 1i
+            store %i, %19
+            next_iteration %b4
+          }
+        }
+        %20:i32 = load %a
+        %21:i32 = add %20, 1i
+        store %a, %21
+        exit_if  # if_1
+      }
+    }
+    %22:i32 = load %a
+    %23:i32 = mod -1i, %22
+    %24:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %25:i32 = load %24
+    %26:bool = eq %23, %25
+    if %26 [t: %b8] {  # if_3
+      %b8 = block {  # true
+        %27:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_71:i32 = load %27
+        %29:vec2<i32> = construct %x_71
+        %30:i32 = access %29, 1u
+        %31:ptr<function, i32, read_write> = access %arr, %30
+        %32:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %33:i32 = load %32
+        store %31, %33
+        exit_if  # if_3
+      }
+    }
+    %34:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %35:i32 = load %34
+    %36:ptr<function, i32, read_write> = access %arr, %35
+    %37:i32 = load %36
+    %38:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %39:i32 = load %38
+    %40:bool = eq %37, %39
+    if %40 [t: %b9, f: %b10] {  # if_4
+      %b9 = block {  # true
+        %41:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %42:i32 = load %41
+        %43:f32 = convert %42
+        %44:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %45:i32 = load %44
+        %46:f32 = convert %45
+        %47:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %48:i32 = load %47
+        %49:f32 = convert %48
+        %50:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %51:i32 = load %50
+        %52:f32 = convert %51
+        %53:vec4<f32> = construct %43, %46, %49, %52
+        store %x_GLF_color, %53
+        exit_if  # if_4
+      }
+      %b10 = block {  # false
+        %54:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %55:i32 = load %54
+        %56:f32 = convert %55
+        %57:vec4<f32> = construct %56
+        store %x_GLF_color, %57
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %59:void = call %main_1
+    %60:vec4<f32> = load %x_GLF_color
+    %61:main_out = construct %60
+    ret %61
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a84e711
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,136 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %arr:ptr<function, array<i32, 10>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %arr, array<i32, 10>(1i, 2i, 3i, 4i, 5i, 6i, 7i, 8i, 9i, 10i)
+    store %a, 0i
+    %7:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_42:i32 = load %7
+    %9:ptr<function, i32, read_write> = access %arr, %x_42
+    %x_44:i32 = load %9
+    %11:bool = eq %x_44, 2i
+    if %11 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %12:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %x_49:i32 = load %12
+        store %i, %x_49
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %x_54:i32 = load %i
+            %15:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+            %x_56:i32 = load %15
+            %17:bool = lt %x_54, %x_56
+            if %17 [t: %b6, f: %b7] {  # if_2
+              %b6 = block {  # true
+                exit_if  # if_2
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            %x_59:i32 = load %i
+            %19:i32 = add %x_59, 1i
+            store %i, %19
+            next_iteration %b4
+          }
+        }
+        %x_61:i32 = load %a
+        %21:i32 = add %x_61, 1i
+        store %a, %21
+        exit_if  # if_1
+      }
+    }
+    %x_63:i32 = load %a
+    %23:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %x_66:i32 = load %23
+    %25:i32 = mod -1i, %x_63
+    %26:bool = eq %25, %x_66
+    if %26 [t: %b8] {  # if_3
+      %b8 = block {  # true
+        %27:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_71:i32 = load %27
+        %29:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %x_75:i32 = load %29
+        %31:vec2<i32> = construct %x_71, %x_71
+        %32:i32 = access %31, 1u
+        %33:ptr<function, i32, read_write> = access %arr, %32
+        store %33, %x_75
+        exit_if  # if_3
+      }
+    }
+    %34:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_78:i32 = load %34
+    %36:ptr<function, i32, read_write> = access %arr, %x_78
+    %x_80:i32 = load %36
+    %38:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %x_82:i32 = load %38
+    %40:bool = eq %x_80, %x_82
+    if %40 [t: %b9, f: %b10] {  # if_4
+      %b9 = block {  # true
+        %41:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_88:i32 = load %41
+        %43:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %x_91:i32 = load %43
+        %45:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %x_94:i32 = load %45
+        %47:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_97:i32 = load %47
+        %49:f32 = convert %x_88
+        %50:f32 = convert %x_91
+        %51:f32 = convert %x_94
+        %52:f32 = convert %x_97
+        %53:vec4<f32> = construct %49, %50, %51, %52
+        store %x_GLF_color, %53
+        exit_if  # if_4
+      }
+      %b10 = block {  # false
+        %54:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %x_101:i32 = load %54
+        %x_102:f32 = convert %x_101
+        %57:vec4<f32> = construct %x_102, %x_102, %x_102, %x_102
+        store %x_GLF_color, %57
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %59:void = call %main_1
+    %60:vec4<f32> = load %x_GLF_color
+    %61:main_out = construct %60
+    ret %61
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..8bfce5a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,111 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %arr:ptr<function, array<f32, 10>, read_write> = var
+    store %f, 2.0f
+    %7:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %8:f32 = load %7
+    %9:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %10:f32 = load %9
+    %11:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %12:f32 = load %11
+    %13:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %14:f32 = load %13
+    %15:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %16:f32 = load %15
+    %17:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %18:f32 = load %17
+    %19:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %20:f32 = load %19
+    %21:f32 = load %f
+    %22:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %23:f32 = load %22
+    %24:f32 = pow %21, %23
+    %25:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %26:f32 = load %25
+    %27:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %28:f32 = load %27
+    %29:array<f32, 10> = construct %8, %10, %12, %14, %16, %18, %20, %24, %26, %28
+    store %arr, %29
+    %30:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %31:i32 = load %30
+    %32:ptr<function, f32, read_write> = access %arr, %31
+    %33:f32 = load %32
+    %34:i32 = convert %33
+    %35:ptr<uniform, i32, read> = access %x_9, 0u, 3i, 0u
+    %36:i32 = load %35
+    %37:bool = eq %34, %36
+    if %37 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %38:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %39:i32 = load %38
+        %40:f32 = convert %39
+        %41:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %42:i32 = load %41
+        %43:f32 = convert %42
+        %44:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %45:i32 = load %44
+        %46:f32 = convert %45
+        %47:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %48:i32 = load %47
+        %49:f32 = convert %48
+        %50:vec4<f32> = construct %40, %43, %46, %49
+        store %x_GLF_color, %50
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %51:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %52:i32 = load %51
+        %53:f32 = convert %52
+        %54:vec4<f32> = construct %53
+        store %x_GLF_color, %54
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %56:void = call %main_1
+    %57:vec4<f32> = load %x_GLF_color
+    %58:main_out = construct %57
+    ret %58
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b6c14ef
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,111 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %arr:ptr<function, array<f32, 10>, read_write> = var
+    store %f, 2.0f
+    %7:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_37:f32 = load %7
+    %9:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_39:f32 = load %9
+    %11:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_41:f32 = load %11
+    %13:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_43:f32 = load %13
+    %15:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_45:f32 = load %15
+    %17:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_47:f32 = load %17
+    %19:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_49:f32 = load %19
+    %x_50:f32 = load %f
+    %22:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_52:f32 = load %22
+    %24:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_55:f32 = load %24
+    %26:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_57:f32 = load %26
+    %28:f32 = pow %x_50, %x_52
+    %29:array<f32, 10> = construct %x_37, %x_39, %x_41, %x_43, %x_45, %x_47, %x_49, %28, %x_55, %x_57
+    store %arr, %29
+    %30:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %x_60:i32 = load %30
+    %32:ptr<function, f32, read_write> = access %arr, %x_60
+    %x_62:f32 = load %32
+    %34:ptr<uniform, i32, read> = access %x_9, 0u, 3i, 0u
+    %x_65:i32 = load %34
+    %36:i32 = convert %x_62
+    %37:bool = eq %36, %x_65
+    if %37 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %38:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_71:i32 = load %38
+        %40:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %x_74:i32 = load %40
+        %42:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %x_77:i32 = load %42
+        %44:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_80:i32 = load %44
+        %46:f32 = convert %x_71
+        %47:f32 = convert %x_74
+        %48:f32 = convert %x_77
+        %49:f32 = convert %x_80
+        %50:vec4<f32> = construct %46, %47, %48, %49
+        store %x_GLF_color, %50
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %51:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %x_84:i32 = load %51
+        %x_85:f32 = convert %x_84
+        %54:vec4<f32> = construct %x_85, %x_85, %x_85, %x_85
+        store %x_GLF_color, %54
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %56:void = call %main_1
+    %57:vec4<f32> = load %x_GLF_color
+    %58:main_out = construct %57
+    ret %58
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..89893bb
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,86 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():i32 -> %b2 {
+  %b2 = block {
+    %ret:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %ret, 0i
+    store %i, 3i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %6:i32 = load %i
+        %7:i32 = load %i
+        %8:i32 = and %7, 1i
+        %9:bool = gt %6, %8
+        if %9 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %10:i32 = load %ret
+        %11:i32 = add %10, 1i
+        store %ret, %11
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %12:i32 = load %i
+        %13:ptr<uniform, i32, read> = access %x_8, 0u
+        %14:i32 = load %13
+        %15:i32 = sub %12, %14
+        store %i, %15
+        next_iteration %b3
+      }
+    }
+    %x_50:i32 = load %ret
+    ret %x_50
+  }
+}
+%main_1 = func():void -> %b7 {
+  %b7 = block {
+    %x_29:i32 = call %func_
+    %19:bool = eq %x_29, 2i
+    if %19 [t: %b8, f: %b9] {  # if_2
+      %b8 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b9 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %21:void = call %main_1
+    %22:vec4<f32> = load %x_GLF_color
+    %23:main_out = construct %22
+    ret %23
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e88ec34
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,86 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():i32 -> %b2 {
+  %b2 = block {
+    %ret:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %ret, 0i
+    store %i, 3i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_39:i32 = load %i
+        %x_40:i32 = load %i
+        %8:i32 = and %x_40, 1i
+        %9:bool = gt %x_39, %8
+        if %9 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_44:i32 = load %ret
+        %11:i32 = add %x_44, 1i
+        store %ret, %11
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %12:ptr<uniform, i32, read> = access %x_8, 0u
+        %x_47:i32 = load %12
+        %x_48:i32 = load %i
+        %15:i32 = sub %x_48, %x_47
+        store %i, %15
+        next_iteration %b3
+      }
+    }
+    %x_50:i32 = load %ret
+    ret %x_50
+  }
+}
+%main_1 = func():void -> %b7 {
+  %b7 = block {
+    %x_29:i32 = call %func_
+    %19:bool = eq %x_29, 2i
+    if %19 [t: %b8, f: %b9] {  # if_2
+      %b8 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b9 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %21:void = call %main_1
+    %22:vec4<f32> = load %x_GLF_color
+    %23:main_out = construct %22
+    ret %23
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..db599b6
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.spvasm.expected.ir.msl
@@ -0,0 +1,50 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, i32, read> = access %x_5, 0u
+    %5:i32 = load %4
+    %6:i32 = and %5, 0i
+    %7:bool = eq %6, 0i
+    if %7 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %9:void = call %main_1
+    %10:vec4<f32> = load %x_GLF_color
+    %11:main_out = construct %10
+    ret %11
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b075b62
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl.expected.ir.msl
@@ -0,0 +1,50 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, i32, read> = access %x_5, 0u
+    %x_22:i32 = load %4
+    %6:i32 = and %x_22, 0i
+    %7:bool = eq %6, 0i
+    if %7 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %9:void = call %main_1
+    %10:vec4<f32> = load %x_GLF_color
+    %11:main_out = construct %10
+    ret %11
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..6b9d2b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.spvasm.expected.ir.msl
@@ -0,0 +1,50 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, i32, read> = access %x_5, 0u
+    %5:i32 = load %4
+    %6:i32 = or -1i, %5
+    %7:bool = eq %6, -1i
+    if %7 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %9:void = call %main_1
+    %10:vec4<f32> = load %x_GLF_color
+    %11:main_out = construct %10
+    ret %11
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e391db6
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl.expected.ir.msl
@@ -0,0 +1,50 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, i32, read> = access %x_5, 0u
+    %x_23:i32 = load %4
+    %6:i32 = or -1i, %x_23
+    %7:bool = eq %6, -1i
+    if %7 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %9:void = call %main_1
+    %10:vec4<f32> = load %x_GLF_color
+    %11:main_out = construct %10
+    ret %11
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2406016
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,58 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  minusOne:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %minValue:ptr<function, i32, read_write> = var
+    %negMinValue:ptr<function, i32, read_write> = var
+    store %minValue, -2147483648i
+    %6:i32 = load %minValue
+    %7:i32 = negation %6
+    store %negMinValue, %7
+    %8:i32 = load %negMinValue
+    %9:i32 = load %minValue
+    %10:ptr<uniform, i32, read> = access %x_7, 0u
+    %11:i32 = load %10
+    %12:i32 = mul %9, %11
+    %13:bool = eq %8, %12
+    if %13 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %15:void = call %main_1
+    %16:vec4<f32> = load %x_GLF_color
+    %17:main_out = construct %16
+    ret %17
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b808aad
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,58 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  minusOne:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %minValue:ptr<function, i32, read_write> = var
+    %negMinValue:ptr<function, i32, read_write> = var
+    store %minValue, -2147483648i
+    %x_25:i32 = load %minValue
+    %7:i32 = negation %x_25
+    store %negMinValue, %7
+    %x_27:i32 = load %negMinValue
+    %x_28:i32 = load %minValue
+    %10:ptr<uniform, i32, read> = access %x_7, 0u
+    %x_30:i32 = load %10
+    %12:i32 = mul %x_28, %x_30
+    %13:bool = eq %x_27, %12
+    if %13 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %15:void = call %main_1
+    %16:vec4<f32> = load %x_GLF_color
+    %17:main_out = construct %16
+    ret %17
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..17382da
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.spvasm.expected.ir.msl
@@ -0,0 +1,147 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:u32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, u32, read_write> = var
+    %b:ptr<function, u32, read_write> = var
+    %c:ptr<function, u32, read_write> = var
+    %d:ptr<function, u32, read_write> = var
+    %e:ptr<function, u32, read_write> = var
+    %f:ptr<function, u32, read_write> = var
+    %10:ptr<uniform, u32, read> = access %x_6, 0u
+    %11:u32 = load %10
+    %12:u32 = add 77u, %11
+    %13:u32 = shiftr %12, 32u
+    store %a, %13
+    %14:ptr<uniform, u32, read> = access %x_6, 0u
+    %15:u32 = load %14
+    %16:u32 = add 3243u, %15
+    %17:u32 = shiftr %16, 33u
+    store %b, %17
+    %18:ptr<uniform, u32, read> = access %x_6, 0u
+    %19:u32 = load %18
+    %20:u32 = add 23u, %19
+    %21:u32 = shiftr %20, 345u
+    store %c, %21
+    %22:ptr<uniform, u32, read> = access %x_6, 0u
+    %23:u32 = load %22
+    %24:u32 = add 2395u, %23
+    %25:u32 = shiftl %24, 32u
+    store %d, %25
+    %26:ptr<uniform, u32, read> = access %x_6, 0u
+    %27:u32 = load %26
+    %28:u32 = add 290485u, %27
+    %29:u32 = shiftl %28, 33u
+    store %e, %29
+    %30:ptr<uniform, u32, read> = access %x_6, 0u
+    %31:u32 = load %30
+    %32:u32 = add 44321u, %31
+    %33:u32 = shiftl %32, 345u
+    store %f, %33
+    %34:u32 = load %a
+    %35:bool = neq %34, 1u
+    if %35 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        store %a, 1u
+        exit_if  # if_1
+      }
+    }
+    %36:u32 = load %b
+    %37:bool = neq %36, 0u
+    if %37 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        store %b, 0u
+        exit_if  # if_2
+      }
+    }
+    %38:u32 = load %c
+    %39:bool = neq %38, 1u
+    if %39 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        store %c, 1u
+        exit_if  # if_3
+      }
+    }
+    %40:u32 = load %d
+    %41:bool = neq %40, 0u
+    if %41 [t: %b6] {  # if_4
+      %b6 = block {  # true
+        store %d, 0u
+        exit_if  # if_4
+      }
+    }
+    %42:u32 = load %e
+    %43:bool = neq %42, 1u
+    if %43 [t: %b7] {  # if_5
+      %b7 = block {  # true
+        store %e, 1u
+        exit_if  # if_5
+      }
+    }
+    %44:u32 = load %f
+    %45:bool = neq %44, 0u
+    if %45 [t: %b8] {  # if_6
+      %b8 = block {  # true
+        store %f, 0u
+        exit_if  # if_6
+      }
+    }
+    %46:u32 = load %a
+    %47:bool = eq %46, 1u
+    %48:u32 = load %b
+    %49:bool = eq %48, 0u
+    %50:bool = and %47, %49
+    %51:u32 = load %c
+    %52:bool = eq %51, 1u
+    %53:bool = and %50, %52
+    %54:u32 = load %d
+    %55:bool = eq %54, 0u
+    %56:bool = and %53, %55
+    %57:u32 = load %e
+    %58:bool = eq %57, 1u
+    %59:bool = and %56, %58
+    %60:u32 = load %f
+    %61:bool = eq %60, 0u
+    %62:bool = and %59, %61
+    if %62 [t: %b9, f: %b10] {  # if_7
+      %b9 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_7
+      }
+      %b10 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %64:void = call %main_1
+    %65:vec4<f32> = load %x_GLF_color
+    %66:main_out = construct %65
+    ret %66
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8053fd5
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl.expected.ir.msl
@@ -0,0 +1,147 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:u32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, u32, read_write> = var
+    %b:ptr<function, u32, read_write> = var
+    %c:ptr<function, u32, read_write> = var
+    %d:ptr<function, u32, read_write> = var
+    %e:ptr<function, u32, read_write> = var
+    %f:ptr<function, u32, read_write> = var
+    %10:ptr<uniform, u32, read> = access %x_6, 0u
+    %x_41:u32 = load %10
+    %12:u32 = add 77u, %x_41
+    %13:u32 = shiftr %12, 32u
+    store %a, %13
+    %14:ptr<uniform, u32, read> = access %x_6, 0u
+    %x_45:u32 = load %14
+    %16:u32 = add 3243u, %x_45
+    %17:u32 = shiftr %16, 33u
+    store %b, %17
+    %18:ptr<uniform, u32, read> = access %x_6, 0u
+    %x_49:u32 = load %18
+    %20:u32 = add 23u, %x_49
+    %21:u32 = shiftr %20, 345u
+    store %c, %21
+    %22:ptr<uniform, u32, read> = access %x_6, 0u
+    %x_53:u32 = load %22
+    %24:u32 = add 2395u, %x_53
+    %25:u32 = shiftl %24, 32u
+    store %d, %25
+    %26:ptr<uniform, u32, read> = access %x_6, 0u
+    %x_57:u32 = load %26
+    %28:u32 = add 290485u, %x_57
+    %29:u32 = shiftl %28, 33u
+    store %e, %29
+    %30:ptr<uniform, u32, read> = access %x_6, 0u
+    %x_61:u32 = load %30
+    %32:u32 = add 44321u, %x_61
+    %33:u32 = shiftl %32, 345u
+    store %f, %33
+    %x_64:u32 = load %a
+    %35:bool = neq %x_64, 1u
+    if %35 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        store %a, 1u
+        exit_if  # if_1
+      }
+    }
+    %x_68:u32 = load %b
+    %37:bool = neq %x_68, 0u
+    if %37 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        store %b, 0u
+        exit_if  # if_2
+      }
+    }
+    %x_72:u32 = load %c
+    %39:bool = neq %x_72, 1u
+    if %39 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        store %c, 1u
+        exit_if  # if_3
+      }
+    }
+    %x_76:u32 = load %d
+    %41:bool = neq %x_76, 0u
+    if %41 [t: %b6] {  # if_4
+      %b6 = block {  # true
+        store %d, 0u
+        exit_if  # if_4
+      }
+    }
+    %x_80:u32 = load %e
+    %43:bool = neq %x_80, 1u
+    if %43 [t: %b7] {  # if_5
+      %b7 = block {  # true
+        store %e, 1u
+        exit_if  # if_5
+      }
+    }
+    %x_84:u32 = load %f
+    %45:bool = neq %x_84, 0u
+    if %45 [t: %b8] {  # if_6
+      %b8 = block {  # true
+        store %f, 0u
+        exit_if  # if_6
+      }
+    }
+    %x_88:u32 = load %a
+    %x_90:u32 = load %b
+    %x_93:u32 = load %c
+    %x_96:u32 = load %d
+    %x_99:u32 = load %e
+    %x_102:u32 = load %f
+    %52:bool = eq %x_88, 1u
+    %53:bool = eq %x_90, 0u
+    %54:bool = and %52, %53
+    %55:bool = eq %x_93, 1u
+    %56:bool = and %54, %55
+    %57:bool = eq %x_96, 0u
+    %58:bool = and %56, %57
+    %59:bool = eq %x_99, 1u
+    %60:bool = and %58, %59
+    %61:bool = eq %x_102, 0u
+    %62:bool = and %60, %61
+    if %62 [t: %b9, f: %b10] {  # if_7
+      %b9 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_7
+      }
+      %b10 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %64:void = call %main_1
+    %65:vec4<f32> = load %x_GLF_color
+    %66:main_out = construct %65
+    ret %66
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..62e70ad
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,70 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    store %f, 1.0f
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %5:f32 = load %f
+        %6:ptr<uniform, f32, read> = access %x_6, 0u
+        %7:f32 = load %6
+        %8:f32 = add %5, %7
+        store %f, %8
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_34:f32 = load %f
+        %10:ptr<uniform, f32, read> = access %x_6, 0u
+        %x_36:f32 = load %10
+        %12:f32 = add 9.0f, %x_36
+        %13:f32 = clamp %x_34, 8.0f, %12
+        %14:bool = gt 10.0f, %13
+        %15:bool = eq %14, false
+        break_if %15 %b3
+      }
+    }
+    %16:f32 = load %f
+    %17:bool = eq %16, 10.0f
+    if %17 [t: %b5, f: %b6] {  # if_1
+      %b5 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b6 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9b23937
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,70 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    store %f, 1.0f
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %5:ptr<uniform, f32, read> = access %x_6, 0u
+        %x_31:f32 = load %5
+        %x_32:f32 = load %f
+        %8:f32 = add %x_32, %x_31
+        store %f, %8
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_34:f32 = load %f
+        %10:ptr<uniform, f32, read> = access %x_6, 0u
+        %x_36:f32 = load %10
+        %12:f32 = add 9.0f, %x_36
+        %13:f32 = clamp %x_34, 8.0f, %12
+        %14:bool = gt 10.0f, %13
+        %15:bool = eq %14, false
+        break_if %15 %b3
+      }
+    }
+    %x_40:f32 = load %f
+    %17:bool = eq %x_40, 10.0f
+    if %17 [t: %b5, f: %b6] {  # if_1
+      %b5 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b6 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2d4b8b6
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, i32, read> = access %x_5, 0u
+    %5:i32 = load %4
+    %6:i32 = sub 3i, %5
+    %7:i32 = add 1i, %6
+    %8:bool = eq %7, 3i
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %10:void = call %main_1
+    %11:vec4<f32> = load %x_GLF_color
+    %12:main_out = construct %11
+    ret %12
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e854c43
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, i32, read> = access %x_5, 0u
+    %x_24:i32 = load %4
+    %6:i32 = sub 3i, %x_24
+    %7:i32 = add 1i, %6
+    %8:bool = eq %7, 3i
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %10:void = call %main_1
+    %11:vec4<f32> = load %x_GLF_color
+    %12:main_out = construct %11
+    ret %12
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2114f17
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,73 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  twoandthree:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, vec2<f32>, read_write> = var
+    %b:ptr<function, vec2<f32>, read_write> = var
+    %x_46:ptr<function, bool, read_write> = var
+    %x_47:ptr<function, bool, read_write> = var
+    %8:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %9:vec2<f32> = load %8
+    store %a, %9
+    %10:f32 = load_vector_element %a, 0u
+    %11:vec2<f32> = load %a
+    %12:vec2<f32> = clamp %11, vec2<f32>(1.0f), vec2<f32>(1.0f)
+    %13:f32 = access %12, 1u
+    %14:vec2<f32> = construct %10, %13
+    store %b, %14
+    %15:f32 = load_vector_element %b, 0u
+    %x_41:bool = eq %15, 2.0f
+    store %x_47, %x_41
+    if %x_41 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %17:f32 = load_vector_element %b, 1u
+        %18:bool = eq %17, 1.0f
+        store %x_46, %18
+        %19:bool = load %x_46
+        store %x_47, %19
+        exit_if  # if_1
+      }
+    }
+    %20:bool = load %x_47
+    if %20 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %22:void = call %main_1
+    %23:vec4<f32> = load %x_GLF_color
+    %24:main_out = construct %23
+    ret %24
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a6f363d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,73 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  twoandthree:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, vec2<f32>, read_write> = var
+    %b:ptr<function, vec2<f32>, read_write> = var
+    %x_46:ptr<function, bool, read_write> = var
+    %x_47_phi:ptr<function, bool, read_write> = var
+    %8:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_32:vec2<f32> = load %8
+    store %a, %x_32
+    %x_34:f32 = load_vector_element %a, 0u
+    %x_35:vec2<f32> = load %a
+    %12:vec2<f32> = clamp %x_35, vec2<f32>(1.0f), vec2<f32>(1.0f)
+    %13:f32 = access %12, 1u
+    %14:vec2<f32> = construct %x_34, %13
+    store %b, %14
+    %x_40:f32 = load_vector_element %b, 0u
+    %x_41:bool = eq %x_40, 2.0f
+    store %x_47_phi, %x_41
+    if %x_41 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_45:f32 = load_vector_element %b, 1u
+        %18:bool = eq %x_45, 1.0f
+        store %x_46, %18
+        %19:bool = load %x_46
+        store %x_47_phi, %19
+        exit_if  # if_1
+      }
+    }
+    %x_47:bool = load %x_47_phi
+    if %x_47 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %22:void = call %main_1
+    %23:vec4<f32> = load %x_GLF_color
+    %24:main_out = construct %23
+    ret %24
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..910311f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  three:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, f32, read> = access %x_5, 0u
+    %5:f32 = load %4
+    %6:vec4<f32> = construct 1.0f, 2.0f, %5, 4.0f
+    %7:f32 = dot %6, vec4<f32>(0.0f, 1.0f, 0.0f, 0.0f)
+    %8:bool = eq %7, 2.0f
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %10:void = call %main_1
+    %11:vec4<f32> = load %x_GLF_color
+    %12:main_out = construct %11
+    ret %12
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4d19d92
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  three:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, f32, read> = access %x_5, 0u
+    %x_25:f32 = load %4
+    %6:vec4<f32> = construct 1.0f, 2.0f, %x_25, 4.0f
+    %7:f32 = dot %6, vec4<f32>(0.0f, 1.0f, 0.0f, 0.0f)
+    %8:bool = eq %7, 2.0f
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %10:void = call %main_1
+    %11:vec4<f32> = load %x_GLF_color
+    %12:main_out = construct %11
+    ret %12
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..400a700
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  three:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, f32, read> = access %x_5, 0u
+    %5:f32 = load %4
+    %6:vec2<f32> = construct 2.0f, %5
+    %7:f32 = dot %6, vec2<f32>(0.0f, 2.0f)
+    %8:bool = eq %7, 6.0f
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %10:void = call %main_1
+    %11:vec4<f32> = load %x_GLF_color
+    %12:main_out = construct %11
+    ret %12
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4bd782a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  three:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, f32, read> = access %x_5, 0u
+    %x_26:f32 = load %4
+    %6:vec2<f32> = construct 2.0f, %x_26
+    %7:f32 = dot %6, vec2<f32>(0.0f, 2.0f)
+    %8:bool = eq %7, 6.0f
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %10:void = call %main_1
+    %11:vec4<f32> = load %x_GLF_color
+    %12:main_out = construct %11
+    ret %12
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..621f52b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,57 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %5:ptr<uniform, f32, read> = access %x_6, 0u
+    %6:f32 = load %5
+    %7:f32 = mul 2.0f, %6
+    %8:f32 = div 4.0f, %7
+    store %f, %8
+    %9:f32 = load %f
+    %10:bool = gt %9, 1.89999997615814208984f
+    %11:f32 = load %f
+    %12:bool = lt %11, 2.09999990463256835938f
+    %13:bool = and %10, %12
+    if %13 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %15:void = call %main_1
+    %16:vec4<f32> = load %x_GLF_color
+    %17:main_out = construct %16
+    ret %17
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e793225
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,57 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %5:ptr<uniform, f32, read> = access %x_6, 0u
+    %x_28:f32 = load %5
+    %7:f32 = mul 2.0f, %x_28
+    %8:f32 = div 4.0f, %7
+    store %f, %8
+    %x_31:f32 = load %f
+    %x_33:f32 = load %f
+    %11:bool = gt %x_31, 1.89999997615814208984f
+    %12:bool = lt %x_33, 2.09999990463256835938f
+    %13:bool = and %11, %12
+    if %13 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %15:void = call %main_1
+    %16:vec4<f32> = load %x_GLF_color
+    %17:main_out = construct %16
+    ret %17
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..5574d42
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,57 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  four:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %5:ptr<uniform, f32, read> = access %x_6, 0u
+    %6:f32 = load %5
+    %7:f32 = div 1.0f, %6
+    %8:f32 = div 2.0f, %7
+    store %a, %8
+    %9:f32 = load %a
+    %10:bool = gt %9, 7.90000009536743164062f
+    %11:f32 = load %a
+    %12:bool = lt %11, 8.1000003814697265625f
+    %13:bool = and %10, %12
+    if %13 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %15:void = call %main_1
+    %16:vec4<f32> = load %x_GLF_color
+    %17:main_out = construct %16
+    ret %17
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..19f864c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,57 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  four:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %5:ptr<uniform, f32, read> = access %x_6, 0u
+    %x_27:f32 = load %5
+    %7:f32 = div 1.0f, %x_27
+    %8:f32 = div 2.0f, %7
+    store %a, %8
+    %x_30:f32 = load %a
+    %x_32:f32 = load %a
+    %11:bool = gt %x_30, 7.90000009536743164062f
+    %12:bool = lt %x_32, 8.1000003814697265625f
+    %13:bool = and %11, %12
+    if %13 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %15:void = call %main_1
+    %16:vec4<f32> = load %x_GLF_color
+    %17:main_out = construct %16
+    ret %17
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2e41d63
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,57 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %5:ptr<uniform, f32, read> = access %x_6, 0u
+    %6:f32 = load %5
+    %7:f32 = div 2.0f, %6
+    %8:f32 = mul 4.0f, %7
+    store %f, %8
+    %9:f32 = load %f
+    %10:bool = gt %9, 7.90000009536743164062f
+    %11:f32 = load %f
+    %12:bool = lt %11, 8.1000003814697265625f
+    %13:bool = and %10, %12
+    if %13 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %15:void = call %main_1
+    %16:vec4<f32> = load %x_GLF_color
+    %17:main_out = construct %16
+    ret %17
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b6a6d6c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,57 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %5:ptr<uniform, f32, read> = access %x_6, 0u
+    %x_28:f32 = load %5
+    %7:f32 = div 2.0f, %x_28
+    %8:f32 = mul 4.0f, %7
+    store %f, %8
+    %x_31:f32 = load %f
+    %x_33:f32 = load %f
+    %11:bool = gt %x_31, 7.90000009536743164062f
+    %12:bool = lt %x_33, 8.1000003814697265625f
+    %13:bool = and %11, %12
+    if %13 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %15:void = call %main_1
+    %16:vec4<f32> = load %x_GLF_color
+    %17:main_out = construct %16
+    ret %17
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..260689d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,76 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  five:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_6, 0u
+    %6:i32 = load %5
+    store %i, %6
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %7:i32 = load %i
+        %8:bool = gt %7, 0i
+        if %8 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %9:i32 = load %i
+        %10:i32 = sub %9, 1i
+        store %i, %10
+        %11:i32 = load %i
+        %12:i32 = sub %11, 1i
+        store %i, %12
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %13:i32 = load %i
+    %14:bool = eq %13, -1i
+    if %14 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %16:void = call %main_1
+    %17:vec4<f32> = load %x_GLF_color
+    %18:main_out = construct %17
+    ret %18
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..43ad1be
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,76 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  five:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_6, 0u
+    %x_26:i32 = load %5
+    store %i, %x_26
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_31:i32 = load %i
+        %8:bool = gt %x_31, 0i
+        if %8 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_34:i32 = load %i
+        %10:i32 = sub %x_34, 1i
+        store %i, %10
+        %x_36:i32 = load %i
+        %12:i32 = sub %x_36, 1i
+        store %i, %12
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %x_38:i32 = load %i
+    %14:bool = eq %x_38, -1i
+    if %14 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %16:void = call %main_1
+    %17:vec4<f32> = load %x_GLF_color
+    %18:main_out = construct %17
+    ret %18
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..dc94ae1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,60 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec3<f32>, read_write> = var
+    %d:ptr<function, f32, read_write> = var
+    %6:ptr<uniform, f32, read> = access %x_6, 0u
+    %7:f32 = load %6
+    %8:vec3<f32> = construct %7
+    %9:vec3<f32> = mix vec3<f32>(5.0f, 8.0f, -12.19999980926513671875f), vec3<f32>(1.0f, 4.90000009536743164062f, -2.09999990463256835938f), %8
+    store %v, %9
+    %10:vec3<f32> = load %v
+    %11:f32 = distance %10, vec3<f32>(1.0f, 4.90000009536743164062f, -2.09999990463256835938f)
+    store %d, %11
+    %12:f32 = load %d
+    %13:bool = lt %12, 0.10000000149011611938f
+    if %13 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %14:f32 = load_vector_element %v, 0u
+        %15:vec4<f32> = construct %14, 0.0f, 0.0f, 1.0f
+        store %x_GLF_color, %15
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %17:void = call %main_1
+    %18:vec4<f32> = load %x_GLF_color
+    %19:main_out = construct %18
+    ret %19
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d6f6a24
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,60 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec3<f32>, read_write> = var
+    %d:ptr<function, f32, read_write> = var
+    %6:ptr<uniform, f32, read> = access %x_6, 0u
+    %x_36:f32 = load %6
+    %8:vec3<f32> = construct %x_36, %x_36, %x_36
+    %9:vec3<f32> = mix vec3<f32>(5.0f, 8.0f, -12.19999980926513671875f), vec3<f32>(1.0f, 4.90000009536743164062f, -2.09999990463256835938f), %8
+    store %v, %9
+    %x_39:vec3<f32> = load %v
+    %11:f32 = distance %x_39, vec3<f32>(1.0f, 4.90000009536743164062f, -2.09999990463256835938f)
+    store %d, %11
+    %x_41:f32 = load %d
+    %13:bool = lt %x_41, 0.10000000149011611938f
+    if %13 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %x_47:f32 = load_vector_element %v, 0u
+        %15:vec4<f32> = construct %x_47, 0.0f, 0.0f, 1.0f
+        store %x_GLF_color, %15
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %17:void = call %main_1
+    %18:vec4<f32> = load %x_GLF_color
+    %19:main_out = construct %18
+    ret %19
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..d3e8ffe
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  four:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, i32, read> = access %x_5, 0u
+    %5:i32 = load %4
+    %6:i32 = div %5, 2i
+    %7:i32 = negation %6
+    %8:bool = eq %7, -2i
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %10:void = call %main_1
+    %11:vec4<f32> = load %x_GLF_color
+    %12:main_out = construct %11
+    ret %12
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b7eac82
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  four:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, i32, read> = access %x_5, 0u
+    %x_6:i32 = load %4
+    %6:i32 = div %x_6, 2i
+    %7:i32 = negation %6
+    %8:bool = eq %7, -2i
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %10:void = call %main_1
+    %11:vec4<f32> = load %x_GLF_color
+    %12:main_out = construct %11
+    ret %12
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..6f91c16
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_6, 0u
+    %6:i32 = load %5
+    %7:i32 = sub 5i, %6
+    %8:i32 = negation %7
+    store %x, %8
+    %9:i32 = load %x
+    %10:bool = eq %9, -4i
+    if %10 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %12:void = call %main_1
+    %13:vec4<f32> = load %x_GLF_color
+    %14:main_out = construct %13
+    ret %14
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3264457
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,54 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_6, 0u
+    %x_26:i32 = load %5
+    %7:i32 = sub 5i, %x_26
+    %8:i32 = negation %7
+    store %x, %8
+    %x_29:i32 = load %x
+    %10:bool = eq %x_29, -4i
+    if %10 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %12:void = call %main_1
+    %13:vec4<f32> = load %x_GLF_color
+    %14:main_out = construct %13
+    ret %14
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..42697ad
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+    %5:vec2<f32> = load %4
+    %6:vec2<f32> = mix %5, vec2<f32>(1.0f), vec2<f32>(0.0f)
+    %7:vec2<bool> = eq %6, vec2<f32>(0.0f, 1.0f)
+    %8:bool = all %7
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %10:void = call %main_1
+    %11:vec4<f32> = load %x_GLF_color
+    %12:main_out = construct %11
+    ret %12
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9d62bb2
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+    %x_27:vec2<f32> = load %4
+    %6:vec2<f32> = mix %x_27, vec2<f32>(1.0f), vec2<f32>(0.0f)
+    %7:vec2<bool> = eq %6, vec2<f32>(0.0f, 1.0f)
+    %8:bool = all %7
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %10:void = call %main_1
+    %11:vec4<f32> = load %x_GLF_color
+    %12:main_out = construct %11
+    ret %12
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..a8eb2fa
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+    %5:vec2<f32> = load %4
+    %6:vec2<f32> = select %5, vec2<f32>(1.0f), vec2<bool>(false)
+    %7:f32 = access %6, 0u
+    %8:bool = eq %7, 0.0f
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %10:void = call %main_1
+    %11:vec4<f32> = load %x_GLF_color
+    %12:main_out = construct %11
+    ret %12
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..38c1cab
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+    %x_29:vec2<f32> = load %4
+    %6:vec2<f32> = select %x_29, vec2<f32>(1.0f), vec2<bool>(false)
+    %7:f32 = access %6, 0u
+    %8:bool = eq %7, 0.0f
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %10:void = call %main_1
+    %11:vec4<f32> = load %x_GLF_color
+    %12:main_out = construct %11
+    ret %12
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..719a012
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,60 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  threeandfour:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    store %v, vec4<f32>(2.0f, 3.0f, 4.0f, 5.0f)
+    %5:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %6:f32 = load_vector_element %5, 1u
+    %7:vec2<f32> = construct 1.0f, %6
+    %8:vec2<f32> = select vec2<f32>(2.0f, 6.0f), %7, vec2<bool>(true, false)
+    %9:vec2<f32> = swizzle %8, xy
+    %10:vec4<f32> = load %v
+    %11:vec2<f32> = swizzle %10, zw
+    %12:vec4<f32> = construct %9, %11
+    store %v, %12
+    %13:vec4<f32> = load %v
+    %14:vec4<bool> = eq %13, vec4<f32>(1.0f, 6.0f, 4.0f, 5.0f)
+    %15:bool = all %14
+    if %15 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %17:void = call %main_1
+    %18:vec4<f32> = load %x_GLF_color
+    %19:main_out = construct %18
+    ret %19
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7545fce
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,62 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  threeandfour:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    store %v, vec4<f32>(2.0f, 3.0f, 4.0f, 5.0f)
+    %5:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_40:f32 = load_vector_element %5, 1u
+    %7:vec2<f32> = construct 1.0f, %x_40
+    %x_42:vec2<f32> = select vec2<f32>(2.0f, 6.0f), %7, vec2<bool>(true, false)
+    %x_43:vec4<f32> = load %v
+    %10:f32 = access %x_42, 0u
+    %11:f32 = access %x_42, 1u
+    %12:f32 = access %x_43, 2u
+    %13:f32 = access %x_43, 3u
+    %14:vec4<f32> = construct %10, %11, %12, %13
+    store %v, %14
+    %x_45:vec4<f32> = load %v
+    %16:vec4<bool> = eq %x_45, vec4<f32>(1.0f, 6.0f, 4.0f, 5.0f)
+    %17:bool = all %16
+    if %17 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..d52d40d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,62 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  zeroOne:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec2<f32>, read_write> = var
+    %d:ptr<function, f32, read_write> = var
+    %6:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %7:vec2<f32> = load %6
+    %8:vec2<f32> = mix vec2<f32>(2.0f, 3.0f), vec2<f32>(4.0f, 5.0f), %7
+    store %v, %8
+    %9:vec2<f32> = load %v
+    %10:f32 = distance %9, vec2<f32>(2.0f, 5.0f)
+    store %d, %10
+    %11:f32 = load %d
+    %12:bool = lt %11, 0.10000000149011611938f
+    if %12 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %13:f32 = load_vector_element %v, 0u
+        %14:f32 = sub %13, 1.0f
+        %15:f32 = load_vector_element %v, 1u
+        %16:f32 = sub %15, 5.0f
+        %17:vec4<f32> = construct %14, %16, 0.0f, 1.0f
+        store %x_GLF_color, %17
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c996cb9
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,62 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  zeroOne:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec2<f32>, read_write> = var
+    %d:ptr<function, f32, read_write> = var
+    %6:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_37:vec2<f32> = load %6
+    %8:vec2<f32> = mix vec2<f32>(2.0f, 3.0f), vec2<f32>(4.0f, 5.0f), %x_37
+    store %v, %8
+    %x_39:vec2<f32> = load %v
+    %10:f32 = distance %x_39, vec2<f32>(2.0f, 5.0f)
+    store %d, %10
+    %x_41:f32 = load %d
+    %12:bool = lt %x_41, 0.10000000149011611938f
+    if %12 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %x_47:f32 = load_vector_element %v, 0u
+        %x_50:f32 = load_vector_element %v, 1u
+        %15:f32 = sub %x_47, 1.0f
+        %16:f32 = sub %x_50, 5.0f
+        %17:vec4<f32> = construct %15, %16, 0.0f, 1.0f
+        store %x_GLF_color, %17
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..347342e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,97 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %a:ptr<function, array<i32, 2>, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %7:i32 = load %6
+    store %i, %7
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %8:i32 = load %i
+        %9:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %10:i32 = load %9
+        %11:bool = lt %8, %10
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %12:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %13:i32 = load %12
+        %14:i32 = load %i
+        %15:vec2<i32> = construct %14
+        %16:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %17:i32 = load %16
+        %18:vec2<i32> = construct 3i, %17
+        %19:vec2<i32> = mod %15, %18
+        %20:i32 = access %19, 1u
+        %21:array<i32, 2> = construct %13, %20
+        store %a, %21
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %22:i32 = load %i
+        %23:i32 = add %22, 1i
+        store %i, %23
+        next_iteration %b3
+      }
+    }
+    %24:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %25:i32 = load %24
+    %26:ptr<function, i32, read_write> = access %a, %25
+    %27:i32 = load %26
+    %28:f32 = convert %27
+    %29:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %30:i32 = load %29
+    %31:f32 = convert %30
+    %32:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %33:i32 = load %32
+    %34:f32 = convert %33
+    %35:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %36:i32 = load %35
+    %37:ptr<function, i32, read_write> = access %a, %36
+    %38:i32 = load %37
+    %39:f32 = convert %38
+    %40:vec4<f32> = construct %28, %31, %34, %39
+    store %x_GLF_color, %40
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %42:void = call %main_1
+    %43:vec4<f32> = load %x_GLF_color
+    %44:main_out = construct %43
+    ret %44
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..baf6744
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,97 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %a:ptr<function, array<i32, 2>, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_32:i32 = load %6
+    store %i, %x_32
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_37:i32 = load %i
+        %9:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_39:i32 = load %9
+        %11:bool = lt %x_37, %x_39
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %12:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_43:i32 = load %12
+        %x_44:i32 = load %i
+        %15:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_46:i32 = load %15
+        %17:vec2<i32> = construct %x_44, %x_44
+        %18:vec2<i32> = construct 3i, %x_46
+        %19:vec2<i32> = mod %17, %18
+        %20:i32 = access %19, 1u
+        %21:array<i32, 2> = construct %x_43, %20
+        store %a, %21
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_52:i32 = load %i
+        %23:i32 = add %x_52, 1i
+        store %i, %23
+        next_iteration %b3
+      }
+    }
+    %24:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_55:i32 = load %24
+    %26:ptr<function, i32, read_write> = access %a, %x_55
+    %x_57:i32 = load %26
+    %28:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_60:i32 = load %28
+    %30:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_63:i32 = load %30
+    %32:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_66:i32 = load %32
+    %34:ptr<function, i32, read_write> = access %a, %x_66
+    %x_68:i32 = load %34
+    %36:f32 = convert %x_57
+    %37:f32 = convert %x_60
+    %38:f32 = convert %x_63
+    %39:f32 = convert %x_68
+    %40:vec4<f32> = construct %36, %37, %38, %39
+    store %x_GLF_color, %40
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %42:void = call %main_1
+    %43:vec4<f32> = load %x_GLF_color
+    %44:main_out = construct %43
+    ret %44
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..3474e2a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,127 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %arr:ptr<function, array<f32, 3>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %7:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %8:f32 = load %7
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %10:f32 = load %9
+    %11:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %12:f32 = load %11
+    %13:array<f32, 3> = construct %8, %10, %12
+    store %arr, %13
+    store %i, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %14:i32 = load %i
+        %15:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %16:i32 = load %15
+        %17:i32 = min %16, 3i
+        %18:bool = lt %14, %17
+        if %18 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %19:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %x_53:i32 = load %19
+        %21:ptr<function, f32, read_write> = access %arr, %x_53
+        %22:ptr<function, f32, read_write> = access %arr, %x_53
+        %23:f32 = load %22
+        %24:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %25:f32 = load %24
+        %26:f32 = add %23, %25
+        store %21, %26
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %27:i32 = load %i
+        %28:i32 = add %27, 1i
+        store %i, %28
+        next_iteration %b3
+      }
+    }
+    %29:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+    %30:i32 = load %29
+    %31:ptr<function, f32, read_write> = access %arr, %30
+    %32:f32 = load %31
+    %33:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+    %34:f32 = load %33
+    %35:bool = eq %32, %34
+    if %35 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %36:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %37:i32 = load %36
+        %38:f32 = convert %37
+        %39:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %40:i32 = load %39
+        %41:f32 = convert %40
+        %42:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %43:i32 = load %42
+        %44:f32 = convert %43
+        %45:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %46:i32 = load %45
+        %47:f32 = convert %46
+        %48:vec4<f32> = construct %38, %41, %44, %47
+        store %x_GLF_color, %48
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %49:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %50:i32 = load %49
+        %51:f32 = convert %50
+        %52:vec4<f32> = construct %51
+        store %x_GLF_color, %52
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %54:void = call %main_1
+    %55:vec4<f32> = load %x_GLF_color
+    %56:main_out = construct %55
+    ret %56
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9f6d8c7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,127 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %arr:ptr<function, array<f32, 3>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %7:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_36:f32 = load %7
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_38:f32 = load %9
+    %11:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %x_40:f32 = load %11
+    %13:array<f32, 3> = construct %x_36, %x_38, %x_40
+    store %arr, %13
+    store %i, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_46:i32 = load %i
+        %15:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %x_48:i32 = load %15
+        %17:i32 = min %x_48, 3i
+        %18:bool = lt %x_46, %17
+        if %18 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %19:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %x_53:i32 = load %19
+        %21:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_55:f32 = load %21
+        %23:ptr<function, f32, read_write> = access %arr, %x_53
+        %x_57:f32 = load %23
+        %25:ptr<function, f32, read_write> = access %arr, %x_53
+        %26:f32 = add %x_57, %x_55
+        store %25, %26
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_60:i32 = load %i
+        %28:i32 = add %x_60, 1i
+        store %i, %28
+        next_iteration %b3
+      }
+    }
+    %29:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+    %x_63:i32 = load %29
+    %31:ptr<function, f32, read_write> = access %arr, %x_63
+    %x_65:f32 = load %31
+    %33:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+    %x_67:f32 = load %33
+    %35:bool = eq %x_65, %x_67
+    if %35 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %36:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_73:i32 = load %36
+        %38:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_76:i32 = load %38
+        %40:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_79:i32 = load %40
+        %42:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_82:i32 = load %42
+        %44:f32 = convert %x_73
+        %45:f32 = convert %x_76
+        %46:f32 = convert %x_79
+        %47:f32 = convert %x_82
+        %48:vec4<f32> = construct %44, %45, %46, %47
+        store %x_GLF_color, %48
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %49:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_86:i32 = load %49
+        %x_87:f32 = convert %x_86
+        %52:vec4<f32> = construct %x_87, %x_87, %x_87, %x_87
+        store %x_GLF_color, %52
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %54:void = call %main_1
+    %55:vec4<f32> = load %x_GLF_color
+    %56:main_out = construct %55
+    ret %56
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..18ec30f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,114 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %7:i32 = load %6
+    store %a, %7
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %9:i32 = load %8
+    store %i, %9
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %10:i32 = load %i
+        %11:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %12:i32 = load %11
+        %13:bool = lt %10, %12
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_38:i32 = load %i
+        switch %x_38 [c: (0i -1i, %b7), c: (default, %b8)] {  # switch_1
+          %b7 = block {  # case
+            %15:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %16:i32 = load %15
+            store %a, %16
+            exit_switch  # switch_1
+          }
+          %b8 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %17:i32 = load %i
+        %18:i32 = add %17, 1i
+        store %i, %18
+        next_iteration %b3
+      }
+    }
+    %19:i32 = load %a
+    %20:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %21:i32 = load %20
+    %22:bool = eq %19, %21
+    if %22 [t: %b9, f: %b10] {  # if_2
+      %b9 = block {  # true
+        %23:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %24:i32 = load %23
+        %25:f32 = convert %24
+        %26:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %27:i32 = load %26
+        %28:f32 = convert %27
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %30:i32 = load %29
+        %31:f32 = convert %30
+        %32:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %33:i32 = load %32
+        %34:f32 = convert %33
+        %35:vec4<f32> = construct %25, %28, %31, %34
+        store %x_GLF_color, %35
+        exit_if  # if_2
+      }
+      %b10 = block {  # false
+        %36:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %37:i32 = load %36
+        %38:f32 = convert %37
+        %39:vec4<f32> = construct %38
+        store %x_GLF_color, %39
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %41:void = call %main_1
+    %42:vec4<f32> = load %x_GLF_color
+    %43:main_out = construct %42
+    ret %43
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9c18d5c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,114 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_26:i32 = load %6
+    store %a, %x_26
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_28:i32 = load %8
+    store %i, %x_28
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_33:i32 = load %i
+        %11:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_35:i32 = load %11
+        %13:bool = lt %x_33, %x_35
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_38:i32 = load %i
+        switch %x_38 [c: (0i -1i, %b7), c: (default, %b8)] {  # switch_1
+          %b7 = block {  # case
+            %15:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %x_42:i32 = load %15
+            store %a, %x_42
+            exit_switch  # switch_1
+          }
+          %b8 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_43:i32 = load %i
+        %18:i32 = add %x_43, 1i
+        store %i, %18
+        next_iteration %b3
+      }
+    }
+    %x_45:i32 = load %a
+    %20:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_47:i32 = load %20
+    %22:bool = eq %x_45, %x_47
+    if %22 [t: %b9, f: %b10] {  # if_2
+      %b9 = block {  # true
+        %23:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_53:i32 = load %23
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_56:i32 = load %25
+        %27:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_59:i32 = load %27
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_62:i32 = load %29
+        %31:f32 = convert %x_53
+        %32:f32 = convert %x_56
+        %33:f32 = convert %x_59
+        %34:f32 = convert %x_62
+        %35:vec4<f32> = construct %31, %32, %33, %34
+        store %x_GLF_color, %35
+        exit_if  # if_2
+      }
+      %b10 = block {  # false
+        %36:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_66:i32 = load %36
+        %x_67:f32 = convert %x_66
+        %39:vec4<f32> = construct %x_67, %x_67, %x_67, %x_67
+        store %x_GLF_color, %39
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %41:void = call %main_1
+    %42:vec4<f32> = load %x_GLF_color
+    %43:main_out = construct %42
+    ret %43
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b894ac0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,86 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f0:ptr<function, f32, read_write> = var
+    %f1:ptr<function, f32, read_write> = var
+    store %f0, 1.0f
+    %8:f32 = load %f0
+    %9:f32 = fract %8
+    store %f1, %9
+    %10:f32 = load_vector_element %gl_FragCoord, 0u
+    %11:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %12:f32 = load %11
+    %13:bool = gt %10, %12
+    if %13 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %14:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %15:i32 = load %14
+        %16:f32 = convert %15
+        %17:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %18:i32 = load %17
+        %19:f32 = convert %18
+        %20:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %21:i32 = load %20
+        %22:f32 = convert %21
+        %23:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %24:i32 = load %23
+        %25:f32 = convert %24
+        %26:vec4<f32> = construct %16, %19, %22, %25
+        store %x_GLF_color, %26
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %27:f32 = load %f1
+        %28:vec4<f32> = construct %27
+        store %x_GLF_color, %28
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b5 {
+  %b5 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %31:void = call %main_1
+    %32:vec4<f32> = load %x_GLF_color
+    %33:main_out = construct %32
+    ret %33
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..35b26df
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,86 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f0:ptr<function, f32, read_write> = var
+    %f1:ptr<function, f32, read_write> = var
+    store %f0, 1.0f
+    %x_35:f32 = load %f0
+    %9:f32 = fract %x_35
+    store %f1, %9
+    %x_38:f32 = load_vector_element %gl_FragCoord, 0u
+    %11:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_40:f32 = load %11
+    %13:bool = gt %x_38, %x_40
+    if %13 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %14:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_46:i32 = load %14
+        %16:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_49:i32 = load %16
+        %18:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_52:i32 = load %18
+        %20:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_55:i32 = load %20
+        %22:f32 = convert %x_46
+        %23:f32 = convert %x_49
+        %24:f32 = convert %x_52
+        %25:f32 = convert %x_55
+        %26:vec4<f32> = construct %22, %23, %24, %25
+        store %x_GLF_color, %26
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %x_58:f32 = load %f1
+        %28:vec4<f32> = construct %x_58, %x_58, %x_58, %x_58
+        store %x_GLF_color, %28
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b5 {
+  %b5 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %31:void = call %main_1
+    %32:vec4<f32> = load %x_GLF_color
+    %33:main_out = construct %32
+    ret %33
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..03001f0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,98 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v1:ptr<function, vec2<f32>, read_write> = var
+    %b:ptr<function, vec2<f32>, read_write> = var
+    %a:ptr<function, f32, read_write> = var
+    %x_51:ptr<function, bool, read_write> = var
+    %x_52:ptr<function, bool, read_write> = var
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %10:f32 = load %9
+    %11:vec2<f32> = construct %10
+    store %v1, %11
+    %12:vec2<f32> = load %v1
+    %13:vec2<f32> = fract %12
+    store %b, %13
+    %14:vec2<f32> = load %b
+    %15:vec2<f32> = smoothstep vec2<f32>(1.0f), vec2<f32>(1.0f), %14
+    %16:f32 = access %15, 0u
+    store %a, %16
+    %17:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %18:f32 = load %17
+    %19:f32 = load %a
+    %20:f32 = load %a
+    %21:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %22:f32 = load %21
+    %23:vec4<f32> = construct %18, %19, %20, %22
+    store %x_GLF_color, %23
+    %24:f32 = load_vector_element %b, 0u
+    %x_46:bool = lt %24, 1.0f
+    store %x_52, %x_46
+    if %x_46 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %26:f32 = load_vector_element %b, 1u
+        %27:bool = lt %26, 1.0f
+        store %x_51, %27
+        %28:bool = load %x_51
+        store %x_52, %28
+        exit_if  # if_1
+      }
+    }
+    %29:bool = load %x_52
+    if %29 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %30:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %31:f32 = load %30
+        %32:f32 = load_vector_element %b, 0u
+        %33:f32 = load_vector_element %b, 1u
+        %34:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %35:f32 = load %34
+        %36:vec4<f32> = construct %31, %32, %33, %35
+        store %x_GLF_color, %36
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %37:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %38:f32 = load %37
+        %39:vec4<f32> = construct %38
+        store %x_GLF_color, %39
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %41:void = call %main_1
+    %42:vec4<f32> = load %x_GLF_color
+    %43:main_out = construct %42
+    ret %43
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..17f3355
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,98 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v1:ptr<function, vec2<f32>, read_write> = var
+    %b:ptr<function, vec2<f32>, read_write> = var
+    %a:ptr<function, f32, read_write> = var
+    %x_51:ptr<function, bool, read_write> = var
+    %x_52_phi:ptr<function, bool, read_write> = var
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_30:f32 = load %9
+    %11:vec2<f32> = construct %x_30, %x_30
+    store %v1, %11
+    %x_32:vec2<f32> = load %v1
+    %13:vec2<f32> = fract %x_32
+    store %b, %13
+    %x_34:vec2<f32> = load %b
+    %15:vec2<f32> = smoothstep vec2<f32>(1.0f), vec2<f32>(1.0f), %x_34
+    %16:f32 = access %15, 0u
+    store %a, %16
+    %17:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_38:f32 = load %17
+    %x_39:f32 = load %a
+    %x_40:f32 = load %a
+    %21:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_42:f32 = load %21
+    %23:vec4<f32> = construct %x_38, %x_39, %x_40, %x_42
+    store %x_GLF_color, %23
+    %x_45:f32 = load_vector_element %b, 0u
+    %x_46:bool = lt %x_45, 1.0f
+    store %x_52_phi, %x_46
+    if %x_46 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_50:f32 = load_vector_element %b, 1u
+        %27:bool = lt %x_50, 1.0f
+        store %x_51, %27
+        %28:bool = load %x_51
+        store %x_52_phi, %28
+        exit_if  # if_1
+      }
+    }
+    %x_52:bool = load %x_52_phi
+    if %x_52 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %30:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_57:f32 = load %30
+        %x_59:f32 = load_vector_element %b, 0u
+        %x_61:f32 = load_vector_element %b, 1u
+        %34:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_63:f32 = load %34
+        %36:vec4<f32> = construct %x_57, %x_59, %x_61, %x_63
+        store %x_GLF_color, %36
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %37:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_66:f32 = load %37
+        %39:vec4<f32> = construct %x_66, %x_66, %x_66, %x_66
+        store %x_GLF_color, %39
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %41:void = call %main_1
+    %42:vec4<f32> = load %x_GLF_color
+    %43:main_out = construct %42
+    ret %43
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f025ca1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,88 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %6:f32 = load_vector_element %gl_FragCoord, 0u
+    %7:i32 = convert %6
+    store %a, %7
+    %8:i32 = load %a
+    %9:i32 = complement %8
+    %10:bool = lt %9, 0i
+    if %10 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %11:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %12:i32 = load %11
+        store %a, %12
+        exit_if  # if_1
+      }
+    }
+    %13:i32 = load %a
+    %14:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %15:i32 = load %14
+    %16:bool = eq %13, %15
+    if %16 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %17:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %18:i32 = load %17
+        %19:f32 = convert %18
+        %20:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %21:i32 = load %20
+        %22:f32 = convert %21
+        %23:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %24:i32 = load %23
+        %25:f32 = convert %24
+        %26:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %27:i32 = load %26
+        %28:f32 = convert %27
+        %29:vec4<f32> = construct %19, %22, %25, %28
+        store %x_GLF_color, %29
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %30:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %31:i32 = load %30
+        %32:f32 = convert %31
+        %33:vec4<f32> = construct %32
+        store %x_GLF_color, %33
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b6 {
+  %b6 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %36:void = call %main_1
+    %37:vec4<f32> = load %x_GLF_color
+    %38:main_out = construct %37
+    ret %38
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0735afa
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,88 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %x_28:f32 = load_vector_element %gl_FragCoord, 0u
+    %7:i32 = convert %x_28
+    store %a, %7
+    %x_30:i32 = load %a
+    %9:i32 = complement %x_30
+    %10:bool = lt %9, 0i
+    if %10 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %11:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_36:i32 = load %11
+        store %a, %x_36
+        exit_if  # if_1
+      }
+    }
+    %x_37:i32 = load %a
+    %14:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_39:i32 = load %14
+    %16:bool = eq %x_37, %x_39
+    if %16 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %17:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_45:i32 = load %17
+        %19:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_48:i32 = load %19
+        %21:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_51:i32 = load %21
+        %23:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_54:i32 = load %23
+        %25:f32 = convert %x_45
+        %26:f32 = convert %x_48
+        %27:f32 = convert %x_51
+        %28:f32 = convert %x_54
+        %29:vec4<f32> = construct %25, %26, %27, %28
+        store %x_GLF_color, %29
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %30:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_58:i32 = load %30
+        %x_59:f32 = convert %x_58
+        %33:vec4<f32> = construct %x_59, %x_59, %x_59, %x_59
+        store %x_GLF_color, %33
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b6 {
+  %b6 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %36:void = call %main_1
+    %37:vec4<f32> = load %x_GLF_color
+    %38:main_out = construct %37
+    ret %38
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..6f27f8e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,172 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %data:ptr<function, array<vec4<f32>, 2>, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %y:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %10:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %11:f32 = load %10
+    %12:vec4<f32> = construct %11
+    %13:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %14:f32 = load %13
+    %15:vec4<f32> = construct %14
+    %16:array<vec4<f32>, 2> = construct %12, %15
+    store %data, %16
+    %17:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %18:i32 = load %17
+    store %b, %18
+    %19:f32 = load_vector_element %gl_FragCoord, 1u
+    %20:i32 = convert %19
+    %21:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %22:i32 = load %21
+    %23:f32 = load_vector_element %gl_FragCoord, 1u
+    %24:i32 = convert %23
+    %25:i32 = or %22, %24
+    %26:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %27:i32 = load %26
+    %28:i32 = clamp %20, %25, %27
+    store %y, %28
+    %29:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %30:i32 = load %29
+    store %i, %30
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_82:ptr<function, bool, read_write> = var
+        %x_83:ptr<function, bool, read_write> = var
+        %33:i32 = load %i
+        %34:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %35:i32 = load %34
+        %36:bool = lt %33, %35
+        if %36 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %37:i32 = load %b
+        %38:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %39:i32 = load %38
+        %x_76:bool = gt %37, %39
+        store %x_83, %x_76
+        if %x_76 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %41:i32 = load %y
+            %42:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+            %43:i32 = load %42
+            %44:bool = gt %41, %43
+            store %x_82, %44
+            %45:bool = load %x_82
+            store %x_83, %45
+            exit_if  # if_2
+          }
+        }
+        %46:bool = load %x_83
+        if %46 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %47:i32 = load %b
+        %48:i32 = add %47, 1i
+        store %b, %48
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %49:i32 = load %i
+        %50:i32 = add %49, 1i
+        store %i, %50
+        next_iteration %b3
+      }
+    }
+    %51:i32 = load %b
+    %52:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+    %53:i32 = load %52
+    %54:bool = eq %51, %53
+    if %54 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        %55:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_97:i32 = load %55
+        %57:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_99:i32 = load %57
+        %59:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_101:i32 = load %59
+        %61:i32 = clamp %x_97, %x_99, %x_101
+        %62:ptr<function, vec4<f32>, read_write> = access %data, %61
+        %63:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %64:i32 = load %63
+        %65:f32 = convert %64
+        %66:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %67:i32 = load %66
+        %68:f32 = convert %67
+        %69:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %70:i32 = load %69
+        %71:f32 = convert %70
+        %72:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %73:i32 = load %72
+        %74:f32 = convert %73
+        %75:vec4<f32> = construct %65, %68, %71, %74
+        store %62, %75
+        exit_if  # if_4
+      }
+    }
+    %76:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %77:i32 = load %76
+    %78:ptr<function, vec4<f32>, read_write> = access %data, %77
+    %x_120:vec4<f32> = load %78
+    %80:f32 = access %x_120, 0u
+    %81:f32 = access %x_120, 1u
+    %82:f32 = access %x_120, 2u
+    %83:f32 = access %x_120, 3u
+    %84:vec4<f32> = construct %80, %81, %82, %83
+    store %x_GLF_color, %84
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b10 {
+  %b10 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %87:void = call %main_1
+    %88:vec4<f32> = load %x_GLF_color
+    %89:main_out = construct %88
+    ret %89
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3141b06
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,172 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %data:ptr<function, array<vec4<f32>, 2>, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %y:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %10:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_42:f32 = load %10
+    %12:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_45:f32 = load %12
+    %14:vec4<f32> = construct %x_42, %x_42, %x_42, %x_42
+    %15:vec4<f32> = construct %x_45, %x_45, %x_45, %x_45
+    %16:array<vec4<f32>, 2> = construct %14, %15
+    store %data, %16
+    %17:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %x_49:i32 = load %17
+    store %b, %x_49
+    %x_51:f32 = load_vector_element %gl_FragCoord, 1u
+    %20:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %x_54:i32 = load %20
+    %x_56:f32 = load_vector_element %gl_FragCoord, 1u
+    %23:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %x_60:i32 = load %23
+    %25:i32 = convert %x_51
+    %26:i32 = convert %x_56
+    %27:i32 = or %x_54, %26
+    %28:i32 = clamp %25, %27, %x_60
+    store %y, %28
+    %29:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %x_63:i32 = load %29
+    store %i, %x_63
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_82:ptr<function, bool, read_write> = var
+        %x_83_phi:ptr<function, bool, read_write> = var
+        %x_68:i32 = load %i
+        %34:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_70:i32 = load %34
+        %36:bool = lt %x_68, %x_70
+        if %36 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_73:i32 = load %b
+        %38:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_75:i32 = load %38
+        %x_76:bool = gt %x_73, %x_75
+        store %x_83_phi, %x_76
+        if %x_76 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %x_79:i32 = load %y
+            %42:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+            %x_81:i32 = load %42
+            %44:bool = gt %x_79, %x_81
+            store %x_82, %44
+            %45:bool = load %x_82
+            store %x_83_phi, %45
+            exit_if  # if_2
+          }
+        }
+        %x_83:bool = load %x_83_phi
+        if %x_83 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %x_86:i32 = load %b
+        %48:i32 = add %x_86, 1i
+        store %b, %48
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_88:i32 = load %i
+        %50:i32 = add %x_88, 1i
+        store %i, %50
+        next_iteration %b3
+      }
+    }
+    %x_90:i32 = load %b
+    %52:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+    %x_92:i32 = load %52
+    %54:bool = eq %x_90, %x_92
+    if %54 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        %55:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_97:i32 = load %55
+        %57:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_99:i32 = load %57
+        %59:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_101:i32 = load %59
+        %61:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_104:i32 = load %61
+        %63:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_107:i32 = load %63
+        %65:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_110:i32 = load %65
+        %67:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_113:i32 = load %67
+        %69:i32 = clamp %x_97, %x_99, %x_101
+        %70:ptr<function, vec4<f32>, read_write> = access %data, %69
+        %71:f32 = convert %x_104
+        %72:f32 = convert %x_107
+        %73:f32 = convert %x_110
+        %74:f32 = convert %x_113
+        %75:vec4<f32> = construct %71, %72, %73, %74
+        store %70, %75
+        exit_if  # if_4
+      }
+    }
+    %76:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %x_118:i32 = load %76
+    %78:ptr<function, vec4<f32>, read_write> = access %data, %x_118
+    %x_120:vec4<f32> = load %78
+    %80:f32 = access %x_120, 0u
+    %81:f32 = access %x_120, 1u
+    %82:f32 = access %x_120, 2u
+    %83:f32 = access %x_120, 3u
+    %84:vec4<f32> = construct %80, %81, %82, %83
+    store %x_GLF_color, %84
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b10 {
+  %b10 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %87:void = call %main_1
+    %88:vec4<f32> = load %x_GLF_color
+    %89:main_out = construct %88
+    ret %89
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..a38aaab
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,135 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %icoord:ptr<function, vec2<i32>, read_write> = var
+    %x_40:ptr<function, f32, read_write> = var
+    %icoord_1:ptr<function, vec2<i32>, read_write> = var
+    %9:f32 = load_vector_element %gl_FragCoord, 0u
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %11:f32 = load %10
+    %12:f32 = mul %9, %11
+    %13:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %14:f32 = load %13
+    %15:bool = gt %12, %14
+    if %15 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %16:vec4<f32> = load %gl_FragCoord
+        %17:vec2<f32> = swizzle %16, xy
+        %18:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %19:f32 = load %18
+        %20:vec2<f32> = mul %17, %19
+        %21:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %22:f32 = load %21
+        %23:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %24:f32 = load %23
+        %25:vec2<f32> = construct %22, %24
+        %26:vec2<f32> = sub %20, %25
+        %27:vec2<i32> = convert %26
+        store %icoord, %27
+        %28:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %x_65:f32 = load %28
+        %30:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %x_67:f32 = load %30
+        %32:i32 = load_vector_element %icoord, 0u
+        %33:i32 = load_vector_element %icoord, 1u
+        %34:i32 = mul %32, %33
+        %35:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %36:i32 = load %35
+        %37:bool = neq %34, %36
+        if %37 [t: %b5, f: %b6] {  # if_2
+          %b5 = block {  # true
+            %38:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+            %39:f32 = load %38
+            store %x_40, %39
+            exit_if  # if_2
+          }
+          %b6 = block {  # false
+            %40:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+            %41:f32 = load %40
+            store %x_40, %41
+            exit_if  # if_2
+          }
+        }
+        %42:f32 = load %x_40
+        %43:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %44:i32 = load %43
+        %45:f32 = convert %44
+        %46:vec4<f32> = construct %x_65, %x_67, %42, %45
+        store %x_GLF_color, %46
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %47:vec4<f32> = load %gl_FragCoord
+        %48:vec2<f32> = swizzle %47, xy
+        %49:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %50:f32 = load %49
+        %51:vec2<f32> = mul %48, %50
+        %52:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %53:f32 = load %52
+        %54:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %55:f32 = load %54
+        %56:vec2<f32> = construct %53, %55
+        %57:vec2<f32> = sub %51, %56
+        %58:vec2<i32> = convert %57
+        store %icoord_1, %58
+        %59:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %60:f32 = load %59
+        %61:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %62:f32 = load %61
+        %63:i32 = load_vector_element %icoord_1, 0u
+        %64:f32 = convert %63
+        %65:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %66:f32 = load %65
+        %67:vec4<f32> = construct %60, %62, %64, %66
+        store %x_GLF_color, %67
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b7 {
+  %b7 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %70:void = call %main_1
+    %71:vec4<f32> = load %x_GLF_color
+    %72:main_out = construct %71
+    ret %72
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a136ca7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,139 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %icoord:ptr<function, vec2<i32>, read_write> = var
+    %x_40:ptr<function, f32, read_write> = var
+    %icoord_1:ptr<function, vec2<i32>, read_write> = var
+    %x_42:f32 = load_vector_element %gl_FragCoord, 0u
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_44:f32 = load %10
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_47:f32 = load %12
+    %14:f32 = mul %x_42, %x_44
+    %15:bool = gt %14, %x_47
+    if %15 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %x_52:vec4<f32> = load %gl_FragCoord
+        %17:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_55:f32 = load %17
+        %19:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_58:f32 = load %19
+        %21:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %x_60:f32 = load %21
+        %23:f32 = access %x_52, 0u
+        %24:f32 = access %x_52, 1u
+        %25:vec2<f32> = construct %23, %24
+        %26:vec2<f32> = mul %25, %x_55
+        %27:vec2<f32> = construct %x_58, %x_60
+        %28:vec2<f32> = sub %26, %27
+        %29:vec2<i32> = convert %28
+        store %icoord, %29
+        %30:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %x_65:f32 = load %30
+        %32:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %x_67:f32 = load %32
+        %x_69:i32 = load_vector_element %icoord, 0u
+        %x_71:i32 = load_vector_element %icoord, 1u
+        %36:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_74:i32 = load %36
+        %38:i32 = mul %x_69, %x_71
+        %39:bool = neq %38, %x_74
+        if %39 [t: %b5, f: %b6] {  # if_2
+          %b5 = block {  # true
+            %40:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+            %x_80:f32 = load %40
+            store %x_40, %x_80
+            exit_if  # if_2
+          }
+          %b6 = block {  # false
+            %42:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+            %x_82:f32 = load %42
+            store %x_40, %x_82
+            exit_if  # if_2
+          }
+        }
+        %x_83:f32 = load %x_40
+        %45:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_85:i32 = load %45
+        %47:f32 = convert %x_85
+        %48:vec4<f32> = construct %x_65, %x_67, %x_83, %47
+        store %x_GLF_color, %48
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %x_88:vec4<f32> = load %gl_FragCoord
+        %50:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_91:f32 = load %50
+        %52:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_94:f32 = load %52
+        %54:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %x_96:f32 = load %54
+        %56:f32 = access %x_88, 0u
+        %57:f32 = access %x_88, 1u
+        %58:vec2<f32> = construct %56, %57
+        %59:vec2<f32> = mul %58, %x_91
+        %60:vec2<f32> = construct %x_94, %x_96
+        %61:vec2<f32> = sub %59, %60
+        %62:vec2<i32> = convert %61
+        store %icoord_1, %62
+        %63:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %x_101:f32 = load %63
+        %65:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %x_103:f32 = load %65
+        %x_105:i32 = load_vector_element %icoord_1, 0u
+        %68:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %x_108:f32 = load %68
+        %70:f32 = convert %x_105
+        %71:vec4<f32> = construct %x_101, %x_103, %70, %x_108
+        store %x_GLF_color, %71
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b7 {
+  %b7 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %74:void = call %main_1
+    %75:vec4<f32> = load %x_GLF_color
+    %76:main_out = construct %75
+    ret %76
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1de782d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,154 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_11:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%func_f1_ = func(%x:ptr<function, f32, read_write>):f32 -> %b2 {
+  %b2 = block {
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        if true [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %7:f32 = load_vector_element %gl_FragCoord, 1u
+            %8:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+            %9:f32 = load %8
+            %10:bool = lt %7, %9
+            if %10 [t: %b9] {  # if_2
+              %b9 = block {  # true
+                loop [b: %b10, c: %b11] {  # loop_3
+                  %b10 = block {  # body
+                    continue %b11
+                  }
+                  %b11 = block {  # continuing
+                    %x_88:f32 = load_vector_element %gl_FragCoord, 0u
+                    %12:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+                    %x_90:f32 = load %12
+                    %14:bool = lt %x_88, %x_90
+                    %15:bool = eq %14, false
+                    break_if %15 %b10
+                  }
+                }
+                exit_if  # if_2
+              }
+            }
+            %16:f32 = load %x
+            %17:ptr<uniform, f32, read> = access %x_8, 0u, 3i, 0u
+            %18:f32 = load %17
+            %19:bool = lt %16, %18
+            if %19 [t: %b12] {  # if_3
+              %b12 = block {  # true
+                %20:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+                %x_99:f32 = load %20
+                ret %x_99
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %x_101:f32 = load_vector_element %gl_FragCoord, 1u
+            %23:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+            %x_103:f32 = load %23
+            %25:bool = lt %x_101, %x_103
+            %26:bool = eq %25, false
+            break_if %26 %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %27:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_106:f32 = load %27
+    ret %x_106
+  }
+}
+%main_1 = func():void -> %b13 {
+  %b13 = block {
+    %param:ptr<function, f32, read_write> = var
+    %31:f32 = load_vector_element %gl_FragCoord, 0u
+    store %param, %31
+    %x_42:f32 = call %func_f1_, %param
+    %33:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %34:f32 = load %33
+    %35:bool = eq %x_42, %34
+    if %35 [t: %b14, f: %b15] {  # if_4
+      %b14 = block {  # true
+        %36:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+        %37:i32 = load %36
+        %38:f32 = convert %37
+        %39:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %40:i32 = load %39
+        %41:f32 = convert %40
+        %42:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %43:i32 = load %42
+        %44:f32 = convert %43
+        %45:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+        %46:i32 = load %45
+        %47:f32 = convert %46
+        %48:vec4<f32> = construct %38, %41, %44, %47
+        store %x_GLF_color, %48
+        exit_if  # if_4
+      }
+      %b15 = block {  # false
+        %49:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %50:i32 = load %49
+        %51:f32 = convert %50
+        %52:vec4<f32> = construct %51
+        store %x_GLF_color, %52
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b16 {
+  %b16 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %55:void = call %main_1
+    %56:vec4<f32> = load %x_GLF_color
+    %57:main_out = construct %56
+    ret %57
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..947b26e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,154 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_11:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%func_f1_ = func(%x:ptr<function, f32, read_write>):f32 -> %b2 {
+  %b2 = block {
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        if true [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %x_77:f32 = load_vector_element %gl_FragCoord, 1u
+            %8:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+            %x_79:f32 = load %8
+            %10:bool = lt %x_77, %x_79
+            if %10 [t: %b9] {  # if_2
+              %b9 = block {  # true
+                loop [b: %b10, c: %b11] {  # loop_3
+                  %b10 = block {  # body
+                    continue %b11
+                  }
+                  %b11 = block {  # continuing
+                    %x_88:f32 = load_vector_element %gl_FragCoord, 0u
+                    %12:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+                    %x_90:f32 = load %12
+                    %14:bool = lt %x_88, %x_90
+                    %15:bool = eq %14, false
+                    break_if %15 %b10
+                  }
+                }
+                exit_if  # if_2
+              }
+            }
+            %x_92:f32 = load %x
+            %17:ptr<uniform, f32, read> = access %x_8, 0u, 3i, 0u
+            %x_94:f32 = load %17
+            %19:bool = lt %x_92, %x_94
+            if %19 [t: %b12] {  # if_3
+              %b12 = block {  # true
+                %20:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+                %x_99:f32 = load %20
+                ret %x_99
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %x_101:f32 = load_vector_element %gl_FragCoord, 1u
+            %23:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+            %x_103:f32 = load %23
+            %25:bool = lt %x_101, %x_103
+            %26:bool = eq %25, false
+            break_if %26 %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %27:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_106:f32 = load %27
+    ret %x_106
+  }
+}
+%main_1 = func():void -> %b13 {
+  %b13 = block {
+    %param:ptr<function, f32, read_write> = var
+    %x_41:f32 = load_vector_element %gl_FragCoord, 0u
+    store %param, %x_41
+    %x_42:f32 = call %func_f1_, %param
+    %33:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %x_44:f32 = load %33
+    %35:bool = eq %x_42, %x_44
+    if %35 [t: %b14, f: %b15] {  # if_4
+      %b14 = block {  # true
+        %36:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+        %x_50:i32 = load %36
+        %38:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %x_53:i32 = load %38
+        %40:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %x_56:i32 = load %40
+        %42:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+        %x_59:i32 = load %42
+        %44:f32 = convert %x_50
+        %45:f32 = convert %x_53
+        %46:f32 = convert %x_56
+        %47:f32 = convert %x_59
+        %48:vec4<f32> = construct %44, %45, %46, %47
+        store %x_GLF_color, %48
+        exit_if  # if_4
+      }
+      %b15 = block {  # false
+        %49:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %x_63:i32 = load %49
+        %x_64:f32 = convert %x_63
+        %52:vec4<f32> = construct %x_64, %x_64, %x_64, %x_64
+        store %x_GLF_color, %52
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b16 {
+  %b16 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %55:void = call %main_1
+    %56:vec4<f32> = load %x_GLF_color
+    %57:main_out = construct %56
+    ret %57
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b15b95e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,114 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+buf2 = struct @align(4) {
+  zero:f32 @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_13:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%func_vf2_ = func(%pos:ptr<function, vec2<f32>, read_write>):bool -> %b2 {
+  %b2 = block {
+    %8:f32 = load_vector_element %pos, 0u
+    %9:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %10:f32 = load %9
+    %11:bool = lt %8, %10
+    if %11 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret true
+      }
+    }
+    %12:f32 = load_vector_element %pos, 1u
+    %13:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %14:f32 = load %13
+    %15:bool = gt %12, %14
+    if %15 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        ret false
+      }
+    }
+    %16:ptr<uniform, f32, read> = access %x_10, 0u
+    %17:f32 = load %16
+    %18:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %19:f32 = load %18
+    %20:bool = gt %17, %19
+    if %20 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        ret true
+      }
+    }
+    ret true
+  }
+}
+%main_1 = func():void -> %b6 {
+  %b6 = block {
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %23:vec4<f32> = load %gl_FragCoord
+    %24:vec2<f32> = swizzle %23, xy
+    store %param, %24
+    %x_44:bool = call %func_vf2_, %param
+    if %x_44 [t: %b7] {  # if_4
+      %b7 = block {  # true
+        discard
+        exit_if  # if_4
+      }
+    }
+    %26:ptr<uniform, i32, read> = access %x_13, 0u, 0i, 0u
+    %27:i32 = load %26
+    %28:f32 = convert %27
+    %29:ptr<uniform, i32, read> = access %x_13, 0u, 1i, 0u
+    %30:i32 = load %29
+    %31:f32 = convert %30
+    %32:ptr<uniform, i32, read> = access %x_13, 0u, 1i, 0u
+    %33:i32 = load %32
+    %34:f32 = convert %33
+    %35:ptr<uniform, i32, read> = access %x_13, 0u, 0i, 0u
+    %36:i32 = load %35
+    %37:f32 = convert %36
+    %38:vec4<f32> = construct %28, %31, %34, %37
+    store %x_GLF_color, %38
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b8 {
+  %b8 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %41:void = call %main_1
+    %42:vec4<f32> = load %x_GLF_color
+    %43:main_out = construct %42
+    ret %43
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0d80953
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,116 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+buf2 = struct @align(4) {
+  zero:f32 @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_13:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%func_vf2_ = func(%pos:ptr<function, vec2<f32>, read_write>):bool -> %b2 {
+  %b2 = block {
+    %x_62:f32 = load_vector_element %pos, 0u
+    %9:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_64:f32 = load %9
+    %11:bool = lt %x_62, %x_64
+    if %11 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret true
+      }
+    }
+    %x_69:f32 = load_vector_element %pos, 1u
+    %13:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_71:f32 = load %13
+    %15:bool = gt %x_69, %x_71
+    if %15 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        ret false
+      }
+    }
+    %16:ptr<uniform, f32, read> = access %x_10, 0u
+    %x_76:f32 = load %16
+    %18:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %x_78:f32 = load %18
+    %20:bool = gt %x_76, %x_78
+    if %20 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        ret true
+      }
+    }
+    ret true
+  }
+}
+%main_1 = func():void -> %b6 {
+  %b6 = block {
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %x_42:vec4<f32> = load %gl_FragCoord
+    %24:f32 = access %x_42, 0u
+    %25:f32 = access %x_42, 1u
+    %26:vec2<f32> = construct %24, %25
+    store %param, %26
+    %x_44:bool = call %func_vf2_, %param
+    if %x_44 [t: %b7] {  # if_4
+      %b7 = block {  # true
+        discard
+        exit_if  # if_4
+      }
+    }
+    %28:ptr<uniform, i32, read> = access %x_13, 0u, 0i, 0u
+    %x_48:i32 = load %28
+    %30:ptr<uniform, i32, read> = access %x_13, 0u, 1i, 0u
+    %x_51:i32 = load %30
+    %32:ptr<uniform, i32, read> = access %x_13, 0u, 1i, 0u
+    %x_54:i32 = load %32
+    %34:ptr<uniform, i32, read> = access %x_13, 0u, 0i, 0u
+    %x_57:i32 = load %34
+    %36:f32 = convert %x_48
+    %37:f32 = convert %x_51
+    %38:f32 = convert %x_54
+    %39:f32 = convert %x_57
+    %40:vec4<f32> = construct %36, %37, %38, %39
+    store %x_GLF_color, %40
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b8 {
+  %b8 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..d1a119e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,126 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_global_loop_count:ptr<private, i32, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    store %x_GLF_global_loop_count, 0i
+    %5:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %6:i32 = load %5
+    %7:f32 = convert %6
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %9:i32 = load %8
+    %10:f32 = convert %9
+    %11:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %12:i32 = load %11
+    %13:f32 = convert %12
+    %14:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %15:i32 = load %14
+    %16:f32 = convert %15
+    %17:vec4<f32> = construct %7, %10, %13, %16
+    store %x_GLF_color, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_54:ptr<function, bool, read_write> = var
+        %x_55:ptr<function, bool, read_write> = var
+        %20:i32 = load %x_GLF_global_loop_count
+        %21:bool = lt %20, 100i
+        if %21 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %22:i32 = load %x_GLF_global_loop_count
+        %23:i32 = add %22, 1i
+        store %x_GLF_global_loop_count, %23
+        store %x_55, true
+        if false [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %24:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+            %25:i32 = load %24
+            %26:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %27:i32 = load %26
+            %28:bool = eq %25, %27
+            store %x_54, %28
+            %29:bool = load %x_54
+            store %x_55, %29
+            exit_if  # if_2
+          }
+        }
+        %30:bool = load %x_55
+        %31:bool = eq %30, false
+        if %31 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %32:i32 = load %x_GLF_global_loop_count
+        %33:bool = lt %32, 100i
+        if %33 [t: %b11, f: %b12] {  # if_4
+          %b11 = block {  # true
+            exit_if  # if_4
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %34:i32 = load %x_GLF_global_loop_count
+        %35:i32 = add %34, 1i
+        store %x_GLF_global_loop_count, %35
+        %36:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %37:i32 = load %36
+        %38:f32 = convert %37
+        %39:vec4<f32> = construct %38
+        store %x_GLF_color, %39
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %41:void = call %main_1
+    %42:vec4<f32> = load %x_GLF_color
+    %43:main_out = construct %42
+    ret %43
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e7e42b3
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,126 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_global_loop_count:ptr<private, i32, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    store %x_GLF_global_loop_count, 0i
+    %5:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_26:i32 = load %5
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_29:i32 = load %7
+    %9:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_32:i32 = load %9
+    %11:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_35:i32 = load %11
+    %13:f32 = convert %x_26
+    %14:f32 = convert %x_29
+    %15:f32 = convert %x_32
+    %16:f32 = convert %x_35
+    %17:vec4<f32> = construct %13, %14, %15, %16
+    store %x_GLF_color, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_54:ptr<function, bool, read_write> = var
+        %x_55_phi:ptr<function, bool, read_write> = var
+        %x_42:i32 = load %x_GLF_global_loop_count
+        %21:bool = lt %x_42, 100i
+        if %21 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_45:i32 = load %x_GLF_global_loop_count
+        %23:i32 = add %x_45, 1i
+        store %x_GLF_global_loop_count, %23
+        store %x_55_phi, true
+        if false [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %24:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+            %x_51:i32 = load %24
+            %26:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %x_53:i32 = load %26
+            %28:bool = eq %x_51, %x_53
+            store %x_54, %28
+            %29:bool = load %x_54
+            store %x_55_phi, %29
+            exit_if  # if_2
+          }
+        }
+        %x_55:bool = load %x_55_phi
+        %31:bool = eq %x_55, false
+        if %31 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %x_63:i32 = load %x_GLF_global_loop_count
+        %33:bool = lt %x_63, 100i
+        if %33 [t: %b11, f: %b12] {  # if_4
+          %b11 = block {  # true
+            exit_if  # if_4
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_66:i32 = load %x_GLF_global_loop_count
+        %35:i32 = add %x_66, 1i
+        store %x_GLF_global_loop_count, %35
+        %36:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_69:i32 = load %36
+        %x_70:f32 = convert %x_69
+        %39:vec4<f32> = construct %x_70, %x_70, %x_70, %x_70
+        store %x_GLF_color, %39
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %41:void = call %main_1
+    %42:vec4<f32> = load %x_GLF_color
+    %43:main_out = construct %42
+    ret %43
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..62dbd34
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,238 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 18> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+buf2 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_global_loop_count:ptr<private, i32, read_write> = var
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_12:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_15:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat4x4<f32>, read_write> = var
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %f:ptr<function, f32, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %zero:ptr<function, f32, read_write> = var
+    store %x_GLF_global_loop_count, 0i
+    %13:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %14:f32 = load %13
+    %15:ptr<uniform, f32, read> = access %x_7, 0u, 2i, 0u
+    %16:f32 = load %15
+    %17:ptr<uniform, f32, read> = access %x_7, 0u, 3i, 0u
+    %18:f32 = load %17
+    %19:ptr<uniform, f32, read> = access %x_7, 0u, 4i, 0u
+    %20:f32 = load %19
+    %21:vec4<f32> = construct %14, %16, %18, %20
+    %22:ptr<uniform, f32, read> = access %x_7, 0u, 5i, 0u
+    %23:f32 = load %22
+    %24:ptr<uniform, f32, read> = access %x_7, 0u, 6i, 0u
+    %25:f32 = load %24
+    %26:ptr<uniform, f32, read> = access %x_7, 0u, 7i, 0u
+    %27:f32 = load %26
+    %28:ptr<uniform, f32, read> = access %x_7, 0u, 8i, 0u
+    %29:f32 = load %28
+    %30:vec4<f32> = construct %23, %25, %27, %29
+    %31:ptr<uniform, f32, read> = access %x_7, 0u, 9i, 0u
+    %32:f32 = load %31
+    %33:ptr<uniform, f32, read> = access %x_7, 0u, 10i, 0u
+    %34:f32 = load %33
+    %35:ptr<uniform, f32, read> = access %x_7, 0u, 11i, 0u
+    %36:f32 = load %35
+    %37:ptr<uniform, f32, read> = access %x_7, 0u, 12i, 0u
+    %38:f32 = load %37
+    %39:vec4<f32> = construct %32, %34, %36, %38
+    %40:ptr<uniform, f32, read> = access %x_7, 0u, 13i, 0u
+    %41:f32 = load %40
+    %42:ptr<uniform, f32, read> = access %x_7, 0u, 14i, 0u
+    %43:f32 = load %42
+    %44:ptr<uniform, f32, read> = access %x_7, 0u, 15i, 0u
+    %45:f32 = load %44
+    %46:ptr<uniform, f32, read> = access %x_7, 0u, 16i, 0u
+    %47:f32 = load %46
+    %48:vec4<f32> = construct %41, %43, %45, %47
+    %49:mat4x4<f32> = construct %21, %30, %39, %48
+    store %m, %49
+    %50:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %51:f32 = load %50
+    %52:ptr<uniform, f32, read> = access %x_7, 0u, 2i, 0u
+    %53:f32 = load %52
+    %54:ptr<uniform, f32, read> = access %x_7, 0u, 3i, 0u
+    %55:f32 = load %54
+    %56:ptr<uniform, f32, read> = access %x_7, 0u, 4i, 0u
+    %57:f32 = load %56
+    %58:vec4<f32> = construct %51, %53, %55, %57
+    store %v, %58
+    %59:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %60:f32 = load %59
+    store %f, %60
+    %61:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
+    %62:i32 = load %61
+    store %a, %62
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %63:i32 = load %x_GLF_global_loop_count
+        %64:bool = lt %63, 10i
+        if %64 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %65:i32 = load %x_GLF_global_loop_count
+        %66:i32 = add %65, 1i
+        store %x_GLF_global_loop_count, %66
+        %67:i32 = load %a
+        %x_121:i32 = clamp %67, 0i, 3i
+        %69:f32 = load_vector_element %v, %x_121
+        %70:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+        %71:f32 = load %70
+        %72:f32 = add %69, %71
+        store_vector_element %v, %x_121, %72
+        %73:ptr<uniform, i32, read> = access %x_12, 0u, 2i, 0u
+        %74:i32 = load %73
+        store %b, %74
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %75:i32 = load %x_GLF_global_loop_count
+            %76:bool = lt %75, 10i
+            if %76 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %77:i32 = load %x_GLF_global_loop_count
+            %78:i32 = add %77, 1i
+            store %x_GLF_global_loop_count, %78
+            %79:f32 = load %f
+            %80:i32 = load %b
+            %81:i32 = clamp %80, 0i, 3i
+            %82:f32 = load_vector_element %v, %81
+            %83:i32 = load %b
+            %84:i32 = clamp %83, 0i, 3i
+            %85:ptr<function, vec4<f32>, read_write> = access %m, %84
+            %86:i32 = load %a
+            %87:f32 = load_vector_element %85, %86
+            %88:f32 = mul %82, %87
+            %89:f32 = add %79, %88
+            store %f, %89
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %90:i32 = load %b
+            %91:i32 = sub %90, 1i
+            store %b, %91
+            next_iteration %b7
+          }
+        }
+        %x_153:i32 = load %a
+        %93:ptr<function, vec4<f32>, read_write> = access %m, 1i
+        %94:i32 = clamp %x_153, 0i, 3i
+        %95:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+        %96:f32 = load %95
+        store_vector_element %93, %94, %96
+        %97:ptr<uniform, i32, read> = access %x_15, 0u
+        %98:i32 = load %97
+        %99:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
+        %100:i32 = load %99
+        %101:bool = eq %98, %100
+        if %101 [t: %b11] {  # if_3
+          %b11 = block {  # true
+            discard
+            exit_if  # if_3
+          }
+        }
+        %102:ptr<uniform, i32, read> = access %x_15, 0u
+        %103:i32 = load %102
+        %104:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+        %105:i32 = load %104
+        %106:bool = eq %103, %105
+        if %106 [t: %b12] {  # if_4
+          %b12 = block {  # true
+            discard
+            exit_if  # if_4
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %107:i32 = load %a
+        %108:i32 = add %107, 1i
+        store %a, %108
+        next_iteration %b3
+      }
+    }
+    %109:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %110:f32 = load %109
+    store %zero, %110
+    %111:f32 = load %f
+    %112:ptr<uniform, f32, read> = access %x_7, 0u, 17i, 0u
+    %113:f32 = load %112
+    %114:bool = eq %111, %113
+    %115:bool = eq %114, false
+    if %115 [t: %b13] {  # if_5
+      %b13 = block {  # true
+        %116:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+        %117:f32 = load %116
+        store %zero, %117
+        exit_if  # if_5
+      }
+    }
+    %118:f32 = load %f
+    %119:f32 = load %zero
+    %120:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
+    %121:i32 = load %120
+    %122:f32 = convert %121
+    %123:f32 = load %f
+    %124:vec4<f32> = construct %118, %119, %122, %123
+    store %x_GLF_color, %124
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b14 {
+  %b14 = block {
+    %126:void = call %main_1
+    %127:vec4<f32> = load %x_GLF_color
+    %128:main_out = construct %127
+    ret %128
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e73ca0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,238 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 18> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+buf2 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_global_loop_count:ptr<private, i32, read_write> = var
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_12:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_15:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat4x4<f32>, read_write> = var
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %f:ptr<function, f32, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %zero:ptr<function, f32, read_write> = var
+    store %x_GLF_global_loop_count, 0i
+    %13:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_62:f32 = load %13
+    %15:ptr<uniform, f32, read> = access %x_7, 0u, 2i, 0u
+    %x_64:f32 = load %15
+    %17:ptr<uniform, f32, read> = access %x_7, 0u, 3i, 0u
+    %x_66:f32 = load %17
+    %19:ptr<uniform, f32, read> = access %x_7, 0u, 4i, 0u
+    %x_68:f32 = load %19
+    %21:ptr<uniform, f32, read> = access %x_7, 0u, 5i, 0u
+    %x_70:f32 = load %21
+    %23:ptr<uniform, f32, read> = access %x_7, 0u, 6i, 0u
+    %x_72:f32 = load %23
+    %25:ptr<uniform, f32, read> = access %x_7, 0u, 7i, 0u
+    %x_74:f32 = load %25
+    %27:ptr<uniform, f32, read> = access %x_7, 0u, 8i, 0u
+    %x_76:f32 = load %27
+    %29:ptr<uniform, f32, read> = access %x_7, 0u, 9i, 0u
+    %x_78:f32 = load %29
+    %31:ptr<uniform, f32, read> = access %x_7, 0u, 10i, 0u
+    %x_80:f32 = load %31
+    %33:ptr<uniform, f32, read> = access %x_7, 0u, 11i, 0u
+    %x_82:f32 = load %33
+    %35:ptr<uniform, f32, read> = access %x_7, 0u, 12i, 0u
+    %x_84:f32 = load %35
+    %37:ptr<uniform, f32, read> = access %x_7, 0u, 13i, 0u
+    %x_86:f32 = load %37
+    %39:ptr<uniform, f32, read> = access %x_7, 0u, 14i, 0u
+    %x_88:f32 = load %39
+    %41:ptr<uniform, f32, read> = access %x_7, 0u, 15i, 0u
+    %x_90:f32 = load %41
+    %43:ptr<uniform, f32, read> = access %x_7, 0u, 16i, 0u
+    %x_92:f32 = load %43
+    %45:vec4<f32> = construct %x_62, %x_64, %x_66, %x_68
+    %46:vec4<f32> = construct %x_70, %x_72, %x_74, %x_76
+    %47:vec4<f32> = construct %x_78, %x_80, %x_82, %x_84
+    %48:vec4<f32> = construct %x_86, %x_88, %x_90, %x_92
+    %49:mat4x4<f32> = construct %45, %46, %47, %48
+    store %m, %49
+    %50:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_99:f32 = load %50
+    %52:ptr<uniform, f32, read> = access %x_7, 0u, 2i, 0u
+    %x_101:f32 = load %52
+    %54:ptr<uniform, f32, read> = access %x_7, 0u, 3i, 0u
+    %x_103:f32 = load %54
+    %56:ptr<uniform, f32, read> = access %x_7, 0u, 4i, 0u
+    %x_105:f32 = load %56
+    %58:vec4<f32> = construct %x_99, %x_101, %x_103, %x_105
+    store %v, %58
+    %59:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_108:f32 = load %59
+    store %f, %x_108
+    %61:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
+    %x_110:i32 = load %61
+    store %a, %x_110
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_115:i32 = load %x_GLF_global_loop_count
+        %64:bool = lt %x_115, 10i
+        if %64 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_118:i32 = load %x_GLF_global_loop_count
+        %66:i32 = add %x_118, 1i
+        store %x_GLF_global_loop_count, %66
+        %x_120:i32 = load %a
+        %x_121:i32 = clamp %x_120, 0i, 3i
+        %69:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+        %x_123:f32 = load %69
+        %x_125:f32 = load_vector_element %v, %x_121
+        %72:f32 = add %x_125, %x_123
+        store_vector_element %v, %x_121, %72
+        %73:ptr<uniform, i32, read> = access %x_12, 0u, 2i, 0u
+        %x_129:i32 = load %73
+        store %b, %x_129
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %x_134:i32 = load %x_GLF_global_loop_count
+            %76:bool = lt %x_134, 10i
+            if %76 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_137:i32 = load %x_GLF_global_loop_count
+            %78:i32 = add %x_137, 1i
+            store %x_GLF_global_loop_count, %78
+            %x_139:i32 = load %b
+            %80:i32 = clamp %x_139, 0i, 3i
+            %x_142:f32 = load_vector_element %v, %80
+            %x_143:i32 = load %b
+            %x_145:i32 = load %a
+            %84:i32 = clamp %x_143, 0i, 3i
+            %85:ptr<function, vec4<f32>, read_write> = access %m, %84
+            %x_147:f32 = load_vector_element %85, %x_145
+            %x_149:f32 = load %f
+            %88:f32 = mul %x_142, %x_147
+            %89:f32 = add %x_149, %88
+            store %f, %89
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %x_151:i32 = load %b
+            %91:i32 = sub %x_151, 1i
+            store %b, %91
+            next_iteration %b7
+          }
+        }
+        %x_153:i32 = load %a
+        %93:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+        %x_156:f32 = load %93
+        %95:ptr<function, vec4<f32>, read_write> = access %m, 1i
+        %96:i32 = clamp %x_153, 0i, 3i
+        store_vector_element %95, %96, %x_156
+        %97:ptr<uniform, i32, read> = access %x_15, 0u
+        %x_159:i32 = load %97
+        %99:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
+        %x_161:i32 = load %99
+        %101:bool = eq %x_159, %x_161
+        if %101 [t: %b11] {  # if_3
+          %b11 = block {  # true
+            discard
+            exit_if  # if_3
+          }
+        }
+        %102:ptr<uniform, i32, read> = access %x_15, 0u
+        %x_166:i32 = load %102
+        %104:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+        %x_168:i32 = load %104
+        %106:bool = eq %x_166, %x_168
+        if %106 [t: %b12] {  # if_4
+          %b12 = block {  # true
+            discard
+            exit_if  # if_4
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_172:i32 = load %a
+        %108:i32 = add %x_172, 1i
+        store %a, %108
+        next_iteration %b3
+      }
+    }
+    %109:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_175:f32 = load %109
+    store %zero, %x_175
+    %x_176:f32 = load %f
+    %112:ptr<uniform, f32, read> = access %x_7, 0u, 17i, 0u
+    %x_178:f32 = load %112
+    %114:bool = eq %x_176, %x_178
+    %115:bool = eq %114, false
+    if %115 [t: %b13] {  # if_5
+      %b13 = block {  # true
+        %116:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+        %x_183:f32 = load %116
+        store %zero, %x_183
+        exit_if  # if_5
+      }
+    }
+    %x_184:f32 = load %f
+    %x_185:f32 = load %zero
+    %120:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
+    %x_187:i32 = load %120
+    %x_189:f32 = load %f
+    %123:f32 = convert %x_187
+    %124:vec4<f32> = construct %x_184, %x_185, %123, %x_189
+    store %x_GLF_color, %124
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b14 {
+  %b14 = block {
+    %126:void = call %main_1
+    %127:vec4<f32> = load %x_GLF_color
+    %128:main_out = construct %127
+    ret %128
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..e577e4a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,126 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_global_loop_count:ptr<private, i32, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():i32 -> %b2 {
+  %b2 = block {
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %5:i32 = load %x_GLF_global_loop_count
+        %6:bool = lt %5, 100i
+        if %6 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %7:i32 = load %x_GLF_global_loop_count
+        %8:i32 = add %7, 1i
+        store %x_GLF_global_loop_count, %8
+        %9:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_78:i32 = load %9
+        ret %x_78
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %11:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %x_80:i32 = load %11
+    ret %x_80
+  }
+}
+%main_1 = func():void -> %b7 {
+  %b7 = block {
+    %a:ptr<function, i32, read_write> = var
+    store %x_GLF_global_loop_count, 0i
+    loop [b: %b8, c: %b9] {  # loop_2
+      %b8 = block {  # body
+        %15:i32 = load %x_GLF_global_loop_count
+        %16:i32 = add %15, 1i
+        store %x_GLF_global_loop_count, %16
+        if false [t: %b10] {  # if_2
+          %b10 = block {  # true
+            ret
+          }
+        }
+        continue %b9
+      }
+      %b9 = block {  # continuing
+        %x_39:i32 = load %x_GLF_global_loop_count
+        %18:bool = lt %x_39, 100i
+        %19:bool = and true, %18
+        %20:bool = eq %19, false
+        break_if %20 %b8
+      }
+    }
+    %x_42:i32 = call %func_
+    store %a, %x_42
+    %22:i32 = load %a
+    %23:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %24:i32 = load %23
+    %25:bool = eq %22, %24
+    if %25 [t: %b11, f: %b12] {  # if_3
+      %b11 = block {  # true
+        %26:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %27:i32 = load %26
+        %28:f32 = convert %27
+        %29:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %30:i32 = load %29
+        %31:f32 = convert %30
+        %32:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %33:i32 = load %32
+        %34:f32 = convert %33
+        %35:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %36:i32 = load %35
+        %37:f32 = convert %36
+        %38:vec4<f32> = construct %28, %31, %34, %37
+        store %x_GLF_color, %38
+        exit_if  # if_3
+      }
+      %b12 = block {  # false
+        %39:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %40:i32 = load %39
+        %41:f32 = convert %40
+        %42:vec4<f32> = construct %41
+        store %x_GLF_color, %42
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %44:void = call %main_1
+    %45:vec4<f32> = load %x_GLF_color
+    %46:main_out = construct %45
+    ret %46
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8a82f81
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,126 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_global_loop_count:ptr<private, i32, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():i32 -> %b2 {
+  %b2 = block {
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_72:i32 = load %x_GLF_global_loop_count
+        %6:bool = lt %x_72, 100i
+        if %6 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_75:i32 = load %x_GLF_global_loop_count
+        %8:i32 = add %x_75, 1i
+        store %x_GLF_global_loop_count, %8
+        %9:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_78:i32 = load %9
+        ret %x_78
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %11:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %x_80:i32 = load %11
+    ret %x_80
+  }
+}
+%main_1 = func():void -> %b7 {
+  %b7 = block {
+    %a:ptr<function, i32, read_write> = var
+    store %x_GLF_global_loop_count, 0i
+    loop [b: %b8, c: %b9] {  # loop_2
+      %b8 = block {  # body
+        %x_35:i32 = load %x_GLF_global_loop_count
+        %16:i32 = add %x_35, 1i
+        store %x_GLF_global_loop_count, %16
+        if false [t: %b10] {  # if_2
+          %b10 = block {  # true
+            ret
+          }
+        }
+        continue %b9
+      }
+      %b9 = block {  # continuing
+        %x_39:i32 = load %x_GLF_global_loop_count
+        %18:bool = lt %x_39, 100i
+        %19:bool = and true, %18
+        %20:bool = eq %19, false
+        break_if %20 %b8
+      }
+    }
+    %x_42:i32 = call %func_
+    store %a, %x_42
+    %x_43:i32 = load %a
+    %23:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %x_45:i32 = load %23
+    %25:bool = eq %x_43, %x_45
+    if %25 [t: %b11, f: %b12] {  # if_3
+      %b11 = block {  # true
+        %26:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_51:i32 = load %26
+        %28:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_54:i32 = load %28
+        %30:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_57:i32 = load %30
+        %32:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_60:i32 = load %32
+        %34:f32 = convert %x_51
+        %35:f32 = convert %x_54
+        %36:f32 = convert %x_57
+        %37:f32 = convert %x_60
+        %38:vec4<f32> = construct %34, %35, %36, %37
+        store %x_GLF_color, %38
+        exit_if  # if_3
+      }
+      %b12 = block {  # false
+        %39:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_64:i32 = load %39
+        %x_65:f32 = convert %x_64
+        %42:vec4<f32> = construct %x_65, %x_65, %x_65, %x_65
+        store %x_GLF_color, %42
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %44:void = call %main_1
+    %45:vec4<f32> = load %x_GLF_color
+    %46:main_out = construct %45
+    ret %46
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..af8def1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.spvasm.expected.ir.msl
@@ -0,0 +1,139 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_23:ptr<function, i32, read_write> = var
+    %x_27:ptr<function, i32, read_write> = var
+    %x_37:ptr<function, i32, read_write> = var
+    %x_45:ptr<function, i32, read_write> = var
+    store %x_23, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_24:ptr<function, i32, read_write> = var
+        %9:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %10:i32 = load %9
+        store %x_27, %10
+        %11:i32 = load %x_23
+        %12:i32 = load %x_27
+        %13:i32 = sub 100i, %12
+        %14:bool = lt %11, %13
+        if %14 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %15:i32 = load %x_23
+        %16:i32 = add %15, 1i
+        store %x_24, %16
+        %17:i32 = load %x_24
+        store %x_23, %17
+        next_iteration %b3
+      }
+    }
+    %x_40:ptr<function, i32, read_write> = var
+    %19:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_32:i32 = load %19
+    store %x_45, 1i
+    %21:bool = eq %x_32, 0i
+    if %21 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        store %x_37, 1i
+        %22:i32 = load %x_23
+        store %x_40, %22
+        loop [b: %b8, c: %b9] {  # loop_2
+          %b8 = block {  # body
+            %x_41:ptr<function, i32, read_write> = var
+            %x_38:ptr<function, i32, read_write> = var
+            %25:i32 = load %x_40
+            %26:bool = lt %25, 100i
+            if %26 [t: %b10, f: %b11] {  # if_3
+              %b10 = block {  # true
+                exit_if  # if_3
+              }
+              %b11 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            continue %b9
+          }
+          %b9 = block {  # continuing
+            %27:i32 = load %x_40
+            %28:i32 = add %27, 1i
+            store %x_41, %28
+            %29:i32 = load %x_37
+            %30:i32 = load %x_37
+            %31:i32 = sub 1i, %30
+            %32:i32 = mul %29, %31
+            store %x_38, %32
+            %33:i32 = load %x_38
+            store %x_37, %33
+            %34:i32 = load %x_41
+            store %x_40, %34
+            next_iteration %b8
+          }
+        }
+        %35:i32 = load %x_37
+        store %x_45, %35
+        exit_if  # if_2
+      }
+    }
+    %36:i32 = load %x_45
+    %37:bool = eq %36, %x_32
+    if %37 [t: %b12, f: %b13] {  # if_4
+      %b12 = block {  # true
+        %38:i32 = load %x_27
+        %x_50:f32 = convert %38
+        %x_51:f32 = convert %x_32
+        %41:vec4<f32> = construct %x_50, %x_51, %x_51, %x_50
+        store %x_GLF_color, %41
+        exit_if  # if_4
+      }
+      %b13 = block {  # false
+        %42:f32 = convert %x_32
+        %43:vec4<f32> = construct %42
+        store %x_GLF_color, %43
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b14 {
+  %b14 = block {
+    %45:void = call %main_1
+    %46:vec4<f32> = load %x_GLF_color
+    %47:main_out = construct %46
+    ret %47
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..76b5b82
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl.expected.ir.msl
@@ -0,0 +1,149 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_23:ptr<function, i32, read_write> = var
+    %x_27:ptr<function, i32, read_write> = var
+    %x_37:ptr<function, i32, read_write> = var
+    %x_23_phi:ptr<function, i32, read_write> = var
+    %x_45_phi:ptr<function, i32, read_write> = var
+    store %x_23_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_24:ptr<function, i32, read_write> = var
+        %10:i32 = load %x_23_phi
+        store %x_23, %10
+        %11:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %12:i32 = load %11
+        store %x_27, %12
+        %13:i32 = load %x_23
+        %14:i32 = load %x_27
+        %15:i32 = bitcast %14
+        %16:i32 = sub 100i, %15
+        %17:bool = lt %13, %16
+        if %17 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %18:i32 = load %x_23
+        %19:i32 = add %18, 1i
+        %20:i32 = bitcast %19
+        store %x_24, %20
+        %21:i32 = load %x_24
+        store %x_23_phi, %21
+        next_iteration %b3
+      }
+    }
+    %x_37_phi:ptr<function, i32, read_write> = var
+    %x_40_phi:ptr<function, i32, read_write> = var
+    %24:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_32:i32 = load %24
+    store %x_45_phi, 1i
+    %26:bool = eq %x_32, 0i
+    if %26 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        store %x_37_phi, 1i
+        %27:i32 = load %x_23
+        store %x_40_phi, %27
+        loop [b: %b8, c: %b9] {  # loop_2
+          %b8 = block {  # body
+            %x_41:ptr<function, i32, read_write> = var
+            %x_38:ptr<function, i32, read_write> = var
+            %30:i32 = load %x_37_phi
+            store %x_37, %30
+            %x_40:i32 = load %x_40_phi
+            %32:bool = lt %x_40, 100i
+            if %32 [t: %b10, f: %b11] {  # if_3
+              %b10 = block {  # true
+                exit_if  # if_3
+              }
+              %b11 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            continue %b9
+          }
+          %b9 = block {  # continuing
+            %33:i32 = add %x_40, 1i
+            store %x_41, %33
+            %34:i32 = load %x_37
+            %35:i32 = load %x_37
+            %36:i32 = bitcast %35
+            %37:i32 = sub 1i, %36
+            %38:i32 = bitcast %37
+            %39:i32 = mul %34, %38
+            %40:i32 = bitcast %39
+            store %x_38, %40
+            %41:i32 = load %x_38
+            store %x_37_phi, %41
+            %42:i32 = load %x_41
+            store %x_40_phi, %42
+            next_iteration %b8
+          }
+        }
+        %43:i32 = load %x_37
+        store %x_45_phi, %43
+        exit_if  # if_2
+      }
+    }
+    %x_45:i32 = load %x_45_phi
+    %45:bool = eq %x_45, %x_32
+    if %45 [t: %b12, f: %b13] {  # if_4
+      %b12 = block {  # true
+        %46:i32 = load %x_27
+        %x_50:f32 = convert %46
+        %x_51:f32 = convert %x_32
+        %49:vec4<f32> = construct %x_50, %x_51, %x_51, %x_50
+        store %x_GLF_color, %49
+        exit_if  # if_4
+      }
+      %b13 = block {  # false
+        %x_53:f32 = convert %x_32
+        %51:vec4<f32> = construct %x_53, %x_53, %x_53, %x_53
+        store %x_GLF_color, %51
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b14 {
+  %b14 = block {
+    %53:void = call %main_1
+    %54:vec4<f32> = load %x_GLF_color
+    %55:main_out = construct %54
+    ret %55
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1d82f36
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,101 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_global_loop_count:ptr<private, i32, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    store %x_GLF_global_loop_count, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %5:i32 = load %x_GLF_global_loop_count
+        %6:bool = lt %5, 100i
+        if %6 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %7:i32 = load %x_GLF_global_loop_count
+        %8:i32 = add %7, 1i
+        store %x_GLF_global_loop_count, %8
+        %9:i32 = load %x_GLF_global_loop_count
+        %10:i32 = load %x_GLF_global_loop_count
+        %11:i32 = mul %9, %10
+        %12:bool = gt %11, 10i
+        if %12 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %13:i32 = load %x_GLF_global_loop_count
+    %14:bool = eq %13, 4i
+    if %14 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %15:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %16:i32 = load %15
+        %17:f32 = convert %16
+        %18:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %19:i32 = load %18
+        %20:f32 = convert %19
+        %21:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %22:i32 = load %21
+        %23:f32 = convert %22
+        %24:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %25:i32 = load %24
+        %26:f32 = convert %25
+        %27:vec4<f32> = construct %17, %20, %23, %26
+        store %x_GLF_color, %27
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %28:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %29:i32 = load %28
+        %30:f32 = convert %29
+        %31:vec4<f32> = construct %30
+        store %x_GLF_color, %31
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %33:void = call %main_1
+    %34:vec4<f32> = load %x_GLF_color
+    %35:main_out = construct %34
+    ret %35
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..93e31d3
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,101 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_global_loop_count:ptr<private, i32, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    store %x_GLF_global_loop_count, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_30:i32 = load %x_GLF_global_loop_count
+        %6:bool = lt %x_30, 100i
+        if %6 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_33:i32 = load %x_GLF_global_loop_count
+        %8:i32 = add %x_33, 1i
+        store %x_GLF_global_loop_count, %8
+        %x_35:i32 = load %x_GLF_global_loop_count
+        %x_36:i32 = load %x_GLF_global_loop_count
+        %11:i32 = mul %x_35, %x_36
+        %12:bool = gt %11, 10i
+        if %12 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %x_41:i32 = load %x_GLF_global_loop_count
+    %14:bool = eq %x_41, 4i
+    if %14 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %15:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_47:i32 = load %15
+        %17:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_50:i32 = load %17
+        %19:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_53:i32 = load %19
+        %21:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_56:i32 = load %21
+        %23:f32 = convert %x_47
+        %24:f32 = convert %x_50
+        %25:f32 = convert %x_53
+        %26:f32 = convert %x_56
+        %27:vec4<f32> = construct %23, %24, %25, %26
+        store %x_GLF_color, %27
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %28:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_60:i32 = load %28
+        %x_61:f32 = convert %x_60
+        %31:vec4<f32> = construct %x_61, %x_61, %x_61, %x_61
+        store %x_GLF_color, %31
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %33:void = call %main_1
+    %34:vec4<f32> = load %x_GLF_color
+    %35:main_out = construct %34
+    ret %35
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..27a4026
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,68 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_6, 0u
+    %6:i32 = load %5
+    store %a, %6
+    %7:i32 = load %a
+    %8:bool = eq %7, 0i
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %9:i32 = load %a
+        %10:i32 = add %9, 1i
+        store %a, %10
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %11:i32 = load %a
+        %12:i32 = add %11, 1i
+        store %a, %12
+        exit_if  # if_1
+      }
+    }
+    %13:i32 = load %a
+    %14:bool = eq %13, 1i
+    if %14 [t: %b5, f: %b6] {  # if_2
+      %b5 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b6 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %16:void = call %main_1
+    %17:vec4<f32> = load %x_GLF_color
+    %18:main_out = construct %17
+    ret %18
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7debedb
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,68 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_6, 0u
+    %x_25:i32 = load %5
+    store %a, %x_25
+    %x_26:i32 = load %a
+    %8:bool = eq %x_26, 0i
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %x_31:i32 = load %a
+        %10:i32 = add %x_31, 1i
+        store %a, %10
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %x_33:i32 = load %a
+        %12:i32 = add %x_33, 1i
+        store %a, %12
+        exit_if  # if_1
+      }
+    }
+    %x_35:i32 = load %a
+    %14:bool = eq %x_35, 1i
+    if %14 [t: %b5, f: %b6] {  # if_2
+      %b5 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b6 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %16:void = call %main_1
+    %17:vec4<f32> = load %x_GLF_color
+    %18:main_out = construct %17
+    ret %18
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..3a2c99a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.spvasm.expected.ir.msl
@@ -0,0 +1,92 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %6:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %7:f32 = load %6
+    %8:vec4<f32> = construct %7
+    store %x_GLF_color, %8
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_36:f32 = load %9
+    %11:f32 = load_vector_element %gl_FragCoord, 1u
+    %12:bool = gte %11, %x_36
+    if %12 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %13:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_41:i32 = load %13
+        switch %x_41 [c: (0i 16i, %b4), c: (default, %b5)] {  # switch_1
+          %b4 = block {  # case
+            %15:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+            %16:i32 = load %15
+            %x_46:f32 = convert %16
+            %x_47:f32 = convert %x_41
+            %19:vec4<f32> = construct %x_46, %x_47, %x_47, %x_46
+            store %x_GLF_color, %19
+            exit_switch  # switch_1
+          }
+          %b5 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        exit_if  # if_1
+      }
+    }
+    %20:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %21:i32 = load %20
+    %22:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %23:i32 = load %22
+    %24:bool = eq %21, %23
+    if %24 [t: %b6] {  # if_2
+      %b6 = block {  # true
+        %25:vec4<f32> = construct %x_36
+        store %x_GLF_color, %25
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b7 {
+  %b7 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %28:void = call %main_1
+    %29:vec4<f32> = load %x_GLF_color
+    %30:main_out = construct %29
+    ret %30
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c21056c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl.expected.ir.msl
@@ -0,0 +1,92 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %6:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_31:f32 = load %6
+    %8:vec4<f32> = construct %x_31, %x_31, %x_31, %x_31
+    store %x_GLF_color, %8
+    %x_34:f32 = load_vector_element %gl_FragCoord, 1u
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_36:f32 = load %10
+    %12:bool = gte %x_34, %x_36
+    if %12 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %13:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_41:i32 = load %13
+        switch %x_41 [c: (0i 16i, %b4), c: (default, %b5)] {  # switch_1
+          %b4 = block {  # case
+            %15:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+            %x_45:i32 = load %15
+            %x_46:f32 = convert %x_45
+            %x_47:f32 = convert %x_41
+            %19:vec4<f32> = construct %x_46, %x_47, %x_47, %x_46
+            store %x_GLF_color, %19
+            exit_switch  # switch_1
+          }
+          %b5 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        exit_if  # if_1
+      }
+    }
+    %20:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %x_50:i32 = load %20
+    %22:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_52:i32 = load %22
+    %24:bool = eq %x_50, %x_52
+    if %24 [t: %b6] {  # if_2
+      %b6 = block {  # true
+        %25:vec4<f32> = construct %x_36, %x_36, %x_36, %x_36
+        store %x_GLF_color, %25
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b7 {
+  %b7 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %28:void = call %main_1
+    %29:vec4<f32> = load %x_GLF_color
+    %30:main_out = construct %29
+    ret %30
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..35562ef
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,142 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %x_65:ptr<function, bool, read_write> = var
+    %x_66:ptr<function, bool, read_write> = var
+    %9:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %10:i32 = load %9
+    store %a, %10
+    %11:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %12:i32 = load %11
+    store %b, %12
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %14:i32 = load %13
+    store %c, %14
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %15:i32 = load %a
+        %16:i32 = load %b
+        %17:bool = lt %15, %16
+        if %17 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %18:i32 = load %a
+        %19:i32 = add %18, 1i
+        store %a, %19
+        %20:i32 = load %c
+        %21:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %22:i32 = load %21
+        %23:bool = eq %20, %22
+        if %23 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %24:i32 = load %c
+            %25:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+            %26:i32 = load %25
+            %27:i32 = mul %24, %26
+            store %c, %27
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            if true [t: %b9] {  # if_3
+              %b9 = block {  # true
+                continue %b4
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %28:i32 = load %a
+    %29:i32 = load %b
+    %x_59:bool = eq %28, %29
+    store %x_66, %x_59
+    if %x_59 [t: %b10] {  # if_4
+      %b10 = block {  # true
+        %31:i32 = load %c
+        %32:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %33:i32 = load %32
+        %34:bool = eq %31, %33
+        store %x_65, %34
+        %35:bool = load %x_65
+        store %x_66, %35
+        exit_if  # if_4
+      }
+    }
+    %36:bool = load %x_66
+    if %36 [t: %b11, f: %b12] {  # if_5
+      %b11 = block {  # true
+        %37:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %38:i32 = load %37
+        %39:f32 = convert %38
+        %40:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %41:i32 = load %40
+        %42:f32 = convert %41
+        %43:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %44:i32 = load %43
+        %45:f32 = convert %44
+        %46:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %47:i32 = load %46
+        %48:f32 = convert %47
+        %49:vec4<f32> = construct %39, %42, %45, %48
+        store %x_GLF_color, %49
+        exit_if  # if_5
+      }
+      %b12 = block {  # false
+        %50:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %51:i32 = load %50
+        %52:f32 = convert %51
+        %53:vec4<f32> = construct %52
+        store %x_GLF_color, %53
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %55:void = call %main_1
+    %56:vec4<f32> = load %x_GLF_color
+    %57:main_out = construct %56
+    ret %57
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4bc7b18
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,142 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %x_65:ptr<function, bool, read_write> = var
+    %x_66_phi:ptr<function, bool, read_write> = var
+    %9:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_29:i32 = load %9
+    store %a, %x_29
+    %11:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_31:i32 = load %11
+    store %b, %x_31
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_33:i32 = load %13
+    store %c, %x_33
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_38:i32 = load %a
+        %x_39:i32 = load %b
+        %17:bool = lt %x_38, %x_39
+        if %17 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_42:i32 = load %a
+        %19:i32 = add %x_42, 1i
+        store %a, %19
+        %x_44:i32 = load %c
+        %21:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_46:i32 = load %21
+        %23:bool = eq %x_44, %x_46
+        if %23 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %24:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+            %x_52:i32 = load %24
+            %x_53:i32 = load %c
+            %27:i32 = mul %x_53, %x_52
+            store %c, %27
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            if true [t: %b9] {  # if_3
+              %b9 = block {  # true
+                continue %b4
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %x_57:i32 = load %a
+    %x_58:i32 = load %b
+    %x_59:bool = eq %x_57, %x_58
+    store %x_66_phi, %x_59
+    if %x_59 [t: %b10] {  # if_4
+      %b10 = block {  # true
+        %x_62:i32 = load %c
+        %32:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_64:i32 = load %32
+        %34:bool = eq %x_62, %x_64
+        store %x_65, %34
+        %35:bool = load %x_65
+        store %x_66_phi, %35
+        exit_if  # if_4
+      }
+    }
+    %x_66:bool = load %x_66_phi
+    if %x_66 [t: %b11, f: %b12] {  # if_5
+      %b11 = block {  # true
+        %37:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_71:i32 = load %37
+        %39:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_74:i32 = load %39
+        %41:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_77:i32 = load %41
+        %43:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_80:i32 = load %43
+        %45:f32 = convert %x_71
+        %46:f32 = convert %x_74
+        %47:f32 = convert %x_77
+        %48:f32 = convert %x_80
+        %49:vec4<f32> = construct %45, %46, %47, %48
+        store %x_GLF_color, %49
+        exit_if  # if_5
+      }
+      %b12 = block {  # false
+        %50:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_84:i32 = load %50
+        %x_85:f32 = convert %x_84
+        %53:vec4<f32> = construct %x_85, %x_85, %x_85, %x_85
+        store %x_GLF_color, %53
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %55:void = call %main_1
+    %56:vec4<f32> = load %x_GLF_color
+    %57:main_out = construct %56
+    ret %57
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..15d2ea5
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,97 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    store %a, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %5:i32 = load %a
+        %6:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %7:i32 = load %6
+        %8:bool = gte %5, %7
+        if %8 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        if true [t: %b6] {  # if_2
+          %b6 = block {  # true
+            discard
+            exit_if  # if_2
+          }
+        }
+        %9:i32 = load %a
+        %10:i32 = add %9, 1i
+        store %a, %10
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_39:i32 = load %a
+        %12:bool = neq %x_39, 1i
+        %13:bool = eq %12, false
+        break_if %13 %b3
+      }
+    }
+    %14:i32 = load %a
+    %15:bool = eq %14, 1i
+    if %15 [t: %b7, f: %b8] {  # if_3
+      %b7 = block {  # true
+        %16:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %17:i32 = load %16
+        %18:f32 = convert %17
+        %19:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %20:i32 = load %19
+        %21:f32 = convert %20
+        %22:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %23:i32 = load %22
+        %24:f32 = convert %23
+        %25:vec4<f32> = construct 1.0f, %18, %21, %24
+        store %x_GLF_color, %25
+        exit_if  # if_3
+      }
+      %b8 = block {  # false
+        %26:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %27:i32 = load %26
+        %28:f32 = convert %27
+        %29:vec4<f32> = construct %28
+        store %x_GLF_color, %29
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %31:void = call %main_1
+    %32:vec4<f32> = load %x_GLF_color
+    %33:main_out = construct %32
+    ret %33
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3a4824c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,97 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    store %a, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_29:i32 = load %a
+        %6:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_31:i32 = load %6
+        %8:bool = gte %x_29, %x_31
+        if %8 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        if true [t: %b6] {  # if_2
+          %b6 = block {  # true
+            discard
+            exit_if  # if_2
+          }
+        }
+        %x_37:i32 = load %a
+        %10:i32 = add %x_37, 1i
+        store %a, %10
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_39:i32 = load %a
+        %12:bool = neq %x_39, 1i
+        %13:bool = eq %12, false
+        break_if %13 %b3
+      }
+    }
+    %x_41:i32 = load %a
+    %15:bool = eq %x_41, 1i
+    if %15 [t: %b7, f: %b8] {  # if_3
+      %b7 = block {  # true
+        %16:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_47:i32 = load %16
+        %18:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_50:i32 = load %18
+        %20:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_53:i32 = load %20
+        %22:f32 = convert %x_47
+        %23:f32 = convert %x_50
+        %24:f32 = convert %x_53
+        %25:vec4<f32> = construct 1.0f, %22, %23, %24
+        store %x_GLF_color, %25
+        exit_if  # if_3
+      }
+      %b8 = block {  # false
+        %26:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_57:i32 = load %26
+        %x_58:f32 = convert %x_57
+        %29:vec4<f32> = construct %x_58, %x_58, %x_58, %x_58
+        store %x_GLF_color, %29
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %31:void = call %main_1
+    %32:vec4<f32> = load %x_GLF_color
+    %33:main_out = construct %32
+    ret %33
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..ff350fd
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,88 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  three:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %a, 0i
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %6:i32 = load %i
+        %7:ptr<uniform, i32, read> = access %x_7, 0u
+        %8:i32 = load %7
+        %9:i32 = add 7i, %8
+        %10:bool = lt %6, %9
+        if %10 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_37:i32 = load %i
+        switch %x_37 [c: (7i 8i, %b7), c: (default, %b8)] {  # switch_1
+          %b7 = block {  # case
+            %12:i32 = load %a
+            %13:i32 = add %12, 1i
+            store %a, %13
+            exit_switch  # switch_1
+          }
+          %b8 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %14:i32 = load %i
+        %15:i32 = add %14, 1i
+        store %i, %15
+        next_iteration %b3
+      }
+    }
+    %16:i32 = load %a
+    %17:bool = eq %16, 2i
+    if %17 [t: %b9, f: %b10] {  # if_2
+      %b9 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b10 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..13e34a6
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,88 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  three:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %a, 0i
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_31:i32 = load %i
+        %7:ptr<uniform, i32, read> = access %x_7, 0u
+        %x_33:i32 = load %7
+        %9:i32 = add 7i, %x_33
+        %10:bool = lt %x_31, %9
+        if %10 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_37:i32 = load %i
+        switch %x_37 [c: (7i 8i, %b7), c: (default, %b8)] {  # switch_1
+          %b7 = block {  # case
+            %x_40:i32 = load %a
+            %13:i32 = add %x_40, 1i
+            store %a, %13
+            exit_switch  # switch_1
+          }
+          %b8 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_42:i32 = load %i
+        %15:i32 = add %x_42, 1i
+        store %i, %15
+        next_iteration %b3
+      }
+    }
+    %x_44:i32 = load %a
+    %17:bool = eq %x_44, 2i
+    if %17 [t: %b9, f: %b10] {  # if_2
+      %b9 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b10 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..53a68a5
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,158 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %arr:ptr<function, array<f32, 3>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %x_69:ptr<function, bool, read_write> = var
+    %x_70:ptr<function, bool, read_write> = var
+    %x_79:ptr<function, bool, read_write> = var
+    %x_80:ptr<function, bool, read_write> = var
+    %11:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %12:f32 = load %11
+    %13:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %14:f32 = load %13
+    %15:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %16:f32 = load %15
+    %17:array<f32, 3> = construct %12, %14, %16
+    store %arr, %17
+    store %a, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %18:i32 = load %a
+        %19:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %20:i32 = load %19
+        %21:bool = lte %18, %20
+        if %21 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_49:i32 = load %a
+        %23:i32 = load %a
+        %24:i32 = add %23, 1i
+        store %a, %24
+        %25:ptr<function, f32, read_write> = access %arr, %x_49
+        %26:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %27:f32 = load %26
+        store %25, %27
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %28:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %29:i32 = load %28
+    %30:ptr<function, f32, read_write> = access %arr, %29
+    %31:f32 = load %30
+    %32:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %33:f32 = load %32
+    %x_60:bool = eq %31, %33
+    store %x_70, %x_60
+    if %x_60 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        %35:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %36:i32 = load %35
+        %37:ptr<function, f32, read_write> = access %arr, %36
+        %38:f32 = load %37
+        %39:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %40:f32 = load %39
+        %41:bool = eq %38, %40
+        store %x_69, %41
+        %42:bool = load %x_69
+        store %x_70, %42
+        exit_if  # if_2
+      }
+    }
+    %43:bool = load %x_70
+    store %x_80, %43
+    %44:bool = load %x_70
+    if %44 [t: %b8] {  # if_3
+      %b8 = block {  # true
+        %45:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %46:i32 = load %45
+        %47:ptr<function, f32, read_write> = access %arr, %46
+        %48:f32 = load %47
+        %49:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %50:f32 = load %49
+        %51:bool = eq %48, %50
+        store %x_79, %51
+        %52:bool = load %x_79
+        store %x_80, %52
+        exit_if  # if_3
+      }
+    }
+    %53:bool = load %x_80
+    if %53 [t: %b9, f: %b10] {  # if_4
+      %b9 = block {  # true
+        %54:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %55:i32 = load %54
+        %56:ptr<function, f32, read_write> = access %arr, %55
+        %57:f32 = load %56
+        %58:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %59:f32 = load %58
+        %60:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %61:f32 = load %60
+        %62:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %63:f32 = load %62
+        %64:vec4<f32> = construct %57, %59, %61, %63
+        store %x_GLF_color, %64
+        exit_if  # if_4
+      }
+      %b10 = block {  # false
+        %65:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %66:f32 = load %65
+        %67:vec4<f32> = construct %66
+        store %x_GLF_color, %67
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %69:void = call %main_1
+    %70:vec4<f32> = load %x_GLF_color
+    %71:main_out = construct %70
+    ret %71
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3aa1490
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,156 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %arr:ptr<function, array<f32, 3>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %x_69:ptr<function, bool, read_write> = var
+    %x_79:ptr<function, bool, read_write> = var
+    %x_70_phi:ptr<function, bool, read_write> = var
+    %x_80_phi:ptr<function, bool, read_write> = var
+    %11:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_34:f32 = load %11
+    %13:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_36:f32 = load %13
+    %15:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %x_38:f32 = load %15
+    %17:array<f32, 3> = construct %x_34, %x_36, %x_38
+    store %arr, %17
+    store %a, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_44:i32 = load %a
+        %19:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_46:i32 = load %19
+        %21:bool = lte %x_44, %x_46
+        if %21 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_49:i32 = load %a
+        %23:i32 = add %x_49, 1i
+        store %a, %23
+        %24:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_52:f32 = load %24
+        %26:ptr<function, f32, read_write> = access %arr, %x_49
+        store %26, %x_52
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %27:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %x_55:i32 = load %27
+    %29:ptr<function, f32, read_write> = access %arr, %x_55
+    %x_57:f32 = load %29
+    %31:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_59:f32 = load %31
+    %x_60:bool = eq %x_57, %x_59
+    store %x_70_phi, %x_60
+    if %x_60 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        %34:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %x_64:i32 = load %34
+        %36:ptr<function, f32, read_write> = access %arr, %x_64
+        %x_66:f32 = load %36
+        %38:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_68:f32 = load %38
+        %40:bool = eq %x_66, %x_68
+        store %x_69, %40
+        %41:bool = load %x_69
+        store %x_70_phi, %41
+        exit_if  # if_2
+      }
+    }
+    %x_70:bool = load %x_70_phi
+    store %x_80_phi, %x_70
+    if %x_70 [t: %b8] {  # if_3
+      %b8 = block {  # true
+        %43:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_74:i32 = load %43
+        %45:ptr<function, f32, read_write> = access %arr, %x_74
+        %x_76:f32 = load %45
+        %47:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %x_78:f32 = load %47
+        %49:bool = eq %x_76, %x_78
+        store %x_79, %49
+        %50:bool = load %x_79
+        store %x_80_phi, %50
+        exit_if  # if_3
+      }
+    }
+    %x_80:bool = load %x_80_phi
+    if %x_80 [t: %b9, f: %b10] {  # if_4
+      %b9 = block {  # true
+        %52:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_85:i32 = load %52
+        %54:ptr<function, f32, read_write> = access %arr, %x_85
+        %x_87:f32 = load %54
+        %56:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_89:f32 = load %56
+        %58:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_91:f32 = load %58
+        %60:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_93:f32 = load %60
+        %62:vec4<f32> = construct %x_87, %x_89, %x_91, %x_93
+        store %x_GLF_color, %62
+        exit_if  # if_4
+      }
+      %b10 = block {  # false
+        %63:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_96:f32 = load %63
+        %65:vec4<f32> = construct %x_96, %x_96, %x_96, %x_96
+        store %x_GLF_color, %65
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %67:void = call %main_1
+    %68:vec4<f32> = load %x_GLF_color
+    %69:main_out = construct %68
+    ret %69
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..9d7fbbc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,137 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f0:ptr<function, f32, read_write> = var
+    %f1:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %x_63:ptr<function, bool, read_write> = var
+    %x_64:ptr<function, bool, read_write> = var
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %11:f32 = load %10
+    store %f0, %11
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %13:f32 = load %12
+    store %f1, %13
+    %14:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %15:i32 = load %14
+    store %i, %15
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %16:i32 = load %i
+        %17:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %18:i32 = load %17
+        %19:bool = lt %16, %18
+        if %19 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %20:f32 = load %f0
+        %21:f32 = mul 1.10000002384185791016f, %20
+        %22:f32 = abs %21
+        store %f0, %22
+        %23:f32 = load %f0
+        store %f1, %23
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %24:i32 = load %i
+        %25:i32 = add %24, 1i
+        store %i, %25
+        next_iteration %b3
+      }
+    }
+    %26:f32 = load %f1
+    %27:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %28:f32 = load %27
+    %x_57:bool = gt %26, %28
+    store %x_64, %x_57
+    if %x_57 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        %30:f32 = load %f1
+        %31:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %32:f32 = load %31
+        %33:bool = lt %30, %32
+        store %x_63, %33
+        %34:bool = load %x_63
+        store %x_64, %34
+        exit_if  # if_2
+      }
+    }
+    %35:bool = load %x_64
+    if %35 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %36:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %37:i32 = load %36
+        %38:f32 = convert %37
+        %39:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %40:i32 = load %39
+        %41:f32 = convert %40
+        %42:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %43:i32 = load %42
+        %44:f32 = convert %43
+        %45:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %46:i32 = load %45
+        %47:f32 = convert %46
+        %48:vec4<f32> = construct %38, %41, %44, %47
+        store %x_GLF_color, %48
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %49:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %50:i32 = load %49
+        %51:f32 = convert %50
+        %52:vec4<f32> = construct %51
+        store %x_GLF_color, %52
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %54:void = call %main_1
+    %55:vec4<f32> = load %x_GLF_color
+    %56:main_out = construct %55
+    ret %56
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..24f28be
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,137 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f0:ptr<function, f32, read_write> = var
+    %f1:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %x_63:ptr<function, bool, read_write> = var
+    %x_64_phi:ptr<function, bool, read_write> = var
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_34:f32 = load %10
+    store %f0, %x_34
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_36:f32 = load %12
+    store %f1, %x_36
+    %14:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %x_38:i32 = load %14
+    store %i, %x_38
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_43:i32 = load %i
+        %17:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_45:i32 = load %17
+        %19:bool = lt %x_43, %x_45
+        if %19 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_48:f32 = load %f0
+        %21:f32 = mul 1.10000002384185791016f, %x_48
+        %22:f32 = abs %21
+        store %f0, %22
+        %x_51:f32 = load %f0
+        store %f1, %x_51
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_52:i32 = load %i
+        %25:i32 = add %x_52, 1i
+        store %i, %25
+        next_iteration %b3
+      }
+    }
+    %x_54:f32 = load %f1
+    %27:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_56:f32 = load %27
+    %x_57:bool = gt %x_54, %x_56
+    store %x_64_phi, %x_57
+    if %x_57 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        %x_60:f32 = load %f1
+        %31:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %x_62:f32 = load %31
+        %33:bool = lt %x_60, %x_62
+        store %x_63, %33
+        %34:bool = load %x_63
+        store %x_64_phi, %34
+        exit_if  # if_2
+      }
+    }
+    %x_64:bool = load %x_64_phi
+    if %x_64 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %36:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_69:i32 = load %36
+        %38:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_72:i32 = load %38
+        %40:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_75:i32 = load %40
+        %42:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_78:i32 = load %42
+        %44:f32 = convert %x_69
+        %45:f32 = convert %x_72
+        %46:f32 = convert %x_75
+        %47:f32 = convert %x_78
+        %48:vec4<f32> = construct %44, %45, %46, %47
+        store %x_GLF_color, %48
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %49:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_82:i32 = load %49
+        %x_83:f32 = convert %x_82
+        %52:vec4<f32> = construct %x_83, %x_83, %x_83, %x_83
+        store %x_GLF_color, %52
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %54:void = call %main_1
+    %55:vec4<f32> = load %x_GLF_color
+    %56:main_out = construct %55
+    ret %56
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..fb5132e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,156 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_global_loop_count:ptr<private, i32, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():void -> %b2 {
+  %b2 = block {
+    %x_66:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_62:i32 = load %6
+    %8:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %9:i32 = load %8
+    store %x_66, %9
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_67:ptr<function, i32, read_write> = var
+        %11:i32 = load %x_66
+        %12:ptr<uniform, i32, read> = access %x_7, 0u, 3i, 0u
+        %13:i32 = load %12
+        %14:bool = lt %11, %13
+        if %14 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %15:i32 = load %x_GLF_global_loop_count
+        %16:i32 = add %15, 1i
+        store %x_GLF_global_loop_count, %16
+        %17:i32 = load %x_66
+        %18:i32 = add %17, 1i
+        store %x_67, %18
+        %19:i32 = load %x_67
+        store %x_66, %19
+        next_iteration %b3
+      }
+    }
+    %20:bool = lt %x_62, %x_62
+    if %20 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        ret
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b8 {
+  %b8 = block {
+    store %x_GLF_global_loop_count, 0i
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %22:i32 = load %x_GLF_global_loop_count
+        %23:bool = lt %22, 10i
+        if %23 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        %24:i32 = load %x_GLF_global_loop_count
+        %25:i32 = add %24, 1i
+        store %x_GLF_global_loop_count, %25
+        %26:void = call %func_
+        next_iteration %b9
+      }
+    }
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %27:i32 = load %x_GLF_global_loop_count
+        %28:bool = lt %27, 10i
+        if %28 [t: %b15, f: %b16] {  # if_4
+          %b15 = block {  # true
+            exit_if  # if_4
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %29:i32 = load %x_GLF_global_loop_count
+        %30:i32 = add %29, 1i
+        store %x_GLF_global_loop_count, %30
+        next_iteration %b13
+      }
+    }
+    %31:i32 = load %x_GLF_global_loop_count
+    %32:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %33:i32 = load %32
+    %34:bool = eq %31, %33
+    if %34 [t: %b17, f: %b18] {  # if_5
+      %b17 = block {  # true
+        %35:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %36:i32 = load %35
+        %x_51:f32 = convert %36
+        %38:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %39:i32 = load %38
+        %x_54:f32 = convert %39
+        %41:vec4<f32> = construct %x_51, %x_54, %x_54, %x_51
+        store %x_GLF_color, %41
+        exit_if  # if_5
+      }
+      %b18 = block {  # false
+        %42:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %43:i32 = load %42
+        %44:f32 = convert %43
+        %45:vec4<f32> = construct %44
+        store %x_GLF_color, %45
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b19 {
+  %b19 = block {
+    %47:void = call %main_1
+    %48:vec4<f32> = load %x_GLF_color
+    %49:main_out = construct %48
+    ret %49
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2a61f20
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,155 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_global_loop_count:ptr<private, i32, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():void -> %b2 {
+  %b2 = block {
+    %x_66_phi:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_62:i32 = load %6
+    %8:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %x_64:i32 = load %8
+    store %x_66_phi, %x_64
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_67:ptr<function, i32, read_write> = var
+        %x_66:i32 = load %x_66_phi
+        %12:ptr<uniform, i32, read> = access %x_7, 0u, 3i, 0u
+        %x_70:i32 = load %12
+        %14:bool = lt %x_66, %x_70
+        if %14 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_73:i32 = load %x_GLF_global_loop_count
+        %16:i32 = add %x_73, 1i
+        store %x_GLF_global_loop_count, %16
+        %17:i32 = add %x_66, 1i
+        store %x_67, %17
+        %18:i32 = load %x_67
+        store %x_66_phi, %18
+        next_iteration %b3
+      }
+    }
+    %19:bool = lt %x_62, %x_62
+    if %19 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        ret
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b8 {
+  %b8 = block {
+    store %x_GLF_global_loop_count, 0i
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %x_28:i32 = load %x_GLF_global_loop_count
+        %22:bool = lt %x_28, 10i
+        if %22 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        %x_32:i32 = load %x_GLF_global_loop_count
+        %24:i32 = add %x_32, 1i
+        store %x_GLF_global_loop_count, %24
+        %25:void = call %func_
+        next_iteration %b9
+      }
+    }
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %x_36:i32 = load %x_GLF_global_loop_count
+        %27:bool = lt %x_36, 10i
+        if %27 [t: %b15, f: %b16] {  # if_4
+          %b15 = block {  # true
+            exit_if  # if_4
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %x_40:i32 = load %x_GLF_global_loop_count
+        %29:i32 = add %x_40, 1i
+        store %x_GLF_global_loop_count, %29
+        next_iteration %b13
+      }
+    }
+    %x_42:i32 = load %x_GLF_global_loop_count
+    %31:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %x_44:i32 = load %31
+    %33:bool = eq %x_42, %x_44
+    if %33 [t: %b17, f: %b18] {  # if_5
+      %b17 = block {  # true
+        %34:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_50:i32 = load %34
+        %x_51:f32 = convert %x_50
+        %37:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_53:i32 = load %37
+        %x_54:f32 = convert %x_53
+        %40:vec4<f32> = construct %x_51, %x_54, %x_54, %x_51
+        store %x_GLF_color, %40
+        exit_if  # if_5
+      }
+      %b18 = block {  # false
+        %41:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_57:i32 = load %41
+        %x_58:f32 = convert %x_57
+        %44:vec4<f32> = construct %x_58, %x_58, %x_58, %x_58
+        store %x_GLF_color, %44
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b19 {
+  %b19 = block {
+    %46:void = call %main_1
+    %47:vec4<f32> = load %x_GLF_color
+    %48:main_out = construct %47
+    ret %48
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..bd4e628
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, array<i32, 3>, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %7:ptr<function, i32, read_write> = access %a, 0i
+    store %7, 1i
+    %8:ptr<function, i32, read_write> = access %a, 1i
+    store %8, 2i
+    %9:ptr<function, i32, read_write> = access %a, 2i
+    store %9, 3i
+    store %b, 0i
+    %10:ptr<uniform, i32, read> = access %x_8, 0u
+    %11:i32 = load %10
+    %12:ptr<function, i32, read_write> = access %a, %11
+    %13:i32 = load %12
+    store %c, %13
+    %14:i32 = load %c
+    %15:bool = gt %14, 1i
+    if %15 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(0.0f, 1.0f, 1.0f, 0.0f)
+        %16:i32 = load %b
+        %17:i32 = add %16, 1i
+        store %b, %17
+        exit_if  # if_1
+      }
+    }
+    %18:i32 = load %b
+    %x_48:i32 = add %18, 1i
+    store %b, %x_48
+    %x_50_save:i32 = clamp %x_48, 0i, 2i
+    %21:ptr<function, i32, read_write> = access %a, %x_50_save
+    %22:ptr<function, i32, read_write> = access %a, %x_50_save
+    %23:i32 = load %22
+    %24:i32 = add %23, 1i
+    store %21, %24
+    %25:ptr<function, i32, read_write> = access %a, 2i
+    %26:i32 = load %25
+    %27:bool = eq %26, 4i
+    if %27 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %29:void = call %main_1
+    %30:vec4<f32> = load %x_GLF_color
+    %31:main_out = construct %30
+    ret %31
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..93bcf80
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, array<i32, 3>, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %7:ptr<function, i32, read_write> = access %a, 0i
+    store %7, 1i
+    %8:ptr<function, i32, read_write> = access %a, 1i
+    store %8, 2i
+    %9:ptr<function, i32, read_write> = access %a, 2i
+    store %9, 3i
+    store %b, 0i
+    %10:ptr<uniform, i32, read> = access %x_8, 0u
+    %x_38:i32 = load %10
+    %12:ptr<function, i32, read_write> = access %a, %x_38
+    %x_40:i32 = load %12
+    store %c, %x_40
+    %x_41:i32 = load %c
+    %15:bool = gt %x_41, 1i
+    if %15 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(0.0f, 1.0f, 1.0f, 0.0f)
+        %x_45:i32 = load %b
+        %17:i32 = add %x_45, 1i
+        store %b, %17
+        exit_if  # if_1
+      }
+    }
+    %x_47:i32 = load %b
+    %x_48:i32 = add %x_47, 1i
+    store %b, %x_48
+    %x_50_save:i32 = clamp %x_48, 0i, 2i
+    %21:ptr<function, i32, read_write> = access %a, %x_50_save
+    %x_51:i32 = load %21
+    %23:ptr<function, i32, read_write> = access %a, %x_50_save
+    %24:i32 = add %x_51, 1i
+    store %23, %24
+    %25:ptr<function, i32, read_write> = access %a, 2i
+    %x_54:i32 = load %25
+    %27:bool = eq %x_54, 4i
+    if %27 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %29:void = call %main_1
+    %30:vec4<f32> = load %x_GLF_color
+    %31:main_out = construct %30
+    ret %31
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..eec9f46
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,113 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, array<i32, 9>, read_write> = var
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %8:i32 = load %7
+    store %a, %8
+    %9:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %10:i32 = load %9
+    store %i, %10
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %11:i32 = load %i
+        %12:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %13:i32 = load %12
+        %14:bool = lt %11, %13
+        if %14 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_50:i32 = load %i
+        %16:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %x_52:i32 = load %16
+        store %indexable, array<i32, 9>(1i, 2i, 3i, 4i, 5i, 6i, 7i, 8i, 9i)
+        %18:i32 = load %a
+        %19:i32 = mod %x_50, %x_52
+        %20:ptr<function, i32, read_write> = access %indexable, %19
+        %21:i32 = load %20
+        %22:i32 = add %18, %21
+        store %a, %22
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %23:i32 = load %i
+        %24:i32 = add %23, 1i
+        store %i, %24
+        next_iteration %b3
+      }
+    }
+    %25:i32 = load %a
+    %26:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %27:i32 = load %26
+    %28:bool = eq %25, %27
+    if %28 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %30:i32 = load %29
+        %31:f32 = convert %30
+        %32:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %33:i32 = load %32
+        %34:f32 = convert %33
+        %35:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %36:i32 = load %35
+        %37:f32 = convert %36
+        %38:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %39:i32 = load %38
+        %40:f32 = convert %39
+        %41:vec4<f32> = construct %31, %34, %37, %40
+        store %x_GLF_color, %41
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %42:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %43:i32 = load %42
+        %44:f32 = convert %43
+        %45:vec4<f32> = construct %44
+        store %x_GLF_color, %45
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %47:void = call %main_1
+    %48:vec4<f32> = load %x_GLF_color
+    %49:main_out = construct %48
+    ret %49
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..caf67bd
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,113 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, array<i32, 9>, read_write> = var
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_38:i32 = load %7
+    store %a, %x_38
+    %9:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_40:i32 = load %9
+    store %i, %x_40
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_45:i32 = load %i
+        %12:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_47:i32 = load %12
+        %14:bool = lt %x_45, %x_47
+        if %14 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_50:i32 = load %i
+        %16:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %x_52:i32 = load %16
+        store %indexable, array<i32, 9>(1i, 2i, 3i, 4i, 5i, 6i, 7i, 8i, 9i)
+        %18:i32 = mod %x_50, %x_52
+        %19:ptr<function, i32, read_write> = access %indexable, %18
+        %x_55:i32 = load %19
+        %x_56:i32 = load %a
+        %22:i32 = add %x_56, %x_55
+        store %a, %22
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_58:i32 = load %i
+        %24:i32 = add %x_58, 1i
+        store %i, %24
+        next_iteration %b3
+      }
+    }
+    %x_60:i32 = load %a
+    %26:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_62:i32 = load %26
+    %28:bool = eq %x_60, %x_62
+    if %28 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_68:i32 = load %29
+        %31:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_71:i32 = load %31
+        %33:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_74:i32 = load %33
+        %35:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_77:i32 = load %35
+        %37:f32 = convert %x_68
+        %38:f32 = convert %x_71
+        %39:f32 = convert %x_74
+        %40:f32 = convert %x_77
+        %41:vec4<f32> = construct %37, %38, %39, %40
+        store %x_GLF_color, %41
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %42:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_81:i32 = load %42
+        %x_82:f32 = convert %x_81
+        %45:vec4<f32> = construct %x_82, %x_82, %x_82, %x_82
+        store %x_GLF_color, %45
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %47:void = call %main_1
+    %48:vec4<f32> = load %x_GLF_color
+    %49:main_out = construct %48
+    ret %49
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..4207cce
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,176 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %x_76:ptr<function, bool, read_write> = var
+    %x_77:ptr<function, bool, read_write> = var
+    %x_83:ptr<function, bool, read_write> = var
+    %x_84:ptr<function, bool, read_write> = var
+    %11:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %12:i32 = load %11
+    store %a, %12
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %14:i32 = load %13
+    store %b, %14
+    store %c, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %15:i32 = load %b
+        %16:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %17:i32 = load %16
+        %18:bool = lt %15, %17
+        %19:i32 = load %a
+        %20:bool = lt %19, 10i
+        %21:bool = and %18, %20
+        if %21 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %22:i32 = load %c
+        %23:bool = gt %22, 5i
+        if %23 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %24:i32 = load %a
+        %25:i32 = add %24, 1i
+        store %a, %25
+        %26:i32 = load %c
+        %27:i32 = add %26, 1i
+        store %c, %27
+        %28:i32 = load %b
+        %29:i32 = add %28, 1i
+        store %b, %29
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b8, c: %b9] {  # loop_2
+      %b8 = block {  # body
+        %30:i32 = load %a
+        %31:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %32:i32 = load %31
+        %33:bool = lt %30, %32
+        if %33 [t: %b10, f: %b11] {  # if_3
+          %b10 = block {  # true
+            exit_if  # if_3
+          }
+          %b11 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b9
+      }
+      %b9 = block {  # continuing
+        %34:i32 = load %a
+        %35:i32 = add %34, 1i
+        store %a, %35
+        next_iteration %b8
+      }
+    }
+    %36:i32 = load %a
+    %37:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %38:i32 = load %37
+    %x_70:bool = eq %36, %38
+    store %x_77, %x_70
+    if %x_70 [t: %b12] {  # if_4
+      %b12 = block {  # true
+        %40:i32 = load %b
+        %41:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %42:i32 = load %41
+        %43:bool = eq %40, %42
+        store %x_76, %43
+        %44:bool = load %x_76
+        store %x_77, %44
+        exit_if  # if_4
+      }
+    }
+    %45:bool = load %x_77
+    store %x_84, %45
+    %46:bool = load %x_77
+    if %46 [t: %b13] {  # if_5
+      %b13 = block {  # true
+        %47:i32 = load %c
+        %48:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %49:i32 = load %48
+        %50:bool = eq %47, %49
+        store %x_83, %50
+        %51:bool = load %x_83
+        store %x_84, %51
+        exit_if  # if_5
+      }
+    }
+    %52:bool = load %x_84
+    if %52 [t: %b14, f: %b15] {  # if_6
+      %b14 = block {  # true
+        %53:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %54:i32 = load %53
+        %55:f32 = convert %54
+        %56:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %57:i32 = load %56
+        %58:f32 = convert %57
+        %59:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %60:i32 = load %59
+        %61:f32 = convert %60
+        %62:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %63:i32 = load %62
+        %64:f32 = convert %63
+        %65:vec4<f32> = construct %55, %58, %61, %64
+        store %x_GLF_color, %65
+        exit_if  # if_6
+      }
+      %b15 = block {  # false
+        %66:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %67:i32 = load %66
+        %68:f32 = convert %67
+        %69:vec4<f32> = construct %68
+        store %x_GLF_color, %69
+        exit_if  # if_6
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b16 {
+  %b16 = block {
+    %71:void = call %main_1
+    %72:vec4<f32> = load %x_GLF_color
+    %73:main_out = construct %72
+    ret %73
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1b70c4d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,175 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %x_76:ptr<function, bool, read_write> = var
+    %x_83:ptr<function, bool, read_write> = var
+    %x_77_phi:ptr<function, bool, read_write> = var
+    %x_84_phi:ptr<function, bool, read_write> = var
+    %11:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_31:i32 = load %11
+    store %a, %x_31
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_33:i32 = load %13
+    store %b, %x_33
+    store %c, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_38:i32 = load %b
+        %16:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %x_40:i32 = load %16
+        %x_42:i32 = load %a
+        %19:bool = lt %x_38, %x_40
+        %20:bool = lt %x_42, 10i
+        %21:bool = and %19, %20
+        if %21 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_46:i32 = load %c
+        %23:bool = gt %x_46, 5i
+        if %23 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %x_50:i32 = load %a
+        %25:i32 = add %x_50, 1i
+        store %a, %25
+        %x_52:i32 = load %c
+        %27:i32 = add %x_52, 1i
+        store %c, %27
+        %x_54:i32 = load %b
+        %29:i32 = add %x_54, 1i
+        store %b, %29
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b8, c: %b9] {  # loop_2
+      %b8 = block {  # body
+        %x_60:i32 = load %a
+        %31:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_62:i32 = load %31
+        %33:bool = lt %x_60, %x_62
+        if %33 [t: %b10, f: %b11] {  # if_3
+          %b10 = block {  # true
+            exit_if  # if_3
+          }
+          %b11 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b9
+      }
+      %b9 = block {  # continuing
+        %x_65:i32 = load %a
+        %35:i32 = add %x_65, 1i
+        store %a, %35
+        next_iteration %b8
+      }
+    }
+    %x_67:i32 = load %a
+    %37:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_69:i32 = load %37
+    %x_70:bool = eq %x_67, %x_69
+    store %x_77_phi, %x_70
+    if %x_70 [t: %b12] {  # if_4
+      %b12 = block {  # true
+        %x_73:i32 = load %b
+        %41:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_75:i32 = load %41
+        %43:bool = eq %x_73, %x_75
+        store %x_76, %43
+        %44:bool = load %x_76
+        store %x_77_phi, %44
+        exit_if  # if_4
+      }
+    }
+    %x_77:bool = load %x_77_phi
+    store %x_84_phi, %x_77
+    if %x_77 [t: %b13] {  # if_5
+      %b13 = block {  # true
+        %x_80:i32 = load %c
+        %47:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_82:i32 = load %47
+        %49:bool = eq %x_80, %x_82
+        store %x_83, %49
+        %50:bool = load %x_83
+        store %x_84_phi, %50
+        exit_if  # if_5
+      }
+    }
+    %x_84:bool = load %x_84_phi
+    if %x_84 [t: %b14, f: %b15] {  # if_6
+      %b14 = block {  # true
+        %52:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_89:i32 = load %52
+        %54:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_92:i32 = load %54
+        %56:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_95:i32 = load %56
+        %58:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_98:i32 = load %58
+        %60:f32 = convert %x_89
+        %61:f32 = convert %x_92
+        %62:f32 = convert %x_95
+        %63:f32 = convert %x_98
+        %64:vec4<f32> = construct %60, %61, %62, %63
+        store %x_GLF_color, %64
+        exit_if  # if_6
+      }
+      %b15 = block {  # false
+        %65:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_102:i32 = load %65
+        %x_103:f32 = convert %x_102
+        %68:vec4<f32> = construct %x_103, %x_103, %x_103, %x_103
+        store %x_GLF_color, %68
+        exit_if  # if_6
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b16 {
+  %b16 = block {
+    %70:void = call %main_1
+    %71:vec4<f32> = load %x_GLF_color
+    %72:main_out = construct %71
+    ret %72
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..d8484bf
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,126 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat3x3<f32>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %arr:ptr<function, array<vec3<f32>, 2>, read_write> = var
+    %v:ptr<function, vec3<f32>, read_write> = var
+    %9:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %10:i32 = load %9
+    %x_46:f32 = convert %10
+    %12:vec3<f32> = construct %x_46, 0.0f, 0.0f
+    %13:vec3<f32> = construct 0.0f, %x_46, 0.0f
+    %14:vec3<f32> = construct 0.0f, 0.0f, %x_46
+    %15:mat3x3<f32> = construct %12, %13, %14
+    store %m, %15
+    %16:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %17:i32 = load %16
+    store %a, %17
+    %x_53:i32 = load %a
+    %x_54:i32 = load %a
+    %20:ptr<function, vec3<f32>, read_write> = access %m, %x_53
+    %21:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+    %22:f32 = load %21
+    store_vector_element %20, %x_54, %22
+    %23:ptr<function, vec3<f32>, read_write> = access %m, 1i
+    %24:vec3<f32> = load %23
+    %25:ptr<function, vec3<f32>, read_write> = access %m, 1i
+    %26:vec3<f32> = load %25
+    %27:array<vec3<f32>, 2> = construct %24, %26
+    store %arr, %27
+    %28:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+    %29:f32 = load %28
+    %30:vec3<f32> = construct %29
+    store %v, %30
+    %31:vec3<f32> = load %v
+    %32:i32 = load %a
+    %33:ptr<function, vec3<f32>, read_write> = access %arr, %32
+    %34:vec3<f32> = load %33
+    %35:vec3<f32> = add %31, %34
+    store %v, %35
+    %36:vec3<f32> = load %v
+    %37:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %38:i32 = load %37
+    %39:f32 = convert %38
+    %40:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %41:i32 = load %40
+    %42:f32 = convert %41
+    %43:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %44:i32 = load %43
+    %45:f32 = convert %44
+    %46:vec3<f32> = construct %39, %42, %45
+    %47:vec3<bool> = eq %36, %46
+    %48:bool = all %47
+    if %48 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %49:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %50:i32 = load %49
+        %51:f32 = convert %50
+        %52:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %53:i32 = load %52
+        %54:f32 = convert %53
+        %55:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %56:i32 = load %55
+        %57:f32 = convert %56
+        %58:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %59:i32 = load %58
+        %60:f32 = convert %59
+        %61:vec4<f32> = construct %51, %54, %57, %60
+        store %x_GLF_color, %61
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %62:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %63:i32 = load %62
+        %64:f32 = convert %63
+        %65:vec4<f32> = construct %64
+        store %x_GLF_color, %65
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %67:void = call %main_1
+    %68:vec4<f32> = load %x_GLF_color
+    %69:main_out = construct %68
+    ret %69
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bd5aae5
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,126 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat3x3<f32>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %arr:ptr<function, array<vec3<f32>, 2>, read_write> = var
+    %v:ptr<function, vec3<f32>, read_write> = var
+    %9:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_45:i32 = load %9
+    %x_46:f32 = convert %x_45
+    %12:vec3<f32> = construct %x_46, 0.0f, 0.0f
+    %13:vec3<f32> = construct 0.0f, %x_46, 0.0f
+    %14:vec3<f32> = construct 0.0f, 0.0f, %x_46
+    %15:mat3x3<f32> = construct %12, %13, %14
+    store %m, %15
+    %16:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_52:i32 = load %16
+    store %a, %x_52
+    %x_53:i32 = load %a
+    %x_54:i32 = load %a
+    %20:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+    %x_56:f32 = load %20
+    %22:ptr<function, vec3<f32>, read_write> = access %m, %x_53
+    store_vector_element %22, %x_54, %x_56
+    %23:ptr<function, vec3<f32>, read_write> = access %m, 1i
+    %x_59:vec3<f32> = load %23
+    %25:ptr<function, vec3<f32>, read_write> = access %m, 1i
+    %x_61:vec3<f32> = load %25
+    %27:array<vec3<f32>, 2> = construct %x_59, %x_61
+    store %arr, %27
+    %28:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+    %x_64:f32 = load %28
+    %30:vec3<f32> = construct %x_64, %x_64, %x_64
+    store %v, %30
+    %x_66:i32 = load %a
+    %32:ptr<function, vec3<f32>, read_write> = access %arr, %x_66
+    %x_68:vec3<f32> = load %32
+    %x_69:vec3<f32> = load %v
+    %35:vec3<f32> = add %x_69, %x_68
+    store %v, %35
+    %x_71:vec3<f32> = load %v
+    %37:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_73:i32 = load %37
+    %39:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_76:i32 = load %39
+    %41:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_79:i32 = load %41
+    %43:f32 = convert %x_73
+    %44:f32 = convert %x_76
+    %45:f32 = convert %x_79
+    %46:vec3<f32> = construct %43, %44, %45
+    %47:vec3<bool> = eq %x_71, %46
+    %48:bool = all %47
+    if %48 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %49:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_88:i32 = load %49
+        %51:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_91:i32 = load %51
+        %53:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_94:i32 = load %53
+        %55:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_97:i32 = load %55
+        %57:f32 = convert %x_88
+        %58:f32 = convert %x_91
+        %59:f32 = convert %x_94
+        %60:f32 = convert %x_97
+        %61:vec4<f32> = construct %57, %58, %59, %60
+        store %x_GLF_color, %61
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %62:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_101:i32 = load %62
+        %x_102:f32 = convert %x_101
+        %65:vec4<f32> = construct %x_102, %x_102, %x_102, %x_102
+        store %x_GLF_color, %65
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %67:void = call %main_1
+    %68:vec4<f32> = load %x_GLF_color
+    %69:main_out = construct %68
+    ret %69
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..fe56ef2
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,141 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %m:ptr<function, mat3x4<f32>, read_write> = var
+    %indexable:ptr<function, mat4x4<f32>, read_write> = var
+    %9:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %10:i32 = load %9
+    store %a, %10
+    %11:ptr<uniform, f32, read> = access %x_9, 0u, 2i, 0u
+    %12:f32 = load %11
+    %13:vec4<f32> = construct %12
+    store %v, %13
+    %14:ptr<uniform, f32, read> = access %x_9, 0u, 3i, 0u
+    %x_49:f32 = load %14
+    %16:vec4<f32> = construct %x_49, 0.0f, 0.0f, 0.0f
+    %17:vec4<f32> = construct 0.0f, %x_49, 0.0f, 0.0f
+    %18:vec4<f32> = construct 0.0f, 0.0f, %x_49, 0.0f
+    %19:mat3x4<f32> = construct %16, %17, %18
+    store %m, %19
+    %x_54:i32 = load %a
+    %x_55:i32 = load %a
+    %22:ptr<function, vec4<f32>, read_write> = access %m, %x_54
+    %23:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+    %24:f32 = load %23
+    store_vector_element %22, %x_55, %24
+    %x_59:i32 = load %a
+    %x_78:i32 = load %a
+    %x_79:i32 = load %a
+    %28:ptr<function, vec4<f32>, read_write> = access %m, 0u
+    %29:f32 = load_vector_element %28, 0u
+    %30:ptr<function, vec4<f32>, read_write> = access %m, 0u
+    %31:f32 = load_vector_element %30, 1u
+    %32:ptr<function, vec4<f32>, read_write> = access %m, 0u
+    %33:f32 = load_vector_element %32, 2u
+    %34:ptr<function, vec4<f32>, read_write> = access %m, 0u
+    %35:f32 = load_vector_element %34, 3u
+    %36:vec4<f32> = construct %29, %31, %33, %35
+    %37:ptr<function, vec4<f32>, read_write> = access %m, 1u
+    %38:f32 = load_vector_element %37, 0u
+    %39:ptr<function, vec4<f32>, read_write> = access %m, 1u
+    %40:f32 = load_vector_element %39, 1u
+    %41:ptr<function, vec4<f32>, read_write> = access %m, 1u
+    %42:f32 = load_vector_element %41, 2u
+    %43:ptr<function, vec4<f32>, read_write> = access %m, 1u
+    %44:f32 = load_vector_element %43, 3u
+    %45:vec4<f32> = construct %38, %40, %42, %44
+    %46:ptr<function, vec4<f32>, read_write> = access %m, 2u
+    %47:f32 = load_vector_element %46, 0u
+    %48:ptr<function, vec4<f32>, read_write> = access %m, 2u
+    %49:f32 = load_vector_element %48, 1u
+    %50:ptr<function, vec4<f32>, read_write> = access %m, 2u
+    %51:f32 = load_vector_element %50, 2u
+    %52:ptr<function, vec4<f32>, read_write> = access %m, 2u
+    %53:f32 = load_vector_element %52, 3u
+    %54:vec4<f32> = construct %47, %49, %51, %53
+    %55:mat4x4<f32> = construct %36, %45, %54, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+    store %indexable, %55
+    %56:f32 = load_vector_element %v, %x_59
+    %57:ptr<function, vec4<f32>, read_write> = access %indexable, %x_78
+    %58:f32 = load_vector_element %57, %x_79
+    %59:f32 = add %56, %58
+    store_vector_element %v, %x_59, %59
+    %60:f32 = load_vector_element %v, 1u
+    %61:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+    %62:f32 = load %61
+    %63:bool = eq %60, %62
+    if %63 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %64:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %65:i32 = load %64
+        %66:f32 = convert %65
+        %67:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %68:i32 = load %67
+        %69:f32 = convert %68
+        %70:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %71:i32 = load %70
+        %72:f32 = convert %71
+        %73:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %74:i32 = load %73
+        %75:f32 = convert %74
+        %76:vec4<f32> = construct %66, %69, %72, %75
+        store %x_GLF_color, %76
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %77:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %78:i32 = load %77
+        %79:f32 = convert %78
+        %80:vec4<f32> = construct %79
+        store %x_GLF_color, %80
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %82:void = call %main_1
+    %83:vec4<f32> = load %x_GLF_color
+    %84:main_out = construct %83
+    ret %84
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f6b96e9
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,130 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %m:ptr<function, mat3x4<f32>, read_write> = var
+    %indexable:ptr<function, mat4x4<f32>, read_write> = var
+    %9:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_44:i32 = load %9
+    store %a, %x_44
+    %11:ptr<uniform, f32, read> = access %x_9, 0u, 2i, 0u
+    %x_46:f32 = load %11
+    %13:vec4<f32> = construct %x_46, %x_46, %x_46, %x_46
+    store %v, %13
+    %14:ptr<uniform, f32, read> = access %x_9, 0u, 3i, 0u
+    %x_49:f32 = load %14
+    %16:vec4<f32> = construct %x_49, 0.0f, 0.0f, 0.0f
+    %17:vec4<f32> = construct 0.0f, %x_49, 0.0f, 0.0f
+    %18:vec4<f32> = construct 0.0f, 0.0f, %x_49, 0.0f
+    %19:mat3x4<f32> = construct %16, %17, %18
+    store %m, %19
+    %x_54:i32 = load %a
+    %x_55:i32 = load %a
+    %22:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+    %x_57:f32 = load %22
+    %24:ptr<function, vec4<f32>, read_write> = access %m, %x_54
+    store_vector_element %24, %x_55, %x_57
+    %x_59:i32 = load %a
+    %x_60:mat3x4<f32> = load %m
+    %x_78:i32 = load %a
+    %x_79:i32 = load %a
+    %29:f32 = access %x_60, 0u, 0u
+    %30:f32 = access %x_60, 0u, 1u
+    %31:f32 = access %x_60, 0u, 2u
+    %32:f32 = access %x_60, 0u, 3u
+    %33:vec4<f32> = construct %29, %30, %31, %32
+    %34:f32 = access %x_60, 1u, 0u
+    %35:f32 = access %x_60, 1u, 1u
+    %36:f32 = access %x_60, 1u, 2u
+    %37:f32 = access %x_60, 1u, 3u
+    %38:vec4<f32> = construct %34, %35, %36, %37
+    %39:f32 = access %x_60, 2u, 0u
+    %40:f32 = access %x_60, 2u, 1u
+    %41:f32 = access %x_60, 2u, 2u
+    %42:f32 = access %x_60, 2u, 3u
+    %43:vec4<f32> = construct %39, %40, %41, %42
+    %44:mat4x4<f32> = construct %33, %38, %43, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+    store %indexable, %44
+    %45:ptr<function, vec4<f32>, read_write> = access %indexable, %x_78
+    %x_81:f32 = load_vector_element %45, %x_79
+    %x_83:f32 = load_vector_element %v, %x_59
+    %48:f32 = add %x_83, %x_81
+    store_vector_element %v, %x_59, %48
+    %x_87:f32 = load_vector_element %v, 1u
+    %50:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+    %x_89:f32 = load %50
+    %52:bool = eq %x_87, %x_89
+    if %52 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %53:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_95:i32 = load %53
+        %55:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_98:i32 = load %55
+        %57:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_101:i32 = load %57
+        %59:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_104:i32 = load %59
+        %61:f32 = convert %x_95
+        %62:f32 = convert %x_98
+        %63:f32 = convert %x_101
+        %64:f32 = convert %x_104
+        %65:vec4<f32> = construct %61, %62, %63, %64
+        store %x_GLF_color, %65
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %66:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_108:i32 = load %66
+        %x_109:f32 = convert %x_108
+        %69:vec4<f32> = construct %x_109, %x_109, %x_109, %x_109
+        store %x_GLF_color, %69
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %71:void = call %main_1
+    %72:vec4<f32> = load %x_GLF_color
+    %73:main_out = construct %72
+    ret %73
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..ec5f8fa
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,106 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%returnRed_ = func():vec4<f32> -> %b2 {
+  %b2 = block {
+    %x_33:ptr<function, bool, read_write> = var, false
+    %x_34:ptr<function, vec4<f32>, read_write> = var
+    %x_48:ptr<function, vec4<f32>, read_write> = var
+    %x_51:ptr<function, vec4<f32>, read_write> = var
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_49:ptr<function, bool, read_write> = var
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %9:ptr<uniform, i32, read> = access %x_6, 0u
+            %10:i32 = load %9
+            %11:bool = eq %10, 1i
+            if %11 [t: %b7] {  # if_1
+              %b7 = block {  # true
+                store %x_33, true
+                store %x_34, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+                store %x_48, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+                store %x_49, true
+                exit_loop  # loop_2
+              }
+            }
+            continue %b6
+          }
+          %b6 = block {  # continuing
+            store %x_48, vec4<f32>(0.0f)
+            store %x_49, false
+            break_if true %b5
+          }
+        }
+        %12:vec4<f32> = load %x_48
+        store %x_51, %12
+        %13:bool = load %x_49
+        if %13 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        store %x_33, true
+        store %x_34, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        store %x_51, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %14:vec4<f32> = load %x_51
+    ret %14
+  }
+}
+%main_1 = func():void -> %b9 {
+  %b9 = block {
+    loop [b: %b10, c: %b11] {  # loop_3
+      %b10 = block {  # body
+        %x_30:vec4<f32> = call %returnRed_
+        store %x_GLF_color, %x_30
+        if false [t: %b12, f: %b13] {  # if_3
+          %b12 = block {  # true
+            exit_if  # if_3
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        next_iteration %b10
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b14 {
+  %b14 = block {
+    %18:void = call %main_1
+    %19:vec4<f32> = load %x_GLF_color
+    %20:main_out = construct %19
+    ret %20
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e47ec85
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,113 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%returnRed_ = func():vec4<f32> -> %b2 {
+  %b2 = block {
+    %x_33:ptr<function, bool, read_write> = var, false
+    %x_34:ptr<function, vec4<f32>, read_write> = var
+    %x_48:ptr<function, vec4<f32>, read_write> = var
+    %x_36_phi:ptr<function, bool, read_write> = var
+    %x_51_phi:ptr<function, vec4<f32>, read_write> = var
+    store %x_36_phi, false
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_48_phi:ptr<function, vec4<f32>, read_write> = var
+        %x_49_phi:ptr<function, bool, read_write> = var
+        %x_36:bool = load %x_36_phi
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %12:ptr<uniform, i32, read> = access %x_6, 0u
+            %x_44:i32 = load %12
+            %14:bool = eq %x_44, 1i
+            if %14 [t: %b7] {  # if_1
+              %b7 = block {  # true
+                store %x_33, true
+                store %x_34, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+                store %x_48_phi, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+                store %x_49_phi, true
+                exit_loop  # loop_2
+              }
+            }
+            continue %b6
+          }
+          %b6 = block {  # continuing
+            store %x_48_phi, vec4<f32>(0.0f)
+            store %x_49_phi, false
+            break_if true %b5
+          }
+        }
+        %15:vec4<f32> = load %x_48_phi
+        store %x_48, %15
+        %x_49:bool = load %x_49_phi
+        %17:vec4<f32> = load %x_48
+        store %x_51_phi, %17
+        if %x_49 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        store %x_33, true
+        store %x_34, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        store %x_51_phi, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        store %x_36_phi, false
+        next_iteration %b3
+      }
+    }
+    %x_51:vec4<f32> = load %x_51_phi
+    ret %x_51
+  }
+}
+%main_1 = func():void -> %b9 {
+  %b9 = block {
+    loop [b: %b10, c: %b11] {  # loop_3
+      %b10 = block {  # body
+        %x_30:vec4<f32> = call %returnRed_
+        store %x_GLF_color, %x_30
+        if false [t: %b12, f: %b13] {  # if_3
+          %b12 = block {  # true
+            exit_if  # if_3
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        next_iteration %b10
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b14 {
+  %b14 = block {
+    %22:void = call %main_1
+    %23:vec4<f32> = load %x_GLF_color
+    %24:main_out = construct %23
+    ret %24
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..6587b3a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,142 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_11:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %arr:ptr<function, array<i32, 2>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %9:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %10:i32 = load %9
+    store %i, %10
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %11:i32 = load %i
+        %12:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %13:i32 = load %12
+        %14:bool = lt %11, %13
+        if %14 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_50:i32 = load %i
+        %16:ptr<function, i32, read_write> = access %arr, %x_50
+        %17:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %18:i32 = load %17
+        store %16, %18
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %19:i32 = load %i
+        %20:i32 = add %19, 1i
+        store %i, %20
+        next_iteration %b3
+      }
+    }
+    store %a, -1i
+    %21:f32 = load_vector_element %gl_FragCoord, 1u
+    %22:ptr<uniform, f32, read> = access %x_11, 0u, 0i, 0u
+    %23:f32 = load %22
+    %24:bool = lt %21, %23
+    %25:bool = eq %24, false
+    if %25 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        %26:i32 = load %a
+        %x_65:i32 = add %26, 1i
+        store %a, %x_65
+        %28:ptr<function, i32, read_write> = access %arr, %x_65
+        %29:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %30:i32 = load %29
+        store %28, %30
+        exit_if  # if_2
+      }
+    }
+    %31:i32 = load %a
+    %x_70:i32 = add %31, 1i
+    store %a, %x_70
+    %33:ptr<function, i32, read_write> = access %arr, %x_70
+    %34:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %35:i32 = load %34
+    store %33, %35
+    %36:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %37:i32 = load %36
+    %38:ptr<function, i32, read_write> = access %arr, %37
+    %39:i32 = load %38
+    %40:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %41:i32 = load %40
+    %42:bool = eq %39, %41
+    if %42 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %43:i32 = load %a
+        %44:f32 = convert %43
+        %45:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %46:i32 = load %45
+        %47:f32 = convert %46
+        %48:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %49:i32 = load %48
+        %50:f32 = convert %49
+        %51:i32 = load %a
+        %52:f32 = convert %51
+        %53:vec4<f32> = construct %44, %47, %50, %52
+        store %x_GLF_color, %53
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %54:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %55:i32 = load %54
+        %56:f32 = convert %55
+        %57:vec4<f32> = construct %56
+        store %x_GLF_color, %57
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b10 {
+  %b10 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %60:void = call %main_1
+    %61:vec4<f32> = load %x_GLF_color
+    %62:main_out = construct %61
+    ret %62
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f19d5bb
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,142 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_11:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %arr:ptr<function, array<i32, 2>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %9:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %x_40:i32 = load %9
+    store %i, %x_40
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_45:i32 = load %i
+        %12:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %x_47:i32 = load %12
+        %14:bool = lt %x_45, %x_47
+        if %14 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_50:i32 = load %i
+        %16:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_52:i32 = load %16
+        %18:ptr<function, i32, read_write> = access %arr, %x_50
+        store %18, %x_52
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_54:i32 = load %i
+        %20:i32 = add %x_54, 1i
+        store %i, %20
+        next_iteration %b3
+      }
+    }
+    store %a, -1i
+    %x_57:f32 = load_vector_element %gl_FragCoord, 1u
+    %22:ptr<uniform, f32, read> = access %x_11, 0u, 0i, 0u
+    %x_59:f32 = load %22
+    %24:bool = lt %x_57, %x_59
+    %25:bool = eq %24, false
+    if %25 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        %x_64:i32 = load %a
+        %x_65:i32 = add %x_64, 1i
+        store %a, %x_65
+        %28:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_67:i32 = load %28
+        %30:ptr<function, i32, read_write> = access %arr, %x_65
+        store %30, %x_67
+        exit_if  # if_2
+      }
+    }
+    %x_69:i32 = load %a
+    %x_70:i32 = add %x_69, 1i
+    store %a, %x_70
+    %33:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %x_72:i32 = load %33
+    %35:ptr<function, i32, read_write> = access %arr, %x_70
+    store %35, %x_72
+    %36:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %x_75:i32 = load %36
+    %38:ptr<function, i32, read_write> = access %arr, %x_75
+    %x_77:i32 = load %38
+    %40:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_79:i32 = load %40
+    %42:bool = eq %x_77, %x_79
+    if %42 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %x_84:i32 = load %a
+        %44:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_87:i32 = load %44
+        %46:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_90:i32 = load %46
+        %x_92:i32 = load %a
+        %49:f32 = convert %x_84
+        %50:f32 = convert %x_87
+        %51:f32 = convert %x_90
+        %52:f32 = convert %x_92
+        %53:vec4<f32> = construct %49, %50, %51, %52
+        store %x_GLF_color, %53
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %54:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_96:i32 = load %54
+        %x_97:f32 = convert %x_96
+        %57:vec4<f32> = construct %x_97, %x_97, %x_97, %x_97
+        store %x_GLF_color, %57
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b10 {
+  %b10 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %60:void = call %main_1
+    %61:vec4<f32> = load %x_GLF_color
+    %62:main_out = construct %61
+    ret %62
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..ea06141
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,119 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %9:i32 = load %8
+    store %a, %9
+    %10:i32 = load %a
+    %11:i32 = add %10, 1i
+    store %a, %11
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %13:i32 = load %12
+    store %i, %13
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %14:i32 = load %i
+        %15:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %16:i32 = load %15
+        %17:bool = lt %14, %16
+        if %17 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %18:i32 = load %i
+        %19:f32 = convert %18
+        %20:i32 = load %a
+        %21:i32 = negation %20
+        %22:f32 = ldexp %19, %21
+        store %b, %22
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %23:i32 = load %i
+        %24:i32 = add %23, 1i
+        store %i, %24
+        next_iteration %b3
+      }
+    }
+    %25:f32 = load %b
+    %26:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
+    %27:f32 = load %26
+    %28:bool = eq %25, %27
+    if %28 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %30:i32 = load %29
+        %31:f32 = convert %30
+        %32:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %33:i32 = load %32
+        %34:f32 = convert %33
+        %35:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %36:i32 = load %35
+        %37:f32 = convert %36
+        %38:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %39:i32 = load %38
+        %40:f32 = convert %39
+        %41:vec4<f32> = construct %31, %34, %37, %40
+        store %x_GLF_color, %41
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %42:f32 = load %b
+        %43:vec4<f32> = construct %42
+        store %x_GLF_color, %43
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %45:void = call %main_1
+    %46:vec4<f32> = load %x_GLF_color
+    %47:main_out = construct %46
+    ret %47
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1acb09f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,119 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_34:i32 = load %8
+    store %a, %x_34
+    %x_35:i32 = load %a
+    %11:i32 = add %x_35, 1i
+    store %a, %11
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_38:i32 = load %12
+    store %i, %x_38
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_43:i32 = load %i
+        %15:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_45:i32 = load %15
+        %17:bool = lt %x_43, %x_45
+        if %17 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_48:i32 = load %i
+        %x_50:i32 = load %a
+        %20:f32 = convert %x_48
+        %21:i32 = negation %x_50
+        %22:f32 = ldexp %20, %21
+        store %b, %22
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_53:i32 = load %i
+        %24:i32 = add %x_53, 1i
+        store %i, %24
+        next_iteration %b3
+      }
+    }
+    %x_55:f32 = load %b
+    %26:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
+    %x_57:f32 = load %26
+    %28:bool = eq %x_55, %x_57
+    if %28 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_63:i32 = load %29
+        %31:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_66:i32 = load %31
+        %33:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_69:i32 = load %33
+        %35:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_72:i32 = load %35
+        %37:f32 = convert %x_63
+        %38:f32 = convert %x_66
+        %39:f32 = convert %x_69
+        %40:f32 = convert %x_72
+        %41:vec4<f32> = construct %37, %38, %39, %40
+        store %x_GLF_color, %41
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %x_75:f32 = load %b
+        %43:vec4<f32> = construct %x_75, %x_75, %x_75, %x_75
+        store %x_GLF_color, %43
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %45:void = call %main_1
+    %46:vec4<f32> = load %x_GLF_color
+    %47:main_out = construct %46
+    ret %47
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..30d8867
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,150 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_f1_ = func(%f:ptr<function, f32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %8:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %9:i32 = load %8
+    store %a, %9
+    %10:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+    %11:i32 = load %10
+    store %b, %11
+    %12:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+    %13:i32 = load %12
+    store %i, %13
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %14:i32 = load %i
+        %15:ptr<uniform, i32, read> = access %x_8, 0u, 4i, 0u
+        %16:i32 = load %15
+        %17:bool = lt %14, %16
+        if %17 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %18:i32 = load %a
+        %19:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+        %20:i32 = load %19
+        %21:bool = gt %18, %20
+        if %21 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %22:f32 = load %f
+        %23:i32 = convert %22
+        %24:i32 = sub %23, 1i
+        %25:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %26:i32 = load %25
+        %27:i32 = sub %24, %26
+        %28:i32 = load %i
+        %29:i32 = add %27, %28
+        store %a, %29
+        %30:i32 = load %b
+        %31:i32 = add %30, 1i
+        store %b, %31
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %32:i32 = load %i
+        %33:i32 = add %32, 1i
+        store %i, %33
+        next_iteration %b3
+      }
+    }
+    %34:i32 = load %b
+    %35:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %36:i32 = load %35
+    %37:bool = eq %34, %36
+    if %37 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %38:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_100:i32 = load %38
+        ret %x_100
+      }
+      %b9 = block {  # false
+        %40:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %x_102:i32 = load %40
+        ret %x_102
+      }
+    }
+    unreachable
+  }
+}
+%main_1 = func():void -> %b10 {
+  %b10 = block {
+    %param:ptr<function, f32, read_write> = var
+    store %param, 0.69999998807907104492f
+    %x_34:i32 = call %func_f1_, %param
+    %45:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %46:i32 = load %45
+    %47:bool = eq %x_34, %46
+    if %47 [t: %b11, f: %b12] {  # if_4
+      %b11 = block {  # true
+        %48:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %49:i32 = load %48
+        %50:f32 = convert %49
+        %51:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %52:i32 = load %51
+        %53:f32 = convert %52
+        %54:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %55:i32 = load %54
+        %56:f32 = convert %55
+        %57:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %58:i32 = load %57
+        %59:f32 = convert %58
+        %60:vec4<f32> = construct %50, %53, %56, %59
+        store %x_GLF_color, %60
+        exit_if  # if_4
+      }
+      %b12 = block {  # false
+        %61:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %62:i32 = load %61
+        %63:f32 = convert %62
+        %64:vec4<f32> = construct %63
+        store %x_GLF_color, %64
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %66:void = call %main_1
+    %67:vec4<f32> = load %x_GLF_color
+    %68:main_out = construct %67
+    ret %68
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..87b03d4b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,150 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_f1_ = func(%f:ptr<function, f32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %8:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %x_60:i32 = load %8
+    store %a, %x_60
+    %10:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+    %x_62:i32 = load %10
+    store %b, %x_62
+    %12:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+    %x_64:i32 = load %12
+    store %i, %x_64
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_69:i32 = load %i
+        %15:ptr<uniform, i32, read> = access %x_8, 0u, 4i, 0u
+        %x_71:i32 = load %15
+        %17:bool = lt %x_69, %x_71
+        if %17 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_74:i32 = load %a
+        %19:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+        %x_76:i32 = load %19
+        %21:bool = gt %x_74, %x_76
+        if %21 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %x_80:f32 = load %f
+        %23:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_84:i32 = load %23
+        %x_86:i32 = load %i
+        %26:i32 = convert %x_80
+        %27:i32 = sub %26, 1i
+        %28:i32 = sub %27, %x_84
+        %29:i32 = add %28, %x_86
+        store %a, %29
+        %x_88:i32 = load %b
+        %31:i32 = add %x_88, 1i
+        store %b, %31
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_90:i32 = load %i
+        %33:i32 = add %x_90, 1i
+        store %i, %33
+        next_iteration %b3
+      }
+    }
+    %x_92:i32 = load %b
+    %35:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_94:i32 = load %35
+    %37:bool = eq %x_92, %x_94
+    if %37 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %38:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_100:i32 = load %38
+        ret %x_100
+      }
+      %b9 = block {  # false
+        %40:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %x_102:i32 = load %40
+        ret %x_102
+      }
+    }
+    unreachable
+  }
+}
+%main_1 = func():void -> %b10 {
+  %b10 = block {
+    %param:ptr<function, f32, read_write> = var
+    store %param, 0.69999998807907104492f
+    %x_34:i32 = call %func_f1_, %param
+    %45:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %x_36:i32 = load %45
+    %47:bool = eq %x_34, %x_36
+    if %47 [t: %b11, f: %b12] {  # if_4
+      %b11 = block {  # true
+        %48:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_42:i32 = load %48
+        %50:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %x_45:i32 = load %50
+        %52:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %x_48:i32 = load %52
+        %54:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_51:i32 = load %54
+        %56:f32 = convert %x_42
+        %57:f32 = convert %x_45
+        %58:f32 = convert %x_48
+        %59:f32 = convert %x_51
+        %60:vec4<f32> = construct %56, %57, %58, %59
+        store %x_GLF_color, %60
+        exit_if  # if_4
+      }
+      %b12 = block {  # false
+        %61:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %x_55:i32 = load %61
+        %x_56:f32 = convert %x_55
+        %64:vec4<f32> = construct %x_56, %x_56, %x_56, %x_56
+        store %x_GLF_color, %64
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %66:void = call %main_1
+    %67:vec4<f32> = load %x_GLF_color
+    %68:main_out = construct %67
+    ret %68
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..fd6c252
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,144 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_12:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%f1_ = func():i32 -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %A:ptr<function, array<i32, 10>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %9:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+    %10:i32 = load %9
+    store %i, %10
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %11:i32 = load %i
+        %12:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %13:i32 = load %12
+        %14:bool = lt %11, %13
+        if %14 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_66:i32 = load %i
+        %16:ptr<function, i32, read_write> = access %A, %x_66
+        %17:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %18:i32 = load %17
+        store %16, %18
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %19:i32 = load %i
+        %20:i32 = add %19, 1i
+        store %i, %20
+        next_iteration %b3
+      }
+    }
+    store %a, -1i
+    %21:f32 = load_vector_element %gl_FragCoord, 1u
+    %22:ptr<uniform, f32, read> = access %x_12, 0u, 0i, 0u
+    %23:f32 = load %22
+    %24:bool = gte %21, %23
+    if %24 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        %25:i32 = load %a
+        %x_80:i32 = add %25, 1i
+        store %a, %x_80
+        %27:ptr<function, i32, read_write> = access %A, %x_80
+        %28:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %29:i32 = load %28
+        store %27, %29
+        exit_if  # if_2
+      }
+    }
+    %30:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+    %31:i32 = load %30
+    %32:ptr<function, i32, read_write> = access %A, %31
+    %33:i32 = load %32
+    %34:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %35:i32 = load %34
+    %36:bool = eq %33, %35
+    if %36 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %37:i32 = load %a
+        %x_95:i32 = add %37, 1i
+        store %a, %x_95
+        %39:ptr<function, i32, read_write> = access %A, %x_95
+        %x_97:i32 = load %39
+        ret %x_97
+      }
+      %b9 = block {  # false
+        %41:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_99:i32 = load %41
+        ret %x_99
+      }
+    }
+    unreachable
+  }
+}
+%main_1 = func():void -> %b10 {
+  %b10 = block {
+    %i_1:ptr<function, i32, read_write> = var
+    %x_42:i32 = call %f1_
+    store %i_1, %x_42
+    %46:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %47:i32 = load %46
+    %48:f32 = convert %47
+    %49:i32 = load %i_1
+    %50:f32 = convert %49
+    %51:i32 = load %i_1
+    %52:f32 = convert %51
+    %53:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %54:i32 = load %53
+    %55:f32 = convert %54
+    %56:vec4<f32> = construct %48, %50, %52, %55
+    store %x_GLF_color, %56
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b11 {
+  %b11 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %59:void = call %main_1
+    %60:vec4<f32> = load %x_GLF_color
+    %61:main_out = construct %60
+    ret %61
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3320d8c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,144 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_12:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%f1_ = func():i32 -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %A:ptr<function, array<i32, 10>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %9:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+    %x_56:i32 = load %9
+    store %i, %x_56
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_61:i32 = load %i
+        %12:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_63:i32 = load %12
+        %14:bool = lt %x_61, %x_63
+        if %14 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_66:i32 = load %i
+        %16:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %x_68:i32 = load %16
+        %18:ptr<function, i32, read_write> = access %A, %x_66
+        store %18, %x_68
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_70:i32 = load %i
+        %20:i32 = add %x_70, 1i
+        store %i, %20
+        next_iteration %b3
+      }
+    }
+    store %a, -1i
+    %x_73:f32 = load_vector_element %gl_FragCoord, 1u
+    %22:ptr<uniform, f32, read> = access %x_12, 0u, 0i, 0u
+    %x_75:f32 = load %22
+    %24:bool = gte %x_73, %x_75
+    if %24 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        %x_79:i32 = load %a
+        %x_80:i32 = add %x_79, 1i
+        store %a, %x_80
+        %27:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_82:i32 = load %27
+        %29:ptr<function, i32, read_write> = access %A, %x_80
+        store %29, %x_82
+        exit_if  # if_2
+      }
+    }
+    %30:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+    %x_85:i32 = load %30
+    %32:ptr<function, i32, read_write> = access %A, %x_85
+    %x_87:i32 = load %32
+    %34:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %x_89:i32 = load %34
+    %36:bool = eq %x_87, %x_89
+    if %36 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %x_94:i32 = load %a
+        %x_95:i32 = add %x_94, 1i
+        store %a, %x_95
+        %39:ptr<function, i32, read_write> = access %A, %x_95
+        %x_97:i32 = load %39
+        ret %x_97
+      }
+      %b9 = block {  # false
+        %41:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_99:i32 = load %41
+        ret %x_99
+      }
+    }
+    unreachable
+  }
+}
+%main_1 = func():void -> %b10 {
+  %b10 = block {
+    %i_1:ptr<function, i32, read_write> = var
+    %x_42:i32 = call %f1_
+    store %i_1, %x_42
+    %46:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %x_44:i32 = load %46
+    %x_46:i32 = load %i_1
+    %x_48:i32 = load %i_1
+    %50:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %x_51:i32 = load %50
+    %52:f32 = convert %x_44
+    %53:f32 = convert %x_46
+    %54:f32 = convert %x_48
+    %55:f32 = convert %x_51
+    %56:vec4<f32> = construct %52, %53, %54, %55
+    store %x_GLF_color, %56
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b11 {
+  %b11 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %59:void = call %main_1
+    %60:vec4<f32> = load %x_GLF_color
+    %61:main_out = construct %60
+    ret %61
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..41ad07b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,179 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, u32, read_write> = var
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %r:ptr<function, vec4<f32>, read_write> = var
+    %x_85:ptr<function, bool, read_write> = var
+    %x_86:ptr<function, bool, read_write> = var
+    %x_97:ptr<function, bool, read_write> = var
+    %x_98:ptr<function, bool, read_write> = var
+    %x_109:ptr<function, bool, read_write> = var
+    %x_110:ptr<function, bool, read_write> = var
+    %14:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %15:f32 = load %14
+    %16:vec4<f32> = construct %15
+    %17:u32 = pack4x8unorm %16
+    store %a, %17
+    %18:u32 = load %a
+    %19:vec4<f32> = unpack4x8snorm %18
+    store %v1, %19
+    %20:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %21:f32 = load %20
+    %22:f32 = negation %21
+    %23:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %24:f32 = load %23
+    %25:f32 = div %22, %24
+    %26:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %27:f32 = load %26
+    %28:f32 = negation %27
+    %29:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %30:f32 = load %29
+    %31:f32 = div %28, %30
+    %32:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %33:f32 = load %32
+    %34:f32 = negation %33
+    %35:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %36:f32 = load %35
+    %37:f32 = div %34, %36
+    %38:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %39:f32 = load %38
+    %40:f32 = negation %39
+    %41:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %42:f32 = load %41
+    %43:f32 = div %40, %42
+    %44:vec4<f32> = construct %25, %31, %37, %43
+    store %r, %44
+    %45:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %46:i32 = load %45
+    %47:f32 = load_vector_element %v1, %46
+    %48:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+    %49:i32 = load %48
+    %50:f32 = load_vector_element %r, %49
+    %x_74:bool = eq %47, %50
+    store %x_86, %x_74
+    if %x_74 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %52:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %53:i32 = load %52
+        %54:f32 = load_vector_element %v1, %53
+        %55:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %56:i32 = load %55
+        %57:f32 = load_vector_element %r, %56
+        %58:bool = eq %54, %57
+        store %x_85, %58
+        %59:bool = load %x_85
+        store %x_86, %59
+        exit_if  # if_1
+      }
+    }
+    %60:bool = load %x_86
+    store %x_98, %60
+    %61:bool = load %x_86
+    if %61 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %62:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %63:i32 = load %62
+        %64:f32 = load_vector_element %v1, %63
+        %65:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %66:i32 = load %65
+        %67:f32 = load_vector_element %r, %66
+        %68:bool = eq %64, %67
+        store %x_97, %68
+        %69:bool = load %x_97
+        store %x_98, %69
+        exit_if  # if_2
+      }
+    }
+    %70:bool = load %x_98
+    store %x_110, %70
+    %71:bool = load %x_98
+    if %71 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        %72:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %73:i32 = load %72
+        %74:f32 = load_vector_element %v1, %73
+        %75:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %76:i32 = load %75
+        %77:f32 = load_vector_element %r, %76
+        %78:bool = eq %74, %77
+        store %x_109, %78
+        %79:bool = load %x_109
+        store %x_110, %79
+        exit_if  # if_3
+      }
+    }
+    %80:bool = load %x_110
+    if %80 [t: %b6, f: %b7] {  # if_4
+      %b6 = block {  # true
+        %81:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %82:i32 = load %81
+        %83:f32 = convert %82
+        %84:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %85:i32 = load %84
+        %86:f32 = convert %85
+        %87:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %88:i32 = load %87
+        %89:f32 = convert %88
+        %90:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %91:i32 = load %90
+        %92:f32 = convert %91
+        %93:vec4<f32> = construct %83, %86, %89, %92
+        store %x_GLF_color, %93
+        exit_if  # if_4
+      }
+      %b7 = block {  # false
+        %94:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %95:i32 = load %94
+        %96:f32 = load_vector_element %v1, %95
+        %97:vec4<f32> = construct %96
+        store %x_GLF_color, %97
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %99:void = call %main_1
+    %100:vec4<f32> = load %x_GLF_color
+    %101:main_out = construct %100
+    ret %101
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..59a8932
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,177 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, u32, read_write> = var
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %r:ptr<function, vec4<f32>, read_write> = var
+    %x_85:ptr<function, bool, read_write> = var
+    %x_97:ptr<function, bool, read_write> = var
+    %x_109:ptr<function, bool, read_write> = var
+    %x_86_phi:ptr<function, bool, read_write> = var
+    %x_98_phi:ptr<function, bool, read_write> = var
+    %x_110_phi:ptr<function, bool, read_write> = var
+    %14:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_36:f32 = load %14
+    %16:vec4<f32> = construct %x_36, %x_36, %x_36, %x_36
+    %17:u32 = pack4x8unorm %16
+    store %a, %17
+    %x_39:u32 = load %a
+    %19:vec4<f32> = unpack4x8snorm %x_39
+    store %v1, %19
+    %20:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_42:f32 = load %20
+    %22:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_45:f32 = load %22
+    %24:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_48:f32 = load %24
+    %26:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_51:f32 = load %26
+    %28:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_54:f32 = load %28
+    %30:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_57:f32 = load %30
+    %32:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_60:f32 = load %32
+    %34:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_63:f32 = load %34
+    %36:f32 = negation %x_42
+    %37:f32 = div %36, %x_45
+    %38:f32 = negation %x_48
+    %39:f32 = div %38, %x_51
+    %40:f32 = negation %x_54
+    %41:f32 = div %40, %x_57
+    %42:f32 = negation %x_60
+    %43:f32 = div %42, %x_63
+    %44:vec4<f32> = construct %37, %39, %41, %43
+    store %r, %44
+    %45:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %x_67:i32 = load %45
+    %x_69:f32 = load_vector_element %v1, %x_67
+    %48:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+    %x_71:i32 = load %48
+    %x_73:f32 = load_vector_element %r, %x_71
+    %x_74:bool = eq %x_69, %x_73
+    store %x_86_phi, %x_74
+    if %x_74 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %52:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_78:i32 = load %52
+        %x_80:f32 = load_vector_element %v1, %x_78
+        %55:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_82:i32 = load %55
+        %x_84:f32 = load_vector_element %r, %x_82
+        %58:bool = eq %x_80, %x_84
+        store %x_85, %58
+        %59:bool = load %x_85
+        store %x_86_phi, %59
+        exit_if  # if_1
+      }
+    }
+    %x_86:bool = load %x_86_phi
+    store %x_98_phi, %x_86
+    if %x_86 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %61:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_90:i32 = load %61
+        %x_92:f32 = load_vector_element %v1, %x_90
+        %64:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_94:i32 = load %64
+        %x_96:f32 = load_vector_element %r, %x_94
+        %67:bool = eq %x_92, %x_96
+        store %x_97, %67
+        %68:bool = load %x_97
+        store %x_98_phi, %68
+        exit_if  # if_2
+      }
+    }
+    %x_98:bool = load %x_98_phi
+    store %x_110_phi, %x_98
+    if %x_98 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        %70:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_102:i32 = load %70
+        %x_104:f32 = load_vector_element %v1, %x_102
+        %73:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_106:i32 = load %73
+        %x_108:f32 = load_vector_element %r, %x_106
+        %76:bool = eq %x_104, %x_108
+        store %x_109, %76
+        %77:bool = load %x_109
+        store %x_110_phi, %77
+        exit_if  # if_3
+      }
+    }
+    %x_110:bool = load %x_110_phi
+    if %x_110 [t: %b6, f: %b7] {  # if_4
+      %b6 = block {  # true
+        %79:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_115:i32 = load %79
+        %81:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_118:i32 = load %81
+        %83:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_121:i32 = load %83
+        %85:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_124:i32 = load %85
+        %87:f32 = convert %x_115
+        %88:f32 = convert %x_118
+        %89:f32 = convert %x_121
+        %90:f32 = convert %x_124
+        %91:vec4<f32> = construct %87, %88, %89, %90
+        store %x_GLF_color, %91
+        exit_if  # if_4
+      }
+      %b7 = block {  # false
+        %92:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_128:i32 = load %92
+        %x_130:f32 = load_vector_element %v1, %x_128
+        %95:vec4<f32> = construct %x_130, %x_130, %x_130, %x_130
+        store %x_GLF_color, %95
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %97:void = call %main_1
+    %98:vec4<f32> = load %x_GLF_color
+    %99:main_out = construct %98
+    ret %99
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..119277b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,96 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %data:ptr<function, array<f32, 2>, read_write> = var
+    %a:ptr<function, f32, read_write> = var
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_33:i32 = load %7
+    %9:ptr<function, f32, read_write> = access %data, %x_33
+    %10:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %11:f32 = load %10
+    store %9, %11
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_38:i32 = load %12
+    %14:ptr<function, f32, read_write> = access %data, %x_38
+    %15:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %16:f32 = load %15
+    store %14, %16
+    %17:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %18:i32 = load %17
+    %19:i32 = and %18, 2i
+    %20:i32 = xor 1i, %19
+    %21:ptr<function, f32, read_write> = access %data, %20
+    %22:f32 = load %21
+    store %a, %22
+    %23:f32 = load %a
+    %24:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %25:f32 = load %24
+    %26:bool = eq %23, %25
+    if %26 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %27:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+        %28:f32 = load %27
+        %29:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %30:f32 = load %29
+        %31:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %32:f32 = load %31
+        %33:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+        %34:f32 = load %33
+        %35:vec4<f32> = construct %28, %30, %32, %34
+        store %x_GLF_color, %35
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %36:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %37:f32 = load %36
+        %38:vec4<f32> = construct %37
+        store %x_GLF_color, %38
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %40:void = call %main_1
+    %41:vec4<f32> = load %x_GLF_color
+    %42:main_out = construct %41
+    ret %42
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..16f89d1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,96 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %data:ptr<function, array<f32, 2>, read_write> = var
+    %a:ptr<function, f32, read_write> = var
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_33:i32 = load %7
+    %9:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_35:f32 = load %9
+    %11:ptr<function, f32, read_write> = access %data, %x_33
+    store %11, %x_35
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_38:i32 = load %12
+    %14:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %x_40:f32 = load %14
+    %16:ptr<function, f32, read_write> = access %data, %x_38
+    store %16, %x_40
+    %17:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_43:i32 = load %17
+    %19:i32 = and %x_43, 2i
+    %20:i32 = xor 1i, %19
+    %21:ptr<function, f32, read_write> = access %data, %20
+    %x_47:f32 = load %21
+    store %a, %x_47
+    %x_48:f32 = load %a
+    %24:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %x_50:f32 = load %24
+    %26:bool = eq %x_48, %x_50
+    if %26 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %27:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+        %x_56:f32 = load %27
+        %29:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %x_58:f32 = load %29
+        %31:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %x_60:f32 = load %31
+        %33:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+        %x_62:f32 = load %33
+        %35:vec4<f32> = construct %x_56, %x_58, %x_60, %x_62
+        store %x_GLF_color, %35
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %36:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %x_65:f32 = load %36
+        %38:vec4<f32> = construct %x_65, %x_65, %x_65, %x_65
+        store %x_GLF_color, %38
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %40:void = call %main_1
+    %41:vec4<f32> = load %x_GLF_color
+    %42:main_out = construct %41
+    ret %42
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..227c604
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,91 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+    %6:f32 = load %5
+    %7:f32 = ldexp %6, 10000i
+    %8:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+    %9:f32 = load %8
+    %10:bool = eq %7, %9
+    if %10 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %11:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %12:i32 = load %11
+        %13:f32 = convert %12
+        %14:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %15:i32 = load %14
+        %16:f32 = convert %15
+        %17:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %18:i32 = load %17
+        %19:f32 = convert %18
+        %20:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %21:i32 = load %20
+        %22:f32 = convert %21
+        %23:vec4<f32> = construct %13, %16, %19, %22
+        store %x_GLF_color, %23
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %24:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %25:i32 = load %24
+        %26:f32 = convert %25
+        %27:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %28:i32 = load %27
+        %29:f32 = convert %28
+        %30:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %31:i32 = load %30
+        %32:f32 = convert %31
+        %33:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %34:i32 = load %33
+        %35:f32 = convert %34
+        %36:vec4<f32> = construct %26, %29, %32, %35
+        store %x_GLF_color, %36
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %38:void = call %main_1
+    %39:vec4<f32> = load %x_GLF_color
+    %40:main_out = construct %39
+    ret %40
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6bdace5
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,91 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+    %x_29:f32 = load %5
+    %7:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+    %x_32:f32 = load %7
+    %9:f32 = ldexp %x_29, 10000i
+    %10:bool = eq %9, %x_32
+    if %10 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %11:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_38:i32 = load %11
+        %13:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_41:i32 = load %13
+        %15:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_44:i32 = load %15
+        %17:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_47:i32 = load %17
+        %19:f32 = convert %x_38
+        %20:f32 = convert %x_41
+        %21:f32 = convert %x_44
+        %22:f32 = convert %x_47
+        %23:vec4<f32> = construct %19, %20, %21, %22
+        store %x_GLF_color, %23
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %24:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_51:i32 = load %24
+        %26:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_54:i32 = load %26
+        %28:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_57:i32 = load %28
+        %30:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_60:i32 = load %30
+        %32:f32 = convert %x_51
+        %33:f32 = convert %x_54
+        %34:f32 = convert %x_57
+        %35:f32 = convert %x_60
+        %36:vec4<f32> = construct %32, %33, %34, %35
+        store %x_GLF_color, %36
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %38:void = call %main_1
+    %39:vec4<f32> = load %x_GLF_color
+    %40:main_out = construct %39
+    ret %40
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b9f17fb
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,128 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_14:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%f1_f1_ = func(%a:ptr<function, f32, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %b:ptr<function, i32, read_write> = var
+    %c:ptr<function, f32, read_write> = var
+    store %b, 8i
+    %9:f32 = load_vector_element %gl_FragCoord, 1u
+    %10:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+    %11:f32 = load %10
+    %12:bool = gte %9, %11
+    if %12 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %13:i32 = load %b
+        %14:i32 = add %13, 1i
+        store %b, %14
+        %15:i32 = load %b
+        %16:i32 = add %15, 1i
+        store %b, %16
+        exit_if  # if_1
+      }
+    }
+    %17:f32 = load %a
+    %18:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+    %19:f32 = load %18
+    %20:bool = lt %17, %19
+    if %20 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %21:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+        %x_88:f32 = load %21
+        ret %x_88
+      }
+    }
+    %23:i32 = load %b
+    %24:i32 = clamp %23, 0i, 2i
+    %25:f32 = convert %24
+    store %c, %25
+    %x_92:f32 = load %c
+    ret %x_92
+  }
+}
+%main_1 = func():void -> %b5 {
+  %b5 = block {
+    %a_1:ptr<function, f32, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %30:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+    %31:f32 = load %30
+    store %param, %31
+    %x_44:f32 = call %f1_f1_, %param
+    store %a_1, %x_44
+    %33:f32 = load %a_1
+    %34:ptr<uniform, f32, read> = access %x_9, 0u, 2i, 0u
+    %35:f32 = load %34
+    %36:bool = eq %33, %35
+    if %36 [t: %b6, f: %b7] {  # if_3
+      %b6 = block {  # true
+        %37:ptr<uniform, i32, read> = access %x_14, 0u, 1i, 0u
+        %38:i32 = load %37
+        %39:f32 = convert %38
+        %40:ptr<uniform, i32, read> = access %x_14, 0u, 0i, 0u
+        %41:i32 = load %40
+        %42:f32 = convert %41
+        %43:ptr<uniform, i32, read> = access %x_14, 0u, 0i, 0u
+        %44:i32 = load %43
+        %45:f32 = convert %44
+        %46:ptr<uniform, i32, read> = access %x_14, 0u, 1i, 0u
+        %47:i32 = load %46
+        %48:f32 = convert %47
+        %49:vec4<f32> = construct %39, %42, %45, %48
+        store %x_GLF_color, %49
+        exit_if  # if_3
+      }
+      %b7 = block {  # false
+        %50:ptr<uniform, i32, read> = access %x_14, 0u, 0i, 0u
+        %51:i32 = load %50
+        %52:f32 = convert %51
+        %53:vec4<f32> = construct %52
+        store %x_GLF_color, %53
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b8 {
+  %b8 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %56:void = call %main_1
+    %57:vec4<f32> = load %x_GLF_color
+    %58:main_out = construct %57
+    ret %58
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3d14efa
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,128 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_14:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%f1_f1_ = func(%a:ptr<function, f32, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %b:ptr<function, i32, read_write> = var
+    %c:ptr<function, f32, read_write> = var
+    store %b, 8i
+    %x_71:f32 = load_vector_element %gl_FragCoord, 1u
+    %10:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+    %x_73:f32 = load %10
+    %12:bool = gte %x_71, %x_73
+    if %12 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_77:i32 = load %b
+        %14:i32 = add %x_77, 1i
+        store %b, %14
+        %x_79:i32 = load %b
+        %16:i32 = add %x_79, 1i
+        store %b, %16
+        exit_if  # if_1
+      }
+    }
+    %x_81:f32 = load %a
+    %18:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+    %x_83:f32 = load %18
+    %20:bool = lt %x_81, %x_83
+    if %20 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %21:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+        %x_88:f32 = load %21
+        ret %x_88
+      }
+    }
+    %x_89:i32 = load %b
+    %24:i32 = clamp %x_89, 0i, 2i
+    %25:f32 = convert %24
+    store %c, %25
+    %x_92:f32 = load %c
+    ret %x_92
+  }
+}
+%main_1 = func():void -> %b5 {
+  %b5 = block {
+    %a_1:ptr<function, f32, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %30:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+    %x_43:f32 = load %30
+    store %param, %x_43
+    %x_44:f32 = call %f1_f1_, %param
+    store %a_1, %x_44
+    %x_45:f32 = load %a_1
+    %34:ptr<uniform, f32, read> = access %x_9, 0u, 2i, 0u
+    %x_47:f32 = load %34
+    %36:bool = eq %x_45, %x_47
+    if %36 [t: %b6, f: %b7] {  # if_3
+      %b6 = block {  # true
+        %37:ptr<uniform, i32, read> = access %x_14, 0u, 1i, 0u
+        %x_53:i32 = load %37
+        %39:ptr<uniform, i32, read> = access %x_14, 0u, 0i, 0u
+        %x_56:i32 = load %39
+        %41:ptr<uniform, i32, read> = access %x_14, 0u, 0i, 0u
+        %x_59:i32 = load %41
+        %43:ptr<uniform, i32, read> = access %x_14, 0u, 1i, 0u
+        %x_62:i32 = load %43
+        %45:f32 = convert %x_53
+        %46:f32 = convert %x_56
+        %47:f32 = convert %x_59
+        %48:f32 = convert %x_62
+        %49:vec4<f32> = construct %45, %46, %47, %48
+        store %x_GLF_color, %49
+        exit_if  # if_3
+      }
+      %b7 = block {  # false
+        %50:ptr<uniform, i32, read> = access %x_14, 0u, 0i, 0u
+        %x_66:i32 = load %50
+        %x_67:f32 = convert %x_66
+        %53:vec4<f32> = construct %x_67, %x_67, %x_67, %x_67
+        store %x_GLF_color, %53
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b8 {
+  %b8 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %56:void = call %main_1
+    %57:vec4<f32> = load %x_GLF_color
+    %58:main_out = construct %57
+    ret %58
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..bcd5434
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,100 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %8:f32 = load_vector_element %gl_FragCoord, 1u
+    %9:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %10:f32 = load %9
+    %11:bool = gte %8, %10
+    %12:i32 = select 2i, 0i, %11
+    store %a, %12
+    %13:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %14:f32 = load %13
+    %15:ptr<uniform, f32, read> = access %x_7, 0u, 2i, 0u
+    %16:f32 = load %15
+    %17:ptr<uniform, f32, read> = access %x_7, 0u, 3i, 0u
+    %18:f32 = load %17
+    %19:vec3<f32> = construct %14, %16, %18
+    %20:i32 = load %a
+    %21:f32 = access %19, %20
+    store %b, %21
+    %22:f32 = load %b
+    %23:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %24:f32 = load %23
+    %25:bool = eq %22, %24
+    if %25 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %26:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %27:i32 = load %26
+        %28:f32 = convert %27
+        %29:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %30:i32 = load %29
+        %31:f32 = convert %30
+        %32:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %33:i32 = load %32
+        %34:f32 = convert %33
+        %35:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %36:i32 = load %35
+        %37:f32 = convert %36
+        %38:vec4<f32> = construct %28, %31, %34, %37
+        store %x_GLF_color, %38
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %39:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %40:i32 = load %39
+        %41:f32 = convert %40
+        %42:vec4<f32> = construct %41
+        store %x_GLF_color, %42
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b5 {
+  %b5 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %45:void = call %main_1
+    %46:vec4<f32> = load %x_GLF_color
+    %47:main_out = construct %46
+    ret %47
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7d23c68
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,100 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %x_39:f32 = load_vector_element %gl_FragCoord, 1u
+    %9:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_41:f32 = load %9
+    %11:bool = gte %x_39, %x_41
+    %12:i32 = select 2i, 0i, %11
+    store %a, %12
+    %13:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_45:f32 = load %13
+    %15:ptr<uniform, f32, read> = access %x_7, 0u, 2i, 0u
+    %x_47:f32 = load %15
+    %17:ptr<uniform, f32, read> = access %x_7, 0u, 3i, 0u
+    %x_49:f32 = load %17
+    %x_51:i32 = load %a
+    %20:vec3<f32> = construct %x_45, %x_47, %x_49
+    %21:f32 = access %20, %x_51
+    store %b, %21
+    %x_53:f32 = load %b
+    %23:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_55:f32 = load %23
+    %25:bool = eq %x_53, %x_55
+    if %25 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %26:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_61:i32 = load %26
+        %28:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_64:i32 = load %28
+        %30:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_67:i32 = load %30
+        %32:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_70:i32 = load %32
+        %34:f32 = convert %x_61
+        %35:f32 = convert %x_64
+        %36:f32 = convert %x_67
+        %37:f32 = convert %x_70
+        %38:vec4<f32> = construct %34, %35, %36, %37
+        store %x_GLF_color, %38
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %39:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_74:i32 = load %39
+        %x_75:f32 = convert %x_74
+        %42:vec4<f32> = construct %x_75, %x_75, %x_75, %x_75
+        store %x_GLF_color, %42
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b5 {
+  %b5 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %45:void = call %main_1
+    %46:vec4<f32> = load %x_GLF_color
+    %47:main_out = construct %46
+    ret %47
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..5d298f9
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,100 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %7:i32 = load %6
+    store %i, %7
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %8:i32 = load %i
+        %9:bool = gte %8, 0i
+        if %9 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %10:i32 = load %i
+        %11:i32 = mod %10, 2i
+        %12:bool = eq %11, 0i
+        if %12 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %13:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+            %14:i32 = load %13
+            %15:f32 = convert %14
+            %16:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+            %17:i32 = load %16
+            %18:f32 = convert %17
+            %19:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %20:i32 = load %19
+            %21:f32 = convert %20
+            %22:vec4<f32> = construct 1.0f, %15, %18, %21
+            store %x_GLF_color, %22
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %23:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+            %24:f32 = load %23
+            %25:vec4<f32> = construct %24
+            store %x_GLF_color, %25
+            exit_if  # if_2
+          }
+        }
+        %26:i32 = load %i
+        %27:i32 = sub %26, 1i
+        store %i, %27
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %29:void = call %main_1
+    %30:vec4<f32> = load %x_GLF_color
+    %31:main_out = construct %30
+    ret %31
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7886fe4
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,100 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_32:i32 = load %6
+    store %i, %x_32
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_37:i32 = load %i
+        %9:bool = gte %x_37, 0i
+        if %9 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_40:i32 = load %i
+        %11:i32 = mod %x_40, 2i
+        %12:bool = eq %11, 0i
+        if %12 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %13:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+            %x_47:i32 = load %13
+            %15:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+            %x_50:i32 = load %15
+            %17:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %x_53:i32 = load %17
+            %19:f32 = convert %x_47
+            %20:f32 = convert %x_50
+            %21:f32 = convert %x_53
+            %22:vec4<f32> = construct 1.0f, %19, %20, %21
+            store %x_GLF_color, %22
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %23:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+            %x_57:f32 = load %23
+            %25:vec4<f32> = construct %x_57, %x_57, %x_57, %x_57
+            store %x_GLF_color, %25
+            exit_if  # if_2
+          }
+        }
+        %x_59:i32 = load %i
+        %27:i32 = sub %x_59, 1i
+        store %i, %27
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %29:void = call %main_1
+    %30:vec4<f32> = load %x_GLF_color
+    %31:main_out = construct %30
+    ret %31
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b19ecfd
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,177 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 7> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, u32, read_write> = var
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %E:ptr<function, f32, read_write> = var
+    %x_75:ptr<function, bool, read_write> = var
+    %x_76:ptr<function, bool, read_write> = var
+    %x_92:ptr<function, bool, read_write> = var
+    %x_93:ptr<function, bool, read_write> = var
+    %x_109:ptr<function, bool, read_write> = var
+    %x_110:ptr<function, bool, read_write> = var
+    %14:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %15:f32 = load %14
+    %16:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %17:f32 = load %16
+    %18:vec2<f32> = construct %15, %17
+    %19:u32 = pack2x16unorm %18
+    store %a, %19
+    %20:u32 = load %a
+    %21:vec4<f32> = unpack4x8snorm %20
+    store %v1, %21
+    store %E, 0.00999999977648258209f
+    %22:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+    %23:i32 = load %22
+    %24:f32 = load_vector_element %v1, %23
+    %25:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %26:f32 = load %25
+    %27:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+    %28:f32 = load %27
+    %29:f32 = div %26, %28
+    %30:f32 = sub %24, %29
+    %31:f32 = abs %30
+    %32:f32 = load %E
+    %x_60:bool = lt %31, %32
+    store %x_76, %x_60
+    if %x_60 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %34:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %35:i32 = load %34
+        %36:f32 = load_vector_element %v1, %35
+        %37:ptr<uniform, f32, read> = access %x_6, 0u, 4i, 0u
+        %38:f32 = load %37
+        %39:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %40:f32 = load %39
+        %41:f32 = div %38, %40
+        %42:f32 = sub %36, %41
+        %43:f32 = abs %42
+        %44:f32 = load %E
+        %45:bool = lt %43, %44
+        store %x_75, %45
+        %46:bool = load %x_75
+        store %x_76, %46
+        exit_if  # if_1
+      }
+    }
+    %47:bool = load %x_76
+    store %x_93, %47
+    %48:bool = load %x_76
+    if %48 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %49:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %50:i32 = load %49
+        %51:f32 = load_vector_element %v1, %50
+        %52:ptr<uniform, f32, read> = access %x_6, 0u, 5i, 0u
+        %53:f32 = load %52
+        %54:f32 = negation %53
+        %55:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %56:f32 = load %55
+        %57:f32 = div %54, %56
+        %58:f32 = sub %51, %57
+        %59:f32 = abs %58
+        %60:f32 = load %E
+        %61:bool = lt %59, %60
+        store %x_92, %61
+        %62:bool = load %x_92
+        store %x_93, %62
+        exit_if  # if_2
+      }
+    }
+    %63:bool = load %x_93
+    store %x_110, %63
+    %64:bool = load %x_93
+    if %64 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        %65:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %66:i32 = load %65
+        %67:f32 = load_vector_element %v1, %66
+        %68:ptr<uniform, f32, read> = access %x_6, 0u, 6i, 0u
+        %69:f32 = load %68
+        %70:f32 = negation %69
+        %71:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %72:f32 = load %71
+        %73:f32 = div %70, %72
+        %74:f32 = sub %67, %73
+        %75:f32 = abs %74
+        %76:f32 = load %E
+        %77:bool = lt %75, %76
+        store %x_109, %77
+        %78:bool = load %x_109
+        store %x_110, %78
+        exit_if  # if_3
+      }
+    }
+    %79:bool = load %x_110
+    if %79 [t: %b6, f: %b7] {  # if_4
+      %b6 = block {  # true
+        %80:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %81:i32 = load %80
+        %82:f32 = convert %81
+        %83:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %84:i32 = load %83
+        %85:f32 = convert %84
+        %86:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %87:i32 = load %86
+        %88:f32 = convert %87
+        %89:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %90:i32 = load %89
+        %91:f32 = convert %90
+        %92:vec4<f32> = construct %82, %85, %88, %91
+        store %x_GLF_color, %92
+        exit_if  # if_4
+      }
+      %b7 = block {  # false
+        %93:ptr<uniform, f32, read> = access %x_6, 0u, 5i, 0u
+        %94:f32 = load %93
+        %95:vec4<f32> = construct %94
+        store %x_GLF_color, %95
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %97:void = call %main_1
+    %98:vec4<f32> = load %x_GLF_color
+    %99:main_out = construct %98
+    ret %99
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9b48dfd
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,175 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 7> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, u32, read_write> = var
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %E:ptr<function, f32, read_write> = var
+    %x_75:ptr<function, bool, read_write> = var
+    %x_92:ptr<function, bool, read_write> = var
+    %x_109:ptr<function, bool, read_write> = var
+    %x_76_phi:ptr<function, bool, read_write> = var
+    %x_93_phi:ptr<function, bool, read_write> = var
+    %x_110_phi:ptr<function, bool, read_write> = var
+    %14:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_41:f32 = load %14
+    %16:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_43:f32 = load %16
+    %18:vec2<f32> = construct %x_41, %x_43
+    %19:u32 = pack2x16unorm %18
+    store %a, %19
+    %x_46:u32 = load %a
+    %21:vec4<f32> = unpack4x8snorm %x_46
+    store %v1, %21
+    store %E, 0.00999999977648258209f
+    %22:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+    %x_49:i32 = load %22
+    %x_51:f32 = load_vector_element %v1, %x_49
+    %25:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %x_53:f32 = load %25
+    %27:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+    %x_55:f32 = load %27
+    %x_59:f32 = load %E
+    %30:f32 = div %x_53, %x_55
+    %31:f32 = sub %x_51, %30
+    %32:f32 = abs %31
+    %x_60:bool = lt %32, %x_59
+    store %x_76_phi, %x_60
+    if %x_60 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %34:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_64:i32 = load %34
+        %x_66:f32 = load_vector_element %v1, %x_64
+        %37:ptr<uniform, f32, read> = access %x_6, 0u, 4i, 0u
+        %x_68:f32 = load %37
+        %39:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %x_70:f32 = load %39
+        %x_74:f32 = load %E
+        %42:f32 = div %x_68, %x_70
+        %43:f32 = sub %x_66, %42
+        %44:f32 = abs %43
+        %45:bool = lt %44, %x_74
+        store %x_75, %45
+        %46:bool = load %x_75
+        store %x_76_phi, %46
+        exit_if  # if_1
+      }
+    }
+    %x_76:bool = load %x_76_phi
+    store %x_93_phi, %x_76
+    if %x_76 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %48:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_80:i32 = load %48
+        %x_82:f32 = load_vector_element %v1, %x_80
+        %51:ptr<uniform, f32, read> = access %x_6, 0u, 5i, 0u
+        %x_84:f32 = load %51
+        %53:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %x_87:f32 = load %53
+        %x_91:f32 = load %E
+        %56:f32 = negation %x_84
+        %57:f32 = div %56, %x_87
+        %58:f32 = sub %x_82, %57
+        %59:f32 = abs %58
+        %60:bool = lt %59, %x_91
+        store %x_92, %60
+        %61:bool = load %x_92
+        store %x_93_phi, %61
+        exit_if  # if_2
+      }
+    }
+    %x_93:bool = load %x_93_phi
+    store %x_110_phi, %x_93
+    if %x_93 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        %63:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_97:i32 = load %63
+        %x_99:f32 = load_vector_element %v1, %x_97
+        %66:ptr<uniform, f32, read> = access %x_6, 0u, 6i, 0u
+        %x_101:f32 = load %66
+        %68:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %x_104:f32 = load %68
+        %x_108:f32 = load %E
+        %71:f32 = negation %x_101
+        %72:f32 = div %71, %x_104
+        %73:f32 = sub %x_99, %72
+        %74:f32 = abs %73
+        %75:bool = lt %74, %x_108
+        store %x_109, %75
+        %76:bool = load %x_109
+        store %x_110_phi, %76
+        exit_if  # if_3
+      }
+    }
+    %x_110:bool = load %x_110_phi
+    if %x_110 [t: %b6, f: %b7] {  # if_4
+      %b6 = block {  # true
+        %78:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_115:i32 = load %78
+        %80:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_118:i32 = load %80
+        %82:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_121:i32 = load %82
+        %84:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_124:i32 = load %84
+        %86:f32 = convert %x_115
+        %87:f32 = convert %x_118
+        %88:f32 = convert %x_121
+        %89:f32 = convert %x_124
+        %90:vec4<f32> = construct %86, %87, %88, %89
+        store %x_GLF_color, %90
+        exit_if  # if_4
+      }
+      %b7 = block {  # false
+        %91:ptr<uniform, f32, read> = access %x_6, 0u, 5i, 0u
+        %x_128:f32 = load %91
+        %93:vec4<f32> = construct %x_128, %x_128, %x_128, %x_128
+        store %x_GLF_color, %93
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %95:void = call %main_1
+    %96:vec4<f32> = load %x_GLF_color
+    %97:main_out = construct %96
+    ret %97
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..ee43eee
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,118 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %8:i32 = load %7
+    %9:f32 = convert %8
+    %10:vec4<f32> = construct %9
+    store %x_GLF_color, %10
+    %11:f32 = load_vector_element %gl_FragCoord, 1u
+    %12:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+    %13:f32 = load %12
+    %14:bool = gte %11, %13
+    %15:i32 = select 1i, 2i, %14
+    %16:u32 = bitcast %15
+    %17:i32 = shiftl 1i, %16
+    store %i, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_57:ptr<function, bool, read_write> = var
+        %x_58:ptr<function, bool, read_write> = var
+        %20:i32 = load %i
+        %21:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %22:i32 = load %21
+        %x_51:bool = neq %20, %22
+        store %x_58, %x_51
+        if %x_51 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            %24:i32 = load %i
+            %25:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %26:i32 = load %25
+            %27:bool = lt %24, %26
+            store %x_57, %27
+            %28:bool = load %x_57
+            store %x_58, %28
+            exit_if  # if_1
+          }
+        }
+        %29:bool = load %x_58
+        if %29 [t: %b6, f: %b7] {  # if_2
+          %b6 = block {  # true
+            exit_if  # if_2
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %30:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %31:i32 = load %30
+        %32:f32 = convert %31
+        %33:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %34:i32 = load %33
+        %35:f32 = convert %34
+        %36:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %37:i32 = load %36
+        %38:f32 = convert %37
+        %39:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %40:i32 = load %39
+        %41:f32 = convert %40
+        %42:vec4<f32> = construct %32, %35, %38, %41
+        store %x_GLF_color, %42
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %43:i32 = load %i
+        %44:i32 = add %43, 1i
+        store %i, %44
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b8 {
+  %b8 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %47:void = call %main_1
+    %48:vec4<f32> = load %x_GLF_color
+    %49:main_out = construct %48
+    ret %49
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d4212cb
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,118 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_34:i32 = load %7
+    %x_35:f32 = convert %x_34
+    %10:vec4<f32> = construct %x_35, %x_35, %x_35, %x_35
+    store %x_GLF_color, %10
+    %x_38:f32 = load_vector_element %gl_FragCoord, 1u
+    %12:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+    %x_40:f32 = load %12
+    %14:bool = gte %x_38, %x_40
+    %15:i32 = select 1i, 2i, %14
+    %16:u32 = bitcast %15
+    %17:i32 = shiftl 1i, %16
+    store %i, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_57:ptr<function, bool, read_write> = var
+        %x_58_phi:ptr<function, bool, read_write> = var
+        %x_48:i32 = load %i
+        %21:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_50:i32 = load %21
+        %x_51:bool = neq %x_48, %x_50
+        store %x_58_phi, %x_51
+        if %x_51 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            %x_54:i32 = load %i
+            %25:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %x_56:i32 = load %25
+            %27:bool = lt %x_54, %x_56
+            store %x_57, %27
+            %28:bool = load %x_57
+            store %x_58_phi, %28
+            exit_if  # if_1
+          }
+        }
+        %x_58:bool = load %x_58_phi
+        if %x_58 [t: %b6, f: %b7] {  # if_2
+          %b6 = block {  # true
+            exit_if  # if_2
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %30:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_61:i32 = load %30
+        %32:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_64:i32 = load %32
+        %34:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_67:i32 = load %34
+        %36:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_70:i32 = load %36
+        %38:f32 = convert %x_61
+        %39:f32 = convert %x_64
+        %40:f32 = convert %x_67
+        %41:f32 = convert %x_70
+        %42:vec4<f32> = construct %38, %39, %40, %41
+        store %x_GLF_color, %42
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_73:i32 = load %i
+        %44:i32 = add %x_73, 1i
+        store %i, %44
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b8 {
+  %b8 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %47:void = call %main_1
+    %48:vec4<f32> = load %x_GLF_color
+    %49:main_out = construct %48
+    ret %49
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..98fa981
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,180 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %A:ptr<function, array<i32, 2>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %v1:ptr<function, vec2<f32>, read_write> = var
+    %v2:ptr<function, vec2<f32>, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %11:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_46:i32 = load %11
+    %13:ptr<function, i32, read_write> = access %A, %x_46
+    %14:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %15:i32 = load %14
+    store %13, %15
+    %16:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_51:i32 = load %16
+    %18:ptr<function, i32, read_write> = access %A, %x_51
+    %19:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %20:i32 = load %19
+    store %18, %20
+    %21:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %22:i32 = load %21
+    store %i, %22
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %23:i32 = load %i
+        %24:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %25:i32 = load %24
+        %26:bool = gt %23, %25
+        if %26 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %27:i32 = load %i
+        %28:i32 = sub %27, 1i
+        store %i, %28
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %29:i32 = load %i
+    %30:ptr<uniform, f32, read> = access %x_10, 0u, 1i, 0u
+    %31:f32 = load %30
+    %32:ptr<uniform, f32, read> = access %x_10, 0u, 1i, 0u
+    %33:f32 = load %32
+    %34:bool = gte %31, %33
+    %35:i32 = select %29, 1i, %34
+    %36:ptr<function, i32, read_write> = access %A, %35
+    %37:i32 = load %36
+    store %a, %37
+    %38:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %39:i32 = load %38
+    %40:f32 = convert %39
+    %41:i32 = load %a
+    %42:f32 = convert %41
+    %43:vec2<f32> = construct %40, %42
+    %44:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %45:i32 = load %44
+    %46:f32 = convert %45
+    %47:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %48:i32 = load %47
+    %49:f32 = convert %48
+    %50:vec2<f32> = construct %46, %49
+    %51:ptr<uniform, f32, read> = access %x_10, 0u, 1i, 0u
+    %52:f32 = load %51
+    %53:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
+    %54:f32 = load %53
+    %55:bool = lt %52, %54
+    %56:vec2<bool> = construct %55, true
+    %57:vec2<f32> = select %43, %50, %56
+    store %v1, %57
+    %58:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %59:i32 = load %58
+    %60:f32 = load_vector_element %v1, %59
+    %61:vec2<f32> = construct %60
+    %62:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %63:i32 = load %62
+    %64:f32 = load_vector_element %v1, %63
+    %65:vec2<f32> = construct %64
+    %66:vec2<f32> = select %61, %65, vec2<bool>(false)
+    store %v2, %66
+    %67:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %68:i32 = load %67
+    %69:f32 = convert %68
+    %70:vec2<f32> = construct %69
+    %71:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %72:i32 = load %71
+    %73:f32 = convert %72
+    %74:vec2<f32> = construct %73
+    %75:vec2<f32> = load %v2
+    %76:vec2<f32> = clamp %70, %74, %75
+    %77:f32 = access %76, 0u
+    %78:i32 = convert %77
+    %79:ptr<function, i32, read_write> = access %A, %78
+    %80:i32 = load %79
+    store %b, %80
+    %81:i32 = load %b
+    %82:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %83:i32 = load %82
+    %84:bool = eq %81, %83
+    if %84 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %85:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %86:i32 = load %85
+        %87:f32 = convert %86
+        %88:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %89:i32 = load %88
+        %90:f32 = convert %89
+        %91:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %92:i32 = load %91
+        %93:f32 = convert %92
+        %94:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %95:i32 = load %94
+        %96:f32 = convert %95
+        %97:vec4<f32> = construct %87, %90, %93, %96
+        store %x_GLF_color, %97
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %98:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %99:i32 = load %98
+        %100:f32 = convert %99
+        %101:vec4<f32> = construct %100
+        store %x_GLF_color, %101
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %103:void = call %main_1
+    %104:vec4<f32> = load %x_GLF_color
+    %105:main_out = construct %104
+    ret %105
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1725006
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,180 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %A:ptr<function, array<i32, 2>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %v1:ptr<function, vec2<f32>, read_write> = var
+    %v2:ptr<function, vec2<f32>, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %11:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_46:i32 = load %11
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_48:i32 = load %13
+    %15:ptr<function, i32, read_write> = access %A, %x_46
+    store %15, %x_48
+    %16:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_51:i32 = load %16
+    %18:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_53:i32 = load %18
+    %20:ptr<function, i32, read_write> = access %A, %x_51
+    store %20, %x_53
+    %21:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_56:i32 = load %21
+    store %i, %x_56
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_61:i32 = load %i
+        %24:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_63:i32 = load %24
+        %26:bool = gt %x_61, %x_63
+        if %26 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_66:i32 = load %i
+        %28:i32 = sub %x_66, 1i
+        store %i, %28
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %29:ptr<uniform, f32, read> = access %x_10, 0u, 1i, 0u
+    %x_69:f32 = load %29
+    %31:ptr<uniform, f32, read> = access %x_10, 0u, 1i, 0u
+    %x_71:f32 = load %31
+    %x_73:i32 = load %i
+    %34:bool = gte %x_69, %x_71
+    %35:i32 = select %x_73, 1i, %34
+    %36:ptr<function, i32, read_write> = access %A, %35
+    %x_76:i32 = load %36
+    store %a, %x_76
+    %38:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_78:i32 = load %38
+    %x_80:i32 = load %a
+    %41:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_84:i32 = load %41
+    %43:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_87:i32 = load %43
+    %45:ptr<uniform, f32, read> = access %x_10, 0u, 1i, 0u
+    %x_91:f32 = load %45
+    %47:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
+    %x_93:f32 = load %47
+    %49:f32 = convert %x_78
+    %50:f32 = convert %x_80
+    %51:vec2<f32> = construct %49, %50
+    %52:f32 = convert %x_84
+    %53:f32 = convert %x_87
+    %54:vec2<f32> = construct %52, %53
+    %55:bool = lt %x_91, %x_93
+    %56:vec2<bool> = construct %55, true
+    %57:vec2<f32> = select %51, %54, %56
+    store %v1, %57
+    %58:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_98:i32 = load %58
+    %x_100:f32 = load_vector_element %v1, %x_98
+    %61:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_103:i32 = load %61
+    %x_105:f32 = load_vector_element %v1, %x_103
+    %64:vec2<f32> = construct %x_100, %x_100
+    %65:vec2<f32> = construct %x_105, %x_105
+    %66:vec2<f32> = select %64, %65, vec2<bool>(false)
+    store %v2, %66
+    %67:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_109:i32 = load %67
+    %x_110:f32 = convert %x_109
+    %70:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_113:i32 = load %70
+    %x_114:f32 = convert %x_113
+    %x_116:vec2<f32> = load %v2
+    %74:vec2<f32> = construct %x_110, %x_110
+    %75:vec2<f32> = construct %x_114, %x_114
+    %76:vec2<f32> = clamp %74, %75, %x_116
+    %77:f32 = access %76, 0u
+    %78:i32 = convert %77
+    %79:ptr<function, i32, read_write> = access %A, %78
+    %x_121:i32 = load %79
+    store %b, %x_121
+    %x_122:i32 = load %b
+    %82:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_124:i32 = load %82
+    %84:bool = eq %x_122, %x_124
+    if %84 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %85:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_130:i32 = load %85
+        %87:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_133:i32 = load %87
+        %89:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_136:i32 = load %89
+        %91:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_139:i32 = load %91
+        %93:f32 = convert %x_130
+        %94:f32 = convert %x_133
+        %95:f32 = convert %x_136
+        %96:f32 = convert %x_139
+        %97:vec4<f32> = construct %93, %94, %95, %96
+        store %x_GLF_color, %97
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %98:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_143:i32 = load %98
+        %x_144:f32 = convert %x_143
+        %101:vec4<f32> = construct %x_144, %x_144, %x_144, %x_144
+        store %x_GLF_color, %101
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %103:void = call %main_1
+    %104:vec4<f32> = load %x_GLF_color
+    %105:main_out = construct %104
+    ret %105
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..e0e7445
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,170 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, u32, read_write> = var
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %E:ptr<function, f32, read_write> = var
+    %x_69:ptr<function, bool, read_write> = var
+    %x_70:ptr<function, bool, read_write> = var
+    %x_85:ptr<function, bool, read_write> = var
+    %x_86:ptr<function, bool, read_write> = var
+    %x_101:ptr<function, bool, read_write> = var
+    %x_102:ptr<function, bool, read_write> = var
+    store %a, 1006648320u
+    %14:u32 = load %a
+    %15:vec4<f32> = unpack4x8snorm %14
+    store %v1, %15
+    store %E, 0.00999999977648258209f
+    %16:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %17:i32 = load %16
+    %18:f32 = load_vector_element %v1, %17
+    %19:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
+    %20:f32 = load %19
+    %21:ptr<uniform, f32, read> = access %x_10, 0u, 1i, 0u
+    %22:f32 = load %21
+    %23:f32 = div %20, %22
+    %24:f32 = sub %18, %23
+    %25:f32 = abs %24
+    %26:f32 = load %E
+    %x_54:bool = lt %25, %26
+    store %x_70, %x_54
+    if %x_54 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %28:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %29:i32 = load %28
+        %30:f32 = load_vector_element %v1, %29
+        %31:ptr<uniform, f32, read> = access %x_10, 0u, 2i, 0u
+        %32:f32 = load %31
+        %33:ptr<uniform, f32, read> = access %x_10, 0u, 1i, 0u
+        %34:f32 = load %33
+        %35:f32 = div %32, %34
+        %36:f32 = sub %30, %35
+        %37:f32 = abs %36
+        %38:f32 = load %E
+        %39:bool = lt %37, %38
+        store %x_69, %39
+        %40:bool = load %x_69
+        store %x_70, %40
+        exit_if  # if_1
+      }
+    }
+    %41:bool = load %x_70
+    store %x_86, %41
+    %42:bool = load %x_70
+    if %42 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %43:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %44:i32 = load %43
+        %45:f32 = load_vector_element %v1, %44
+        %46:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
+        %47:f32 = load %46
+        %48:ptr<uniform, f32, read> = access %x_10, 0u, 1i, 0u
+        %49:f32 = load %48
+        %50:f32 = div %47, %49
+        %51:f32 = sub %45, %50
+        %52:f32 = abs %51
+        %53:f32 = load %E
+        %54:bool = lt %52, %53
+        store %x_85, %54
+        %55:bool = load %x_85
+        store %x_86, %55
+        exit_if  # if_2
+      }
+    }
+    %56:bool = load %x_86
+    store %x_102, %56
+    %57:bool = load %x_86
+    if %57 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        %58:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+        %59:i32 = load %58
+        %60:f32 = load_vector_element %v1, %59
+        %61:ptr<uniform, f32, read> = access %x_10, 0u, 2i, 0u
+        %62:f32 = load %61
+        %63:ptr<uniform, f32, read> = access %x_10, 0u, 1i, 0u
+        %64:f32 = load %63
+        %65:f32 = div %62, %64
+        %66:f32 = sub %60, %65
+        %67:f32 = abs %66
+        %68:f32 = load %E
+        %69:bool = lt %67, %68
+        store %x_101, %69
+        %70:bool = load %x_101
+        store %x_102, %70
+        exit_if  # if_3
+      }
+    }
+    %71:bool = load %x_102
+    if %71 [t: %b6, f: %b7] {  # if_4
+      %b6 = block {  # true
+        %72:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %73:i32 = load %72
+        %74:f32 = convert %73
+        %75:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %76:i32 = load %75
+        %77:f32 = convert %76
+        %78:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %79:i32 = load %78
+        %80:f32 = convert %79
+        %81:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %82:i32 = load %81
+        %83:f32 = convert %82
+        %84:vec4<f32> = construct %74, %77, %80, %83
+        store %x_GLF_color, %84
+        exit_if  # if_4
+      }
+      %b7 = block {  # false
+        %85:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %86:i32 = load %85
+        %87:f32 = load_vector_element %v1, %86
+        %88:vec4<f32> = construct %87
+        store %x_GLF_color, %88
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %90:void = call %main_1
+    %91:vec4<f32> = load %x_GLF_color
+    %92:main_out = construct %91
+    ret %92
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4f2423f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,168 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, u32, read_write> = var
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %E:ptr<function, f32, read_write> = var
+    %x_69:ptr<function, bool, read_write> = var
+    %x_85:ptr<function, bool, read_write> = var
+    %x_101:ptr<function, bool, read_write> = var
+    %x_70_phi:ptr<function, bool, read_write> = var
+    %x_86_phi:ptr<function, bool, read_write> = var
+    %x_102_phi:ptr<function, bool, read_write> = var
+    store %a, 1006648320u
+    %x_40:u32 = load %a
+    %15:vec4<f32> = unpack4x8snorm %x_40
+    store %v1, %15
+    store %E, 0.00999999977648258209f
+    %16:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %x_43:i32 = load %16
+    %x_45:f32 = load_vector_element %v1, %x_43
+    %19:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
+    %x_47:f32 = load %19
+    %21:ptr<uniform, f32, read> = access %x_10, 0u, 1i, 0u
+    %x_49:f32 = load %21
+    %x_53:f32 = load %E
+    %24:f32 = div %x_47, %x_49
+    %25:f32 = sub %x_45, %24
+    %26:f32 = abs %25
+    %x_54:bool = lt %26, %x_53
+    store %x_70_phi, %x_54
+    if %x_54 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %28:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_58:i32 = load %28
+        %x_60:f32 = load_vector_element %v1, %x_58
+        %31:ptr<uniform, f32, read> = access %x_10, 0u, 2i, 0u
+        %x_62:f32 = load %31
+        %33:ptr<uniform, f32, read> = access %x_10, 0u, 1i, 0u
+        %x_64:f32 = load %33
+        %x_68:f32 = load %E
+        %36:f32 = div %x_62, %x_64
+        %37:f32 = sub %x_60, %36
+        %38:f32 = abs %37
+        %39:bool = lt %38, %x_68
+        store %x_69, %39
+        %40:bool = load %x_69
+        store %x_70_phi, %40
+        exit_if  # if_1
+      }
+    }
+    %x_70:bool = load %x_70_phi
+    store %x_86_phi, %x_70
+    if %x_70 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %42:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %x_74:i32 = load %42
+        %x_76:f32 = load_vector_element %v1, %x_74
+        %45:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
+        %x_78:f32 = load %45
+        %47:ptr<uniform, f32, read> = access %x_10, 0u, 1i, 0u
+        %x_80:f32 = load %47
+        %x_84:f32 = load %E
+        %50:f32 = div %x_78, %x_80
+        %51:f32 = sub %x_76, %50
+        %52:f32 = abs %51
+        %53:bool = lt %52, %x_84
+        store %x_85, %53
+        %54:bool = load %x_85
+        store %x_86_phi, %54
+        exit_if  # if_2
+      }
+    }
+    %x_86:bool = load %x_86_phi
+    store %x_102_phi, %x_86
+    if %x_86 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        %56:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+        %x_90:i32 = load %56
+        %x_92:f32 = load_vector_element %v1, %x_90
+        %59:ptr<uniform, f32, read> = access %x_10, 0u, 2i, 0u
+        %x_94:f32 = load %59
+        %61:ptr<uniform, f32, read> = access %x_10, 0u, 1i, 0u
+        %x_96:f32 = load %61
+        %x_100:f32 = load %E
+        %64:f32 = div %x_94, %x_96
+        %65:f32 = sub %x_92, %64
+        %66:f32 = abs %65
+        %67:bool = lt %66, %x_100
+        store %x_101, %67
+        %68:bool = load %x_101
+        store %x_102_phi, %68
+        exit_if  # if_3
+      }
+    }
+    %x_102:bool = load %x_102_phi
+    if %x_102 [t: %b6, f: %b7] {  # if_4
+      %b6 = block {  # true
+        %70:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_107:i32 = load %70
+        %72:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_110:i32 = load %72
+        %74:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_113:i32 = load %74
+        %76:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_116:i32 = load %76
+        %78:f32 = convert %x_107
+        %79:f32 = convert %x_110
+        %80:f32 = convert %x_113
+        %81:f32 = convert %x_116
+        %82:vec4<f32> = construct %78, %79, %80, %81
+        store %x_GLF_color, %82
+        exit_if  # if_4
+      }
+      %b7 = block {  # false
+        %83:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_120:i32 = load %83
+        %x_122:f32 = load_vector_element %v1, %x_120
+        %86:vec4<f32> = construct %x_122, %x_122, %x_122, %x_122
+        store %x_GLF_color, %86
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %88:void = call %main_1
+    %89:vec4<f32> = load %x_GLF_color
+    %90:main_out = construct %89
+    ret %90
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..d443d19
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,176 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, u32, read_write> = var
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %E:ptr<function, f32, read_write> = var
+    %x_69:ptr<function, bool, read_write> = var
+    %x_70:ptr<function, bool, read_write> = var
+    %x_85:ptr<function, bool, read_write> = var
+    %x_86:ptr<function, bool, read_write> = var
+    %x_101:ptr<function, bool, read_write> = var
+    %x_102:ptr<function, bool, read_write> = var
+    %14:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %15:f32 = load %14
+    %16:vec4<f32> = construct %15
+    %17:u32 = pack4x8snorm %16
+    store %a, %17
+    %18:u32 = load %a
+    %19:vec4<f32> = unpack4x8unorm %18
+    store %v1, %19
+    %20:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %21:f32 = load %20
+    store %E, %21
+    %22:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %23:i32 = load %22
+    %24:f32 = load_vector_element %v1, %23
+    %25:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %26:f32 = load %25
+    %27:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+    %28:f32 = load %27
+    %29:f32 = div %26, %28
+    %30:f32 = sub %24, %29
+    %31:f32 = abs %30
+    %32:f32 = load %E
+    %x_54:bool = lt %31, %32
+    store %x_70, %x_54
+    if %x_54 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %34:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %35:i32 = load %34
+        %36:f32 = load_vector_element %v1, %35
+        %37:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %38:f32 = load %37
+        %39:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %40:f32 = load %39
+        %41:f32 = div %38, %40
+        %42:f32 = sub %36, %41
+        %43:f32 = abs %42
+        %44:f32 = load %E
+        %45:bool = lt %43, %44
+        store %x_69, %45
+        %46:bool = load %x_69
+        store %x_70, %46
+        exit_if  # if_1
+      }
+    }
+    %47:bool = load %x_70
+    store %x_86, %47
+    %48:bool = load %x_70
+    if %48 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %49:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %50:i32 = load %49
+        %51:f32 = load_vector_element %v1, %50
+        %52:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %53:f32 = load %52
+        %54:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %55:f32 = load %54
+        %56:f32 = div %53, %55
+        %57:f32 = sub %51, %56
+        %58:f32 = abs %57
+        %59:f32 = load %E
+        %60:bool = lt %58, %59
+        store %x_85, %60
+        %61:bool = load %x_85
+        store %x_86, %61
+        exit_if  # if_2
+      }
+    }
+    %62:bool = load %x_86
+    store %x_102, %62
+    %63:bool = load %x_86
+    if %63 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        %64:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %65:i32 = load %64
+        %66:f32 = load_vector_element %v1, %65
+        %67:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %68:f32 = load %67
+        %69:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %70:f32 = load %69
+        %71:f32 = div %68, %70
+        %72:f32 = sub %66, %71
+        %73:f32 = abs %72
+        %74:f32 = load %E
+        %75:bool = lt %73, %74
+        store %x_101, %75
+        %76:bool = load %x_101
+        store %x_102, %76
+        exit_if  # if_3
+      }
+    }
+    %77:bool = load %x_102
+    if %77 [t: %b6, f: %b7] {  # if_4
+      %b6 = block {  # true
+        %78:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %79:i32 = load %78
+        %80:f32 = convert %79
+        %81:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %82:i32 = load %81
+        %83:f32 = convert %82
+        %84:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %85:i32 = load %84
+        %86:f32 = convert %85
+        %87:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %88:i32 = load %87
+        %89:f32 = convert %88
+        %90:vec4<f32> = construct %80, %83, %86, %89
+        store %x_GLF_color, %90
+        exit_if  # if_4
+      }
+      %b7 = block {  # false
+        %91:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %92:i32 = load %91
+        %93:f32 = convert %92
+        %94:vec4<f32> = construct %93
+        store %x_GLF_color, %94
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %96:void = call %main_1
+    %97:vec4<f32> = load %x_GLF_color
+    %98:main_out = construct %97
+    ret %98
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b799bdc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,174 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, u32, read_write> = var
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %E:ptr<function, f32, read_write> = var
+    %x_69:ptr<function, bool, read_write> = var
+    %x_85:ptr<function, bool, read_write> = var
+    %x_101:ptr<function, bool, read_write> = var
+    %x_70_phi:ptr<function, bool, read_write> = var
+    %x_86_phi:ptr<function, bool, read_write> = var
+    %x_102_phi:ptr<function, bool, read_write> = var
+    %14:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_35:f32 = load %14
+    %16:vec4<f32> = construct %x_35, %x_35, %x_35, %x_35
+    %17:u32 = pack4x8snorm %16
+    store %a, %17
+    %x_38:u32 = load %a
+    %19:vec4<f32> = unpack4x8unorm %x_38
+    store %v1, %19
+    %20:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_41:f32 = load %20
+    store %E, %x_41
+    %22:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %x_43:i32 = load %22
+    %x_45:f32 = load_vector_element %v1, %x_43
+    %25:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %x_47:f32 = load %25
+    %27:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+    %x_49:f32 = load %27
+    %x_53:f32 = load %E
+    %30:f32 = div %x_47, %x_49
+    %31:f32 = sub %x_45, %30
+    %32:f32 = abs %31
+    %x_54:bool = lt %32, %x_53
+    store %x_70_phi, %x_54
+    if %x_54 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %34:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_58:i32 = load %34
+        %x_60:f32 = load_vector_element %v1, %x_58
+        %37:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %x_62:f32 = load %37
+        %39:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %x_64:f32 = load %39
+        %x_68:f32 = load %E
+        %42:f32 = div %x_62, %x_64
+        %43:f32 = sub %x_60, %42
+        %44:f32 = abs %43
+        %45:bool = lt %44, %x_68
+        store %x_69, %45
+        %46:bool = load %x_69
+        store %x_70_phi, %46
+        exit_if  # if_1
+      }
+    }
+    %x_70:bool = load %x_70_phi
+    store %x_86_phi, %x_70
+    if %x_70 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %48:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_74:i32 = load %48
+        %x_76:f32 = load_vector_element %v1, %x_74
+        %51:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %x_78:f32 = load %51
+        %53:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %x_80:f32 = load %53
+        %x_84:f32 = load %E
+        %56:f32 = div %x_78, %x_80
+        %57:f32 = sub %x_76, %56
+        %58:f32 = abs %57
+        %59:bool = lt %58, %x_84
+        store %x_85, %59
+        %60:bool = load %x_85
+        store %x_86_phi, %60
+        exit_if  # if_2
+      }
+    }
+    %x_86:bool = load %x_86_phi
+    store %x_102_phi, %x_86
+    if %x_86 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        %62:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_90:i32 = load %62
+        %x_92:f32 = load_vector_element %v1, %x_90
+        %65:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %x_94:f32 = load %65
+        %67:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %x_96:f32 = load %67
+        %x_100:f32 = load %E
+        %70:f32 = div %x_94, %x_96
+        %71:f32 = sub %x_92, %70
+        %72:f32 = abs %71
+        %73:bool = lt %72, %x_100
+        store %x_101, %73
+        %74:bool = load %x_101
+        store %x_102_phi, %74
+        exit_if  # if_3
+      }
+    }
+    %x_102:bool = load %x_102_phi
+    if %x_102 [t: %b6, f: %b7] {  # if_4
+      %b6 = block {  # true
+        %76:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_107:i32 = load %76
+        %78:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_110:i32 = load %78
+        %80:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_113:i32 = load %80
+        %82:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_116:i32 = load %82
+        %84:f32 = convert %x_107
+        %85:f32 = convert %x_110
+        %86:f32 = convert %x_113
+        %87:f32 = convert %x_116
+        %88:vec4<f32> = construct %84, %85, %86, %87
+        store %x_GLF_color, %88
+        exit_if  # if_4
+      }
+      %b7 = block {  # false
+        %89:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_120:i32 = load %89
+        %x_121:f32 = convert %x_120
+        %92:vec4<f32> = construct %x_121, %x_121, %x_121, %x_121
+        store %x_GLF_color, %92
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %94:void = call %main_1
+    %95:vec4<f32> = load %x_GLF_color
+    %96:main_out = construct %95
+    ret %96
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..43bef2f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,79 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %color:ptr<function, vec4<f32>, read_write> = var
+    %6:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %7:f32 = load %6
+    %8:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %9:f32 = load %8
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %11:f32 = load %10
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %13:f32 = load %12
+    %14:vec4<f32> = construct %7, %9, %11, %13
+    store %color, %14
+    %15:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %x_38:i32 = load %15
+    %17:i32 = or 1i, %x_38
+    %18:i32 = xor %17, 1i
+    switch %18 [c: (0i, %b3), c: (default, %b4)] {  # switch_1
+      %b3 = block {  # case
+        %19:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_44:i32 = load %19
+        %21:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %22:f32 = load %21
+        store_vector_element %color, %x_44, %22
+        exit_switch  # switch_1
+      }
+      %b4 = block {  # case
+        exit_switch  # switch_1
+      }
+    }
+    %23:vec4<f32> = load %color
+    store %x_GLF_color, %23
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %25:void = call %main_1
+    %26:vec4<f32> = load %x_GLF_color
+    %27:main_out = construct %26
+    ret %27
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..99b0af4
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,79 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %color:ptr<function, vec4<f32>, read_write> = var
+    %6:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_29:f32 = load %6
+    %8:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_31:f32 = load %8
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_33:f32 = load %10
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_35:f32 = load %12
+    %14:vec4<f32> = construct %x_29, %x_31, %x_33, %x_35
+    store %color, %14
+    %15:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %x_38:i32 = load %15
+    %17:i32 = or 1i, %x_38
+    %18:i32 = xor %17, 1i
+    switch %18 [c: (0i, %b3), c: (default, %b4)] {  # switch_1
+      %b3 = block {  # case
+        %19:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_44:i32 = load %19
+        %21:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_46:f32 = load %21
+        store_vector_element %color, %x_44, %x_46
+        exit_switch  # switch_1
+      }
+      %b4 = block {  # case
+        exit_switch  # switch_1
+      }
+    }
+    %x_48:vec4<f32> = load %color
+    store %x_GLF_color, %x_48
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %25:void = call %main_1
+    %26:vec4<f32> = load %x_GLF_color
+    %27:main_out = construct %26
+    ret %27
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f2b1af7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,142 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %c:ptr<function, f32, read_write> = var
+    %d:ptr<function, f32, read_write> = var
+    %x_67:ptr<function, bool, read_write> = var
+    %x_68:ptr<function, bool, read_write> = var
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %13:f32 = load %12
+    store %a, %13
+    %14:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %15:i32 = load %14
+    store %i, %15
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %16:i32 = load %i
+        %17:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %18:i32 = load %17
+        %19:bool = lt %16, %18
+        if %19 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %20:f32 = load %a
+        store %b, %20
+        %21:f32 = load %b
+        store %c, %21
+        %22:f32 = load %c
+        %23:f32 = asin %22
+        store %d, %23
+        %24:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %25:f32 = load %24
+        store %c, %25
+        %26:f32 = load %d
+        store %a, %26
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %27:i32 = load %i
+        %28:i32 = add %27, 1i
+        store %i, %28
+        next_iteration %b3
+      }
+    }
+    %29:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %30:f32 = load %29
+    %31:f32 = load %a
+    %x_61:bool = lt %30, %31
+    store %x_68, %x_61
+    if %x_61 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        %33:f32 = load %a
+        %34:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %35:f32 = load %34
+        %36:bool = lt %33, %35
+        store %x_67, %36
+        %37:bool = load %x_67
+        store %x_68, %37
+        exit_if  # if_2
+      }
+    }
+    %38:bool = load %x_68
+    if %38 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %39:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %40:i32 = load %39
+        %41:f32 = convert %40
+        %42:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %43:i32 = load %42
+        %44:f32 = convert %43
+        %45:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %46:i32 = load %45
+        %47:f32 = convert %46
+        %48:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %49:i32 = load %48
+        %50:f32 = convert %49
+        %51:vec4<f32> = construct %41, %44, %47, %50
+        store %x_GLF_color, %51
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %52:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %53:i32 = load %52
+        %54:f32 = convert %53
+        %55:vec4<f32> = construct %54
+        store %x_GLF_color, %55
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %57:void = call %main_1
+    %58:vec4<f32> = load %x_GLF_color
+    %59:main_out = construct %58
+    ret %59
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e979c3e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,142 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %c:ptr<function, f32, read_write> = var
+    %d:ptr<function, f32, read_write> = var
+    %x_67:ptr<function, bool, read_write> = var
+    %x_68_phi:ptr<function, bool, read_write> = var
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_37:f32 = load %12
+    store %a, %x_37
+    %14:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %x_39:i32 = load %14
+    store %i, %x_39
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_44:i32 = load %i
+        %17:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_46:i32 = load %17
+        %19:bool = lt %x_44, %x_46
+        if %19 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_49:f32 = load %a
+        store %b, %x_49
+        %x_50:f32 = load %b
+        store %c, %x_50
+        %x_51:f32 = load %c
+        %23:f32 = asin %x_51
+        store %d, %23
+        %24:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_54:f32 = load %24
+        store %c, %x_54
+        %x_55:f32 = load %d
+        store %a, %x_55
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_56:i32 = load %i
+        %28:i32 = add %x_56, 1i
+        store %i, %28
+        next_iteration %b3
+      }
+    }
+    %29:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %x_59:f32 = load %29
+    %x_60:f32 = load %a
+    %x_61:bool = lt %x_59, %x_60
+    store %x_68_phi, %x_61
+    if %x_61 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        %x_64:f32 = load %a
+        %34:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %x_66:f32 = load %34
+        %36:bool = lt %x_64, %x_66
+        store %x_67, %36
+        %37:bool = load %x_67
+        store %x_68_phi, %37
+        exit_if  # if_2
+      }
+    }
+    %x_68:bool = load %x_68_phi
+    if %x_68 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %39:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %x_73:i32 = load %39
+        %41:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_76:i32 = load %41
+        %43:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_79:i32 = load %43
+        %45:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %x_82:i32 = load %45
+        %47:f32 = convert %x_73
+        %48:f32 = convert %x_76
+        %49:f32 = convert %x_79
+        %50:f32 = convert %x_82
+        %51:vec4<f32> = construct %47, %48, %49, %50
+        store %x_GLF_color, %51
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %52:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_86:i32 = load %52
+        %x_87:f32 = convert %x_86
+        %55:vec4<f32> = construct %x_87, %x_87, %x_87, %x_87
+        store %x_GLF_color, %55
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %57:void = call %main_1
+    %58:vec4<f32> = load %x_GLF_color
+    %59:main_out = construct %58
+    ret %59
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..afb1da3
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,66 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, f32, read> = access %x_5, 0u, 1i, 0u
+    %5:f32 = load %4
+    %6:f32 = inverseSqrt %5
+    %7:bool = lt %6, -1.0f
+    if %7 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %8:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %9:f32 = load %8
+        %10:vec4<f32> = construct %9
+        store %x_GLF_color, %10
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %11:ptr<uniform, f32, read> = access %x_5, 0u, 1i, 0u
+        %12:f32 = load %11
+        %13:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %14:f32 = load %13
+        %15:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %16:f32 = load %15
+        %17:ptr<uniform, f32, read> = access %x_5, 0u, 1i, 0u
+        %18:f32 = load %17
+        %19:vec4<f32> = construct %12, %14, %16, %18
+        store %x_GLF_color, %19
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %21:void = call %main_1
+    %22:vec4<f32> = load %x_GLF_color
+    %23:main_out = construct %22
+    ret %23
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..799ccb9
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,66 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, f32, read> = access %x_5, 0u, 1i, 0u
+    %x_23:f32 = load %4
+    %6:f32 = inverseSqrt %x_23
+    %7:bool = lt %6, -1.0f
+    if %7 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %8:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %x_30:f32 = load %8
+        %10:vec4<f32> = construct %x_30, %x_30, %x_30, %x_30
+        store %x_GLF_color, %10
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %11:ptr<uniform, f32, read> = access %x_5, 0u, 1i, 0u
+        %x_33:f32 = load %11
+        %13:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %x_35:f32 = load %13
+        %15:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %x_37:f32 = load %15
+        %17:ptr<uniform, f32, read> = access %x_5, 0u, 1i, 0u
+        %x_39:f32 = load %17
+        %19:vec4<f32> = construct %x_33, %x_35, %x_37, %x_39
+        store %x_GLF_color, %19
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %21:void = call %main_1
+    %22:vec4<f32> = load %x_GLF_color
+    %23:main_out = construct %22
+    ret %23
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1154f8b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,79 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %6:i32 = load %5
+    %7:i32 = shiftl %6, 5u
+    %8:u32 = bitcast %7
+    %9:i32 = shiftr 1i, %8
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %11:i32 = load %10
+    %12:u32 = bitcast %11
+    %13:i32 = shiftr %9, %12
+    store %a, %13
+    %14:i32 = load %a
+    %15:bool = eq %14, 1i
+    if %15 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %16:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %17:i32 = load %16
+        %18:f32 = convert %17
+        %19:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %20:i32 = load %19
+        %21:f32 = convert %20
+        %22:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %23:i32 = load %22
+        %24:f32 = convert %23
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %26:i32 = load %25
+        %27:f32 = convert %26
+        %28:vec4<f32> = construct %18, %21, %24, %27
+        store %x_GLF_color, %28
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %29:i32 = load %a
+        %30:f32 = convert %29
+        %31:vec4<f32> = construct %30
+        store %x_GLF_color, %31
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %33:void = call %main_1
+    %34:vec4<f32> = load %x_GLF_color
+    %35:main_out = construct %34
+    ret %35
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..18c613c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,79 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_25:i32 = load %5
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_29:i32 = load %7
+    %9:i32 = shiftl %x_25, 5u
+    %10:u32 = bitcast %9
+    %11:i32 = shiftr 1i, %10
+    %12:u32 = bitcast %x_29
+    %13:i32 = shiftr %11, %12
+    store %a, %13
+    %x_31:i32 = load %a
+    %15:bool = eq %x_31, 1i
+    if %15 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %16:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_37:i32 = load %16
+        %18:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_40:i32 = load %18
+        %20:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_43:i32 = load %20
+        %22:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_46:i32 = load %22
+        %24:f32 = convert %x_37
+        %25:f32 = convert %x_40
+        %26:f32 = convert %x_43
+        %27:f32 = convert %x_46
+        %28:vec4<f32> = construct %24, %25, %26, %27
+        store %x_GLF_color, %28
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %x_49:i32 = load %a
+        %x_50:f32 = convert %x_49
+        %31:vec4<f32> = construct %x_50, %x_50, %x_50, %x_50
+        store %x_GLF_color, %31
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %33:void = call %main_1
+    %34:vec4<f32> = load %x_GLF_color
+    %35:main_out = construct %34
+    ret %35
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..971a4e9
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,87 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %7:i32 = load %6
+    %8:f32 = convert %7
+    %9:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %10:i32 = load %9
+    %11:f32 = convert %10
+    %12:vec2<f32> = construct %8, %11
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %14:i32 = load %13
+    %15:i32 = or %14, 1i
+    %16:f32 = access %12, %15
+    store %a, %16
+    %17:f32 = load %a
+    %18:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %19:f32 = load %18
+    %20:bool = eq %17, %19
+    if %20 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %21:f32 = load %a
+        %22:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %23:i32 = load %22
+        %24:f32 = convert %23
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %26:i32 = load %25
+        %27:f32 = convert %26
+        %28:f32 = load %a
+        %29:vec4<f32> = construct %21, %24, %27, %28
+        store %x_GLF_color, %29
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %30:f32 = load %a
+        %31:vec4<f32> = construct %30
+        store %x_GLF_color, %31
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %33:void = call %main_1
+    %34:vec4<f32> = load %x_GLF_color
+    %35:main_out = construct %34
+    ret %35
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..277a8e2
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,87 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_31:i32 = load %6
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_34:i32 = load %8
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_38:i32 = load %10
+    %12:f32 = convert %x_31
+    %13:f32 = convert %x_34
+    %14:vec2<f32> = construct %12, %13
+    %15:i32 = or %x_38, 1i
+    %16:f32 = access %14, %15
+    store %a, %16
+    %x_41:f32 = load %a
+    %18:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_43:f32 = load %18
+    %20:bool = eq %x_41, %x_43
+    if %20 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %x_48:f32 = load %a
+        %22:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_50:i32 = load %22
+        %24:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_53:i32 = load %24
+        %x_55:f32 = load %a
+        %27:f32 = convert %x_50
+        %28:f32 = convert %x_53
+        %29:vec4<f32> = construct %x_48, %27, %28, %x_55
+        store %x_GLF_color, %29
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %x_57:f32 = load %a
+        %31:vec4<f32> = construct %x_57, %x_57, %x_57, %x_57
+        store %x_GLF_color, %31
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %33:void = call %main_1
+    %34:vec4<f32> = load %x_GLF_color
+    %35:main_out = construct %34
+    ret %35
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..9bd0129
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,317 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 12> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%f_i1_ = func(%a:ptr<function, i32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %7:i32 = load %6
+    store %i, %7
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %8:i32 = load %i
+        %9:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
+        %10:i32 = load %9
+        %11:bool = lt %8, %10
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %12:i32 = load %i
+        %13:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %14:i32 = load %13
+        %15:bool = gt %12, %14
+        if %15 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %x_21:i32 = load %a
+            ret %x_21
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %17:i32 = load %i
+        %18:i32 = add %17, 1i
+        store %i, %18
+        next_iteration %b3
+      }
+    }
+    %19:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_24:i32 = load %19
+    ret %x_24
+  }
+}
+%main_1 = func():void -> %b8 {
+  %b8 = block {
+    %r:ptr<function, array<i32, 10>, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %a_1:ptr<function, array<i32, 10>, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %28:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_25:i32 = load %28
+    %30:ptr<function, i32, read_write> = access %r, %x_25
+    %31:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %32:i32 = load %31
+    store %30, %32
+    %33:ptr<uniform, i32, read> = access %x_8, 0u, 11i, 0u
+    %x_27:i32 = load %33
+    %35:ptr<function, i32, read_write> = access %r, %x_27
+    %36:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+    %37:i32 = load %36
+    store %35, %37
+    %38:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %x_29:i32 = load %38
+    %40:ptr<function, i32, read_write> = access %r, %x_29
+    %41:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+    %42:i32 = load %41
+    store %40, %42
+    %43:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+    %x_31:i32 = load %43
+    %45:ptr<function, i32, read_write> = access %r, %x_31
+    %46:ptr<uniform, i32, read> = access %x_8, 0u, 4i, 0u
+    %47:i32 = load %46
+    store %45, %47
+    %48:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+    %x_33:i32 = load %48
+    %50:ptr<function, i32, read_write> = access %r, %x_33
+    %51:ptr<uniform, i32, read> = access %x_8, 0u, 5i, 0u
+    %52:i32 = load %51
+    store %50, %52
+    %53:ptr<uniform, i32, read> = access %x_8, 0u, 4i, 0u
+    %x_35:i32 = load %53
+    %55:ptr<function, i32, read_write> = access %r, %x_35
+    %56:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
+    %57:i32 = load %56
+    store %55, %57
+    %58:ptr<uniform, i32, read> = access %x_8, 0u, 5i, 0u
+    %x_37:i32 = load %58
+    %60:ptr<function, i32, read_write> = access %r, %x_37
+    %61:ptr<uniform, i32, read> = access %x_8, 0u, 7i, 0u
+    %62:i32 = load %61
+    store %60, %62
+    %63:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
+    %x_39:i32 = load %63
+    %65:ptr<function, i32, read_write> = access %r, %x_39
+    %66:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
+    %67:i32 = load %66
+    store %65, %67
+    %68:ptr<uniform, i32, read> = access %x_8, 0u, 9i, 0u
+    %x_41:i32 = load %68
+    %70:ptr<function, i32, read_write> = access %r, %x_41
+    %71:ptr<uniform, i32, read> = access %x_8, 0u, 9i, 0u
+    %72:i32 = load %71
+    store %70, %72
+    %73:ptr<uniform, i32, read> = access %x_8, 0u, 10i, 0u
+    %x_43:i32 = load %73
+    %75:ptr<function, i32, read_write> = access %r, %x_43
+    %76:ptr<uniform, i32, read> = access %x_8, 0u, 10i, 0u
+    %77:i32 = load %76
+    store %75, %77
+    %78:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %79:i32 = load %78
+    store %i_1, %79
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %80:i32 = load %i_1
+        %81:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
+        %82:i32 = load %81
+        %83:bool = lt %80, %82
+        if %83 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_48:i32 = load %i_1
+        %85:ptr<function, i32, read_write> = access %a_1, %x_48
+        %86:i32 = load %i_1
+        store %85, %86
+        %87:i32 = load %i_1
+        %88:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
+        %89:i32 = load %88
+        %90:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %91:i32 = load %90
+        %92:i32 = div %89, %91
+        %93:bool = lt %87, %92
+        if %93 [t: %b13, f: %b14] {  # if_4
+          %b13 = block {  # true
+            %x_54:i32 = load %i_1
+            %95:ptr<function, i32, read_write> = access %a_1, %x_54
+            %96:i32 = load %i_1
+            %97:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+            %98:i32 = load %97
+            %99:i32 = add %96, %98
+            store %95, %99
+            %100:i32 = load %i_1
+            %101:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
+            %102:i32 = load %101
+            %103:bool = lt %100, %102
+            if %103 [t: %b15] {  # if_5
+              %b15 = block {  # true
+                continue %b10
+              }
+            }
+            %x_60:i32 = load %i_1
+            %105:ptr<function, i32, read_write> = access %a_1, %x_60
+            %106:i32 = load %i_1
+            %107:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
+            %108:i32 = load %107
+            %109:i32 = add %106, %108
+            store %105, %109
+            %110:i32 = load %i_1
+            %111:ptr<function, i32, read_write> = access %a_1, %110
+            %112:i32 = load %111
+            store %param, %112
+            %x_66:i32 = call %f_i1_, %param
+            %114:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
+            %115:i32 = load %114
+            %116:bool = lt %x_66, %115
+            if %116 [t: %b16] {  # if_6
+              %b16 = block {  # true
+                %x_68:i32 = load %i_1
+                %x_182_save:i32 = let %x_68
+                %119:ptr<function, i32, read_write> = access %a_1, %x_182_save
+                %120:ptr<function, i32, read_write> = access %a_1, %x_68
+                %121:i32 = load %120
+                %122:i32 = sub %121, 1i
+                store %119, %122
+                exit_if  # if_6
+              }
+            }
+            exit_if  # if_4
+          }
+          %b14 = block {  # false
+            %123:i32 = load %i_1
+            %124:ptr<function, i32, read_write> = access %a_1, %123
+            %125:i32 = load %124
+            store %param_1, %125
+            %x_73:i32 = call %f_i1_, %param_1
+            %127:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
+            %128:i32 = load %127
+            %129:bool = lt %x_73, %128
+            if %129 [t: %b17] {  # if_7
+              %b17 = block {  # true
+                %x_75:i32 = load %i_1
+                %131:ptr<function, i32, read_write> = access %a_1, %x_75
+                %132:i32 = load %i_1
+                %133:ptr<function, i32, read_write> = access %a_1, %132
+                %134:i32 = load %133
+                %135:ptr<uniform, i32, read> = access %x_8, 0u, 4i, 0u
+                %136:i32 = load %135
+                %137:i32 = add %134, %136
+                store %131, %137
+                exit_if  # if_7
+              }
+            }
+            exit_if  # if_4
+          }
+        }
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        %138:i32 = load %i_1
+        %139:i32 = add %138, 1i
+        store %i_1, %139
+        next_iteration %b9
+      }
+    }
+    %140:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %141:i32 = load %140
+    store %i_2, %141
+    loop [b: %b18, c: %b19] {  # loop_3
+      %b18 = block {  # body
+        %142:i32 = load %i_2
+        %143:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
+        %144:i32 = load %143
+        %145:bool = lt %142, %144
+        if %145 [t: %b20, f: %b21] {  # if_8
+          %b20 = block {  # true
+            exit_if  # if_8
+          }
+          %b21 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %146:i32 = load %i_2
+        %147:ptr<function, i32, read_write> = access %a_1, %146
+        %148:i32 = load %147
+        %149:i32 = load %i_2
+        %150:ptr<function, i32, read_write> = access %r, %149
+        %151:i32 = load %150
+        %152:bool = neq %148, %151
+        if %152 [t: %b22] {  # if_9
+          %b22 = block {  # true
+            %153:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+            %154:i32 = load %153
+            %155:f32 = convert %154
+            %156:vec4<f32> = construct %155
+            store %x_GLF_color, %156
+            ret
+          }
+        }
+        continue %b19
+      }
+      %b19 = block {  # continuing
+        %157:i32 = load %i_2
+        %158:i32 = add %157, 1i
+        store %i_2, %158
+        next_iteration %b18
+      }
+    }
+    %159:ptr<uniform, i32, read> = access %x_8, 0u, 11i, 0u
+    %160:i32 = load %159
+    %161:f32 = convert %160
+    %162:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %163:i32 = load %162
+    %164:f32 = convert %163
+    %165:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %166:i32 = load %165
+    %167:f32 = convert %166
+    %168:ptr<uniform, i32, read> = access %x_8, 0u, 11i, 0u
+    %169:i32 = load %168
+    %170:f32 = convert %169
+    %171:vec4<f32> = construct %161, %164, %167, %170
+    store %x_GLF_color, %171
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b23 {
+  %b23 = block {
+    %173:void = call %main_1
+    %174:vec4<f32> = load %x_GLF_color
+    %175:main_out = construct %174
+    ret %175
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..610b270
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,316 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 12> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%f_i1_ = func(%a:ptr<function, i32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_16:i32 = load %6
+    store %i, %x_16
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_17:i32 = load %i
+        %9:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
+        %x_18:i32 = load %9
+        %11:bool = lt %x_17, %x_18
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_19:i32 = load %i
+        %13:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+        %x_20:i32 = load %13
+        %15:bool = gt %x_19, %x_20
+        if %15 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %x_21:i32 = load %a
+            ret %x_21
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_22:i32 = load %i
+        %18:i32 = add %x_22, 1i
+        store %i, %18
+        next_iteration %b3
+      }
+    }
+    %19:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_24:i32 = load %19
+    ret %x_24
+  }
+}
+%main_1 = func():void -> %b8 {
+  %b8 = block {
+    %r:ptr<function, array<i32, 10>, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %a_1:ptr<function, array<i32, 10>, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %28:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_25:i32 = load %28
+    %30:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %x_26:i32 = load %30
+    %32:ptr<function, i32, read_write> = access %r, %x_25
+    store %32, %x_26
+    %33:ptr<uniform, i32, read> = access %x_8, 0u, 11i, 0u
+    %x_27:i32 = load %33
+    %35:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+    %x_28:i32 = load %35
+    %37:ptr<function, i32, read_write> = access %r, %x_27
+    store %37, %x_28
+    %38:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %x_29:i32 = load %38
+    %40:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+    %x_30:i32 = load %40
+    %42:ptr<function, i32, read_write> = access %r, %x_29
+    store %42, %x_30
+    %43:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+    %x_31:i32 = load %43
+    %45:ptr<uniform, i32, read> = access %x_8, 0u, 4i, 0u
+    %x_32:i32 = load %45
+    %47:ptr<function, i32, read_write> = access %r, %x_31
+    store %47, %x_32
+    %48:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+    %x_33:i32 = load %48
+    %50:ptr<uniform, i32, read> = access %x_8, 0u, 5i, 0u
+    %x_34:i32 = load %50
+    %52:ptr<function, i32, read_write> = access %r, %x_33
+    store %52, %x_34
+    %53:ptr<uniform, i32, read> = access %x_8, 0u, 4i, 0u
+    %x_35:i32 = load %53
+    %55:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
+    %x_36:i32 = load %55
+    %57:ptr<function, i32, read_write> = access %r, %x_35
+    store %57, %x_36
+    %58:ptr<uniform, i32, read> = access %x_8, 0u, 5i, 0u
+    %x_37:i32 = load %58
+    %60:ptr<uniform, i32, read> = access %x_8, 0u, 7i, 0u
+    %x_38:i32 = load %60
+    %62:ptr<function, i32, read_write> = access %r, %x_37
+    store %62, %x_38
+    %63:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
+    %x_39:i32 = load %63
+    %65:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
+    %x_40:i32 = load %65
+    %67:ptr<function, i32, read_write> = access %r, %x_39
+    store %67, %x_40
+    %68:ptr<uniform, i32, read> = access %x_8, 0u, 9i, 0u
+    %x_41:i32 = load %68
+    %70:ptr<uniform, i32, read> = access %x_8, 0u, 9i, 0u
+    %x_42:i32 = load %70
+    %72:ptr<function, i32, read_write> = access %r, %x_41
+    store %72, %x_42
+    %73:ptr<uniform, i32, read> = access %x_8, 0u, 10i, 0u
+    %x_43:i32 = load %73
+    %75:ptr<uniform, i32, read> = access %x_8, 0u, 10i, 0u
+    %x_44:i32 = load %75
+    %77:ptr<function, i32, read_write> = access %r, %x_43
+    store %77, %x_44
+    %78:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_45:i32 = load %78
+    store %i_1, %x_45
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %x_46:i32 = load %i_1
+        %81:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
+        %x_47:i32 = load %81
+        %83:bool = lt %x_46, %x_47
+        if %83 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_48:i32 = load %i_1
+        %x_49:i32 = load %i_1
+        %86:ptr<function, i32, read_write> = access %a_1, %x_48
+        store %86, %x_49
+        %x_50:i32 = load %i_1
+        %88:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
+        %x_51:i32 = load %88
+        %90:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_52:i32 = load %90
+        %92:i32 = div %x_51, %x_52
+        %93:bool = lt %x_50, %92
+        if %93 [t: %b13, f: %b14] {  # if_4
+          %b13 = block {  # true
+            %x_54:i32 = load %i_1
+            %x_55:i32 = load %i_1
+            %96:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+            %x_56:i32 = load %96
+            %98:ptr<function, i32, read_write> = access %a_1, %x_54
+            %99:i32 = add %x_55, %x_56
+            store %98, %99
+            %x_58:i32 = load %i_1
+            %101:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
+            %x_59:i32 = load %101
+            %103:bool = lt %x_58, %x_59
+            if %103 [t: %b15] {  # if_5
+              %b15 = block {  # true
+                continue %b10
+              }
+            }
+            %x_60:i32 = load %i_1
+            %x_61:i32 = load %i_1
+            %106:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
+            %x_62:i32 = load %106
+            %108:ptr<function, i32, read_write> = access %a_1, %x_60
+            %109:i32 = add %x_61, %x_62
+            store %108, %109
+            %x_64:i32 = load %i_1
+            %111:ptr<function, i32, read_write> = access %a_1, %x_64
+            %x_65:i32 = load %111
+            store %param, %x_65
+            %x_66:i32 = call %f_i1_, %param
+            %114:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
+            %x_67:i32 = load %114
+            %116:bool = lt %x_66, %x_67
+            if %116 [t: %b16] {  # if_6
+              %b16 = block {  # true
+                %x_68:i32 = load %i_1
+                %x_182_save:i32 = let %x_68
+                %119:ptr<function, i32, read_write> = access %a_1, %x_182_save
+                %x_69:i32 = load %119
+                %121:ptr<function, i32, read_write> = access %a_1, %x_182_save
+                %122:i32 = sub %x_69, 1i
+                store %121, %122
+                exit_if  # if_6
+              }
+            }
+            exit_if  # if_4
+          }
+          %b14 = block {  # false
+            %x_71:i32 = load %i_1
+            %124:ptr<function, i32, read_write> = access %a_1, %x_71
+            %x_72:i32 = load %124
+            store %param_1, %x_72
+            %x_73:i32 = call %f_i1_, %param_1
+            %127:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
+            %x_74:i32 = load %127
+            %129:bool = lt %x_73, %x_74
+            if %129 [t: %b17] {  # if_7
+              %b17 = block {  # true
+                %x_75:i32 = load %i_1
+                %131:ptr<uniform, i32, read> = access %x_8, 0u, 4i, 0u
+                %x_76:i32 = load %131
+                %133:ptr<function, i32, read_write> = access %a_1, %x_75
+                %x_77:i32 = load %133
+                %135:ptr<function, i32, read_write> = access %a_1, %x_75
+                %136:i32 = add %x_77, %x_76
+                store %135, %136
+                exit_if  # if_7
+              }
+            }
+            exit_if  # if_4
+          }
+        }
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        %x_79:i32 = load %i_1
+        %138:i32 = add %x_79, 1i
+        store %i_1, %138
+        next_iteration %b9
+      }
+    }
+    %139:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_81:i32 = load %139
+    store %i_2, %x_81
+    loop [b: %b18, c: %b19] {  # loop_3
+      %b18 = block {  # body
+        %x_82:i32 = load %i_2
+        %142:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
+        %x_83:i32 = load %142
+        %144:bool = lt %x_82, %x_83
+        if %144 [t: %b20, f: %b21] {  # if_8
+          %b20 = block {  # true
+            exit_if  # if_8
+          }
+          %b21 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_84:i32 = load %i_2
+        %146:ptr<function, i32, read_write> = access %a_1, %x_84
+        %x_85:i32 = load %146
+        %x_86:i32 = load %i_2
+        %149:ptr<function, i32, read_write> = access %r, %x_86
+        %x_87:i32 = load %149
+        %151:bool = neq %x_85, %x_87
+        if %151 [t: %b22] {  # if_9
+          %b22 = block {  # true
+            %152:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+            %x_88:i32 = load %152
+            %x_205:f32 = convert %x_88
+            %155:vec4<f32> = construct %x_205, %x_205, %x_205, %x_205
+            store %x_GLF_color, %155
+            ret
+          }
+        }
+        continue %b19
+      }
+      %b19 = block {  # continuing
+        %x_89:i32 = load %i_2
+        %157:i32 = add %x_89, 1i
+        store %i_2, %157
+        next_iteration %b18
+      }
+    }
+    %158:ptr<uniform, i32, read> = access %x_8, 0u, 11i, 0u
+    %x_91:i32 = load %158
+    %160:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_92:i32 = load %160
+    %162:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_93:i32 = load %162
+    %164:ptr<uniform, i32, read> = access %x_8, 0u, 11i, 0u
+    %x_94:i32 = load %164
+    %166:f32 = convert %x_91
+    %167:f32 = convert %x_92
+    %168:f32 = convert %x_93
+    %169:f32 = convert %x_94
+    %170:vec4<f32> = construct %166, %167, %168, %169
+    store %x_GLF_color, %170
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b23 {
+  %b23 = block {
+    %172:void = call %main_1
+    %173:vec4<f32> = load %x_GLF_color
+    %174:main_out = construct %173
+    ret %174
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f6d3f68
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,83 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %7:i32 = load %6
+    %8:f32 = convert %7
+    %9:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %10:i32 = load %9
+    %11:f32 = convert %10
+    %12:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %13:i32 = load %12
+    %14:f32 = convert %13
+    %15:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %16:i32 = load %15
+    %17:f32 = convert %16
+    %18:vec4<f32> = construct %8, %11, %14, %17
+    store %x_GLF_color, %18
+    %19:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %x_45:f32 = load %19
+    %21:f32 = div %x_45, 1.0f
+    %22:f32 = floor %21
+    %23:f32 = mul 1.0f, %22
+    %24:f32 = sub %x_45, %23
+    store %a, %24
+    %25:f32 = load %a
+    %26:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %27:f32 = load %26
+    %28:bool = neq %25, %27
+    if %28 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %29:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %30:f32 = load %29
+        store_vector_element %x_GLF_color, 1u, %30
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b4 {
+  %b4 = block {
+    %32:void = call %main_1
+    %33:vec4<f32> = load %x_GLF_color
+    %34:main_out = construct %33
+    ret %34
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..367497e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,83 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_10:i32 = load %6
+    %8:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %x_11:i32 = load %8
+    %10:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %x_12:i32 = load %10
+    %12:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_13:i32 = load %12
+    %14:f32 = convert %x_10
+    %15:f32 = convert %x_11
+    %16:f32 = convert %x_12
+    %17:f32 = convert %x_13
+    %18:vec4<f32> = construct %14, %15, %16, %17
+    store %x_GLF_color, %18
+    %19:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %x_45:f32 = load %19
+    %21:f32 = div %x_45, 1.0f
+    %22:f32 = floor %21
+    %23:f32 = mul 1.0f, %22
+    %24:f32 = sub %x_45, %23
+    store %a, %24
+    %x_47:f32 = load %a
+    %26:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_49:f32 = load %26
+    %28:bool = neq %x_47, %x_49
+    if %28 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %29:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %x_54:f32 = load %29
+        store_vector_element %x_GLF_color, 1u, %x_54
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b4 {
+  %b4 = block {
+    %32:void = call %main_1
+    %33:vec4<f32> = load %x_GLF_color
+    %34:main_out = construct %33
+    ret %34
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..6ef086a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,83 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %7:i32 = load %6
+    %8:f32 = convert %7
+    %9:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %10:i32 = load %9
+    %11:f32 = convert %10
+    %12:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %13:i32 = load %12
+    %14:f32 = convert %13
+    %15:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %16:i32 = load %15
+    %17:f32 = convert %16
+    %18:vec4<f32> = construct %8, %11, %14, %17
+    store %x_GLF_color, %18
+    %19:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %x_45:f32 = load %19
+    %21:f32 = div 1.0f, %x_45
+    %22:f32 = floor %21
+    %23:f32 = mul %x_45, %22
+    %24:f32 = sub 1.0f, %23
+    store %a, %24
+    %25:f32 = load %a
+    %26:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %27:f32 = load %26
+    %28:bool = neq %25, %27
+    if %28 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %29:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %30:f32 = load %29
+        store_vector_element %x_GLF_color, 1u, %30
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b4 {
+  %b4 = block {
+    %32:void = call %main_1
+    %33:vec4<f32> = load %x_GLF_color
+    %34:main_out = construct %33
+    ret %34
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4d0acd6
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,83 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_10:i32 = load %6
+    %8:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %x_11:i32 = load %8
+    %10:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %x_12:i32 = load %10
+    %12:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_13:i32 = load %12
+    %14:f32 = convert %x_10
+    %15:f32 = convert %x_11
+    %16:f32 = convert %x_12
+    %17:f32 = convert %x_13
+    %18:vec4<f32> = construct %14, %15, %16, %17
+    store %x_GLF_color, %18
+    %19:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %x_45:f32 = load %19
+    %21:f32 = div 1.0f, %x_45
+    %22:f32 = floor %21
+    %23:f32 = mul %x_45, %22
+    %24:f32 = sub 1.0f, %23
+    store %a, %24
+    %x_47:f32 = load %a
+    %26:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_49:f32 = load %26
+    %28:bool = neq %x_47, %x_49
+    if %28 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %29:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %x_54:f32 = load %29
+        store_vector_element %x_GLF_color, 1u, %x_54
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b4 {
+  %b4 = block {
+    %32:void = call %main_1
+    %33:vec4<f32> = load %x_GLF_color
+    %34:main_out = construct %33
+    ret %34
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1fde0fd
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.spvasm.expected.ir.msl
@@ -0,0 +1,74 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+    %6:f32 = load %5
+    %7:f32 = sqrt %6
+    %8:bool = lt %7, -1.0f
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %9:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %10:i32 = load %9
+        %11:f32 = convert %10
+        %12:vec4<f32> = construct %11
+        store %x_GLF_color, %12
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %13:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %14:i32 = load %13
+        %x_41:f32 = convert %14
+        %16:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %17:i32 = load %16
+        %x_43:f32 = convert %17
+        %19:vec4<f32> = construct %x_41, %x_43, %x_43, %x_41
+        store %x_GLF_color, %19
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %21:void = call %main_1
+    %22:vec4<f32> = load %x_GLF_color
+    %23:main_out = construct %22
+    ret %23
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..44cbd99
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl.expected.ir.msl
@@ -0,0 +1,74 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+    %x_31:f32 = load %5
+    %7:f32 = sqrt %x_31
+    %8:bool = lt %7, -1.0f
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %9:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_10:i32 = load %9
+        %x_38:f32 = convert %x_10
+        %12:vec4<f32> = construct %x_38, %x_38, %x_38, %x_38
+        store %x_GLF_color, %12
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %13:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_11:i32 = load %13
+        %x_41:f32 = convert %x_11
+        %16:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_12:i32 = load %16
+        %x_43:f32 = convert %x_12
+        %19:vec4<f32> = construct %x_41, %x_43, %x_43, %x_41
+        store %x_GLF_color, %19
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %21:void = call %main_1
+    %22:vec4<f32> = load %x_GLF_color
+    %23:main_out = construct %22
+    ret %23
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..acb96f7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,273 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  v1:vec2<f32> @offset(0)
+}
+
+strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+S = struct @align(4) {
+  data:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_struct_S_i11_ = func(%s:ptr<function, S, read_write>):void -> %b2 {
+  %b2 = block {
+    %6:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %7:f32 = load_vector_element %6, 0u
+    %8:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %9:f32 = load_vector_element %8, 1u
+    %10:bool = gt %7, %9
+    if %10 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret
+      }
+    }
+    %11:ptr<function, i32, read_write> = access %s, 0u
+    %12:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+    %13:i32 = load %12
+    store %11, %13
+    ret
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    %i:ptr<function, i32, read_write> = var
+    %arr:ptr<function, array<S, 3>, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, S, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %x_132:ptr<function, bool, read_write> = var
+    %x_133:ptr<function, bool, read_write> = var
+    %x_142:ptr<function, bool, read_write> = var
+    %x_143:ptr<function, bool, read_write> = var
+    %24:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+    %25:i32 = load %24
+    store %i, %25
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %26:i32 = load %i
+        %27:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %28:i32 = load %27
+        %29:bool = lt %26, %28
+        if %29 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_56:i32 = load %i
+        %31:ptr<function, i32, read_write> = access %arr, %x_56, 0u
+        %32:i32 = load %i
+        store %31, %32
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        %33:i32 = load %i
+        %34:i32 = add %33, 1i
+        store %i, %34
+        next_iteration %b5
+      }
+    }
+    %35:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+    %36:i32 = load %35
+    store %i_1, %36
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %37:i32 = load %i_1
+        %38:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %39:i32 = load %38
+        %40:bool = lt %37, %39
+        if %40 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %41:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %42:f32 = load_vector_element %41, 0u
+        %43:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %44:f32 = load_vector_element %43, 1u
+        %45:bool = gt %42, %44
+        if %45 [t: %b13] {  # if_4
+          %b13 = block {  # true
+            exit_loop  # loop_2
+          }
+        }
+        %46:i32 = load %i_1
+        %47:ptr<function, i32, read_write> = access %arr, %46, 0u
+        %48:i32 = load %47
+        %49:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %50:i32 = load %49
+        %51:bool = eq %48, %50
+        if %51 [t: %b14, f: %b15] {  # if_5
+          %b14 = block {  # true
+            %x_88:i32 = load %i_1
+            %53:i32 = load %i_1
+            %54:ptr<function, S, read_write> = access %arr, %53
+            %55:S = load %54
+            store %param, %55
+            %56:void = call %func_struct_S_i11_, %param
+            %57:ptr<function, S, read_write> = access %arr, %x_88
+            %58:S = load %param
+            store %57, %58
+            exit_if  # if_5
+          }
+          %b15 = block {  # false
+            %59:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+            %60:i32 = load %59
+            store %j, %60
+            loop [b: %b16, c: %b17] {  # loop_3
+              %b16 = block {  # body
+                %61:i32 = load %j
+                %62:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                %63:i32 = load %62
+                %64:bool = lt %61, %63
+                if %64 [t: %b18, f: %b19] {  # if_6
+                  %b18 = block {  # true
+                    exit_if  # if_6
+                  }
+                  %b19 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %65:i32 = load %j
+                %66:ptr<function, i32, read_write> = access %arr, %65, 0u
+                %67:i32 = load %66
+                %68:ptr<uniform, i32, read> = access %x_10, 0u, 4i, 0u
+                %69:i32 = load %68
+                %70:bool = gt %67, %69
+                if %70 [t: %b20] {  # if_7
+                  %b20 = block {  # true
+                    discard
+                    exit_if  # if_7
+                  }
+                }
+                continue %b17
+              }
+              %b17 = block {  # continuing
+                %71:i32 = load %j
+                %72:i32 = add %71, 1i
+                store %j, %72
+                next_iteration %b16
+              }
+            }
+            exit_if  # if_5
+          }
+        }
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        %73:i32 = load %i_1
+        %74:i32 = add %73, 1i
+        store %i_1, %74
+        next_iteration %b9
+      }
+    }
+    %75:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+    %76:i32 = load %75
+    %77:ptr<function, i32, read_write> = access %arr, %76, 0u
+    %78:i32 = load %77
+    %79:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+    %80:i32 = load %79
+    %x_123:bool = eq %78, %80
+    store %x_133, %x_123
+    if %x_123 [t: %b21] {  # if_8
+      %b21 = block {  # true
+        %82:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %83:i32 = load %82
+        %84:ptr<function, i32, read_write> = access %arr, %83, 0u
+        %85:i32 = load %84
+        %86:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %87:i32 = load %86
+        %88:bool = eq %85, %87
+        store %x_132, %88
+        %89:bool = load %x_132
+        store %x_133, %89
+        exit_if  # if_8
+      }
+    }
+    %90:bool = load %x_133
+    store %x_143, %90
+    %91:bool = load %x_133
+    if %91 [t: %b22] {  # if_9
+      %b22 = block {  # true
+        %92:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %93:i32 = load %92
+        %94:ptr<function, i32, read_write> = access %arr, %93, 0u
+        %95:i32 = load %94
+        %96:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %97:i32 = load %96
+        %98:bool = eq %95, %97
+        store %x_142, %98
+        %99:bool = load %x_142
+        store %x_143, %99
+        exit_if  # if_9
+      }
+    }
+    %100:bool = load %x_143
+    if %100 [t: %b23, f: %b24] {  # if_10
+      %b23 = block {  # true
+        %101:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %102:i32 = load %101
+        %103:f32 = convert %102
+        %104:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %105:i32 = load %104
+        %106:f32 = convert %105
+        %107:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %108:i32 = load %107
+        %109:f32 = convert %108
+        %110:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %111:i32 = load %110
+        %112:f32 = convert %111
+        %113:vec4<f32> = construct %103, %106, %109, %112
+        store %x_GLF_color, %113
+        exit_if  # if_10
+      }
+      %b24 = block {  # false
+        %114:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %115:i32 = load %114
+        %116:f32 = convert %115
+        %117:vec4<f32> = construct %116
+        store %x_GLF_color, %117
+        exit_if  # if_10
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b25 {
+  %b25 = block {
+    %119:void = call %main_1
+    %120:vec4<f32> = load %x_GLF_color
+    %121:main_out = construct %120
+    ret %121
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..391227a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,271 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  v1:vec2<f32> @offset(0)
+}
+
+strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+S = struct @align(4) {
+  data:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_struct_S_i11_ = func(%s:ptr<function, S, read_write>):void -> %b2 {
+  %b2 = block {
+    %6:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %x_166:f32 = load_vector_element %6, 0u
+    %8:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %x_168:f32 = load_vector_element %8, 1u
+    %10:bool = gt %x_166, %x_168
+    if %10 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret
+      }
+    }
+    %11:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+    %x_173:i32 = load %11
+    %13:ptr<function, i32, read_write> = access %s, 0u
+    store %13, %x_173
+    ret
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    %i:ptr<function, i32, read_write> = var
+    %arr:ptr<function, array<S, 3>, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, S, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %x_132:ptr<function, bool, read_write> = var
+    %x_142:ptr<function, bool, read_write> = var
+    %x_133_phi:ptr<function, bool, read_write> = var
+    %x_143_phi:ptr<function, bool, read_write> = var
+    %24:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+    %x_46:i32 = load %24
+    store %i, %x_46
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %x_51:i32 = load %i
+        %27:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_53:i32 = load %27
+        %29:bool = lt %x_51, %x_53
+        if %29 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_56:i32 = load %i
+        %x_57:i32 = load %i
+        %32:ptr<function, i32, read_write> = access %arr, %x_56, 0u
+        store %32, %x_57
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        %x_59:i32 = load %i
+        %34:i32 = add %x_59, 1i
+        store %i, %34
+        next_iteration %b5
+      }
+    }
+    %35:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+    %x_62:i32 = load %35
+    store %i_1, %x_62
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %x_67:i32 = load %i_1
+        %38:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_69:i32 = load %38
+        %40:bool = lt %x_67, %x_69
+        if %40 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %41:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %x_73:f32 = load_vector_element %41, 0u
+        %43:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %x_75:f32 = load_vector_element %43, 1u
+        %45:bool = gt %x_73, %x_75
+        if %45 [t: %b13] {  # if_4
+          %b13 = block {  # true
+            exit_loop  # loop_2
+          }
+        }
+        %x_79:i32 = load %i_1
+        %47:ptr<function, i32, read_write> = access %arr, %x_79, 0u
+        %x_81:i32 = load %47
+        %49:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_83:i32 = load %49
+        %51:bool = eq %x_81, %x_83
+        if %51 [t: %b14, f: %b15] {  # if_5
+          %b14 = block {  # true
+            %x_88:i32 = load %i_1
+            %53:ptr<function, S, read_write> = access %arr, %x_88
+            %x_90:S = load %53
+            store %param, %x_90
+            %55:void = call %func_struct_S_i11_, %param
+            %x_92:S = load %param
+            %57:ptr<function, S, read_write> = access %arr, %x_88
+            store %57, %x_92
+            exit_if  # if_5
+          }
+          %b15 = block {  # false
+            %58:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+            %x_95:i32 = load %58
+            store %j, %x_95
+            loop [b: %b16, c: %b17] {  # loop_3
+              %b16 = block {  # body
+                %x_100:i32 = load %j
+                %61:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                %x_102:i32 = load %61
+                %63:bool = lt %x_100, %x_102
+                if %63 [t: %b18, f: %b19] {  # if_6
+                  %b18 = block {  # true
+                    exit_if  # if_6
+                  }
+                  %b19 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %x_105:i32 = load %j
+                %65:ptr<function, i32, read_write> = access %arr, %x_105, 0u
+                %x_107:i32 = load %65
+                %67:ptr<uniform, i32, read> = access %x_10, 0u, 4i, 0u
+                %x_109:i32 = load %67
+                %69:bool = gt %x_107, %x_109
+                if %69 [t: %b20] {  # if_7
+                  %b20 = block {  # true
+                    discard
+                    exit_if  # if_7
+                  }
+                }
+                continue %b17
+              }
+              %b17 = block {  # continuing
+                %x_113:i32 = load %j
+                %71:i32 = add %x_113, 1i
+                store %j, %71
+                next_iteration %b16
+              }
+            }
+            exit_if  # if_5
+          }
+        }
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        %x_115:i32 = load %i_1
+        %73:i32 = add %x_115, 1i
+        store %i_1, %73
+        next_iteration %b9
+      }
+    }
+    %74:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+    %x_118:i32 = load %74
+    %76:ptr<function, i32, read_write> = access %arr, %x_118, 0u
+    %x_120:i32 = load %76
+    %78:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+    %x_122:i32 = load %78
+    %x_123:bool = eq %x_120, %x_122
+    store %x_133_phi, %x_123
+    if %x_123 [t: %b21] {  # if_8
+      %b21 = block {  # true
+        %81:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_127:i32 = load %81
+        %83:ptr<function, i32, read_write> = access %arr, %x_127, 0u
+        %x_129:i32 = load %83
+        %85:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_131:i32 = load %85
+        %87:bool = eq %x_129, %x_131
+        store %x_132, %87
+        %88:bool = load %x_132
+        store %x_133_phi, %88
+        exit_if  # if_8
+      }
+    }
+    %x_133:bool = load %x_133_phi
+    store %x_143_phi, %x_133
+    if %x_133 [t: %b22] {  # if_9
+      %b22 = block {  # true
+        %90:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_137:i32 = load %90
+        %92:ptr<function, i32, read_write> = access %arr, %x_137, 0u
+        %x_139:i32 = load %92
+        %94:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_141:i32 = load %94
+        %96:bool = eq %x_139, %x_141
+        store %x_142, %96
+        %97:bool = load %x_142
+        store %x_143_phi, %97
+        exit_if  # if_9
+      }
+    }
+    %x_143:bool = load %x_143_phi
+    if %x_143 [t: %b23, f: %b24] {  # if_10
+      %b23 = block {  # true
+        %99:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_148:i32 = load %99
+        %101:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_151:i32 = load %101
+        %103:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_154:i32 = load %103
+        %105:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_157:i32 = load %105
+        %107:f32 = convert %x_148
+        %108:f32 = convert %x_151
+        %109:f32 = convert %x_154
+        %110:f32 = convert %x_157
+        %111:vec4<f32> = construct %107, %108, %109, %110
+        store %x_GLF_color, %111
+        exit_if  # if_10
+      }
+      %b24 = block {  # false
+        %112:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_161:i32 = load %112
+        %x_162:f32 = convert %x_161
+        %115:vec4<f32> = construct %x_162, %x_162, %x_162, %x_162
+        store %x_GLF_color, %115
+        exit_if  # if_10
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b25 {
+  %b25 = block {
+    %117:void = call %main_1
+    %118:vec4<f32> = load %x_GLF_color
+    %119:main_out = construct %118
+    ret %119
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..c71eb51
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,104 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %7:i32 = load %6
+    %8:f32 = convert %7
+    %9:vec4<f32> = construct %8
+    store %x_GLF_color, %9
+    %10:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %11:i32 = load %10
+    store %i, %11
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %12:i32 = load %i
+        %13:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %14:i32 = load %13
+        %15:bool = lt %12, %14
+        if %15 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %16:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+        %17:f32 = load %16
+        %18:i32 = load %i
+        %19:f32 = convert %18
+        %20:bool = lte %17, %19
+        %21:bool = eq %20, false
+        if %21 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %22:vec4<f32> = load %x_GLF_color
+            %23:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+            %24:f32 = load %23
+            %25:i32 = load %i
+            %26:f32 = convert %25
+            %27:i32 = load %i
+            %28:f32 = convert %27
+            %29:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+            %30:f32 = load %29
+            %31:vec4<f32> = construct %24, %26, %28, %30
+            %32:vec4<f32> = add %22, %31
+            store %x_GLF_color, %32
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %33:i32 = load %i
+        %34:i32 = add %33, 1i
+        store %i, %34
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %36:void = call %main_1
+    %37:vec4<f32> = load %x_GLF_color
+    %38:main_out = construct %37
+    ret %38
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0f675b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,104 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_29:i32 = load %6
+    %x_30:f32 = convert %x_29
+    %9:vec4<f32> = construct %x_30, %x_30, %x_30, %x_30
+    store %x_GLF_color, %9
+    %10:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_33:i32 = load %10
+    store %i, %x_33
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_38:i32 = load %i
+        %13:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %x_40:i32 = load %13
+        %15:bool = lt %x_38, %x_40
+        if %15 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %16:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+        %x_44:f32 = load %16
+        %x_45:i32 = load %i
+        %19:f32 = convert %x_45
+        %20:bool = lte %x_44, %19
+        %21:bool = eq %20, false
+        if %21 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %22:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+            %x_52:f32 = load %22
+            %x_53:i32 = load %i
+            %x_55:i32 = load %i
+            %26:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+            %x_58:f32 = load %26
+            %x_60:vec4<f32> = load %x_GLF_color
+            %29:f32 = convert %x_53
+            %30:f32 = convert %x_55
+            %31:vec4<f32> = construct %x_52, %29, %30, %x_58
+            %32:vec4<f32> = add %x_60, %31
+            store %x_GLF_color, %32
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_62:i32 = load %i
+        %34:i32 = add %x_62, 1i
+        store %i, %34
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %36:void = call %main_1
+    %37:vec4<f32> = load %x_GLF_color
+    %38:main_out = construct %37
+    ret %38
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..0f063ac
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %6:i32 = load %5
+    store %a, %6
+    %7:i32 = load %a
+    %8:vec2<i32> = construct %7
+    %9:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %10:i32 = load %9
+    %11:vec2<i32> = construct %10, 63677i
+    %12:vec2<i32> = div %8, %11
+    %13:i32 = access %12, 1u
+    %14:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %15:i32 = load %14
+    %16:bool = eq %13, %15
+    if %16 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %17:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %18:i32 = load %17
+        %19:f32 = convert %18
+        %20:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %21:i32 = load %20
+        %22:f32 = convert %21
+        %23:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %24:i32 = load %23
+        %25:f32 = convert %24
+        %26:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %27:i32 = load %26
+        %28:f32 = convert %27
+        %29:vec4<f32> = construct %19, %22, %25, %28
+        store %x_GLF_color, %29
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %30:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %31:i32 = load %30
+        %32:f32 = convert %31
+        %33:vec4<f32> = construct %32
+        store %x_GLF_color, %33
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %35:void = call %main_1
+    %36:vec4<f32> = load %x_GLF_color
+    %37:main_out = construct %36
+    ret %37
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..85af080
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_28:i32 = load %5
+    store %a, %x_28
+    %x_29:i32 = load %a
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_31:i32 = load %8
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_37:i32 = load %10
+    %12:vec2<i32> = construct %x_29, %x_29
+    %13:vec2<i32> = construct %x_31, 63677i
+    %14:vec2<i32> = div %12, %13
+    %15:i32 = access %14, 1u
+    %16:bool = eq %15, %x_37
+    if %16 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %17:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_43:i32 = load %17
+        %19:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_46:i32 = load %19
+        %21:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_49:i32 = load %21
+        %23:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_52:i32 = load %23
+        %25:f32 = convert %x_43
+        %26:f32 = convert %x_46
+        %27:f32 = convert %x_49
+        %28:f32 = convert %x_52
+        %29:vec4<f32> = construct %25, %26, %27, %28
+        store %x_GLF_color, %29
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %30:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_56:i32 = load %30
+        %x_57:f32 = convert %x_56
+        %33:vec4<f32> = construct %x_57, %x_57, %x_57, %x_57
+        store %x_GLF_color, %33
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %35:void = call %main_1
+    %36:vec4<f32> = load %x_GLF_color
+    %37:main_out = construct %36
+    ret %37
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f4e5f49
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,105 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %7:f32 = load_vector_element %gl_FragCoord, 0u
+    %8:i32 = convert %7
+    %9:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %10:i32 = load %9
+    %11:bool = lt %8, %10
+    %12:i32 = select -1i, 0i, %11
+    store %a, %12
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %13:i32 = load %i
+        %14:bool = lt %13, 5i
+        if %14 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %15:i32 = load %a
+        %16:i32 = div %15, 2i
+        store %a, %16
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %17:i32 = load %i
+        %18:i32 = add %17, 1i
+        store %i, %18
+        next_iteration %b3
+      }
+    }
+    %19:i32 = load %a
+    %20:bool = eq %19, 0i
+    if %20 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %21:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %22:i32 = load %21
+        %23:f32 = convert %22
+        %24:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %25:i32 = load %24
+        %26:f32 = convert %25
+        %27:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %28:i32 = load %27
+        %29:f32 = convert %28
+        %30:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %31:i32 = load %30
+        %32:f32 = convert %31
+        %33:vec4<f32> = construct %23, %26, %29, %32
+        store %x_GLF_color, %33
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %34:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %35:i32 = load %34
+        %36:f32 = convert %35
+        %37:vec4<f32> = construct %36
+        store %x_GLF_color, %37
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b9 {
+  %b9 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %40:void = call %main_1
+    %41:vec4<f32> = load %x_GLF_color
+    %42:main_out = construct %41
+    ret %42
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9ddaa60
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,105 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %x_32:f32 = load_vector_element %gl_FragCoord, 0u
+    %8:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_35:i32 = load %8
+    %10:i32 = convert %x_32
+    %11:bool = lt %10, %x_35
+    %12:i32 = select -1i, 0i, %11
+    store %a, %12
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_42:i32 = load %i
+        %14:bool = lt %x_42, 5i
+        if %14 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_45:i32 = load %a
+        %16:i32 = div %x_45, 2i
+        store %a, %16
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_47:i32 = load %i
+        %18:i32 = add %x_47, 1i
+        store %i, %18
+        next_iteration %b3
+      }
+    }
+    %x_49:i32 = load %a
+    %20:bool = eq %x_49, 0i
+    if %20 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %21:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_55:i32 = load %21
+        %23:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_58:i32 = load %23
+        %25:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_61:i32 = load %25
+        %27:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_64:i32 = load %27
+        %29:f32 = convert %x_55
+        %30:f32 = convert %x_58
+        %31:f32 = convert %x_61
+        %32:f32 = convert %x_64
+        %33:vec4<f32> = construct %29, %30, %31, %32
+        store %x_GLF_color, %33
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %34:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_68:i32 = load %34
+        %x_69:f32 = convert %x_68
+        %37:vec4<f32> = construct %x_69, %x_69, %x_69, %x_69
+        store %x_GLF_color, %37
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b9 {
+  %b9 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %40:void = call %main_1
+    %41:vec4<f32> = load %x_GLF_color
+    %42:main_out = construct %41
+    ret %42
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b732c39
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,115 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %count:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %7:i32 = load %6
+    store %count, %7
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %9:i32 = load %8
+    store %i, %9
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %10:i32 = load %i
+        %11:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %12:i32 = load %11
+        %13:bool = lt %10, %12
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %14:i32 = load %count
+        %15:i32 = mod %14, -93448i
+        %16:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %17:i32 = load %16
+        %18:bool = gt %15, %17
+        if %18 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %19:i32 = load %count
+            %20:i32 = add %19, 1i
+            store %count, %20
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %21:i32 = load %i
+        %22:i32 = add %21, 1i
+        store %i, %22
+        next_iteration %b3
+      }
+    }
+    %23:i32 = load %count
+    %24:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %25:i32 = load %24
+    %26:bool = eq %23, %25
+    if %26 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %27:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %28:i32 = load %27
+        %29:f32 = convert %28
+        %30:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %31:i32 = load %30
+        %32:f32 = convert %31
+        %33:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %34:i32 = load %33
+        %35:f32 = convert %34
+        %36:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %37:i32 = load %36
+        %38:f32 = convert %37
+        %39:vec4<f32> = construct %29, %32, %35, %38
+        store %x_GLF_color, %39
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %40:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %41:i32 = load %40
+        %42:f32 = convert %41
+        %43:vec4<f32> = construct %42
+        store %x_GLF_color, %43
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %45:void = call %main_1
+    %46:vec4<f32> = load %x_GLF_color
+    %47:main_out = construct %46
+    ret %47
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a2e1a65
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,115 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %count:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_27:i32 = load %6
+    store %count, %x_27
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_29:i32 = load %8
+    store %i, %x_29
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_34:i32 = load %i
+        %11:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_36:i32 = load %11
+        %13:bool = lt %x_34, %x_36
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_39:i32 = load %count
+        %15:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_42:i32 = load %15
+        %17:i32 = mod %x_39, -93448i
+        %18:bool = gt %17, %x_42
+        if %18 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %x_46:i32 = load %count
+            %20:i32 = add %x_46, 1i
+            store %count, %20
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_48:i32 = load %i
+        %22:i32 = add %x_48, 1i
+        store %i, %22
+        next_iteration %b3
+      }
+    }
+    %x_50:i32 = load %count
+    %24:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_52:i32 = load %24
+    %26:bool = eq %x_50, %x_52
+    if %26 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %27:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_58:i32 = load %27
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_61:i32 = load %29
+        %31:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_64:i32 = load %31
+        %33:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_67:i32 = load %33
+        %35:f32 = convert %x_58
+        %36:f32 = convert %x_61
+        %37:f32 = convert %x_64
+        %38:f32 = convert %x_67
+        %39:vec4<f32> = construct %35, %36, %37, %38
+        store %x_GLF_color, %39
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %40:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_71:i32 = load %40
+        %x_72:f32 = convert %x_71
+        %43:vec4<f32> = construct %x_72, %x_72, %x_72, %x_72
+        store %x_GLF_color, %43
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %45:void = call %main_1
+    %46:vec4<f32> = load %x_GLF_color
+    %47:main_out = construct %46
+    ret %47
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..5a833cb
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm.expected.ir.msl
@@ -0,0 +1,85 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v1:ptr<function, vec2<f32>, read_write> = var
+    %6:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_35:f32 = load %6
+    %8:vec2<f32> = construct %x_35
+    store %v1, %8
+    %9:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_38:i32 = load %9
+    %11:f32 = load_vector_element %v1, 1u
+    %12:f32 = ldexp %11, -256i
+    store_vector_element %v1, %x_38, %12
+    %13:vec2<f32> = load %v1
+    %14:vec2<f32> = construct %x_35, 0.0f
+    %15:vec2<f32> = construct 0.0f, %x_35
+    %16:mat2x2<f32> = construct %14, %15
+    %17:vec2<f32> = mul %13, %16
+    %18:f32 = access %17, 0u
+    %19:bool = eq %18, %x_35
+    if %19 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %x_53:f32 = convert %x_38
+        %21:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %22:i32 = load %21
+        %x_56:f32 = convert %22
+        %24:vec4<f32> = construct %x_53, %x_56, %x_56, %x_53
+        store %x_GLF_color, %24
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %25:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %26:i32 = load %25
+        %27:f32 = convert %26
+        %28:vec4<f32> = construct %27
+        store %x_GLF_color, %28
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %30:void = call %main_1
+    %31:vec4<f32> = load %x_GLF_color
+    %32:main_out = construct %31
+    ret %32
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b9af984
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl.expected.ir.msl
@@ -0,0 +1,85 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v1:ptr<function, vec2<f32>, read_write> = var
+    %6:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_35:f32 = load %6
+    %8:vec2<f32> = construct %x_35, %x_35
+    store %v1, %8
+    %9:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_38:i32 = load %9
+    %x_40:f32 = load_vector_element %v1, 1u
+    %12:f32 = ldexp %x_40, -256i
+    store_vector_element %v1, %x_38, %12
+    %x_43:vec2<f32> = load %v1
+    %14:vec2<f32> = construct %x_35, 0.0f
+    %15:vec2<f32> = construct 0.0f, %x_35
+    %16:mat2x2<f32> = construct %14, %15
+    %17:vec2<f32> = mul %x_43, %16
+    %18:f32 = access %17, 0u
+    %19:bool = eq %18, %x_35
+    if %19 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %x_53:f32 = convert %x_38
+        %21:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_55:i32 = load %21
+        %x_56:f32 = convert %x_55
+        %24:vec4<f32> = construct %x_53, %x_56, %x_56, %x_53
+        store %x_GLF_color, %24
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %25:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_59:i32 = load %25
+        %x_60:f32 = convert %x_59
+        %28:vec4<f32> = construct %x_60, %x_60, %x_60, %x_60
+        store %x_GLF_color, %28
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %30:void = call %main_1
+    %31:vec4<f32> = load %x_GLF_color
+    %32:main_out = construct %31
+    ret %32
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..8e600eb
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,91 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %idx:ptr<function, i32, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, array<strided_arr, 2>, read_write> = var
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %8:i32 = load %7
+    %9:u32 = bitcast %8
+    %10:i32 = shiftl 1i, %9
+    store %idx, %10
+    %x_34:i32 = load %idx
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %13:i32 = load %12
+    %14:strided_arr = construct %13
+    %15:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %16:i32 = load %15
+    %17:strided_arr = construct %16
+    %18:array<strided_arr, 2> = construct %14, %17
+    store %indexable, %18
+    %19:ptr<function, i32, read_write> = access %indexable, %x_34, 0u
+    %20:i32 = load %19
+    store %a, %20
+    %21:i32 = load %a
+    %22:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %23:i32 = load %22
+    %24:bool = eq %21, %23
+    if %24 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %26:i32 = load %25
+        %27:f32 = convert %26
+        %28:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %29:i32 = load %28
+        %30:f32 = convert %29
+        %31:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %32:i32 = load %31
+        %33:f32 = convert %32
+        %34:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %35:i32 = load %34
+        %36:f32 = convert %35
+        %37:vec4<f32> = construct %27, %30, %33, %36
+        store %x_GLF_color, %37
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %38:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %39:i32 = load %38
+        %40:f32 = convert %39
+        %41:vec4<f32> = construct %40
+        store %x_GLF_color, %41
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1aa0f3f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,91 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %idx:ptr<function, i32, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, array<strided_arr, 2>, read_write> = var
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_27:i32 = load %7
+    %9:u32 = bitcast %x_27
+    %10:i32 = shiftl 1i, %9
+    store %idx, %10
+    %11:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_30:i32 = load %11
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_32:i32 = load %13
+    %x_34:i32 = load %idx
+    %16:strided_arr = construct %x_30
+    %17:strided_arr = construct %x_32
+    %18:array<strided_arr, 2> = construct %16, %17
+    store %indexable, %18
+    %19:ptr<function, i32, read_write> = access %indexable, %x_34, 0u
+    %x_36:i32 = load %19
+    store %a, %x_36
+    %x_37:i32 = load %a
+    %22:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_39:i32 = load %22
+    %24:bool = eq %x_37, %x_39
+    if %24 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_45:i32 = load %25
+        %27:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_48:i32 = load %27
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_51:i32 = load %29
+        %31:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_54:i32 = load %31
+        %33:f32 = convert %x_45
+        %34:f32 = convert %x_48
+        %35:f32 = convert %x_51
+        %36:f32 = convert %x_54
+        %37:vec4<f32> = construct %33, %34, %35, %36
+        store %x_GLF_color, %37
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %38:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_58:i32 = load %38
+        %x_59:f32 = convert %x_58
+        %41:vec4<f32> = construct %x_59, %x_59, %x_59, %x_59
+        store %x_GLF_color, %41
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b18b2e7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.spvasm.expected.ir.msl
@@ -0,0 +1,83 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_32:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %x_24:i32 = load %5
+    %x_25:f32 = convert %x_24
+    %8:vec4<f32> = construct %x_25
+    store %x_GLF_color, %8
+    %9:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_28:i32 = load %9
+    %11:u32 = bitcast %x_28
+    %12:i32 = shiftl %x_28, %11
+    %x_30:i32 = shiftr %12, 1u
+    store %x_32, %x_24
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %14:bool = lt %x_30, 10i
+        if %14 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %15:i32 = load %x_32
+        %x_33:i32 = add %15, 1i
+        %17:ptr<uniform, i32, read> = access %x_5, 0u, 2i, 0u
+        %18:i32 = load %17
+        %19:bool = eq %x_33, %18
+        if %19 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %x_43:f32 = convert %x_28
+            %21:vec4<f32> = construct %x_43, %x_25, %x_25, %x_43
+            store %x_GLF_color, %21
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        store %x_32, %x_33
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %23:void = call %main_1
+    %24:vec4<f32> = load %x_GLF_color
+    %25:main_out = construct %24
+    ret %25
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e39ccda
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl.expected.ir.msl
@@ -0,0 +1,88 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_32_phi:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %x_24:i32 = load %5
+    %x_25:f32 = convert %x_24
+    %8:vec4<f32> = construct %x_25, %x_25, %x_25, %x_25
+    store %x_GLF_color, %8
+    %9:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_28:i32 = load %9
+    %11:u32 = bitcast %x_28
+    %12:i32 = shiftl %x_28, %11
+    %x_30:i32 = shiftr %12, 1u
+    store %x_32_phi, %x_24
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_32:i32 = load %x_32_phi
+        %15:bool = lt %x_30, 10i
+        if %15 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_33:ptr<function, i32, read_write> = var
+        %17:i32 = add %x_32, 1i
+        store %x_33, %17
+        %18:ptr<uniform, i32, read> = access %x_5, 0u, 2i, 0u
+        %x_39:i32 = load %18
+        %20:i32 = load %x_33
+        %21:i32 = bitcast %x_39
+        %22:bool = eq %20, %21
+        if %22 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %x_43:f32 = convert %x_28
+            %24:vec4<f32> = construct %x_43, %x_25, %x_25, %x_43
+            store %x_GLF_color, %24
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %25:i32 = load %x_33
+        store %x_32_phi, %25
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %27:void = call %main_1
+    %28:vec4<f32> = load %x_GLF_color
+    %29:main_out = construct %28
+    ret %29
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..418b130
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,137 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %x_66:ptr<function, bool, read_write> = var
+    %x_67:ptr<function, bool, read_write> = var
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %10:f32 = load %9
+    store %f, %10
+    %11:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %12:i32 = load %11
+    store %i, %12
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %13:i32 = load %i
+        %14:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %15:i32 = load %14
+        %16:bool = lt %13, %15
+        if %16 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %17:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %18:f32 = load %17
+        %19:f32 = negation %18
+        %20:f32 = load %f
+        %21:f32 = mul %19, %20
+        %22:f32 = abs %21
+        %23:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %24:f32 = load %23
+        %25:f32 = add %22, %24
+        store %f, %25
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %26:i32 = load %i
+        %27:i32 = add %26, 1i
+        store %i, %27
+        next_iteration %b3
+      }
+    }
+    %28:f32 = load %f
+    %29:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %30:f32 = load %29
+    %x_60:bool = gt %28, %30
+    store %x_67, %x_60
+    if %x_60 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        %32:f32 = load %f
+        %33:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %34:f32 = load %33
+        %35:bool = lt %32, %34
+        store %x_66, %35
+        %36:bool = load %x_66
+        store %x_67, %36
+        exit_if  # if_2
+      }
+    }
+    %37:bool = load %x_67
+    if %37 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %38:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %39:i32 = load %38
+        %40:f32 = convert %39
+        %41:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %42:i32 = load %41
+        %43:f32 = convert %42
+        %44:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %45:i32 = load %44
+        %46:f32 = convert %45
+        %47:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %48:i32 = load %47
+        %49:f32 = convert %48
+        %50:vec4<f32> = construct %40, %43, %46, %49
+        store %x_GLF_color, %50
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %51:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %52:i32 = load %51
+        %53:f32 = convert %52
+        %54:vec4<f32> = construct %53
+        store %x_GLF_color, %54
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %56:void = call %main_1
+    %57:vec4<f32> = load %x_GLF_color
+    %58:main_out = construct %57
+    ret %58
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..adddbe1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,137 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %x_66:ptr<function, bool, read_write> = var
+    %x_67_phi:ptr<function, bool, read_write> = var
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_34:f32 = load %9
+    store %f, %x_34
+    %11:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %x_36:i32 = load %11
+    store %i, %x_36
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_41:i32 = load %i
+        %14:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_43:i32 = load %14
+        %16:bool = lt %x_41, %x_43
+        if %16 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %17:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %x_47:f32 = load %17
+        %x_49:f32 = load %f
+        %20:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_53:f32 = load %20
+        %22:f32 = negation %x_47
+        %23:f32 = mul %22, %x_49
+        %24:f32 = abs %23
+        %25:f32 = add %24, %x_53
+        store %f, %25
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_55:i32 = load %i
+        %27:i32 = add %x_55, 1i
+        store %i, %27
+        next_iteration %b3
+      }
+    }
+    %x_57:f32 = load %f
+    %29:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_59:f32 = load %29
+    %x_60:bool = gt %x_57, %x_59
+    store %x_67_phi, %x_60
+    if %x_60 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        %x_63:f32 = load %f
+        %33:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+        %x_65:f32 = load %33
+        %35:bool = lt %x_63, %x_65
+        store %x_66, %35
+        %36:bool = load %x_66
+        store %x_67_phi, %36
+        exit_if  # if_2
+      }
+    }
+    %x_67:bool = load %x_67_phi
+    if %x_67 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %38:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %x_72:i32 = load %38
+        %40:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_75:i32 = load %40
+        %42:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_78:i32 = load %42
+        %44:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %x_81:i32 = load %44
+        %46:f32 = convert %x_72
+        %47:f32 = convert %x_75
+        %48:f32 = convert %x_78
+        %49:f32 = convert %x_81
+        %50:vec4<f32> = construct %46, %47, %48, %49
+        store %x_GLF_color, %50
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %51:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_85:i32 = load %51
+        %x_86:f32 = convert %x_85
+        %54:vec4<f32> = construct %x_86, %x_86, %x_86, %x_86
+        store %x_GLF_color, %54
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %56:void = call %main_1
+    %57:vec4<f32> = load %x_GLF_color
+    %58:main_out = construct %57
+    ret %58
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..fbcb7e8
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,132 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_global_loop_count:ptr<private, i32, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %x_GLF_global_loop_count, 0i
+    %8:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %9:f32 = load %8
+    store %f, %9
+    %10:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %11:i32 = load %10
+    store %i, %11
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %12:i32 = load %i
+        %13:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %14:i32 = load %13
+        %15:bool = lt %12, %14
+        if %15 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %16:f32 = load %f
+        %17:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+        %18:f32 = load %17
+        %19:bool = gt %16, %18
+        if %19 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+        }
+        store %f, 1.0f
+        %20:ptr<uniform, f32, read> = access %x_7, 0u, 2i, 0u
+        %21:f32 = load %20
+        %22:f32 = load %f
+        %23:f32 = clamp %21, 1.0f, %22
+        %24:f32 = sub 1.0f, %23
+        %25:i32 = load %i
+        %26:f32 = convert %25
+        %27:f32 = add %24, %26
+        store %f, %27
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %28:i32 = load %i
+        %29:i32 = add %28, 1i
+        store %i, %29
+        next_iteration %b3
+      }
+    }
+    %30:f32 = load %f
+    %31:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %32:f32 = load %31
+    %33:bool = eq %30, %32
+    if %33 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %34:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %35:i32 = load %34
+        %36:f32 = convert %35
+        %37:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %38:i32 = load %37
+        %39:f32 = convert %38
+        %40:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %41:i32 = load %40
+        %42:f32 = convert %41
+        %43:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %44:i32 = load %43
+        %45:f32 = convert %44
+        %46:vec4<f32> = construct %36, %39, %42, %45
+        store %x_GLF_color, %46
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %47:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %48:i32 = load %47
+        %49:f32 = convert %48
+        %50:vec4<f32> = construct %49
+        store %x_GLF_color, %50
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %52:void = call %main_1
+    %53:vec4<f32> = load %x_GLF_color
+    %54:main_out = construct %53
+    ret %54
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8fbe26b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,132 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_global_loop_count:ptr<private, i32, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %x_GLF_global_loop_count, 0i
+    %8:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_36:f32 = load %8
+    store %f, %x_36
+    %10:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %x_38:i32 = load %10
+    store %i, %x_38
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_43:i32 = load %i
+        %13:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_45:i32 = load %13
+        %15:bool = lt %x_43, %x_45
+        if %15 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_48:f32 = load %f
+        %17:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+        %x_50:f32 = load %17
+        %19:bool = gt %x_48, %x_50
+        if %19 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+        }
+        store %f, 1.0f
+        %20:ptr<uniform, f32, read> = access %x_7, 0u, 2i, 0u
+        %x_55:f32 = load %20
+        %x_56:f32 = load %f
+        %x_59:i32 = load %i
+        %24:f32 = clamp %x_55, 1.0f, %x_56
+        %25:f32 = sub 1.0f, %24
+        %26:f32 = convert %x_59
+        %27:f32 = add %25, %26
+        store %f, %27
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_62:i32 = load %i
+        %29:i32 = add %x_62, 1i
+        store %i, %29
+        next_iteration %b3
+      }
+    }
+    %x_64:f32 = load %f
+    %31:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_66:f32 = load %31
+    %33:bool = eq %x_64, %x_66
+    if %33 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %34:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_72:i32 = load %34
+        %36:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_75:i32 = load %36
+        %38:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_78:i32 = load %38
+        %40:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_81:i32 = load %40
+        %42:f32 = convert %x_72
+        %43:f32 = convert %x_75
+        %44:f32 = convert %x_78
+        %45:f32 = convert %x_81
+        %46:vec4<f32> = construct %42, %43, %44, %45
+        store %x_GLF_color, %46
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %47:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_85:i32 = load %47
+        %x_86:f32 = convert %x_85
+        %50:vec4<f32> = construct %x_86, %x_86, %x_86, %x_86
+        store %x_GLF_color, %50
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %52:void = call %main_1
+    %53:vec4<f32> = load %x_GLF_color
+    %54:main_out = construct %53
+    ret %54
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..04974ee
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,170 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 6> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %arr:ptr<function, array<i32, 3>, read_write> = var
+    %index:ptr<function, i32, read_write> = var
+    %x_76:ptr<function, bool, read_write> = var
+    %x_77:ptr<function, bool, read_write> = var
+    %x_86:ptr<function, bool, read_write> = var
+    %x_87:ptr<function, bool, read_write> = var
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %11:i32 = load %10
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %13:i32 = load %12
+    %14:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %15:i32 = load %14
+    %16:array<i32, 3> = construct %11, %13, %15
+    store %arr, %16
+    store %index, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_51:ptr<function, bool, read_write> = var
+        %x_52:ptr<function, bool, read_write> = var
+        store %x_52, true
+        if true [t: %b5] {  # if_1
+          %b5 = block {  # true
+            %19:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+            %20:i32 = load %19
+            %21:bool = eq %20, 1i
+            %22:i32 = load %index
+            %23:bool = lte %22, 1i
+            %24:bool = and %21, %23
+            %25:bool = eq %24, false
+            store %x_51, %25
+            %26:bool = load %x_51
+            store %x_52, %26
+            exit_if  # if_1
+          }
+        }
+        %27:bool = load %x_52
+        %28:bool = eq %27, false
+        if %28 [t: %b6, f: %b7] {  # if_2
+          %b6 = block {  # true
+            exit_if  # if_2
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_55:i32 = load %index
+        %x_56_save:i32 = let %x_55
+        %31:ptr<function, i32, read_write> = access %arr, %x_56_save
+        %32:ptr<function, i32, read_write> = access %arr, %x_55
+        %33:i32 = load %32
+        %34:i32 = add %33, 1i
+        store %31, %34
+        %35:i32 = load %index
+        %36:i32 = add %35, 1i
+        store %index, %36
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %37:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %38:i32 = load %37
+    %39:ptr<function, i32, read_write> = access %arr, %38
+    %40:i32 = load %39
+    %41:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %42:i32 = load %41
+    %x_67:bool = eq %40, %42
+    store %x_77, %x_67
+    if %x_67 [t: %b8] {  # if_3
+      %b8 = block {  # true
+        %44:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %45:i32 = load %44
+        %46:ptr<function, i32, read_write> = access %arr, %45
+        %47:i32 = load %46
+        %48:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %49:i32 = load %48
+        %50:bool = eq %47, %49
+        store %x_76, %50
+        %51:bool = load %x_76
+        store %x_77, %51
+        exit_if  # if_3
+      }
+    }
+    %52:bool = load %x_77
+    store %x_87, %52
+    %53:bool = load %x_77
+    if %53 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        %54:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %55:i32 = load %54
+        %56:ptr<function, i32, read_write> = access %arr, %55
+        %57:i32 = load %56
+        %58:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %59:i32 = load %58
+        %60:bool = eq %57, %59
+        store %x_86, %60
+        %61:bool = load %x_86
+        store %x_87, %61
+        exit_if  # if_4
+      }
+    }
+    %62:bool = load %x_87
+    if %62 [t: %b10, f: %b11] {  # if_5
+      %b10 = block {  # true
+        %63:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %64:i32 = load %63
+        %65:f32 = convert %64
+        %66:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %67:i32 = load %66
+        %68:f32 = convert %67
+        %69:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %70:i32 = load %69
+        %71:f32 = convert %70
+        %72:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %73:i32 = load %72
+        %74:f32 = convert %73
+        %75:vec4<f32> = construct %65, %68, %71, %74
+        store %x_GLF_color, %75
+        exit_if  # if_5
+      }
+      %b11 = block {  # false
+        %76:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %77:i32 = load %76
+        %78:f32 = convert %77
+        %79:vec4<f32> = construct %78
+        store %x_GLF_color, %79
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b12 {
+  %b12 = block {
+    %81:void = call %main_1
+    %82:vec4<f32> = load %x_GLF_color
+    %83:main_out = construct %82
+    ret %83
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4c7ea9f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,169 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 6> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %arr:ptr<function, array<i32, 3>, read_write> = var
+    %index:ptr<function, i32, read_write> = var
+    %x_76:ptr<function, bool, read_write> = var
+    %x_86:ptr<function, bool, read_write> = var
+    %x_77_phi:ptr<function, bool, read_write> = var
+    %x_87_phi:ptr<function, bool, read_write> = var
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_33:i32 = load %10
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %x_35:i32 = load %12
+    %14:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_37:i32 = load %14
+    %16:array<i32, 3> = construct %x_33, %x_35, %x_37
+    store %arr, %16
+    store %index, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_51:ptr<function, bool, read_write> = var
+        %x_52_phi:ptr<function, bool, read_write> = var
+        store %x_52_phi, true
+        if true [t: %b5] {  # if_1
+          %b5 = block {  # true
+            %19:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+            %x_46:i32 = load %19
+            %x_48:i32 = load %index
+            %22:bool = eq %x_46, 1i
+            %23:bool = lte %x_48, 1i
+            %24:bool = and %22, %23
+            %25:bool = eq %24, false
+            store %x_51, %25
+            %26:bool = load %x_51
+            store %x_52_phi, %26
+            exit_if  # if_1
+          }
+        }
+        %x_52:bool = load %x_52_phi
+        %28:bool = eq %x_52, false
+        if %28 [t: %b6, f: %b7] {  # if_2
+          %b6 = block {  # true
+            exit_if  # if_2
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_55:i32 = load %index
+        %x_56_save:i32 = let %x_55
+        %31:ptr<function, i32, read_write> = access %arr, %x_56_save
+        %x_57:i32 = load %31
+        %33:ptr<function, i32, read_write> = access %arr, %x_56_save
+        %34:i32 = add %x_57, 1i
+        store %33, %34
+        %x_59:i32 = load %index
+        %36:i32 = add %x_59, 1i
+        store %index, %36
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %37:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_62:i32 = load %37
+    %39:ptr<function, i32, read_write> = access %arr, %x_62
+    %x_64:i32 = load %39
+    %41:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_66:i32 = load %41
+    %x_67:bool = eq %x_64, %x_66
+    store %x_77_phi, %x_67
+    if %x_67 [t: %b8] {  # if_3
+      %b8 = block {  # true
+        %44:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_71:i32 = load %44
+        %46:ptr<function, i32, read_write> = access %arr, %x_71
+        %x_73:i32 = load %46
+        %48:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %x_75:i32 = load %48
+        %50:bool = eq %x_73, %x_75
+        store %x_76, %50
+        %51:bool = load %x_76
+        store %x_77_phi, %51
+        exit_if  # if_3
+      }
+    }
+    %x_77:bool = load %x_77_phi
+    store %x_87_phi, %x_77
+    if %x_77 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        %53:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_81:i32 = load %53
+        %55:ptr<function, i32, read_write> = access %arr, %x_81
+        %x_83:i32 = load %55
+        %57:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_85:i32 = load %57
+        %59:bool = eq %x_83, %x_85
+        store %x_86, %59
+        %60:bool = load %x_86
+        store %x_87_phi, %60
+        exit_if  # if_4
+      }
+    }
+    %x_87:bool = load %x_87_phi
+    if %x_87 [t: %b10, f: %b11] {  # if_5
+      %b10 = block {  # true
+        %62:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_92:i32 = load %62
+        %64:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_95:i32 = load %64
+        %66:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_98:i32 = load %66
+        %68:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_101:i32 = load %68
+        %70:f32 = convert %x_92
+        %71:f32 = convert %x_95
+        %72:f32 = convert %x_98
+        %73:f32 = convert %x_101
+        %74:vec4<f32> = construct %70, %71, %72, %73
+        store %x_GLF_color, %74
+        exit_if  # if_5
+      }
+      %b11 = block {  # false
+        %75:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_105:i32 = load %75
+        %x_106:f32 = convert %x_105
+        %78:vec4<f32> = construct %x_106, %x_106, %x_106, %x_106
+        store %x_GLF_color, %78
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b12 {
+  %b12 = block {
+    %80:void = call %main_1
+    %81:vec4<f32> = load %x_GLF_color
+    %82:main_out = construct %81
+    ret %82
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..43b6bc8
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,141 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_11:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %c:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %10:f32 = load %9
+    store %a, %10
+    %11:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %12:f32 = load %11
+    store %b, %12
+    %13:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %14:f32 = load %13
+    store %c, %14
+    %15:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+    %16:i32 = load %15
+    store %i, %16
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %17:i32 = load %i
+        %18:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+        %19:i32 = load %18
+        %20:bool = lt %17, %19
+        if %20 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %21:i32 = load %i
+        %22:ptr<uniform, i32, read> = access %x_11, 0u, 2i, 0u
+        %23:i32 = load %22
+        %24:bool = eq %21, %23
+        if %24 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %25:f32 = load %a
+            %26:f32 = dpdx %25
+            %27:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+            %28:f32 = load %27
+            %29:f32 = add %26, %28
+            store %b, %29
+            exit_if  # if_2
+          }
+        }
+        %30:f32 = load %a
+        %31:f32 = dpdx %30
+        store %c, %31
+        %32:f32 = load %c
+        %33:f32 = load %b
+        %34:f32 = div %32, %33
+        store %a, %34
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %35:i32 = load %i
+        %36:i32 = add %35, 1i
+        store %i, %36
+        next_iteration %b3
+      }
+    }
+    %37:f32 = load %a
+    %38:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %39:f32 = load %38
+    %40:bool = eq %37, %39
+    if %40 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %41:ptr<uniform, i32, read> = access %x_11, 0u, 2i, 0u
+        %42:i32 = load %41
+        %43:f32 = convert %42
+        %44:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %45:i32 = load %44
+        %46:f32 = convert %45
+        %47:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %48:i32 = load %47
+        %49:f32 = convert %48
+        %50:ptr<uniform, i32, read> = access %x_11, 0u, 2i, 0u
+        %51:i32 = load %50
+        %52:f32 = convert %51
+        %53:vec4<f32> = construct %43, %46, %49, %52
+        store %x_GLF_color, %53
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %54:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %55:i32 = load %54
+        %56:f32 = convert %55
+        %57:vec4<f32> = construct %56
+        store %x_GLF_color, %57
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %59:void = call %main_1
+    %60:vec4<f32> = load %x_GLF_color
+    %61:main_out = construct %60
+    ret %61
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cf727e8
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,141 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_11:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %c:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_35:f32 = load %9
+    store %a, %x_35
+    %11:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_37:f32 = load %11
+    store %b, %x_37
+    %13:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_39:f32 = load %13
+    store %c, %x_39
+    %15:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+    %x_41:i32 = load %15
+    store %i, %x_41
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_46:i32 = load %i
+        %18:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+        %x_48:i32 = load %18
+        %20:bool = lt %x_46, %x_48
+        if %20 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_51:i32 = load %i
+        %22:ptr<uniform, i32, read> = access %x_11, 0u, 2i, 0u
+        %x_53:i32 = load %22
+        %24:bool = eq %x_51, %x_53
+        if %24 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %x_57:f32 = load %a
+            %26:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+            %x_60:f32 = load %26
+            %28:f32 = dpdx %x_57
+            %29:f32 = add %28, %x_60
+            store %b, %29
+            exit_if  # if_2
+          }
+        }
+        %x_62:f32 = load %a
+        %31:f32 = dpdx %x_62
+        store %c, %31
+        %x_64:f32 = load %c
+        %x_65:f32 = load %b
+        %34:f32 = div %x_64, %x_65
+        store %a, %34
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_67:i32 = load %i
+        %36:i32 = add %x_67, 1i
+        store %i, %36
+        next_iteration %b3
+      }
+    }
+    %x_69:f32 = load %a
+    %38:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_71:f32 = load %38
+    %40:bool = eq %x_69, %x_71
+    if %40 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %41:ptr<uniform, i32, read> = access %x_11, 0u, 2i, 0u
+        %x_77:i32 = load %41
+        %43:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %x_80:i32 = load %43
+        %45:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %x_83:i32 = load %45
+        %47:ptr<uniform, i32, read> = access %x_11, 0u, 2i, 0u
+        %x_86:i32 = load %47
+        %49:f32 = convert %x_77
+        %50:f32 = convert %x_80
+        %51:f32 = convert %x_83
+        %52:f32 = convert %x_86
+        %53:vec4<f32> = construct %49, %50, %51, %52
+        store %x_GLF_color, %53
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %54:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %x_90:i32 = load %54
+        %x_91:f32 = convert %x_90
+        %57:vec4<f32> = construct %x_91, %x_91, %x_91, %x_91
+        store %x_GLF_color, %57
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %59:void = call %main_1
+    %60:vec4<f32> = load %x_GLF_color
+    %61:main_out = construct %60
+    ret %61
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..086a60e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,182 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m23:ptr<function, mat2x3<f32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %8:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_46:f32 = load %8
+    %10:vec3<f32> = construct %x_46, 0.0f, 0.0f
+    %11:vec3<f32> = construct 0.0f, %x_46, 0.0f
+    %12:mat2x3<f32> = construct %10, %11
+    store %m23, %12
+    store %i, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_80:ptr<function, bool, read_write> = var
+        %x_81:ptr<function, bool, read_write> = var
+        %15:i32 = load %i
+        %16:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %17:i32 = load %16
+        %18:bool = lt %15, %17
+        if %18 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %19:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_60:i32 = load %19
+        %21:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_62:i32 = load %21
+        %23:ptr<function, vec3<f32>, read_write> = access %m23, %x_60
+        %24:ptr<function, vec3<f32>, read_write> = access %m23, %x_60
+        %25:f32 = load_vector_element %24, %x_62
+        %26:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %27:f32 = load %26
+        %28:f32 = add %25, %27
+        store_vector_element %23, %x_62, %28
+        %29:f32 = load_vector_element %gl_FragCoord, 1u
+        %30:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %31:f32 = load %30
+        %32:bool = lt %29, %31
+        if %32 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+        }
+        store %x_81, true
+        if true [t: %b8] {  # if_3
+          %b8 = block {  # true
+            %33:f32 = load_vector_element %gl_FragCoord, 0u
+            %34:bool = lt %33, 0.0f
+            store %x_80, %34
+            %35:bool = load %x_80
+            store %x_81, %35
+            exit_if  # if_3
+          }
+        }
+        %36:bool = load %x_81
+        %37:bool = eq %36, false
+        if %37 [t: %b9] {  # if_4
+          %b9 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %38:i32 = load %i
+        %39:i32 = add %38, 1i
+        store %i, %39
+        next_iteration %b3
+      }
+    }
+    %40:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %41:i32 = load %40
+    %42:f32 = convert %41
+    %43:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %44:i32 = load %43
+    %45:f32 = convert %44
+    %46:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %47:i32 = load %46
+    %48:f32 = convert %47
+    %49:vec3<f32> = construct %42, %45, %48
+    %50:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %51:i32 = load %50
+    %52:f32 = convert %51
+    %53:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %54:i32 = load %53
+    %55:f32 = convert %54
+    %56:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+    %57:i32 = load %56
+    %58:f32 = convert %57
+    %59:vec3<f32> = construct %52, %55, %58
+    %x_108:mat2x3<f32> = construct %49, %59
+    %61:ptr<function, vec3<f32>, read_write> = access %m23, 0u
+    %62:vec3<f32> = load %61
+    %63:vec3<f32> = access %x_108, 0u
+    %64:vec3<bool> = eq %62, %63
+    %65:bool = all %64
+    %66:ptr<function, vec3<f32>, read_write> = access %m23, 1u
+    %67:vec3<f32> = load %66
+    %68:vec3<f32> = access %x_108, 1u
+    %69:vec3<bool> = eq %67, %68
+    %70:bool = all %69
+    %71:bool = and %65, %70
+    if %71 [t: %b10, f: %b11] {  # if_5
+      %b10 = block {  # true
+        %72:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %73:i32 = load %72
+        %74:f32 = convert %73
+        %75:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %76:i32 = load %75
+        %77:f32 = convert %76
+        %78:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %79:i32 = load %78
+        %80:f32 = convert %79
+        %81:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %82:i32 = load %81
+        %83:f32 = convert %82
+        %84:vec4<f32> = construct %74, %77, %80, %83
+        store %x_GLF_color, %84
+        exit_if  # if_5
+      }
+      %b11 = block {  # false
+        %85:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %86:i32 = load %85
+        %87:f32 = convert %86
+        %88:vec4<f32> = construct %87
+        store %x_GLF_color, %88
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b12 {
+  %b12 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %91:void = call %main_1
+    %92:vec4<f32> = load %x_GLF_color
+    %93:main_out = construct %92
+    ret %93
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..24f41cd
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,181 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m23:ptr<function, mat2x3<f32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %8:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_46:f32 = load %8
+    %10:vec3<f32> = construct %x_46, 0.0f, 0.0f
+    %11:vec3<f32> = construct 0.0f, %x_46, 0.0f
+    %12:mat2x3<f32> = construct %10, %11
+    store %m23, %12
+    store %i, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_80:ptr<function, bool, read_write> = var
+        %x_81_phi:ptr<function, bool, read_write> = var
+        %x_54:i32 = load %i
+        %16:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_56:i32 = load %16
+        %18:bool = lt %x_54, %x_56
+        if %18 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %19:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_60:i32 = load %19
+        %21:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_62:i32 = load %21
+        %23:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %x_64:f32 = load %23
+        %25:ptr<function, vec3<f32>, read_write> = access %m23, %x_60
+        %x_66:f32 = load_vector_element %25, %x_62
+        %27:ptr<function, vec3<f32>, read_write> = access %m23, %x_60
+        %28:f32 = add %x_66, %x_64
+        store_vector_element %27, %x_62, %28
+        %x_70:f32 = load_vector_element %gl_FragCoord, 1u
+        %30:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %x_72:f32 = load %30
+        %32:bool = lt %x_70, %x_72
+        if %32 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+        }
+        store %x_81_phi, true
+        if true [t: %b8] {  # if_3
+          %b8 = block {  # true
+            %x_79:f32 = load_vector_element %gl_FragCoord, 0u
+            %34:bool = lt %x_79, 0.0f
+            store %x_80, %34
+            %35:bool = load %x_80
+            store %x_81_phi, %35
+            exit_if  # if_3
+          }
+        }
+        %x_81:bool = load %x_81_phi
+        %37:bool = eq %x_81, false
+        if %37 [t: %b9] {  # if_4
+          %b9 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_85:i32 = load %i
+        %39:i32 = add %x_85, 1i
+        store %i, %39
+        next_iteration %b3
+      }
+    }
+    %x_87:mat2x3<f32> = load %m23
+    %41:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %x_89:i32 = load %41
+    %43:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %x_92:i32 = load %43
+    %45:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %x_95:i32 = load %45
+    %47:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %x_98:i32 = load %47
+    %49:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %x_101:i32 = load %49
+    %51:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+    %x_104:i32 = load %51
+    %53:f32 = convert %x_89
+    %54:f32 = convert %x_92
+    %55:f32 = convert %x_95
+    %56:vec3<f32> = construct %53, %54, %55
+    %57:f32 = convert %x_98
+    %58:f32 = convert %x_101
+    %59:f32 = convert %x_104
+    %60:vec3<f32> = construct %57, %58, %59
+    %x_108:mat2x3<f32> = construct %56, %60
+    %62:vec3<f32> = access %x_87, 0u
+    %63:vec3<f32> = access %x_108, 0u
+    %64:vec3<bool> = eq %62, %63
+    %65:bool = all %64
+    %66:vec3<f32> = access %x_87, 1u
+    %67:vec3<f32> = access %x_108, 1u
+    %68:vec3<bool> = eq %66, %67
+    %69:bool = all %68
+    %70:bool = and %65, %69
+    if %70 [t: %b10, f: %b11] {  # if_5
+      %b10 = block {  # true
+        %71:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_122:i32 = load %71
+        %73:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_125:i32 = load %73
+        %75:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_128:i32 = load %75
+        %77:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_131:i32 = load %77
+        %79:f32 = convert %x_122
+        %80:f32 = convert %x_125
+        %81:f32 = convert %x_128
+        %82:f32 = convert %x_131
+        %83:vec4<f32> = construct %79, %80, %81, %82
+        store %x_GLF_color, %83
+        exit_if  # if_5
+      }
+      %b11 = block {  # false
+        %84:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_135:i32 = load %84
+        %x_136:f32 = convert %x_135
+        %87:vec4<f32> = construct %x_136, %x_136, %x_136, %x_136
+        store %x_GLF_color, %87
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b12 {
+  %b12 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %90:void = call %main_1
+    %91:vec4<f32> = load %x_GLF_color
+    %92:main_out = construct %91
+    ret %92
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..e3a6cc4
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,117 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %7:i32 = load %6
+    store %a, %7
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %8:i32 = load %i
+        %9:bool = lt %8, 3i
+        if %9 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %10:i32 = load %i
+        %11:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %12:i32 = load %11
+        %13:bool = eq %10, %12
+        if %13 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %14:i32 = load %a
+            %15:i32 = add %14, 1i
+            store %a, %15
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %16:i32 = load %a
+            %17:i32 = load %i
+            %18:i32 = div %16, %17
+            store %a, %18
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %19:i32 = load %i
+        %20:i32 = add %19, 1i
+        store %i, %20
+        next_iteration %b3
+      }
+    }
+    %21:i32 = load %a
+    %22:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %23:i32 = load %22
+    %24:bool = eq %21, %23
+    if %24 [t: %b9, f: %b10] {  # if_3
+      %b9 = block {  # true
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %26:i32 = load %25
+        %27:f32 = convert %26
+        %28:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %29:i32 = load %28
+        %30:f32 = convert %29
+        %31:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %32:i32 = load %31
+        %33:f32 = convert %32
+        %34:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %35:i32 = load %34
+        %36:f32 = convert %35
+        %37:vec4<f32> = construct %27, %30, %33, %36
+        store %x_GLF_color, %37
+        exit_if  # if_3
+      }
+      %b10 = block {  # false
+        %38:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %39:i32 = load %38
+        %40:f32 = convert %39
+        %41:vec4<f32> = construct %40
+        store %x_GLF_color, %41
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b1bb82f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,117 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_27:i32 = load %6
+    store %a, %x_27
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_32:i32 = load %i
+        %9:bool = lt %x_32, 3i
+        if %9 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_35:i32 = load %i
+        %11:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_37:i32 = load %11
+        %13:bool = eq %x_35, %x_37
+        if %13 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_42:i32 = load %a
+            %15:i32 = add %x_42, 1i
+            store %a, %15
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_44:i32 = load %a
+            %x_45:i32 = load %i
+            %18:i32 = div %x_44, %x_45
+            store %a, %18
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_47:i32 = load %i
+        %20:i32 = add %x_47, 1i
+        store %i, %20
+        next_iteration %b3
+      }
+    }
+    %x_49:i32 = load %a
+    %22:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_51:i32 = load %22
+    %24:bool = eq %x_49, %x_51
+    if %24 [t: %b9, f: %b10] {  # if_3
+      %b9 = block {  # true
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_57:i32 = load %25
+        %27:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_60:i32 = load %27
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_63:i32 = load %29
+        %31:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_66:i32 = load %31
+        %33:f32 = convert %x_57
+        %34:f32 = convert %x_60
+        %35:f32 = convert %x_63
+        %36:f32 = convert %x_66
+        %37:vec4<f32> = construct %33, %34, %35, %36
+        store %x_GLF_color, %37
+        exit_if  # if_3
+      }
+      %b10 = block {  # false
+        %38:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_70:i32 = load %38
+        %x_71:f32 = convert %x_70
+        %41:vec4<f32> = construct %x_71, %x_71, %x_71, %x_71
+        store %x_GLF_color, %41
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..89d61f5
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,98 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %6:i32 = load %5
+    store %a, %6
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %7:i32 = load %a
+        %8:bool = gte %7, 0i
+        if %8 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %9:i32 = load %a
+        %10:i32 = div %9, 2i
+        %11:i32 = sub %10, 1i
+        store %a, %11
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %12:i32 = load %a
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %14:i32 = load %13
+    %15:i32 = negation %14
+    %16:bool = eq %12, %15
+    if %16 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %17:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %18:i32 = load %17
+        %19:f32 = convert %18
+        %20:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %21:i32 = load %20
+        %22:f32 = convert %21
+        %23:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %24:i32 = load %23
+        %25:f32 = convert %24
+        %26:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %27:i32 = load %26
+        %28:f32 = convert %27
+        %29:vec4<f32> = construct %19, %22, %25, %28
+        store %x_GLF_color, %29
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %30:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %31:i32 = load %30
+        %32:f32 = convert %31
+        %33:vec4<f32> = construct %32
+        store %x_GLF_color, %33
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %35:void = call %main_1
+    %36:vec4<f32> = load %x_GLF_color
+    %37:main_out = construct %36
+    ret %37
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d96075d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,98 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_25:i32 = load %5
+    store %a, %x_25
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_30:i32 = load %a
+        %8:bool = gte %x_30, 0i
+        if %8 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_33:i32 = load %a
+        %10:i32 = div %x_33, 2i
+        %11:i32 = sub %10, 1i
+        store %a, %11
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %x_36:i32 = load %a
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_38:i32 = load %13
+    %15:i32 = negation %x_38
+    %16:bool = eq %x_36, %15
+    if %16 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %17:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_45:i32 = load %17
+        %19:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_48:i32 = load %19
+        %21:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_51:i32 = load %21
+        %23:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_54:i32 = load %23
+        %25:f32 = convert %x_45
+        %26:f32 = convert %x_48
+        %27:f32 = convert %x_51
+        %28:f32 = convert %x_54
+        %29:vec4<f32> = construct %25, %26, %27, %28
+        store %x_GLF_color, %29
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %30:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_58:i32 = load %30
+        %x_59:f32 = convert %x_58
+        %33:vec4<f32> = construct %x_59, %x_59, %x_59, %x_59
+        store %x_GLF_color, %33
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %35:void = call %main_1
+    %36:vec4<f32> = load %x_GLF_color
+    %37:main_out = construct %36
+    ret %37
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..55e055b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %6:i32 = load %5
+    store %a, %6
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %8:i32 = load %7
+    %9:f32 = convert %8
+    %10:vec4<f32> = construct %9
+    store %x_GLF_color, %10
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %11:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %12:i32 = load %11
+        %13:i32 = load %a
+        %14:bool = eq %12, %13
+        %15:bool = neq %14, true
+        if %15 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %16:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %17:i32 = load %16
+        %18:f32 = convert %17
+        %19:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %20:i32 = load %19
+        %21:f32 = convert %20
+        %22:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %23:i32 = load %22
+        %24:f32 = convert %23
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %26:i32 = load %25
+        %27:f32 = convert %26
+        %28:vec4<f32> = construct %18, %21, %24, %27
+        store %x_GLF_color, %28
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %30:void = call %main_1
+    %31:vec4<f32> = load %x_GLF_color
+    %32:main_out = construct %31
+    ret %32
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8409154
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_26:i32 = load %5
+    store %a, %x_26
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_28:i32 = load %7
+    %x_29:f32 = convert %x_28
+    %10:vec4<f32> = construct %x_29, %x_29, %x_29, %x_29
+    store %x_GLF_color, %10
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %11:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_36:i32 = load %11
+        %x_37:i32 = load %a
+        %14:bool = eq %x_36, %x_37
+        %15:bool = neq %14, true
+        if %15 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %16:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_42:i32 = load %16
+        %18:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_45:i32 = load %18
+        %20:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_48:i32 = load %20
+        %22:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_51:i32 = load %22
+        %24:f32 = convert %x_42
+        %25:f32 = convert %x_45
+        %26:f32 = convert %x_48
+        %27:f32 = convert %x_51
+        %28:vec4<f32> = construct %24, %25, %26, %27
+        store %x_GLF_color, %28
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %30:void = call %main_1
+    %31:vec4<f32> = load %x_GLF_color
+    %32:main_out = construct %31
+    ret %32
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..5301797
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,158 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %arr:ptr<function, array<f32, 5>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %8:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %9:f32 = load %8
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %11:f32 = load %10
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %13:f32 = load %12
+    %14:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %15:f32 = load %14
+    %16:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %17:f32 = load %16
+    %18:array<f32, 5> = construct %9, %11, %13, %15, %17
+    store %arr, %18
+    %19:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %20:i32 = load %19
+    store %i, %20
+    store %j, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %21:i32 = load %i
+        %22:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %23:i32 = load %22
+        %24:bool = lt %21, %23
+        if %24 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %25:i32 = load %j
+        %26:bool = lt %25, -1i
+        if %26 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %x_63:i32 = load %j
+        %28:ptr<function, f32, read_write> = access %arr, %x_63
+        %29:i32 = load %j
+        %30:ptr<function, f32, read_write> = access %arr, %29
+        %31:f32 = load %30
+        %32:f32 = add %31, 1.0f
+        store %28, %32
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %33:i32 = load %i
+        %34:i32 = add %33, 1i
+        store %i, %34
+        %35:i32 = load %j
+        %36:i32 = add %35, 1i
+        store %j, %36
+        next_iteration %b3
+      }
+    }
+    %37:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %38:f32 = load %37
+    %39:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %40:f32 = load %39
+    %41:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %42:f32 = load %41
+    %43:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %44:f32 = load %43
+    %45:vec4<f32> = construct %38, %40, %42, %44
+    store %x_GLF_color, %45
+    %46:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %47:i32 = load %46
+    store %i, %47
+    loop [b: %b8, c: %b9] {  # loop_2
+      %b8 = block {  # body
+        %48:i32 = load %i
+        %49:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %50:i32 = load %49
+        %51:bool = lt %48, %50
+        if %51 [t: %b10, f: %b11] {  # if_3
+          %b10 = block {  # true
+            exit_if  # if_3
+          }
+          %b11 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %52:i32 = load %i
+        %53:ptr<function, f32, read_write> = access %arr, %52
+        %54:f32 = load %53
+        %55:bool = eq %54, 2.0f
+        %56:bool = eq %55, false
+        if %56 [t: %b12] {  # if_4
+          %b12 = block {  # true
+            %57:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+            %58:f32 = load %57
+            %59:vec4<f32> = construct %58
+            store %x_GLF_color, %59
+            exit_if  # if_4
+          }
+        }
+        continue %b9
+      }
+      %b9 = block {  # continuing
+        %60:i32 = load %i
+        %61:i32 = add %60, 1i
+        store %i, %61
+        next_iteration %b8
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %63:void = call %main_1
+    %64:vec4<f32> = load %x_GLF_color
+    %65:main_out = construct %64
+    ret %65
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..75d721e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,157 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %arr:ptr<function, array<f32, 5>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %8:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_38:f32 = load %8
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_40:f32 = load %10
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_42:f32 = load %12
+    %14:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_44:f32 = load %14
+    %16:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_46:f32 = load %16
+    %18:array<f32, 5> = construct %x_38, %x_40, %x_42, %x_44, %x_46
+    store %arr, %18
+    %19:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %x_49:i32 = load %19
+    store %i, %x_49
+    store %j, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_54:i32 = load %i
+        %22:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_56:i32 = load %22
+        %24:bool = lt %x_54, %x_56
+        if %24 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_59:i32 = load %j
+        %26:bool = lt %x_59, -1i
+        if %26 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %x_63:i32 = load %j
+        %28:ptr<function, f32, read_write> = access %arr, %x_63
+        %x_65:f32 = load %28
+        %30:ptr<function, f32, read_write> = access %arr, %x_63
+        %31:f32 = add %x_65, 1.0f
+        store %30, %31
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_68:i32 = load %i
+        %33:i32 = add %x_68, 1i
+        store %i, %33
+        %x_70:i32 = load %j
+        %35:i32 = add %x_70, 1i
+        store %j, %35
+        next_iteration %b3
+      }
+    }
+    %36:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_73:f32 = load %36
+    %38:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_75:f32 = load %38
+    %40:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_77:f32 = load %40
+    %42:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_79:f32 = load %42
+    %44:vec4<f32> = construct %x_73, %x_75, %x_77, %x_79
+    store %x_GLF_color, %44
+    %45:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %x_82:i32 = load %45
+    store %i, %x_82
+    loop [b: %b8, c: %b9] {  # loop_2
+      %b8 = block {  # body
+        %x_87:i32 = load %i
+        %48:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_89:i32 = load %48
+        %50:bool = lt %x_87, %x_89
+        if %50 [t: %b10, f: %b11] {  # if_3
+          %b10 = block {  # true
+            exit_if  # if_3
+          }
+          %b11 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_92:i32 = load %i
+        %52:ptr<function, f32, read_write> = access %arr, %x_92
+        %x_94:f32 = load %52
+        %54:bool = eq %x_94, 2.0f
+        %55:bool = eq %54, false
+        if %55 [t: %b12] {  # if_4
+          %b12 = block {  # true
+            %56:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+            %x_99:f32 = load %56
+            %58:vec4<f32> = construct %x_99, %x_99, %x_99, %x_99
+            store %x_GLF_color, %58
+            exit_if  # if_4
+          }
+        }
+        continue %b9
+      }
+      %b9 = block {  # continuing
+        %x_101:i32 = load %i
+        %60:i32 = add %x_101, 1i
+        store %i, %60
+        next_iteration %b8
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %62:void = call %main_1
+    %63:vec4<f32> = load %x_GLF_color
+    %64:main_out = construct %63
+    ret %64
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b4e746d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,227 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 6> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_12:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %data:ptr<function, array<i32, 5>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %11:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %12:i32 = load %11
+    %13:f32 = convert %12
+    %14:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %15:i32 = load %14
+    %16:f32 = convert %15
+    %17:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %18:i32 = load %17
+    %19:f32 = convert %18
+    %20:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %21:i32 = load %20
+    %22:f32 = convert %21
+    %23:vec4<f32> = construct %13, %16, %19, %22
+    store %x_GLF_color, %23
+    %24:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %25:i32 = load %24
+    %26:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %27:i32 = load %26
+    %28:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %29:i32 = load %28
+    %30:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %31:i32 = load %30
+    %32:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %33:i32 = load %32
+    %34:array<i32, 5> = construct %25, %27, %29, %31, %33
+    store %data, %34
+    %35:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %36:i32 = load %35
+    store %a, %36
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %37:i32 = load %a
+        %38:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %39:i32 = load %38
+        %40:bool = lt %37, %39
+        if %40 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %41:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+        %42:i32 = load %41
+        store %i, %42
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %43:i32 = load %i
+            %44:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %45:i32 = load %44
+            %46:bool = lt %43, %45
+            if %46 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %47:i32 = load %i
+            store %j, %47
+            loop [b: %b11, c: %b12] {  # loop_3
+              %b11 = block {  # body
+                %48:i32 = load %j
+                %49:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                %50:i32 = load %49
+                %51:bool = lt %48, %50
+                if %51 [t: %b13, f: %b14] {  # if_3
+                  %b13 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b14 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %52:i32 = load %i
+                %53:ptr<function, i32, read_write> = access %data, %52
+                %54:i32 = load %53
+                %55:i32 = load %j
+                %56:ptr<function, i32, read_write> = access %data, %55
+                %57:i32 = load %56
+                %58:bool = lt %54, %57
+                if %58 [t: %b15] {  # if_4
+                  %b15 = block {  # true
+                    %59:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+                    %60:i32 = load %59
+                    %61:f32 = convert %60
+                    %62:vec4<f32> = construct %61
+                    store %x_GLF_color, %62
+                    exit_if  # if_4
+                  }
+                }
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %63:i32 = load %j
+                %64:i32 = add %63, 1i
+                store %j, %64
+                next_iteration %b11
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %65:i32 = load %i
+            %66:i32 = add %65, 1i
+            store %i, %66
+            next_iteration %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %67:i32 = load %a
+        %68:i32 = add %67, 1i
+        store %a, %68
+        next_iteration %b3
+      }
+    }
+    loop [b: %b16, c: %b17] {  # loop_4
+      %b16 = block {  # body
+        %69:f32 = load_vector_element %gl_FragCoord, 0u
+        %70:ptr<uniform, f32, read> = access %x_12, 0u, 0i, 0u
+        %71:f32 = load %70
+        %72:bool = lt %69, %71
+        if %72 [t: %b18, f: %b19] {  # if_5
+          %b18 = block {  # true
+            exit_if  # if_5
+          }
+          %b19 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %73:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+        %74:i32 = load %73
+        store %i_1, %74
+        loop [b: %b20, c: %b21] {  # loop_5
+          %b20 = block {  # body
+            %75:i32 = load %i_1
+            %76:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+            %77:i32 = load %76
+            %78:bool = lt %75, %77
+            if %78 [t: %b22, f: %b23] {  # if_6
+              %b22 = block {  # true
+                exit_if  # if_6
+              }
+              %b23 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %79:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+            %80:i32 = load %79
+            %81:f32 = convert %80
+            %82:vec4<f32> = construct %81
+            store %x_GLF_color, %82
+            continue %b21
+          }
+          %b21 = block {  # continuing
+            %83:i32 = load %i_1
+            %84:i32 = add %83, 1i
+            store %i_1, %84
+            next_iteration %b20
+          }
+        }
+        continue %b17
+      }
+      %b17 = block {  # continuing
+        next_iteration %b16
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b24 {
+  %b24 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %87:void = call %main_1
+    %88:vec4<f32> = load %x_GLF_color
+    %89:main_out = construct %88
+    ret %89
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..31f5d15
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,227 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 6> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_12:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %data:ptr<function, array<i32, 5>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %11:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_45:i32 = load %11
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %x_48:i32 = load %13
+    %15:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %x_51:i32 = load %15
+    %17:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_54:i32 = load %17
+    %19:f32 = convert %x_45
+    %20:f32 = convert %x_48
+    %21:f32 = convert %x_51
+    %22:f32 = convert %x_54
+    %23:vec4<f32> = construct %19, %20, %21, %22
+    store %x_GLF_color, %23
+    %24:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_58:i32 = load %24
+    %26:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_60:i32 = load %26
+    %28:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_62:i32 = load %28
+    %30:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %x_64:i32 = load %30
+    %32:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_66:i32 = load %32
+    %34:array<i32, 5> = construct %x_58, %x_60, %x_62, %x_64, %x_66
+    store %data, %34
+    %35:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %x_69:i32 = load %35
+    store %a, %x_69
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_74:i32 = load %a
+        %38:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_76:i32 = load %38
+        %40:bool = lt %x_74, %x_76
+        if %40 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %41:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+        %x_80:i32 = load %41
+        store %i, %x_80
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %x_85:i32 = load %i
+            %44:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %x_87:i32 = load %44
+            %46:bool = lt %x_85, %x_87
+            if %46 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_90:i32 = load %i
+            store %j, %x_90
+            loop [b: %b11, c: %b12] {  # loop_3
+              %b11 = block {  # body
+                %x_95:i32 = load %j
+                %49:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                %x_97:i32 = load %49
+                %51:bool = lt %x_95, %x_97
+                if %51 [t: %b13, f: %b14] {  # if_3
+                  %b13 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b14 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %x_100:i32 = load %i
+                %53:ptr<function, i32, read_write> = access %data, %x_100
+                %x_102:i32 = load %53
+                %x_103:i32 = load %j
+                %56:ptr<function, i32, read_write> = access %data, %x_103
+                %x_105:i32 = load %56
+                %58:bool = lt %x_102, %x_105
+                if %58 [t: %b15] {  # if_4
+                  %b15 = block {  # true
+                    %59:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+                    %x_110:i32 = load %59
+                    %x_111:f32 = convert %x_110
+                    %62:vec4<f32> = construct %x_111, %x_111, %x_111, %x_111
+                    store %x_GLF_color, %62
+                    exit_if  # if_4
+                  }
+                }
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %x_113:i32 = load %j
+                %64:i32 = add %x_113, 1i
+                store %j, %64
+                next_iteration %b11
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %x_115:i32 = load %i
+            %66:i32 = add %x_115, 1i
+            store %i, %66
+            next_iteration %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_117:i32 = load %a
+        %68:i32 = add %x_117, 1i
+        store %a, %68
+        next_iteration %b3
+      }
+    }
+    loop [b: %b16, c: %b17] {  # loop_4
+      %b16 = block {  # body
+        %x_124:f32 = load_vector_element %gl_FragCoord, 0u
+        %70:ptr<uniform, f32, read> = access %x_12, 0u, 0i, 0u
+        %x_126:f32 = load %70
+        %72:bool = lt %x_124, %x_126
+        if %72 [t: %b18, f: %b19] {  # if_5
+          %b18 = block {  # true
+            exit_if  # if_5
+          }
+          %b19 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %73:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+        %x_130:i32 = load %73
+        store %i_1, %x_130
+        loop [b: %b20, c: %b21] {  # loop_5
+          %b20 = block {  # body
+            %x_135:i32 = load %i_1
+            %76:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+            %x_137:i32 = load %76
+            %78:bool = lt %x_135, %x_137
+            if %78 [t: %b22, f: %b23] {  # if_6
+              %b22 = block {  # true
+                exit_if  # if_6
+              }
+              %b23 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %79:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+            %x_141:i32 = load %79
+            %x_142:f32 = convert %x_141
+            %82:vec4<f32> = construct %x_142, %x_142, %x_142, %x_142
+            store %x_GLF_color, %82
+            continue %b21
+          }
+          %b21 = block {  # continuing
+            %x_144:i32 = load %i_1
+            %84:i32 = add %x_144, 1i
+            store %i_1, %84
+            next_iteration %b20
+          }
+        }
+        continue %b17
+      }
+      %b17 = block {  # continuing
+        next_iteration %b16
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b24 {
+  %b24 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %87:void = call %main_1
+    %88:vec4<f32> = load %x_GLF_color
+    %89:main_out = construct %88
+    ret %89
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..098753b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,153 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_v1_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_12:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_v1:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %uv:ptr<function, vec2<f32>, read_write> = var
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %a:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %10:vec4<f32> = load %gl_FragCoord
+    %11:vec2<f32> = swizzle %10, xy
+    store %uv, %11
+    %12:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %13:f32 = load %12
+    %14:vec4<f32> = construct %13
+    store %v1, %14
+    %15:f32 = load_vector_element %uv, 1u
+    %16:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %17:f32 = load %16
+    %18:bool = gte %15, %17
+    if %18 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %19:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+        %20:f32 = load %19
+        store_vector_element %v1, 0u, %20
+        %21:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %22:f32 = load %21
+        store_vector_element %v1, 1u, %22
+        %23:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %24:f32 = load %23
+        store_vector_element %v1, 2u, %24
+        %25:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+        %26:f32 = load %25
+        store_vector_element %v1, 3u, %26
+        exit_if  # if_1
+      }
+    }
+    %27:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+    %28:f32 = load %27
+    store %a, %28
+    %29:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+    %30:i32 = load %29
+    store %i, %30
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %31:i32 = load %i
+        %32:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
+        %33:i32 = load %32
+        %34:bool = lt %31, %33
+        if %34 [t: %b6, f: %b7] {  # if_2
+          %b6 = block {  # true
+            exit_if  # if_2
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %35:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+        %36:f32 = load %35
+        %37:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %38:f32 = load %37
+        %39:bool = lt %36, %38
+        if %39 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            discard
+            exit_if  # if_3
+          }
+        }
+        %40:f32 = load_vector_element %v1, 0u
+        %41:f32 = load_vector_element %v1, 1u
+        %42:f32 = add %40, %41
+        %43:f32 = load_vector_element %v1, 2u
+        %44:f32 = add %42, %43
+        %45:f32 = load_vector_element %v1, 3u
+        %46:f32 = add %44, %45
+        %47:ptr<uniform, f32, read> = access %x_8, 0u, 3i, 0u
+        %48:f32 = load %47
+        %49:f32 = pow %46, %48
+        store %a, %49
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %50:i32 = load %i
+        %51:i32 = add %50, 1i
+        store %i, %51
+        next_iteration %b4
+      }
+    }
+    %52:f32 = load %a
+    %53:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %54:f32 = load %53
+    %55:bool = eq %52, %54
+    if %55 [t: %b9, f: %b10] {  # if_4
+      %b9 = block {  # true
+        %56:vec4<f32> = load %v1
+        store %x_GLF_v1, %56
+        exit_if  # if_4
+      }
+      %b10 = block {  # false
+        %57:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+        %58:i32 = load %57
+        %59:f32 = convert %58
+        %60:vec4<f32> = construct %59
+        store %x_GLF_v1, %60
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b11 {
+  %b11 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %63:void = call %main_1
+    %64:vec4<f32> = load %x_GLF_v1
+    %65:main_out = construct %64
+    ret %65
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..51b3acd
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,155 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_v1_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_12:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_v1:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %uv:ptr<function, vec2<f32>, read_write> = var
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %a:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %x_49:vec4<f32> = load %gl_FragCoord
+    %11:f32 = access %x_49, 0u
+    %12:f32 = access %x_49, 1u
+    %13:vec2<f32> = construct %11, %12
+    store %uv, %13
+    %14:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_52:f32 = load %14
+    %16:vec4<f32> = construct %x_52, %x_52, %x_52, %x_52
+    store %v1, %16
+    %x_55:f32 = load_vector_element %uv, 1u
+    %18:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_57:f32 = load %18
+    %20:bool = gte %x_55, %x_57
+    if %20 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %21:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+        %x_62:f32 = load %21
+        store_vector_element %v1, 0u, %x_62
+        %23:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %x_65:f32 = load %23
+        store_vector_element %v1, 1u, %x_65
+        %25:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %x_68:f32 = load %25
+        store_vector_element %v1, 2u, %x_68
+        %27:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+        %x_71:f32 = load %27
+        store_vector_element %v1, 3u, %x_71
+        exit_if  # if_1
+      }
+    }
+    %29:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+    %x_74:f32 = load %29
+    store %a, %x_74
+    %31:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+    %x_15:i32 = load %31
+    store %i, %x_15
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %x_16:i32 = load %i
+        %34:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
+        %x_17:i32 = load %34
+        %36:bool = lt %x_16, %x_17
+        if %36 [t: %b6, f: %b7] {  # if_2
+          %b6 = block {  # true
+            exit_if  # if_2
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %37:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+        %x_84:f32 = load %37
+        %39:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %x_86:f32 = load %39
+        %41:bool = lt %x_84, %x_86
+        if %41 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            discard
+            exit_if  # if_3
+          }
+        }
+        %x_91:f32 = load_vector_element %v1, 0u
+        %x_93:f32 = load_vector_element %v1, 1u
+        %x_96:f32 = load_vector_element %v1, 2u
+        %x_99:f32 = load_vector_element %v1, 3u
+        %46:ptr<uniform, f32, read> = access %x_8, 0u, 3i, 0u
+        %x_102:f32 = load %46
+        %48:f32 = add %x_91, %x_93
+        %49:f32 = add %48, %x_96
+        %50:f32 = add %49, %x_99
+        %51:f32 = pow %50, %x_102
+        store %a, %51
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %x_18:i32 = load %i
+        %53:i32 = add %x_18, 1i
+        store %i, %53
+        next_iteration %b4
+      }
+    }
+    %x_104:f32 = load %a
+    %55:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %x_106:f32 = load %55
+    %57:bool = eq %x_104, %x_106
+    if %57 [t: %b9, f: %b10] {  # if_4
+      %b9 = block {  # true
+        %x_111:vec4<f32> = load %v1
+        store %x_GLF_v1, %x_111
+        exit_if  # if_4
+      }
+      %b10 = block {  # false
+        %59:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+        %x_20:i32 = load %59
+        %x_113:f32 = convert %x_20
+        %62:vec4<f32> = construct %x_113, %x_113, %x_113, %x_113
+        store %x_GLF_v1, %62
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b11 {
+  %b11 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %65:void = call %main_1
+    %66:vec4<f32> = load %x_GLF_v1
+    %67:main_out = construct %66
+    ret %67
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..0538e7a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,89 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %a, 0i
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %6:i32 = load %i
+        %7:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+        %8:f32 = load_vector_element %7, 1u
+        %9:i32 = convert %8
+        %10:bool = lt %6, %9
+        if %10 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %11:i32 = load %a
+        %12:bool = gt %11, 0i
+        if %12 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %13:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+        %14:f32 = load_vector_element %13, 1u
+        %15:i32 = convert %14
+        %16:i32 = mul %15, 2i
+        %17:i32 = div %16, 2i
+        store %a, %17
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %18:i32 = load %i
+        %19:i32 = add %18, 1i
+        store %i, %19
+        next_iteration %b3
+      }
+    }
+    %20:i32 = load %a
+    %21:bool = eq %20, 1i
+    if %21 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %23:void = call %main_1
+    %24:vec4<f32> = load %x_GLF_color
+    %25:main_out = construct %24
+    ret %25
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d281eab
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,89 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %a, 0i
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_33:i32 = load %i
+        %7:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+        %x_35:f32 = load_vector_element %7, 1u
+        %9:i32 = convert %x_35
+        %10:bool = lt %x_33, %9
+        if %10 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_39:i32 = load %a
+        %12:bool = gt %x_39, 0i
+        if %12 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %13:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+        %x_44:f32 = load_vector_element %13, 1u
+        %15:i32 = convert %x_44
+        %16:i32 = mul %15, 2i
+        %17:i32 = div %16, 2i
+        store %a, %17
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_48:i32 = load %i
+        %19:i32 = add %x_48, 1i
+        store %i, %19
+        next_iteration %b3
+      }
+    }
+    %x_50:i32 = load %a
+    %21:bool = eq %x_50, 1i
+    if %21 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %23:void = call %main_1
+    %24:vec4<f32> = load %x_GLF_color
+    %25:main_out = construct %24
+    ret %25
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2df17f3
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,133 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %7:i32 = load %6
+    %8:f32 = convert %7
+    %9:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %10:i32 = load %9
+    %11:f32 = convert %10
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %13:i32 = load %12
+    %14:f32 = convert %13
+    %15:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %16:i32 = load %15
+    %17:f32 = convert %16
+    %18:vec4<f32> = construct %8, %11, %14, %17
+    store %x_GLF_color, %18
+    %19:f32 = load_vector_element %gl_FragCoord, 1u
+    %20:bool = lt %19, 0.0f
+    if %20 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %21:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %22:i32 = load %21
+        %23:f32 = convert %22
+        %24:vec4<f32> = construct %23
+        store %x_GLF_color, %24
+        exit_if  # if_1
+      }
+    }
+    %25:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %26:i32 = load %25
+    store %i, %26
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %27:i32 = load %i
+        %28:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %29:i32 = load %28
+        %30:bool = lt %27, %29
+        if %30 [t: %b6, f: %b7] {  # if_2
+          %b6 = block {  # true
+            exit_if  # if_2
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %31:f32 = load_vector_element %gl_FragCoord, 0u
+        %32:bool = gt %31, 0.0f
+        if %32 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            %33:f32 = load_vector_element %gl_FragCoord, 1u
+            %34:bool = lt %33, 0.0f
+            if %34 [t: %b9] {  # if_4
+              %b9 = block {  # true
+                %35:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                %36:i32 = load %35
+                %37:f32 = convert %36
+                %38:vec4<f32> = construct %37
+                store %x_GLF_color, %38
+                exit_loop  # loop_1
+              }
+            }
+            exit_if  # if_3
+          }
+        }
+        %39:f32 = load_vector_element %gl_FragCoord, 0u
+        %40:bool = gt %39, 0.0f
+        if %40 [t: %b10] {  # if_5
+          %b10 = block {  # true
+            %41:f32 = load_vector_element %gl_FragCoord, 1u
+            %42:bool = lt %41, 0.0f
+            if %42 [t: %b11] {  # if_6
+              %b11 = block {  # true
+                %43:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                %44:i32 = load %43
+                %45:f32 = convert %44
+                %46:vec4<f32> = construct %45
+                store %x_GLF_color, %46
+                exit_if  # if_6
+              }
+            }
+            exit_if  # if_5
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %47:i32 = load %i
+        %48:i32 = add %47, 1i
+        store %i, %48
+        next_iteration %b4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b12 {
+  %b12 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %51:void = call %main_1
+    %52:vec4<f32> = load %x_GLF_color
+    %53:main_out = construct %52
+    ret %53
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6dd4234
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,133 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_31:i32 = load %6
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_34:i32 = load %8
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_37:i32 = load %10
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_40:i32 = load %12
+    %14:f32 = convert %x_31
+    %15:f32 = convert %x_34
+    %16:f32 = convert %x_37
+    %17:f32 = convert %x_40
+    %18:vec4<f32> = construct %14, %15, %16, %17
+    store %x_GLF_color, %18
+    %x_44:f32 = load_vector_element %gl_FragCoord, 1u
+    %20:bool = lt %x_44, 0.0f
+    if %20 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %21:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_49:i32 = load %21
+        %x_50:f32 = convert %x_49
+        %24:vec4<f32> = construct %x_50, %x_50, %x_50, %x_50
+        store %x_GLF_color, %24
+        exit_if  # if_1
+      }
+    }
+    %25:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_53:i32 = load %25
+    store %i, %x_53
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %x_58:i32 = load %i
+        %28:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_60:i32 = load %28
+        %30:bool = lt %x_58, %x_60
+        if %30 [t: %b6, f: %b7] {  # if_2
+          %b6 = block {  # true
+            exit_if  # if_2
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_64:f32 = load_vector_element %gl_FragCoord, 0u
+        %32:bool = gt %x_64, 0.0f
+        if %32 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            %x_69:f32 = load_vector_element %gl_FragCoord, 1u
+            %34:bool = lt %x_69, 0.0f
+            if %34 [t: %b9] {  # if_4
+              %b9 = block {  # true
+                %35:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                %x_74:i32 = load %35
+                %x_75:f32 = convert %x_74
+                %38:vec4<f32> = construct %x_75, %x_75, %x_75, %x_75
+                store %x_GLF_color, %38
+                exit_loop  # loop_1
+              }
+            }
+            exit_if  # if_3
+          }
+        }
+        %x_78:f32 = load_vector_element %gl_FragCoord, 0u
+        %40:bool = gt %x_78, 0.0f
+        if %40 [t: %b10] {  # if_5
+          %b10 = block {  # true
+            %x_83:f32 = load_vector_element %gl_FragCoord, 1u
+            %42:bool = lt %x_83, 0.0f
+            if %42 [t: %b11] {  # if_6
+              %b11 = block {  # true
+                %43:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                %x_88:i32 = load %43
+                %x_89:f32 = convert %x_88
+                %46:vec4<f32> = construct %x_89, %x_89, %x_89, %x_89
+                store %x_GLF_color, %46
+                exit_if  # if_6
+              }
+            }
+            exit_if  # if_5
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %x_91:i32 = load %i
+        %48:i32 = add %x_91, 1i
+        store %i, %48
+        next_iteration %b4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b12 {
+  %b12 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %51:void = call %main_1
+    %52:vec4<f32> = load %x_GLF_color
+    %53:main_out = construct %52
+    ret %53
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..6bf41fe
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,168 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_i1_ = func(%x:ptr<function, i32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, array<i32, 4>, read_write> = var
+    %8:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %9:i32 = load %8
+    store %a, %9
+    %10:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %11:i32 = load %10
+    store %i, %11
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %12:i32 = load %i
+        %13:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %14:i32 = load %13
+        %15:bool = lt %12, %14
+        if %15 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_93:i32 = load %a
+        %17:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+        %18:i32 = load %17
+        %19:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+        %20:i32 = load %19
+        %21:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+        %22:i32 = load %21
+        %23:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+        %24:i32 = load %23
+        %25:array<i32, 4> = construct %18, %20, %22, %24
+        store %indexable, %25
+        %26:ptr<function, i32, read_write> = access %indexable, %x_93
+        %27:i32 = load %26
+        %28:i32 = load %x
+        %29:bool = gt %27, %28
+        if %29 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            if true [t: %b9, f: %b10] {  # if_3
+              %b9 = block {  # true
+                %30:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+                %x_105:i32 = load %30
+                ret %x_105
+              }
+              %b10 = block {  # false
+                %32:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+                %33:i32 = load %32
+                store %a, %33
+                exit_if  # if_3
+              }
+            }
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            if true [t: %b11] {  # if_4
+              %b11 = block {  # true
+                %34:ptr<uniform, i32, read> = access %x_8, 0u, 4i, 0u
+                %x_111:i32 = load %34
+                ret %x_111
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %36:i32 = load %i
+        %37:i32 = add %36, 1i
+        store %i, %37
+        next_iteration %b3
+      }
+    }
+    %38:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_115:i32 = load %38
+    ret %x_115
+  }
+}
+%main_1 = func():void -> %b12 {
+  %b12 = block {
+    %a_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %44:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %45:i32 = load %44
+    store %param, %45
+    %x_40:i32 = call %func_i1_, %param
+    store %a_1, %x_40
+    %47:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+    %48:i32 = load %47
+    store %param_1, %48
+    %x_43:i32 = call %func_i1_, %param_1
+    %50:i32 = load %a_1
+    %51:i32 = add %50, %x_43
+    store %a_1, %51
+    %52:i32 = load %a_1
+    %53:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+    %54:i32 = load %53
+    %55:bool = eq %52, %54
+    if %55 [t: %b13, f: %b14] {  # if_5
+      %b13 = block {  # true
+        %56:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+        %57:i32 = load %56
+        %58:f32 = convert %57
+        %59:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %60:i32 = load %59
+        %61:f32 = convert %60
+        %62:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %63:i32 = load %62
+        %64:f32 = convert %63
+        %65:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+        %66:i32 = load %65
+        %67:f32 = convert %66
+        %68:vec4<f32> = construct %58, %61, %64, %67
+        store %x_GLF_color, %68
+        exit_if  # if_5
+      }
+      %b14 = block {  # false
+        %69:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %70:i32 = load %69
+        %71:f32 = convert %70
+        %72:vec4<f32> = construct %71
+        store %x_GLF_color, %72
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b15 {
+  %b15 = block {
+    %74:void = call %main_1
+    %75:vec4<f32> = load %x_GLF_color
+    %76:main_out = construct %75
+    ret %76
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eb9b430
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,168 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_i1_ = func(%x:ptr<function, i32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, array<i32, 4>, read_write> = var
+    %8:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_72:i32 = load %8
+    store %a, %x_72
+    %10:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_74:i32 = load %10
+    store %i, %x_74
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_79:i32 = load %i
+        %13:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_81:i32 = load %13
+        %15:bool = lt %x_79, %x_81
+        if %15 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %16:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+        %x_85:i32 = load %16
+        %18:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+        %x_87:i32 = load %18
+        %20:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+        %x_89:i32 = load %20
+        %22:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+        %x_91:i32 = load %22
+        %x_93:i32 = load %a
+        %25:array<i32, 4> = construct %x_85, %x_87, %x_89, %x_91
+        store %indexable, %25
+        %26:ptr<function, i32, read_write> = access %indexable, %x_93
+        %x_95:i32 = load %26
+        %x_96:i32 = load %x
+        %29:bool = gt %x_95, %x_96
+        if %29 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            if true [t: %b9, f: %b10] {  # if_3
+              %b9 = block {  # true
+                %30:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+                %x_105:i32 = load %30
+                ret %x_105
+              }
+              %b10 = block {  # false
+                %32:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+                %x_107:i32 = load %32
+                store %a, %x_107
+                exit_if  # if_3
+              }
+            }
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            if true [t: %b11] {  # if_4
+              %b11 = block {  # true
+                %34:ptr<uniform, i32, read> = access %x_8, 0u, 4i, 0u
+                %x_111:i32 = load %34
+                ret %x_111
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_112:i32 = load %i
+        %37:i32 = add %x_112, 1i
+        store %i, %37
+        next_iteration %b3
+      }
+    }
+    %38:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_115:i32 = load %38
+    ret %x_115
+  }
+}
+%main_1 = func():void -> %b12 {
+  %b12 = block {
+    %a_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %44:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_39:i32 = load %44
+    store %param, %x_39
+    %x_40:i32 = call %func_i1_, %param
+    store %a_1, %x_40
+    %47:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+    %x_42:i32 = load %47
+    store %param_1, %x_42
+    %x_43:i32 = call %func_i1_, %param_1
+    %x_44:i32 = load %a_1
+    %51:i32 = add %x_44, %x_43
+    store %a_1, %51
+    %x_46:i32 = load %a_1
+    %53:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
+    %x_48:i32 = load %53
+    %55:bool = eq %x_46, %x_48
+    if %55 [t: %b13, f: %b14] {  # if_5
+      %b13 = block {  # true
+        %56:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+        %x_54:i32 = load %56
+        %58:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_57:i32 = load %58
+        %60:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_60:i32 = load %60
+        %62:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
+        %x_63:i32 = load %62
+        %64:f32 = convert %x_54
+        %65:f32 = convert %x_57
+        %66:f32 = convert %x_60
+        %67:f32 = convert %x_63
+        %68:vec4<f32> = construct %64, %65, %66, %67
+        store %x_GLF_color, %68
+        exit_if  # if_5
+      }
+      %b14 = block {  # false
+        %69:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_67:i32 = load %69
+        %x_68:f32 = convert %x_67
+        %72:vec4<f32> = construct %x_68, %x_68, %x_68, %x_68
+        store %x_GLF_color, %72
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b15 {
+  %b15 = block {
+    %74:void = call %main_1
+    %75:vec4<f32> = load %x_GLF_color
+    %76:main_out = construct %75
+    ret %76
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7e7831b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,94 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat2x2<f32>, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %6:i32 = load %5
+    %x_30:f32 = convert %6
+    %8:vec2<f32> = construct %x_30, 0.0f
+    %9:vec2<f32> = construct 0.0f, %x_30
+    %10:mat2x2<f32> = construct %8, %9
+    %11:mat2x2<f32> = transpose %10
+    %12:mat2x2<f32> = transpose %11
+    store %m, %12
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %14:i32 = load %13
+    %x_39:f32 = convert %14
+    %16:vec2<f32> = construct %x_39, 0.0f
+    %17:vec2<f32> = construct 0.0f, %x_39
+    %x_42:mat2x2<f32> = construct %16, %17
+    %19:ptr<function, vec2<f32>, read_write> = access %m, 0u
+    %20:vec2<f32> = load %19
+    %21:vec2<f32> = access %x_42, 0u
+    %22:vec2<bool> = eq %20, %21
+    %23:bool = all %22
+    %24:ptr<function, vec2<f32>, read_write> = access %m, 1u
+    %25:vec2<f32> = load %24
+    %26:vec2<f32> = access %x_42, 1u
+    %27:vec2<bool> = eq %25, %26
+    %28:bool = all %27
+    %29:bool = and %23, %28
+    if %29 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %30:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %31:i32 = load %30
+        %32:f32 = convert %31
+        %33:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %34:i32 = load %33
+        %35:f32 = convert %34
+        %36:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %37:i32 = load %36
+        %38:f32 = convert %37
+        %39:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %40:i32 = load %39
+        %41:f32 = convert %40
+        %42:vec4<f32> = construct %32, %35, %38, %41
+        store %x_GLF_color, %42
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %43:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %44:i32 = load %43
+        %45:f32 = convert %44
+        %46:vec4<f32> = construct %45
+        store %x_GLF_color, %46
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %48:void = call %main_1
+    %49:vec4<f32> = load %x_GLF_color
+    %50:main_out = construct %49
+    ret %50
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..6d33a6f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,93 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat2x2<f32>, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_29:i32 = load %5
+    %x_30:f32 = convert %x_29
+    %8:vec2<f32> = construct %x_30, 0.0f
+    %9:vec2<f32> = construct 0.0f, %x_30
+    %10:mat2x2<f32> = construct %8, %9
+    %11:mat2x2<f32> = transpose %10
+    %12:mat2x2<f32> = transpose %11
+    store %m, %12
+    %x_36:mat2x2<f32> = load %m
+    %14:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_38:i32 = load %14
+    %x_39:f32 = convert %x_38
+    %17:vec2<f32> = construct %x_39, 0.0f
+    %18:vec2<f32> = construct 0.0f, %x_39
+    %x_42:mat2x2<f32> = construct %17, %18
+    %20:vec2<f32> = access %x_36, 0u
+    %21:vec2<f32> = access %x_42, 0u
+    %22:vec2<bool> = eq %20, %21
+    %23:bool = all %22
+    %24:vec2<f32> = access %x_36, 1u
+    %25:vec2<f32> = access %x_42, 1u
+    %26:vec2<bool> = eq %24, %25
+    %27:bool = all %26
+    %28:bool = and %23, %27
+    if %28 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_56:i32 = load %29
+        %31:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_59:i32 = load %31
+        %33:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_62:i32 = load %33
+        %35:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_65:i32 = load %35
+        %37:f32 = convert %x_56
+        %38:f32 = convert %x_59
+        %39:f32 = convert %x_62
+        %40:f32 = convert %x_65
+        %41:vec4<f32> = construct %37, %38, %39, %40
+        store %x_GLF_color, %41
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %42:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_69:i32 = load %42
+        %x_70:f32 = convert %x_69
+        %45:vec4<f32> = construct %x_70, %x_70, %x_70, %x_70
+        store %x_GLF_color, %45
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %47:void = call %main_1
+    %48:vec4<f32> = load %x_GLF_color
+    %49:main_out = construct %48
+    ret %49
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2f0c8c0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,87 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m0:ptr<function, mat2x2<f32>, read_write> = var
+    %m1:ptr<function, mat2x2<f32>, read_write> = var
+    %v:ptr<function, vec2<f32>, read_write> = var
+    %7:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %8:f32 = load %7
+    %9:vec2<f32> = construct %8, -0.540302276611328125f
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %11:f32 = load %10
+    %12:vec2<f32> = construct 0.540302276611328125f, %11
+    %13:mat2x2<f32> = construct %9, %12
+    store %m0, %13
+    %14:mat2x2<f32> = load %m0
+    %15:mat2x2<f32> = load %m0
+    %16:mat2x2<f32> = mul %14, %15
+    store %m1, %16
+    %17:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %18:f32 = load %17
+    %19:vec2<f32> = construct %18
+    %20:mat2x2<f32> = load %m1
+    %21:vec2<f32> = mul %19, %20
+    store %v, %21
+    %22:f32 = load_vector_element %v, 0u
+    %23:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %24:f32 = load %23
+    %25:bool = lt %22, %24
+    if %25 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %26:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %27:f32 = load %26
+        %28:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %29:f32 = load %28
+        %30:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %31:f32 = load %30
+        %32:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %33:f32 = load %32
+        %34:vec4<f32> = construct %27, %29, %31, %33
+        store %x_GLF_color, %34
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %35:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %36:f32 = load %35
+        %37:vec4<f32> = construct %36
+        store %x_GLF_color, %37
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %39:void = call %main_1
+    %40:vec4<f32> = load %x_GLF_color
+    %41:main_out = construct %40
+    ret %41
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ae84e4f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,87 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m0:ptr<function, mat2x2<f32>, read_write> = var
+    %m1:ptr<function, mat2x2<f32>, read_write> = var
+    %v:ptr<function, vec2<f32>, read_write> = var
+    %7:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_35:f32 = load %7
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_37:f32 = load %9
+    %11:vec2<f32> = construct %x_35, -0.540302276611328125f
+    %12:vec2<f32> = construct 0.540302276611328125f, %x_37
+    %13:mat2x2<f32> = construct %11, %12
+    store %m0, %13
+    %x_41:mat2x2<f32> = load %m0
+    %x_42:mat2x2<f32> = load %m0
+    %16:mat2x2<f32> = mul %x_41, %x_42
+    store %m1, %16
+    %17:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_45:f32 = load %17
+    %x_47:mat2x2<f32> = load %m1
+    %20:vec2<f32> = construct %x_45, %x_45
+    %21:vec2<f32> = mul %20, %x_47
+    store %v, %21
+    %x_50:f32 = load_vector_element %v, 0u
+    %23:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_52:f32 = load %23
+    %25:bool = lt %x_50, %x_52
+    if %25 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %26:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_58:f32 = load %26
+        %28:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_60:f32 = load %28
+        %30:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_62:f32 = load %30
+        %32:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_64:f32 = load %32
+        %34:vec4<f32> = construct %x_58, %x_60, %x_62, %x_64
+        store %x_GLF_color, %34
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %35:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_67:f32 = load %35
+        %37:vec4<f32> = construct %x_67, %x_67, %x_67, %x_67
+        store %x_GLF_color, %37
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %39:void = call %main_1
+    %40:vec4<f32> = load %x_GLF_color
+    %41:main_out = construct %40
+    ret %41
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..83c5719
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,55 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, i32, read> = access %x_5, 0u
+    %5:i32 = load %4
+    %6:ptr<uniform, i32, read> = access %x_5, 0u
+    %7:i32 = load %6
+    %8:ptr<uniform, i32, read> = access %x_5, 0u
+    %9:i32 = load %8
+    %10:i32 = clamp %7, %9, 1i
+    %11:i32 = max %5, %10
+    %12:bool = eq %11, 1i
+    if %12 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %14:void = call %main_1
+    %15:vec4<f32> = load %x_GLF_color
+    %16:main_out = construct %15
+    ret %16
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f139e39
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,55 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, i32, read> = access %x_5, 0u
+    %x_23:i32 = load %4
+    %6:ptr<uniform, i32, read> = access %x_5, 0u
+    %x_25:i32 = load %6
+    %8:ptr<uniform, i32, read> = access %x_5, 0u
+    %x_27:i32 = load %8
+    %10:i32 = clamp %x_25, %x_27, 1i
+    %11:i32 = max %x_23, %10
+    %12:bool = eq %11, 1i
+    if %12 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %14:void = call %main_1
+    %15:vec4<f32> = load %x_GLF_color
+    %16:main_out = construct %15
+    ret %16
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..63ee447
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,74 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %6:f32 = load_vector_element %gl_FragCoord, 0u
+    %7:i32 = convert %6
+    %8:i32 = min 1i, %7
+    %9:i32 = max 1i, %8
+    store %a, %9
+    %10:i32 = load %a
+    %11:bool = lt %10, 2i
+    if %11 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %12:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %13:i32 = load %12
+        %14:f32 = convert %13
+        %15:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %16:i32 = load %15
+        %17:f32 = convert %16
+        %18:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %19:i32 = load %18
+        %20:f32 = convert %19
+        %21:vec4<f32> = construct 1.0f, %14, %17, %20
+        store %x_GLF_color, %21
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %22:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %23:i32 = load %22
+        %24:f32 = convert %23
+        %25:vec4<f32> = construct %24
+        store %x_GLF_color, %25
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b5 {
+  %b5 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %28:void = call %main_1
+    %29:vec4<f32> = load %x_GLF_color
+    %30:main_out = construct %29
+    ret %30
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5a77d0e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,74 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %x_30:f32 = load_vector_element %gl_FragCoord, 0u
+    %7:i32 = convert %x_30
+    %8:i32 = min 1i, %7
+    %9:i32 = max 1i, %8
+    store %a, %9
+    %x_34:i32 = load %a
+    %11:bool = lt %x_34, 2i
+    if %11 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %12:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_40:i32 = load %12
+        %14:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_43:i32 = load %14
+        %16:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_46:i32 = load %16
+        %18:f32 = convert %x_40
+        %19:f32 = convert %x_43
+        %20:f32 = convert %x_46
+        %21:vec4<f32> = construct 1.0f, %18, %19, %20
+        store %x_GLF_color, %21
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %22:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_50:i32 = load %22
+        %x_51:f32 = convert %x_50
+        %25:vec4<f32> = construct %x_51, %x_51, %x_51, %x_51
+        store %x_GLF_color, %25
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b5 {
+  %b5 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %28:void = call %main_1
+    %29:vec4<f32> = load %x_GLF_color
+    %30:main_out = construct %29
+    ret %30
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..3aecd6c1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,198 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+S = struct @align(4) {
+  a:i32 @offset(0)
+  b:i32 @offset(4)
+  c:i32 @offset(8)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_43:ptr<function, i32, read_write> = var
+    %x_44:ptr<function, bool, read_write> = var, false
+    %arr:ptr<function, array<S, 2>, read_write> = var
+    %param:ptr<function, S, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_50:ptr<function, i32, read_write> = var
+        %10:ptr<uniform, i32, read> = access %x_10, 0u
+        %11:i32 = load %10
+        store %x_50, %11
+        %12:i32 = load %x_50
+        %13:ptr<function, i32, read_write> = access %arr, %12, 0u
+        store %13, 2i
+        %14:ptr<function, i32, read_write> = access %arr, 1i, 0u
+        %15:i32 = load %14
+        %16:bool = lt %15, 1i
+        if %16 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            store %x_GLF_color, vec4<f32>(0.0f)
+            store %x_44, true
+            exit_loop  # loop_1
+          }
+          %b6 = block {  # false
+            %17:ptr<function, S, read_write> = access %arr, 1i
+            %18:S = load %17
+            store %param, %18
+            %19:i32 = load %x_50
+            %20:i32 = add 2i, %19
+            store %param_1, %20
+            %x_61:i32 = load %param_1
+            %x_63:S = load %param
+            %x_64_1:ptr<function, S, read_write> = var, %x_63
+            %24:ptr<function, i32, read_write> = access %x_64_1, 0u
+            store %24, %x_61
+            %25:S = load %x_64_1
+            store %param, %25
+            %26:ptr<function, i32, read_write> = access %param, 0u
+            %27:i32 = load %26
+            %28:bool = eq %27, 2i
+            if %28 [t: %b7] {  # if_2
+              %b7 = block {  # true
+                %x_70:S = load %param
+                %x_71_1:ptr<function, S, read_write> = var, %x_70
+                %31:ptr<function, i32, read_write> = access %x_71_1, 0u
+                store %31, 9i
+                %32:S = load %x_71_1
+                store %param, %32
+                exit_if  # if_2
+              }
+            }
+            %x_72:i32 = load %param_1
+            %x_75:S = load %param
+            %x_76_1:ptr<function, S, read_write> = var, %x_75
+            %36:ptr<function, i32, read_write> = access %x_76_1, 1u
+            %37:i32 = add %x_72, 1i
+            store %36, %37
+            %38:S = load %x_76_1
+            store %param, %38
+            %x_77:i32 = load %param_1
+            %x_80:S = load %param
+            %x_81_1:ptr<function, S, read_write> = var, %x_80
+            %42:ptr<function, i32, read_write> = access %x_81_1, 2u
+            %43:i32 = add %x_77, 2i
+            store %42, %43
+            %44:S = load %x_81_1
+            store %param, %44
+            %45:ptr<function, i32, read_write> = access %param, 1u
+            %46:i32 = load %45
+            %47:bool = eq %46, 2i
+            if %47 [t: %b8] {  # if_3
+              %b8 = block {  # true
+                %x_87:S = load %param
+                %x_88_1:ptr<function, S, read_write> = var, %x_87
+                %50:ptr<function, i32, read_write> = access %x_88_1, 1u
+                store %50, 7i
+                %51:S = load %x_88_1
+                store %param, %51
+                exit_if  # if_3
+              }
+            }
+            %52:ptr<function, i32, read_write> = access %param, 0u
+            %53:i32 = load %52
+            %54:ptr<function, i32, read_write> = access %param, 1u
+            %55:i32 = load %54
+            %56:i32 = add %53, %55
+            %57:ptr<function, i32, read_write> = access %param, 2u
+            %58:i32 = load %57
+            %59:i32 = add %56, %58
+            store %x_43, %59
+            %60:i32 = load %x_43
+            %61:bool = eq %60, 12i
+            if %61 [t: %b9, f: %b10] {  # if_4
+              %b9 = block {  # true
+                store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+                exit_if  # if_4
+              }
+              %b10 = block {  # false
+                store %x_GLF_color, vec4<f32>(0.0f)
+                exit_if  # if_4
+              }
+            }
+            exit_if  # if_1
+          }
+        }
+        store %x_44, true
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %63:void = call %main_1
+    %64:vec4<f32> = load %x_GLF_color
+    %65:main_out = construct %64
+    ret %65
+  }
+}
+%func_struct_S_i1_i1_i11_i1_ = func(%s:ptr<function, S, read_write>, %x:ptr<function, i32, read_write>):i32 -> %b12 {
+  %b12 = block {
+    %69:ptr<function, i32, read_write> = access %s, 0u
+    %70:i32 = load %x
+    store %69, %70
+    %71:ptr<function, i32, read_write> = access %s, 0u
+    %72:i32 = load %71
+    %73:bool = eq %72, 2i
+    if %73 [t: %b13] {  # if_5
+      %b13 = block {  # true
+        %74:ptr<function, i32, read_write> = access %s, 0u
+        store %74, 9i
+        exit_if  # if_5
+      }
+    }
+    %75:ptr<function, i32, read_write> = access %s, 1u
+    %76:i32 = load %x
+    %77:i32 = add %76, 1i
+    store %75, %77
+    %78:ptr<function, i32, read_write> = access %s, 2u
+    %79:i32 = load %x
+    %80:i32 = add %79, 2i
+    store %78, %80
+    %81:ptr<function, i32, read_write> = access %s, 1u
+    %82:i32 = load %81
+    %83:bool = eq %82, 2i
+    if %83 [t: %b14] {  # if_6
+      %b14 = block {  # true
+        %84:ptr<function, i32, read_write> = access %s, 1u
+        store %84, 7i
+        exit_if  # if_6
+      }
+    }
+    %85:ptr<function, i32, read_write> = access %s, 0u
+    %x_119:i32 = load %85
+    %87:ptr<function, i32, read_write> = access %s, 1u
+    %x_120:i32 = load %87
+    %89:ptr<function, i32, read_write> = access %s, 2u
+    %x_122:i32 = load %89
+    %91:i32 = add %x_119, %x_120
+    %92:i32 = add %91, %x_122
+    ret %92
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b87d763
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,199 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+S = struct @align(4) {
+  a:i32 @offset(0)
+  b:i32 @offset(4)
+  c:i32 @offset(8)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_43:ptr<function, i32, read_write> = var
+    %x_44:ptr<function, bool, read_write> = var, false
+    %arr:ptr<function, array<S, 2>, read_write> = var
+    %param:ptr<function, S, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_50:ptr<function, i32, read_write> = var
+        %10:ptr<uniform, i32, read> = access %x_10, 0u
+        %11:i32 = load %10
+        store %x_50, %11
+        %12:i32 = load %x_50
+        %13:ptr<function, i32, read_write> = access %arr, %12, 0u
+        store %13, 2i
+        %14:ptr<function, i32, read_write> = access %arr, 1i, 0u
+        %x_53:i32 = load %14
+        %16:bool = lt %x_53, 1i
+        if %16 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            store %x_GLF_color, vec4<f32>(0.0f)
+            store %x_44, true
+            exit_loop  # loop_1
+          }
+          %b6 = block {  # false
+            %17:ptr<function, S, read_write> = access %arr, 1i
+            %x_60:S = load %17
+            store %param, %x_60
+            %19:i32 = load %x_50
+            %20:i32 = bitcast %19
+            %21:i32 = add 2i, %20
+            store %param_1, %21
+            %x_61:i32 = load %param_1
+            %x_63:S = load %param
+            %x_64_1:ptr<function, S, read_write> = var, %x_63
+            %25:ptr<function, i32, read_write> = access %x_64_1, 0u
+            store %25, %x_61
+            %x_64:S = load %x_64_1
+            store %param, %x_64
+            %x_65:S = load %param
+            %28:i32 = access %x_65, 0u
+            %29:bool = eq %28, 2i
+            if %29 [t: %b7] {  # if_2
+              %b7 = block {  # true
+                %x_70:S = load %param
+                %x_71_1:ptr<function, S, read_write> = var, %x_70
+                %32:ptr<function, i32, read_write> = access %x_71_1, 0u
+                store %32, 9i
+                %x_71:S = load %x_71_1
+                store %param, %x_71
+                exit_if  # if_2
+              }
+            }
+            %x_72:i32 = load %param_1
+            %x_75:S = load %param
+            %x_76_1:ptr<function, S, read_write> = var, %x_75
+            %37:ptr<function, i32, read_write> = access %x_76_1, 1u
+            %38:i32 = add %x_72, 1i
+            store %37, %38
+            %x_76:S = load %x_76_1
+            store %param, %x_76
+            %x_77:i32 = load %param_1
+            %x_80:S = load %param
+            %x_81_1:ptr<function, S, read_write> = var, %x_80
+            %43:ptr<function, i32, read_write> = access %x_81_1, 2u
+            %44:i32 = add %x_77, 2i
+            store %43, %44
+            %x_81:S = load %x_81_1
+            store %param, %x_81
+            %x_82:S = load %param
+            %47:i32 = access %x_82, 1u
+            %48:bool = eq %47, 2i
+            if %48 [t: %b8] {  # if_3
+              %b8 = block {  # true
+                %x_87:S = load %param
+                %x_88_1:ptr<function, S, read_write> = var, %x_87
+                %51:ptr<function, i32, read_write> = access %x_88_1, 1u
+                store %51, 7i
+                %x_88:S = load %x_88_1
+                store %param, %x_88
+                exit_if  # if_3
+              }
+            }
+            %x_89:S = load %param
+            %x_91:S = load %param
+            %x_94:S = load %param
+            %56:i32 = access %x_89, 0u
+            %57:i32 = access %x_91, 1u
+            %58:i32 = add %56, %57
+            %59:i32 = access %x_94, 2u
+            %60:i32 = add %58, %59
+            store %x_43, %60
+            %x_97:i32 = load %x_43
+            %62:bool = eq %x_97, 12i
+            if %62 [t: %b9, f: %b10] {  # if_4
+              %b9 = block {  # true
+                store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+                exit_if  # if_4
+              }
+              %b10 = block {  # false
+                store %x_GLF_color, vec4<f32>(0.0f)
+                exit_if  # if_4
+              }
+            }
+            exit_if  # if_1
+          }
+        }
+        store %x_44, true
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %64:void = call %main_1
+    %65:vec4<f32> = load %x_GLF_color
+    %66:main_out = construct %65
+    ret %66
+  }
+}
+%func_struct_S_i1_i1_i11_i1_ = func(%s:ptr<function, S, read_write>, %x:ptr<function, i32, read_write>):i32 -> %b12 {
+  %b12 = block {
+    %x_103:i32 = load %x
+    %71:ptr<function, i32, read_write> = access %s, 0u
+    store %71, %x_103
+    %72:ptr<function, i32, read_write> = access %s, 0u
+    %x_105:i32 = load %72
+    %74:bool = eq %x_105, 2i
+    if %74 [t: %b13] {  # if_5
+      %b13 = block {  # true
+        %75:ptr<function, i32, read_write> = access %s, 0u
+        store %75, 9i
+        exit_if  # if_5
+      }
+    }
+    %x_109:i32 = load %x
+    %77:ptr<function, i32, read_write> = access %s, 1u
+    %78:i32 = add %x_109, 1i
+    store %77, %78
+    %x_112:i32 = load %x
+    %80:ptr<function, i32, read_write> = access %s, 2u
+    %81:i32 = add %x_112, 2i
+    store %80, %81
+    %82:ptr<function, i32, read_write> = access %s, 1u
+    %x_115:i32 = load %82
+    %84:bool = eq %x_115, 2i
+    if %84 [t: %b14] {  # if_6
+      %b14 = block {  # true
+        %85:ptr<function, i32, read_write> = access %s, 1u
+        store %85, 7i
+        exit_if  # if_6
+      }
+    }
+    %86:ptr<function, i32, read_write> = access %s, 0u
+    %x_119:i32 = load %86
+    %88:ptr<function, i32, read_write> = access %s, 1u
+    %x_120:i32 = load %88
+    %90:ptr<function, i32, read_write> = access %s, 2u
+    %x_122:i32 = load %90
+    %92:i32 = add %x_119, %x_120
+    %93:i32 = add %92, %x_122
+    ret %93
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..8d0b322
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,68 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  two:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_vf2_ = func(%v:ptr<function, vec2<f32>, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, f32, read> = access %x_7, 0u
+    %6:f32 = load %5
+    store_vector_element %v, 0u, %6
+    %7:f32 = load_vector_element %v, 1u
+    %8:bool = lt %7, 1.0f
+    if %8 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret 1.0f
+      }
+    }
+    ret 5.0f
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    %f:ptr<function, f32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    store %param, vec2<f32>(1.0f)
+    %x_34:f32 = call %func_vf2_, %param
+    store %f, %x_34
+    %13:f32 = load %f
+    %14:bool = eq %13, 5.0f
+    if %14 [t: %b5, f: %b6] {  # if_2
+      %b5 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b6 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %16:void = call %main_1
+    %17:vec4<f32> = load %x_GLF_color
+    %18:main_out = construct %17
+    ret %18
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9643a8a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,68 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  two:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_vf2_ = func(%v:ptr<function, vec2<f32>, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, f32, read> = access %x_7, 0u
+    %x_42:f32 = load %5
+    store_vector_element %v, 0u, %x_42
+    %x_45:f32 = load_vector_element %v, 1u
+    %8:bool = lt %x_45, 1.0f
+    if %8 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret 1.0f
+      }
+    }
+    ret 5.0f
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    %f:ptr<function, f32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    store %param, vec2<f32>(1.0f)
+    %x_34:f32 = call %func_vf2_, %param
+    store %f, %x_34
+    %x_35:f32 = load %f
+    %14:bool = eq %x_35, 5.0f
+    if %14 [t: %b5, f: %b6] {  # if_2
+      %b5 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b6 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %16:void = call %main_1
+    %17:vec4<f32> = load %x_GLF_color
+    %18:main_out = construct %17
+    ret %18
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..331b5c7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,88 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  three:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():f32 -> %b2 {
+  %b2 = block {
+    %b:ptr<function, f32, read_write> = var
+    %x_34:ptr<function, f32, read_write> = var
+    %x_48:ptr<function, f32, read_write> = var
+    store %b, 2.0f
+    store %x_34, 2.0f
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %7:ptr<uniform, f32, read> = access %x_7, 0u
+        %8:f32 = load %7
+        %9:bool = eq %8, 0.0f
+        if %9 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            %10:f32 = load %x_34
+            store %x_48, %10
+            exit_loop  # loop_1
+          }
+        }
+        %11:ptr<uniform, f32, read> = access %x_7, 0u
+        %12:f32 = load %11
+        %13:bool = eq %12, 0.0f
+        if %13 [t: %b6] {  # if_2
+          %b6 = block {  # true
+            ret 1.0f
+          }
+        }
+        store %b, 1.0f
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        store %x_34, 1.0f
+        store %x_48, 1.0f
+        break_if true %b3
+      }
+    }
+    %14:f32 = load %x_48
+    ret %14
+  }
+}
+%main_1 = func():void -> %b7 {
+  %b7 = block {
+    %x_27:f32 = call %func_
+    %17:bool = eq %x_27, 1.0f
+    if %17 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e1be0ec
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,91 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  three:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():f32 -> %b2 {
+  %b2 = block {
+    %b:ptr<function, f32, read_write> = var
+    %x_34:ptr<function, f32, read_write> = var
+    %x_34_phi:ptr<function, f32, read_write> = var
+    %x_48_phi:ptr<function, f32, read_write> = var
+    store %b, 2.0f
+    store %x_34_phi, 2.0f
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %8:f32 = load %x_34_phi
+        store %x_34, %8
+        %9:ptr<uniform, f32, read> = access %x_7, 0u
+        %x_39:f32 = load %9
+        %11:bool = eq %x_39, 0.0f
+        if %11 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            %12:f32 = load %x_34
+            store %x_48_phi, %12
+            exit_loop  # loop_1
+          }
+        }
+        %13:ptr<uniform, f32, read> = access %x_7, 0u
+        %x_44:f32 = load %13
+        %15:bool = eq %x_44, 0.0f
+        if %15 [t: %b6] {  # if_2
+          %b6 = block {  # true
+            ret 1.0f
+          }
+        }
+        store %b, 1.0f
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        store %x_34_phi, 1.0f
+        store %x_48_phi, 1.0f
+        break_if true %b3
+      }
+    }
+    %x_48:f32 = load %x_48_phi
+    ret %x_48
+  }
+}
+%main_1 = func():void -> %b7 {
+  %b7 = block {
+    %x_27:f32 = call %func_
+    %19:bool = eq %x_27, 1.0f
+    if %19 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %21:void = call %main_1
+    %22:vec4<f32> = load %x_GLF_color
+    %23:main_out = construct %22
+    ret %23
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1368b54
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,98 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(4) {
+  one:u32 @offset(0)
+}
+
+strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%func_ = func():f32 -> %b2 {
+  %b2 = block {
+    switch 1i [c: (0i, %b3), c: (default, %b4)] {  # switch_1
+      %b3 = block {  # case
+        ret 1.0f
+      }
+      %b4 = block {  # case
+        exit_switch  # switch_1
+      }
+    }
+    ret 0.0f
+  }
+}
+%main_1 = func():void -> %b5 {
+  %b5 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    store %v, vec4<f32>(1.0f)
+    %8:f32 = load_vector_element %gl_FragCoord, 1u
+    %9:bool = lt %8, 0.0f
+    if %9 [t: %b6] {  # if_1
+      %b6 = block {  # true
+        %x_42:f32 = call %func_
+        %11:vec4<f32> = construct %x_42
+        store %v, %11
+        exit_if  # if_1
+      }
+    }
+    %12:vec4<f32> = load %v
+    %13:u32 = pack4x8unorm %12
+    %14:bool = eq %13, 1u
+    if %14 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        ret
+      }
+    }
+    %15:ptr<uniform, u32, read> = access %x_8, 0u
+    %16:u32 = load %15
+    %17:u32 = shiftl 1u, %16
+    %18:bool = eq %17, 2u
+    if %18 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %19:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %20:i32 = load %19
+        %21:f32 = convert %20
+        %22:vec4<f32> = construct %21
+        store %x_GLF_color, %22
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b10 {
+  %b10 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %25:void = call %main_1
+    %26:vec4<f32> = load %x_GLF_color
+    %27:main_out = construct %26
+    ret %27
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..da791fb
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,98 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(4) {
+  one:u32 @offset(0)
+}
+
+strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%func_ = func():f32 -> %b2 {
+  %b2 = block {
+    switch 1i [c: (0i, %b3), c: (default, %b4)] {  # switch_1
+      %b3 = block {  # case
+        ret 1.0f
+      }
+      %b4 = block {  # case
+        exit_switch  # switch_1
+      }
+    }
+    ret 0.0f
+  }
+}
+%main_1 = func():void -> %b5 {
+  %b5 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    store %v, vec4<f32>(1.0f)
+    %x_38:f32 = load_vector_element %gl_FragCoord, 1u
+    %9:bool = lt %x_38, 0.0f
+    if %9 [t: %b6] {  # if_1
+      %b6 = block {  # true
+        %x_42:f32 = call %func_
+        %11:vec4<f32> = construct %x_42, %x_42, %x_42, %x_42
+        store %v, %11
+        exit_if  # if_1
+      }
+    }
+    %x_44:vec4<f32> = load %v
+    %13:u32 = pack4x8unorm %x_44
+    %14:bool = eq %13, 1u
+    if %14 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        ret
+      }
+    }
+    %15:ptr<uniform, u32, read> = access %x_8, 0u
+    %x_50:u32 = load %15
+    %17:u32 = shiftl 1u, %x_50
+    %18:bool = eq %17, 2u
+    if %18 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %19:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_57:i32 = load %19
+        %x_58:f32 = convert %x_57
+        %22:vec4<f32> = construct %x_58, %x_58, %x_58, %x_58
+        store %x_GLF_color, %22
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b10 {
+  %b10 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %25:void = call %main_1
+    %26:vec4<f32> = load %x_GLF_color
+    %27:main_out = construct %26
+    ret %27
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..39a2a86
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,65 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    store %a, 1.40129846e-45f
+    %5:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %6:f32 = load %5
+    %7:vec4<f32> = construct %6
+    store %x_GLF_color, %7
+    %8:f32 = load %a
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %10:f32 = load %9
+    %11:bool = lt %8, %10
+    if %11 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %12:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %13:f32 = load %12
+        %14:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %15:f32 = load %14
+        %16:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %17:f32 = load %16
+        %18:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %19:f32 = load %18
+        %20:vec4<f32> = construct %13, %15, %17, %19
+        store %x_GLF_color, %20
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b4 {
+  %b4 = block {
+    %22:void = call %main_1
+    %23:vec4<f32> = load %x_GLF_color
+    %24:main_out = construct %23
+    ret %24
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3508a9b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,65 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    store %a, 1.40129846e-45f
+    %5:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_29:f32 = load %5
+    %7:vec4<f32> = construct %x_29, %x_29, %x_29, %x_29
+    store %x_GLF_color, %7
+    %x_31:f32 = load %a
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %x_33:f32 = load %9
+    %11:bool = lt %x_31, %x_33
+    if %11 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %12:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_38:f32 = load %12
+        %14:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_40:f32 = load %14
+        %16:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_42:f32 = load %16
+        %18:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_44:f32 = load %18
+        %20:vec4<f32> = construct %x_38, %x_40, %x_42, %x_44
+        store %x_GLF_color, %20
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b4 {
+  %b4 = block {
+    %22:void = call %main_1
+    %23:vec4<f32> = load %x_GLF_color
+    %24:main_out = construct %23
+    ret %24
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f4b9770
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,112 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf2 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+strided_arr_2 = struct @align(4) {
+  el:u32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_uint_values:array<strided_arr_2, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_12:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, u32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    store %a, 0u
+    %9:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %10:i32 = load %9
+    store %b, %10
+    %11:f32 = load_vector_element %gl_FragCoord, 0u
+    %12:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
+    %13:f32 = load %12
+    %14:bool = lt %11, %13
+    if %14 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %15:ptr<uniform, u32, read> = access %x_12, 0u, 0i, 0u
+        %16:u32 = load %15
+        %17:u32 = load %a
+        %18:u32 = mod %16, %17
+        %19:i32 = bitcast %18
+        store %b, %19
+        exit_if  # if_1
+      }
+    }
+    %20:i32 = load %b
+    %21:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %22:i32 = load %21
+    %23:bool = eq %20, %22
+    if %23 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %24:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %25:i32 = load %24
+        %26:f32 = convert %25
+        %27:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %28:i32 = load %27
+        %29:f32 = convert %28
+        %30:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %31:i32 = load %30
+        %32:f32 = convert %31
+        %33:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %34:i32 = load %33
+        %35:f32 = convert %34
+        %36:vec4<f32> = construct %26, %29, %32, %35
+        store %x_GLF_color, %36
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %37:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %38:i32 = load %37
+        %39:f32 = convert %38
+        %40:vec4<f32> = construct %39
+        store %x_GLF_color, %40
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b6 {
+  %b6 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d58f09f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,112 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf2 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+strided_arr_2 = struct @align(4) {
+  el:u32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_uint_values:array<strided_arr_2, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_12:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, u32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    store %a, 0u
+    %9:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %x_41:i32 = load %9
+    store %b, %x_41
+    %x_43:f32 = load_vector_element %gl_FragCoord, 0u
+    %12:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
+    %x_45:f32 = load %12
+    %14:bool = lt %x_43, %x_45
+    if %14 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %15:ptr<uniform, u32, read> = access %x_12, 0u, 0i, 0u
+        %x_50:u32 = load %15
+        %x_51:u32 = load %a
+        %18:u32 = mod %x_50, %x_51
+        %19:i32 = bitcast %18
+        store %b, %19
+        exit_if  # if_1
+      }
+    }
+    %x_54:i32 = load %b
+    %21:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %x_56:i32 = load %21
+    %23:bool = eq %x_54, %x_56
+    if %23 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %24:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_62:i32 = load %24
+        %26:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_65:i32 = load %26
+        %28:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_68:i32 = load %28
+        %30:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_71:i32 = load %30
+        %32:f32 = convert %x_62
+        %33:f32 = convert %x_65
+        %34:f32 = convert %x_68
+        %35:f32 = convert %x_71
+        %36:vec4<f32> = construct %32, %33, %34, %35
+        store %x_GLF_color, %36
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %37:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_75:i32 = load %37
+        %x_76:f32 = convert %x_75
+        %40:vec4<f32> = construct %x_76, %x_76, %x_76, %x_76
+        store %x_GLF_color, %40
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b6 {
+  %b6 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7f00aa6
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,239 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf2 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %m:ptr<private, mat4x2<f32>, read_write> = var
+  %x_10:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_12:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_16:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func0_i1_ = func(%x:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %x_137:ptr<function, bool, read_write> = var
+    %x_138:ptr<function, bool, read_write> = var
+    %x_139:ptr<function, bool, read_write> = var
+    %13:i32 = load %x
+    %x_125:bool = lt %13, 1i
+    store %x_139, %x_125
+    %15:bool = eq %x_125, false
+    if %15 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %16:i32 = load %x
+        %x_130:bool = gt %16, 1i
+        store %x_138, %x_130
+        if %x_130 [t: %b4] {  # if_2
+          %b4 = block {  # true
+            %18:ptr<uniform, f32, read> = access %x_10, 0u
+            %19:f32 = load %18
+            %20:ptr<uniform, f32, read> = access %x_12, 0u, 0i, 0u
+            %21:f32 = load %20
+            %22:bool = gt %19, %21
+            store %x_137, %22
+            %23:bool = load %x_137
+            store %x_138, %23
+            exit_if  # if_2
+          }
+        }
+        %24:bool = load %x_138
+        store %x_139, %24
+        exit_if  # if_1
+      }
+    }
+    %25:bool = load %x_139
+    if %25 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        ret
+      }
+    }
+    %26:ptr<uniform, f32, read> = access %x_10, 0u
+    %27:f32 = load %26
+    %28:ptr<uniform, f32, read> = access %x_12, 0u, 0i, 0u
+    %29:f32 = load %28
+    %30:bool = eq %27, %29
+    if %30 [t: %b6] {  # if_4
+      %b6 = block {  # true
+        store %i, 0i
+        loop [b: %b7, c: %b8] {  # loop_1
+          %b7 = block {  # body
+            %31:i32 = load %i
+            %32:bool = lt %31, 2i
+            if %32 [t: %b9, f: %b10] {  # if_5
+              %b9 = block {  # true
+                exit_if  # if_5
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %33:i32 = load %x
+            %x_155:i32 = clamp %33, 0i, 3i
+            %x_156:i32 = load %i
+            %36:ptr<private, vec2<f32>, read_write> = access %m, %x_155
+            %37:ptr<private, vec2<f32>, read_write> = access %m, %x_155
+            %38:i32 = load %i
+            %39:f32 = load_vector_element %37, %38
+            %40:ptr<uniform, f32, read> = access %x_12, 0u, 0i, 0u
+            %41:f32 = load %40
+            %42:f32 = add %39, %41
+            store_vector_element %36, %x_156, %42
+            %43:i32 = load %i
+            %44:i32 = add %43, 1i
+            store %i, %44
+            next_iteration %b7
+          }
+        }
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%func1_ = func():void -> %b11 {
+  %b11 = block {
+    %param:ptr<function, i32, read_write> = var
+    %47:f32 = load_vector_element %gl_FragCoord, 1u
+    %48:bool = lt %47, 0.0f
+    if %48 [t: %b12] {  # if_6
+      %b12 = block {  # true
+        ret
+      }
+    }
+    store %param, 1i
+    %49:void = call %func0_i1_, %param
+    ret
+  }
+}
+%main_1 = func():void -> %b13 {
+  %b13 = block {
+    store %m, mat4x2<f32>(vec2<f32>(0.0f))
+    %51:void = call %func1_
+    %52:void = call %func1_
+    %53:ptr<uniform, i32, read> = access %x_16, 0u, 0i, 0u
+    %54:i32 = load %53
+    %55:f32 = convert %54
+    %56:ptr<uniform, i32, read> = access %x_16, 0u, 0i, 0u
+    %57:i32 = load %56
+    %58:f32 = convert %57
+    %59:vec2<f32> = construct %55, %58
+    %60:ptr<uniform, i32, read> = access %x_16, 0u, 1i, 0u
+    %61:i32 = load %60
+    %62:f32 = convert %61
+    %63:ptr<uniform, i32, read> = access %x_16, 0u, 1i, 0u
+    %64:i32 = load %63
+    %65:f32 = convert %64
+    %66:vec2<f32> = construct %62, %65
+    %67:ptr<uniform, i32, read> = access %x_16, 0u, 0i, 0u
+    %68:i32 = load %67
+    %69:f32 = convert %68
+    %70:ptr<uniform, i32, read> = access %x_16, 0u, 0i, 0u
+    %71:i32 = load %70
+    %72:f32 = convert %71
+    %73:vec2<f32> = construct %69, %72
+    %74:ptr<uniform, i32, read> = access %x_16, 0u, 0i, 0u
+    %75:i32 = load %74
+    %76:f32 = convert %75
+    %77:ptr<uniform, i32, read> = access %x_16, 0u, 0i, 0u
+    %78:i32 = load %77
+    %79:f32 = convert %78
+    %80:vec2<f32> = construct %76, %79
+    %x_83:mat4x2<f32> = construct %59, %66, %73, %80
+    %82:ptr<private, vec2<f32>, read_write> = access %m, 0u
+    %83:vec2<f32> = load %82
+    %84:vec2<f32> = access %x_83, 0u
+    %85:vec2<bool> = eq %83, %84
+    %86:bool = all %85
+    %87:ptr<private, vec2<f32>, read_write> = access %m, 1u
+    %88:vec2<f32> = load %87
+    %89:vec2<f32> = access %x_83, 1u
+    %90:vec2<bool> = eq %88, %89
+    %91:bool = all %90
+    %92:bool = and %86, %91
+    %93:ptr<private, vec2<f32>, read_write> = access %m, 2u
+    %94:vec2<f32> = load %93
+    %95:vec2<f32> = access %x_83, 2u
+    %96:vec2<bool> = eq %94, %95
+    %97:bool = all %96
+    %98:bool = and %92, %97
+    %99:ptr<private, vec2<f32>, read_write> = access %m, 3u
+    %100:vec2<f32> = load %99
+    %101:vec2<f32> = access %x_83, 3u
+    %102:vec2<bool> = eq %100, %101
+    %103:bool = all %102
+    %104:bool = and %98, %103
+    if %104 [t: %b14, f: %b15] {  # if_7
+      %b14 = block {  # true
+        %105:ptr<uniform, i32, read> = access %x_16, 0u, 3i, 0u
+        %106:i32 = load %105
+        %107:f32 = convert %106
+        %108:ptr<uniform, i32, read> = access %x_16, 0u, 0i, 0u
+        %109:i32 = load %108
+        %110:f32 = convert %109
+        %111:ptr<uniform, i32, read> = access %x_16, 0u, 0i, 0u
+        %112:i32 = load %111
+        %113:f32 = convert %112
+        %114:ptr<uniform, i32, read> = access %x_16, 0u, 3i, 0u
+        %115:i32 = load %114
+        %116:f32 = convert %115
+        %117:vec4<f32> = construct %107, %110, %113, %116
+        store %x_GLF_color, %117
+        exit_if  # if_7
+      }
+      %b15 = block {  # false
+        %118:ptr<uniform, i32, read> = access %x_16, 0u, 0i, 0u
+        %119:i32 = load %118
+        %120:f32 = convert %119
+        %121:vec4<f32> = construct %120
+        store %x_GLF_color, %121
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b16 {
+  %b16 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %124:void = call %main_1
+    %125:vec4<f32> = load %x_GLF_color
+    %126:main_out = construct %125
+    ret %126
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5ea02a5
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,238 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf2 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %m:ptr<private, mat4x2<f32>, read_write> = var
+  %x_10:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_12:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_16:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func0_i1_ = func(%x:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %x_137:ptr<function, bool, read_write> = var
+    %x_138:ptr<function, bool, read_write> = var
+    %x_138_phi:ptr<function, bool, read_write> = var
+    %x_139_phi:ptr<function, bool, read_write> = var
+    %x_124:i32 = load %x
+    %x_125:bool = lt %x_124, 1i
+    store %x_139_phi, %x_125
+    %16:bool = eq %x_125, false
+    if %16 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_129:i32 = load %x
+        %x_130:bool = gt %x_129, 1i
+        store %x_138_phi, %x_130
+        if %x_130 [t: %b4] {  # if_2
+          %b4 = block {  # true
+            %19:ptr<uniform, f32, read> = access %x_10, 0u
+            %x_134:f32 = load %19
+            %21:ptr<uniform, f32, read> = access %x_12, 0u, 0i, 0u
+            %x_136:f32 = load %21
+            %23:bool = gt %x_134, %x_136
+            store %x_137, %23
+            %24:bool = load %x_137
+            store %x_138_phi, %24
+            exit_if  # if_2
+          }
+        }
+        %25:bool = load %x_138_phi
+        store %x_138, %25
+        %26:bool = load %x_138
+        store %x_139_phi, %26
+        exit_if  # if_1
+      }
+    }
+    %x_139:bool = load %x_139_phi
+    if %x_139 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        ret
+      }
+    }
+    %28:ptr<uniform, f32, read> = access %x_10, 0u
+    %x_143:f32 = load %28
+    %30:ptr<uniform, f32, read> = access %x_12, 0u, 0i, 0u
+    %x_145:f32 = load %30
+    %32:bool = eq %x_143, %x_145
+    if %32 [t: %b6] {  # if_4
+      %b6 = block {  # true
+        store %i, 0i
+        loop [b: %b7, c: %b8] {  # loop_1
+          %b7 = block {  # body
+            %x_150:i32 = load %i
+            %34:bool = lt %x_150, 2i
+            if %34 [t: %b9, f: %b10] {  # if_5
+              %b9 = block {  # true
+                exit_if  # if_5
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %x_154:i32 = load %x
+            %x_155:i32 = clamp %x_154, 0i, 3i
+            %x_156:i32 = load %i
+            %38:ptr<uniform, f32, read> = access %x_12, 0u, 0i, 0u
+            %x_158:f32 = load %38
+            %40:ptr<private, vec2<f32>, read_write> = access %m, %x_155
+            %x_160:f32 = load_vector_element %40, %x_156
+            %42:ptr<private, vec2<f32>, read_write> = access %m, %x_155
+            %43:f32 = add %x_160, %x_158
+            store_vector_element %42, %x_156, %43
+            %x_163:i32 = load %i
+            %45:i32 = add %x_163, 1i
+            store %i, %45
+            next_iteration %b7
+          }
+        }
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%func1_ = func():void -> %b11 {
+  %b11 = block {
+    %param:ptr<function, i32, read_write> = var
+    %x_167:f32 = load_vector_element %gl_FragCoord, 1u
+    %49:bool = lt %x_167, 0.0f
+    if %49 [t: %b12] {  # if_6
+      %b12 = block {  # true
+        ret
+      }
+    }
+    store %param, 1i
+    %50:void = call %func0_i1_, %param
+    ret
+  }
+}
+%main_1 = func():void -> %b13 {
+  %b13 = block {
+    store %m, mat4x2<f32>(vec2<f32>(0.0f))
+    %52:void = call %func1_
+    %53:void = call %func1_
+    %x_54:mat4x2<f32> = load %m
+    %55:ptr<uniform, i32, read> = access %x_16, 0u, 0i, 0u
+    %x_56:i32 = load %55
+    %57:ptr<uniform, i32, read> = access %x_16, 0u, 0i, 0u
+    %x_59:i32 = load %57
+    %59:ptr<uniform, i32, read> = access %x_16, 0u, 1i, 0u
+    %x_62:i32 = load %59
+    %61:ptr<uniform, i32, read> = access %x_16, 0u, 1i, 0u
+    %x_65:i32 = load %61
+    %63:ptr<uniform, i32, read> = access %x_16, 0u, 0i, 0u
+    %x_68:i32 = load %63
+    %65:ptr<uniform, i32, read> = access %x_16, 0u, 0i, 0u
+    %x_71:i32 = load %65
+    %67:ptr<uniform, i32, read> = access %x_16, 0u, 0i, 0u
+    %x_74:i32 = load %67
+    %69:ptr<uniform, i32, read> = access %x_16, 0u, 0i, 0u
+    %x_77:i32 = load %69
+    %71:f32 = convert %x_56
+    %72:f32 = convert %x_59
+    %73:vec2<f32> = construct %71, %72
+    %74:f32 = convert %x_62
+    %75:f32 = convert %x_65
+    %76:vec2<f32> = construct %74, %75
+    %77:f32 = convert %x_68
+    %78:f32 = convert %x_71
+    %79:vec2<f32> = construct %77, %78
+    %80:f32 = convert %x_74
+    %81:f32 = convert %x_77
+    %82:vec2<f32> = construct %80, %81
+    %x_83:mat4x2<f32> = construct %73, %76, %79, %82
+    %84:vec2<f32> = access %x_54, 0u
+    %85:vec2<f32> = access %x_83, 0u
+    %86:vec2<bool> = eq %84, %85
+    %87:bool = all %86
+    %88:vec2<f32> = access %x_54, 1u
+    %89:vec2<f32> = access %x_83, 1u
+    %90:vec2<bool> = eq %88, %89
+    %91:bool = all %90
+    %92:bool = and %87, %91
+    %93:vec2<f32> = access %x_54, 2u
+    %94:vec2<f32> = access %x_83, 2u
+    %95:vec2<bool> = eq %93, %94
+    %96:bool = all %95
+    %97:bool = and %92, %96
+    %98:vec2<f32> = access %x_54, 3u
+    %99:vec2<f32> = access %x_83, 3u
+    %100:vec2<bool> = eq %98, %99
+    %101:bool = all %100
+    %102:bool = and %97, %101
+    if %102 [t: %b14, f: %b15] {  # if_7
+      %b14 = block {  # true
+        %103:ptr<uniform, i32, read> = access %x_16, 0u, 3i, 0u
+        %x_107:i32 = load %103
+        %105:ptr<uniform, i32, read> = access %x_16, 0u, 0i, 0u
+        %x_110:i32 = load %105
+        %107:ptr<uniform, i32, read> = access %x_16, 0u, 0i, 0u
+        %x_113:i32 = load %107
+        %109:ptr<uniform, i32, read> = access %x_16, 0u, 3i, 0u
+        %x_116:i32 = load %109
+        %111:f32 = convert %x_107
+        %112:f32 = convert %x_110
+        %113:f32 = convert %x_113
+        %114:f32 = convert %x_116
+        %115:vec4<f32> = construct %111, %112, %113, %114
+        store %x_GLF_color, %115
+        exit_if  # if_7
+      }
+      %b15 = block {  # false
+        %116:ptr<uniform, i32, read> = access %x_16, 0u, 0i, 0u
+        %x_120:i32 = load %116
+        %x_121:f32 = convert %x_120
+        %119:vec4<f32> = construct %x_121, %x_121, %x_121, %x_121
+        store %x_GLF_color, %119
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b16 {
+  %b16 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %122:void = call %main_1
+    %123:vec4<f32> = load %x_GLF_color
+    %124:main_out = construct %123
+    ret %124
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..8578119
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,174 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v0:ptr<function, vec4<f32>, read_write> = var
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %10:f32 = load %9
+    %11:vec4<f32> = construct %10
+    store %v0, %11
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %13:f32 = load %12
+    %14:vec4<f32> = construct %13
+    store %v1, %14
+    %15:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %16:i32 = load %15
+    store %a, %16
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %17:i32 = load %a
+        %18:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %19:i32 = load %18
+        %20:bool = lt %17, %19
+        if %20 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %21:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %22:i32 = load %21
+        store %c, %22
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %23:i32 = load %c
+            %24:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+            %25:i32 = load %24
+            %26:bool = lt %23, %25
+            if %26 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %27:i32 = load %c
+            %x_69:i32 = clamp %27, 0i, 3i
+            %29:f32 = load_vector_element %v0, %x_69
+            %30:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+            %31:f32 = load %30
+            %32:f32 = sub %29, %31
+            store_vector_element %v0, %x_69, %32
+            %33:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+            %34:i32 = load %33
+            %35:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+            %36:i32 = load %35
+            %37:bool = eq %34, %36
+            if %37 [t: %b11] {  # if_3
+              %b11 = block {  # true
+                %x_83:i32 = load %a
+                %39:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+                %40:f32 = load %39
+                %41:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+                %42:f32 = load %41
+                %43:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+                %44:f32 = load %43
+                %45:vec4<f32> = construct %40, %42, %44, 3.0f
+                %46:vec4<f32> = load %v0
+                %47:vec4<f32> = smoothstep %45, vec4<f32>(1.0f), %46
+                %48:i32 = load %a
+                %49:f32 = access %47, %48
+                store_vector_element %v1, %x_83, %49
+                exit_if  # if_3
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %50:i32 = load %c
+            %51:i32 = add %50, 1i
+            store %c, %51
+            next_iteration %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %52:i32 = load %a
+        %53:i32 = add %52, 1i
+        store %a, %53
+        next_iteration %b3
+      }
+    }
+    %54:f32 = load_vector_element %v1, 0u
+    %55:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %56:f32 = load %55
+    %57:bool = eq %54, %56
+    if %57 [t: %b12, f: %b13] {  # if_4
+      %b12 = block {  # true
+        %58:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %59:i32 = load %58
+        %60:f32 = convert %59
+        %61:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %62:i32 = load %61
+        %63:f32 = convert %62
+        %64:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %65:i32 = load %64
+        %66:f32 = convert %65
+        %67:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %68:i32 = load %67
+        %69:f32 = convert %68
+        %70:vec4<f32> = construct %60, %63, %66, %69
+        store %x_GLF_color, %70
+        exit_if  # if_4
+      }
+      %b13 = block {  # false
+        %71:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %72:i32 = load %71
+        %73:f32 = convert %72
+        %74:vec4<f32> = construct %73
+        store %x_GLF_color, %74
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b14 {
+  %b14 = block {
+    %76:void = call %main_1
+    %77:vec4<f32> = load %x_GLF_color
+    %78:main_out = construct %77
+    ret %78
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b052d94
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,174 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v0:ptr<function, vec4<f32>, read_write> = var
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_41:f32 = load %9
+    %11:vec4<f32> = construct %x_41, %x_41, %x_41, %x_41
+    store %v0, %11
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_44:f32 = load %12
+    %14:vec4<f32> = construct %x_44, %x_44, %x_44, %x_44
+    store %v1, %14
+    %15:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %x_47:i32 = load %15
+    store %a, %x_47
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_52:i32 = load %a
+        %18:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_54:i32 = load %18
+        %20:bool = lt %x_52, %x_54
+        if %20 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %21:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_58:i32 = load %21
+        store %c, %x_58
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %x_63:i32 = load %c
+            %24:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+            %x_65:i32 = load %24
+            %26:bool = lt %x_63, %x_65
+            if %26 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_68:i32 = load %c
+            %x_69:i32 = clamp %x_68, 0i, 3i
+            %29:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+            %x_71:f32 = load %29
+            %x_73:f32 = load_vector_element %v0, %x_69
+            %32:f32 = sub %x_73, %x_71
+            store_vector_element %v0, %x_69, %32
+            %33:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+            %x_77:i32 = load %33
+            %35:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+            %x_79:i32 = load %35
+            %37:bool = eq %x_77, %x_79
+            if %37 [t: %b11] {  # if_3
+              %b11 = block {  # true
+                %x_83:i32 = load %a
+                %39:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+                %x_85:f32 = load %39
+                %41:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+                %x_87:f32 = load %41
+                %43:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+                %x_89:f32 = load %43
+                %x_91:vec4<f32> = load %v0
+                %x_93:i32 = load %a
+                %47:vec4<f32> = construct %x_85, %x_87, %x_89, 3.0f
+                %48:vec4<f32> = smoothstep %47, vec4<f32>(1.0f), %x_91
+                %49:f32 = access %48, %x_93
+                store_vector_element %v1, %x_83, %49
+                exit_if  # if_3
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %x_96:i32 = load %c
+            %51:i32 = add %x_96, 1i
+            store %c, %51
+            next_iteration %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_98:i32 = load %a
+        %53:i32 = add %x_98, 1i
+        store %a, %53
+        next_iteration %b3
+      }
+    }
+    %x_101:f32 = load_vector_element %v1, 0u
+    %55:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_103:f32 = load %55
+    %57:bool = eq %x_101, %x_103
+    if %57 [t: %b12, f: %b13] {  # if_4
+      %b12 = block {  # true
+        %58:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_109:i32 = load %58
+        %60:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_112:i32 = load %60
+        %62:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_115:i32 = load %62
+        %64:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_118:i32 = load %64
+        %66:f32 = convert %x_109
+        %67:f32 = convert %x_112
+        %68:f32 = convert %x_115
+        %69:f32 = convert %x_118
+        %70:vec4<f32> = construct %66, %67, %68, %69
+        store %x_GLF_color, %70
+        exit_if  # if_4
+      }
+      %b13 = block {  # false
+        %71:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_122:i32 = load %71
+        %x_123:f32 = convert %x_122
+        %74:vec4<f32> = construct %x_123, %x_123, %x_123, %x_123
+        store %x_GLF_color, %74
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b14 {
+  %b14 = block {
+    %76:void = call %main_1
+    %77:vec4<f32> = load %x_GLF_color
+    %78:main_out = construct %77
+    ret %78
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..9f2298e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,549 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_global_loop_count:ptr<private, i32, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %i_3:ptr<function, i32, read_write> = var
+    %i_4:ptr<function, i32, read_write> = var
+    %i_5:ptr<function, i32, read_write> = var
+    %i_6:ptr<function, i32, read_write> = var
+    %i_7:ptr<function, i32, read_write> = var
+    %i_8:ptr<function, i32, read_write> = var
+    %i_9:ptr<function, i32, read_write> = var
+    %i_10:ptr<function, i32, read_write> = var
+    %i_11:ptr<function, i32, read_write> = var
+    %i_12:ptr<function, i32, read_write> = var
+    %i_13:ptr<function, i32, read_write> = var
+    %i_14:ptr<function, i32, read_write> = var
+    %sum:ptr<function, f32, read_write> = var
+    %r:ptr<function, i32, read_write> = var
+    store %x_GLF_global_loop_count, 0i
+    %24:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %25:f32 = load %24
+    store %f, %25
+    %26:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %27:i32 = load %26
+    store %i, %27
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %28:i32 = load %i
+        %29:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %30:i32 = load %29
+        %31:bool = lt %28, %30
+        if %31 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %32:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %33:i32 = load %32
+        store %i_1, %33
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %34:i32 = load %i_1
+            %35:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+            %36:i32 = load %35
+            %37:bool = lt %34, %36
+            if %37 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %38:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+            %39:i32 = load %38
+            store %i_2, %39
+            loop [b: %b11, c: %b12] {  # loop_3
+              %b11 = block {  # body
+                %40:i32 = load %i_2
+                %41:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                %42:i32 = load %41
+                %43:bool = lt %40, %42
+                if %43 [t: %b13, f: %b14] {  # if_3
+                  %b13 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b14 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %44:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                %45:i32 = load %44
+                store %i_3, %45
+                loop [b: %b15, c: %b16] {  # loop_4
+                  %b15 = block {  # body
+                    %46:i32 = load %i_3
+                    %47:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                    %48:i32 = load %47
+                    %49:bool = lt %46, %48
+                    if %49 [t: %b17, f: %b18] {  # if_4
+                      %b17 = block {  # true
+                        exit_if  # if_4
+                      }
+                      %b18 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %50:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                    %51:i32 = load %50
+                    store %i_4, %51
+                    loop [b: %b19, c: %b20] {  # loop_5
+                      %b19 = block {  # body
+                        %52:i32 = load %i_4
+                        %53:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                        %54:i32 = load %53
+                        %55:bool = lt %52, %54
+                        if %55 [t: %b21, f: %b22] {  # if_5
+                          %b21 = block {  # true
+                            exit_if  # if_5
+                          }
+                          %b22 = block {  # false
+                            exit_loop  # loop_5
+                          }
+                        }
+                        %56:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                        %57:i32 = load %56
+                        store %i_5, %57
+                        loop [b: %b23, c: %b24] {  # loop_6
+                          %b23 = block {  # body
+                            %58:i32 = load %i_5
+                            %59:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                            %60:i32 = load %59
+                            %61:bool = lt %58, %60
+                            if %61 [t: %b25, f: %b26] {  # if_6
+                              %b25 = block {  # true
+                                exit_if  # if_6
+                              }
+                              %b26 = block {  # false
+                                exit_loop  # loop_6
+                              }
+                            }
+                            %62:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                            %63:i32 = load %62
+                            store %i_6, %63
+                            loop [b: %b27, c: %b28] {  # loop_7
+                              %b27 = block {  # body
+                                %64:i32 = load %i_6
+                                %65:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                                %66:i32 = load %65
+                                %67:bool = lt %64, %66
+                                if %67 [t: %b29, f: %b30] {  # if_7
+                                  %b29 = block {  # true
+                                    exit_if  # if_7
+                                  }
+                                  %b30 = block {  # false
+                                    exit_loop  # loop_7
+                                  }
+                                }
+                                %68:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                                %69:i32 = load %68
+                                store %i_7, %69
+                                loop [b: %b31, c: %b32] {  # loop_8
+                                  %b31 = block {  # body
+                                    %70:i32 = load %i_7
+                                    %71:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                                    %72:i32 = load %71
+                                    %73:bool = lt %70, %72
+                                    if %73 [t: %b33, f: %b34] {  # if_8
+                                      %b33 = block {  # true
+                                        exit_if  # if_8
+                                      }
+                                      %b34 = block {  # false
+                                        exit_loop  # loop_8
+                                      }
+                                    }
+                                    %74:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                                    %75:i32 = load %74
+                                    store %i_8, %75
+                                    loop [b: %b35, c: %b36] {  # loop_9
+                                      %b35 = block {  # body
+                                        %76:i32 = load %i_8
+                                        %77:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                                        %78:i32 = load %77
+                                        %79:bool = lt %76, %78
+                                        if %79 [t: %b37, f: %b38] {  # if_9
+                                          %b37 = block {  # true
+                                            exit_if  # if_9
+                                          }
+                                          %b38 = block {  # false
+                                            exit_loop  # loop_9
+                                          }
+                                        }
+                                        %80:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                                        %81:i32 = load %80
+                                        store %i_9, %81
+                                        loop [b: %b39, c: %b40] {  # loop_10
+                                          %b39 = block {  # body
+                                            %82:i32 = load %i_9
+                                            %83:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                                            %84:i32 = load %83
+                                            %85:bool = lt %82, %84
+                                            if %85 [t: %b41, f: %b42] {  # if_10
+                                              %b41 = block {  # true
+                                                exit_if  # if_10
+                                              }
+                                              %b42 = block {  # false
+                                                exit_loop  # loop_10
+                                              }
+                                            }
+                                            %86:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                                            %87:i32 = load %86
+                                            store %i_10, %87
+                                            loop [b: %b43, c: %b44] {  # loop_11
+                                              %b43 = block {  # body
+                                                %88:i32 = load %i_10
+                                                %89:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                                                %90:i32 = load %89
+                                                %91:bool = lt %88, %90
+                                                if %91 [t: %b45, f: %b46] {  # if_11
+                                                  %b45 = block {  # true
+                                                    exit_if  # if_11
+                                                  }
+                                                  %b46 = block {  # false
+                                                    exit_loop  # loop_11
+                                                  }
+                                                }
+                                                %92:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                                                %93:i32 = load %92
+                                                store %i_11, %93
+                                                loop [b: %b47, c: %b48] {  # loop_12
+                                                  %b47 = block {  # body
+                                                    %94:i32 = load %i_11
+                                                    %95:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+                                                    %96:i32 = load %95
+                                                    %97:bool = lt %94, %96
+                                                    if %97 [t: %b49, f: %b50] {  # if_12
+                                                      %b49 = block {  # true
+                                                        exit_if  # if_12
+                                                      }
+                                                      %b50 = block {  # false
+                                                        exit_loop  # loop_12
+                                                      }
+                                                    }
+                                                    %98:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                                                    %99:i32 = load %98
+                                                    store %i_12, %99
+                                                    loop [b: %b51, c: %b52] {  # loop_13
+                                                      %b51 = block {  # body
+                                                        %100:i32 = load %i_12
+                                                        %101:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                                                        %102:i32 = load %101
+                                                        %103:bool = lt %100, %102
+                                                        if %103 [t: %b53, f: %b54] {  # if_13
+                                                          %b53 = block {  # true
+                                                            exit_if  # if_13
+                                                          }
+                                                          %b54 = block {  # false
+                                                            exit_loop  # loop_13
+                                                          }
+                                                        }
+                                                        %104:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                                                        %105:i32 = load %104
+                                                        store %i_13, %105
+                                                        loop [b: %b55, c: %b56] {  # loop_14
+                                                          %b55 = block {  # body
+                                                            %106:i32 = load %i_13
+                                                            %107:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                                                            %108:i32 = load %107
+                                                            %109:bool = lt %106, %108
+                                                            if %109 [t: %b57, f: %b58] {  # if_14
+                                                              %b57 = block {  # true
+                                                                exit_if  # if_14
+                                                              }
+                                                              %b58 = block {  # false
+                                                                exit_loop  # loop_14
+                                                              }
+                                                            }
+                                                            %110:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                                                            %111:i32 = load %110
+                                                            store %i_14, %111
+                                                            loop [b: %b59, c: %b60] {  # loop_15
+                                                              %b59 = block {  # body
+                                                                %112:i32 = load %i_14
+                                                                %113:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+                                                                %114:i32 = load %113
+                                                                %115:bool = lt %112, %114
+                                                                if %115 [t: %b61, f: %b62] {  # if_15
+                                                                  %b61 = block {  # true
+                                                                    exit_if  # if_15
+                                                                  }
+                                                                  %b62 = block {  # false
+                                                                    exit_loop  # loop_15
+                                                                  }
+                                                                }
+                                                                loop [b: %b63, c: %b64] {  # loop_16
+                                                                  %b63 = block {  # body
+                                                                    %116:i32 = load %x_GLF_global_loop_count
+                                                                    %117:i32 = add %116, 1i
+                                                                    store %x_GLF_global_loop_count, %117
+                                                                    continue %b64
+                                                                  }
+                                                                  %b64 = block {  # continuing
+                                                                    %x_225:i32 = load %x_GLF_global_loop_count
+                                                                    %119:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+                                                                    %x_227:i32 = load %119
+                                                                    %121:i32 = sub 100i, %x_227
+                                                                    %122:bool = lt %x_225, %121
+                                                                    %123:bool = eq %122, false
+                                                                    break_if %123 %b63
+                                                                  }
+                                                                }
+                                                                %124:f32 = load %f
+                                                                %125:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+                                                                %126:f32 = load %125
+                                                                %127:f32 = add %124, %126
+                                                                store %f, %127
+                                                                continue %b60
+                                                              }
+                                                              %b60 = block {  # continuing
+                                                                %128:i32 = load %i_14
+                                                                %129:i32 = add %128, 1i
+                                                                store %i_14, %129
+                                                                next_iteration %b59
+                                                              }
+                                                            }
+                                                            continue %b56
+                                                          }
+                                                          %b56 = block {  # continuing
+                                                            %130:i32 = load %i_13
+                                                            %131:i32 = add %130, 1i
+                                                            store %i_13, %131
+                                                            next_iteration %b55
+                                                          }
+                                                        }
+                                                        continue %b52
+                                                      }
+                                                      %b52 = block {  # continuing
+                                                        %132:i32 = load %i_12
+                                                        %133:i32 = add %132, 1i
+                                                        store %i_12, %133
+                                                        next_iteration %b51
+                                                      }
+                                                    }
+                                                    continue %b48
+                                                  }
+                                                  %b48 = block {  # continuing
+                                                    %134:i32 = load %i_11
+                                                    %135:i32 = add %134, 1i
+                                                    store %i_11, %135
+                                                    next_iteration %b47
+                                                  }
+                                                }
+                                                continue %b44
+                                              }
+                                              %b44 = block {  # continuing
+                                                %136:i32 = load %i_10
+                                                %137:i32 = add %136, 1i
+                                                store %i_10, %137
+                                                next_iteration %b43
+                                              }
+                                            }
+                                            continue %b40
+                                          }
+                                          %b40 = block {  # continuing
+                                            %138:i32 = load %i_9
+                                            %139:i32 = add %138, 1i
+                                            store %i_9, %139
+                                            next_iteration %b39
+                                          }
+                                        }
+                                        continue %b36
+                                      }
+                                      %b36 = block {  # continuing
+                                        %140:i32 = load %i_8
+                                        %141:i32 = add %140, 1i
+                                        store %i_8, %141
+                                        next_iteration %b35
+                                      }
+                                    }
+                                    continue %b32
+                                  }
+                                  %b32 = block {  # continuing
+                                    %142:i32 = load %i_7
+                                    %143:i32 = add %142, 1i
+                                    store %i_7, %143
+                                    next_iteration %b31
+                                  }
+                                }
+                                continue %b28
+                              }
+                              %b28 = block {  # continuing
+                                %144:i32 = load %i_6
+                                %145:i32 = add %144, 1i
+                                store %i_6, %145
+                                next_iteration %b27
+                              }
+                            }
+                            continue %b24
+                          }
+                          %b24 = block {  # continuing
+                            %146:i32 = load %i_5
+                            %147:i32 = add %146, 1i
+                            store %i_5, %147
+                            next_iteration %b23
+                          }
+                        }
+                        continue %b20
+                      }
+                      %b20 = block {  # continuing
+                        %148:i32 = load %i_4
+                        %149:i32 = add %148, 1i
+                        store %i_4, %149
+                        next_iteration %b19
+                      }
+                    }
+                    continue %b16
+                  }
+                  %b16 = block {  # continuing
+                    %150:i32 = load %i_3
+                    %151:i32 = add %150, 1i
+                    store %i_3, %151
+                    next_iteration %b15
+                  }
+                }
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %152:i32 = load %i_2
+                %153:i32 = add %152, 1i
+                store %i_2, %153
+                next_iteration %b11
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %154:i32 = load %i_1
+            %155:i32 = add %154, 1i
+            store %i_1, %155
+            next_iteration %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %156:i32 = load %i
+        %157:i32 = add %156, 1i
+        store %i, %157
+        next_iteration %b3
+      }
+    }
+    %158:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %159:f32 = load %158
+    store %sum, %159
+    %160:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %161:i32 = load %160
+    store %r, %161
+    loop [b: %b65, c: %b66] {  # loop_17
+      %b65 = block {  # body
+        %162:i32 = load %x_GLF_global_loop_count
+        %163:bool = lt %162, 100i
+        if %163 [t: %b67, f: %b68] {  # if_16
+          %b67 = block {  # true
+            exit_if  # if_16
+          }
+          %b68 = block {  # false
+            exit_loop  # loop_17
+          }
+        }
+        %164:i32 = load %x_GLF_global_loop_count
+        %165:i32 = add %164, 1i
+        store %x_GLF_global_loop_count, %165
+        %166:f32 = load %sum
+        %167:f32 = load %f
+        %168:f32 = add %166, %167
+        store %sum, %168
+        continue %b66
+      }
+      %b66 = block {  # continuing
+        %169:i32 = load %r
+        %170:i32 = add %169, 1i
+        store %r, %170
+        next_iteration %b65
+      }
+    }
+    %171:f32 = load %sum
+    %172:ptr<uniform, f32, read> = access %x_7, 0u, 2i, 0u
+    %173:f32 = load %172
+    %174:bool = eq %171, %173
+    if %174 [t: %b69, f: %b70] {  # if_17
+      %b69 = block {  # true
+        %175:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %176:i32 = load %175
+        %177:f32 = convert %176
+        %178:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %179:i32 = load %178
+        %180:f32 = convert %179
+        %181:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %182:i32 = load %181
+        %183:f32 = convert %182
+        %184:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %185:i32 = load %184
+        %186:f32 = convert %185
+        %187:vec4<f32> = construct %177, %180, %183, %186
+        store %x_GLF_color, %187
+        exit_if  # if_17
+      }
+      %b70 = block {  # false
+        %188:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %189:i32 = load %188
+        %190:f32 = convert %189
+        %191:vec4<f32> = construct %190
+        store %x_GLF_color, %191
+        exit_if  # if_17
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b71 {
+  %b71 = block {
+    %193:void = call %main_1
+    %194:vec4<f32> = load %x_GLF_color
+    %195:main_out = construct %194
+    ret %195
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a1ad8af
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,549 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_global_loop_count:ptr<private, i32, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %i_3:ptr<function, i32, read_write> = var
+    %i_4:ptr<function, i32, read_write> = var
+    %i_5:ptr<function, i32, read_write> = var
+    %i_6:ptr<function, i32, read_write> = var
+    %i_7:ptr<function, i32, read_write> = var
+    %i_8:ptr<function, i32, read_write> = var
+    %i_9:ptr<function, i32, read_write> = var
+    %i_10:ptr<function, i32, read_write> = var
+    %i_11:ptr<function, i32, read_write> = var
+    %i_12:ptr<function, i32, read_write> = var
+    %i_13:ptr<function, i32, read_write> = var
+    %i_14:ptr<function, i32, read_write> = var
+    %sum:ptr<function, f32, read_write> = var
+    %r:ptr<function, i32, read_write> = var
+    store %x_GLF_global_loop_count, 0i
+    %24:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_53:f32 = load %24
+    store %f, %x_53
+    %26:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %x_55:i32 = load %26
+    store %i, %x_55
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_60:i32 = load %i
+        %29:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_62:i32 = load %29
+        %31:bool = lt %x_60, %x_62
+        if %31 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %32:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_66:i32 = load %32
+        store %i_1, %x_66
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %x_71:i32 = load %i_1
+            %35:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+            %x_73:i32 = load %35
+            %37:bool = lt %x_71, %x_73
+            if %37 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %38:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+            %x_77:i32 = load %38
+            store %i_2, %x_77
+            loop [b: %b11, c: %b12] {  # loop_3
+              %b11 = block {  # body
+                %x_82:i32 = load %i_2
+                %41:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                %x_84:i32 = load %41
+                %43:bool = lt %x_82, %x_84
+                if %43 [t: %b13, f: %b14] {  # if_3
+                  %b13 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b14 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %44:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                %x_88:i32 = load %44
+                store %i_3, %x_88
+                loop [b: %b15, c: %b16] {  # loop_4
+                  %b15 = block {  # body
+                    %x_93:i32 = load %i_3
+                    %47:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                    %x_95:i32 = load %47
+                    %49:bool = lt %x_93, %x_95
+                    if %49 [t: %b17, f: %b18] {  # if_4
+                      %b17 = block {  # true
+                        exit_if  # if_4
+                      }
+                      %b18 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %50:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                    %x_99:i32 = load %50
+                    store %i_4, %x_99
+                    loop [b: %b19, c: %b20] {  # loop_5
+                      %b19 = block {  # body
+                        %x_104:i32 = load %i_4
+                        %53:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                        %x_106:i32 = load %53
+                        %55:bool = lt %x_104, %x_106
+                        if %55 [t: %b21, f: %b22] {  # if_5
+                          %b21 = block {  # true
+                            exit_if  # if_5
+                          }
+                          %b22 = block {  # false
+                            exit_loop  # loop_5
+                          }
+                        }
+                        %56:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                        %x_110:i32 = load %56
+                        store %i_5, %x_110
+                        loop [b: %b23, c: %b24] {  # loop_6
+                          %b23 = block {  # body
+                            %x_115:i32 = load %i_5
+                            %59:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                            %x_117:i32 = load %59
+                            %61:bool = lt %x_115, %x_117
+                            if %61 [t: %b25, f: %b26] {  # if_6
+                              %b25 = block {  # true
+                                exit_if  # if_6
+                              }
+                              %b26 = block {  # false
+                                exit_loop  # loop_6
+                              }
+                            }
+                            %62:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                            %x_121:i32 = load %62
+                            store %i_6, %x_121
+                            loop [b: %b27, c: %b28] {  # loop_7
+                              %b27 = block {  # body
+                                %x_126:i32 = load %i_6
+                                %65:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                                %x_128:i32 = load %65
+                                %67:bool = lt %x_126, %x_128
+                                if %67 [t: %b29, f: %b30] {  # if_7
+                                  %b29 = block {  # true
+                                    exit_if  # if_7
+                                  }
+                                  %b30 = block {  # false
+                                    exit_loop  # loop_7
+                                  }
+                                }
+                                %68:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                                %x_132:i32 = load %68
+                                store %i_7, %x_132
+                                loop [b: %b31, c: %b32] {  # loop_8
+                                  %b31 = block {  # body
+                                    %x_137:i32 = load %i_7
+                                    %71:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                                    %x_139:i32 = load %71
+                                    %73:bool = lt %x_137, %x_139
+                                    if %73 [t: %b33, f: %b34] {  # if_8
+                                      %b33 = block {  # true
+                                        exit_if  # if_8
+                                      }
+                                      %b34 = block {  # false
+                                        exit_loop  # loop_8
+                                      }
+                                    }
+                                    %74:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                                    %x_143:i32 = load %74
+                                    store %i_8, %x_143
+                                    loop [b: %b35, c: %b36] {  # loop_9
+                                      %b35 = block {  # body
+                                        %x_148:i32 = load %i_8
+                                        %77:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                                        %x_150:i32 = load %77
+                                        %79:bool = lt %x_148, %x_150
+                                        if %79 [t: %b37, f: %b38] {  # if_9
+                                          %b37 = block {  # true
+                                            exit_if  # if_9
+                                          }
+                                          %b38 = block {  # false
+                                            exit_loop  # loop_9
+                                          }
+                                        }
+                                        %80:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                                        %x_154:i32 = load %80
+                                        store %i_9, %x_154
+                                        loop [b: %b39, c: %b40] {  # loop_10
+                                          %b39 = block {  # body
+                                            %x_159:i32 = load %i_9
+                                            %83:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                                            %x_161:i32 = load %83
+                                            %85:bool = lt %x_159, %x_161
+                                            if %85 [t: %b41, f: %b42] {  # if_10
+                                              %b41 = block {  # true
+                                                exit_if  # if_10
+                                              }
+                                              %b42 = block {  # false
+                                                exit_loop  # loop_10
+                                              }
+                                            }
+                                            %86:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                                            %x_165:i32 = load %86
+                                            store %i_10, %x_165
+                                            loop [b: %b43, c: %b44] {  # loop_11
+                                              %b43 = block {  # body
+                                                %x_170:i32 = load %i_10
+                                                %89:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                                                %x_172:i32 = load %89
+                                                %91:bool = lt %x_170, %x_172
+                                                if %91 [t: %b45, f: %b46] {  # if_11
+                                                  %b45 = block {  # true
+                                                    exit_if  # if_11
+                                                  }
+                                                  %b46 = block {  # false
+                                                    exit_loop  # loop_11
+                                                  }
+                                                }
+                                                %92:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                                                %x_176:i32 = load %92
+                                                store %i_11, %x_176
+                                                loop [b: %b47, c: %b48] {  # loop_12
+                                                  %b47 = block {  # body
+                                                    %x_181:i32 = load %i_11
+                                                    %95:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+                                                    %x_183:i32 = load %95
+                                                    %97:bool = lt %x_181, %x_183
+                                                    if %97 [t: %b49, f: %b50] {  # if_12
+                                                      %b49 = block {  # true
+                                                        exit_if  # if_12
+                                                      }
+                                                      %b50 = block {  # false
+                                                        exit_loop  # loop_12
+                                                      }
+                                                    }
+                                                    %98:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                                                    %x_187:i32 = load %98
+                                                    store %i_12, %x_187
+                                                    loop [b: %b51, c: %b52] {  # loop_13
+                                                      %b51 = block {  # body
+                                                        %x_192:i32 = load %i_12
+                                                        %101:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                                                        %x_194:i32 = load %101
+                                                        %103:bool = lt %x_192, %x_194
+                                                        if %103 [t: %b53, f: %b54] {  # if_13
+                                                          %b53 = block {  # true
+                                                            exit_if  # if_13
+                                                          }
+                                                          %b54 = block {  # false
+                                                            exit_loop  # loop_13
+                                                          }
+                                                        }
+                                                        %104:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                                                        %x_198:i32 = load %104
+                                                        store %i_13, %x_198
+                                                        loop [b: %b55, c: %b56] {  # loop_14
+                                                          %b55 = block {  # body
+                                                            %x_203:i32 = load %i_13
+                                                            %107:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                                                            %x_205:i32 = load %107
+                                                            %109:bool = lt %x_203, %x_205
+                                                            if %109 [t: %b57, f: %b58] {  # if_14
+                                                              %b57 = block {  # true
+                                                                exit_if  # if_14
+                                                              }
+                                                              %b58 = block {  # false
+                                                                exit_loop  # loop_14
+                                                              }
+                                                            }
+                                                            %110:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                                                            %x_209:i32 = load %110
+                                                            store %i_14, %x_209
+                                                            loop [b: %b59, c: %b60] {  # loop_15
+                                                              %b59 = block {  # body
+                                                                %x_214:i32 = load %i_14
+                                                                %113:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+                                                                %x_216:i32 = load %113
+                                                                %115:bool = lt %x_214, %x_216
+                                                                if %115 [t: %b61, f: %b62] {  # if_15
+                                                                  %b61 = block {  # true
+                                                                    exit_if  # if_15
+                                                                  }
+                                                                  %b62 = block {  # false
+                                                                    exit_loop  # loop_15
+                                                                  }
+                                                                }
+                                                                loop [b: %b63, c: %b64] {  # loop_16
+                                                                  %b63 = block {  # body
+                                                                    %x_223:i32 = load %x_GLF_global_loop_count
+                                                                    %117:i32 = add %x_223, 1i
+                                                                    store %x_GLF_global_loop_count, %117
+                                                                    continue %b64
+                                                                  }
+                                                                  %b64 = block {  # continuing
+                                                                    %x_225:i32 = load %x_GLF_global_loop_count
+                                                                    %119:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+                                                                    %x_227:i32 = load %119
+                                                                    %121:i32 = sub 100i, %x_227
+                                                                    %122:bool = lt %x_225, %121
+                                                                    %123:bool = eq %122, false
+                                                                    break_if %123 %b63
+                                                                  }
+                                                                }
+                                                                %124:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+                                                                %x_231:f32 = load %124
+                                                                %x_232:f32 = load %f
+                                                                %127:f32 = add %x_232, %x_231
+                                                                store %f, %127
+                                                                continue %b60
+                                                              }
+                                                              %b60 = block {  # continuing
+                                                                %x_234:i32 = load %i_14
+                                                                %129:i32 = add %x_234, 1i
+                                                                store %i_14, %129
+                                                                next_iteration %b59
+                                                              }
+                                                            }
+                                                            continue %b56
+                                                          }
+                                                          %b56 = block {  # continuing
+                                                            %x_236:i32 = load %i_13
+                                                            %131:i32 = add %x_236, 1i
+                                                            store %i_13, %131
+                                                            next_iteration %b55
+                                                          }
+                                                        }
+                                                        continue %b52
+                                                      }
+                                                      %b52 = block {  # continuing
+                                                        %x_238:i32 = load %i_12
+                                                        %133:i32 = add %x_238, 1i
+                                                        store %i_12, %133
+                                                        next_iteration %b51
+                                                      }
+                                                    }
+                                                    continue %b48
+                                                  }
+                                                  %b48 = block {  # continuing
+                                                    %x_240:i32 = load %i_11
+                                                    %135:i32 = add %x_240, 1i
+                                                    store %i_11, %135
+                                                    next_iteration %b47
+                                                  }
+                                                }
+                                                continue %b44
+                                              }
+                                              %b44 = block {  # continuing
+                                                %x_242:i32 = load %i_10
+                                                %137:i32 = add %x_242, 1i
+                                                store %i_10, %137
+                                                next_iteration %b43
+                                              }
+                                            }
+                                            continue %b40
+                                          }
+                                          %b40 = block {  # continuing
+                                            %x_244:i32 = load %i_9
+                                            %139:i32 = add %x_244, 1i
+                                            store %i_9, %139
+                                            next_iteration %b39
+                                          }
+                                        }
+                                        continue %b36
+                                      }
+                                      %b36 = block {  # continuing
+                                        %x_246:i32 = load %i_8
+                                        %141:i32 = add %x_246, 1i
+                                        store %i_8, %141
+                                        next_iteration %b35
+                                      }
+                                    }
+                                    continue %b32
+                                  }
+                                  %b32 = block {  # continuing
+                                    %x_248:i32 = load %i_7
+                                    %143:i32 = add %x_248, 1i
+                                    store %i_7, %143
+                                    next_iteration %b31
+                                  }
+                                }
+                                continue %b28
+                              }
+                              %b28 = block {  # continuing
+                                %x_250:i32 = load %i_6
+                                %145:i32 = add %x_250, 1i
+                                store %i_6, %145
+                                next_iteration %b27
+                              }
+                            }
+                            continue %b24
+                          }
+                          %b24 = block {  # continuing
+                            %x_252:i32 = load %i_5
+                            %147:i32 = add %x_252, 1i
+                            store %i_5, %147
+                            next_iteration %b23
+                          }
+                        }
+                        continue %b20
+                      }
+                      %b20 = block {  # continuing
+                        %x_254:i32 = load %i_4
+                        %149:i32 = add %x_254, 1i
+                        store %i_4, %149
+                        next_iteration %b19
+                      }
+                    }
+                    continue %b16
+                  }
+                  %b16 = block {  # continuing
+                    %x_256:i32 = load %i_3
+                    %151:i32 = add %x_256, 1i
+                    store %i_3, %151
+                    next_iteration %b15
+                  }
+                }
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %x_258:i32 = load %i_2
+                %153:i32 = add %x_258, 1i
+                store %i_2, %153
+                next_iteration %b11
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %x_260:i32 = load %i_1
+            %155:i32 = add %x_260, 1i
+            store %i_1, %155
+            next_iteration %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_262:i32 = load %i
+        %157:i32 = add %x_262, 1i
+        store %i, %157
+        next_iteration %b3
+      }
+    }
+    %158:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_265:f32 = load %158
+    store %sum, %x_265
+    %160:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %x_267:i32 = load %160
+    store %r, %x_267
+    loop [b: %b65, c: %b66] {  # loop_17
+      %b65 = block {  # body
+        %x_272:i32 = load %x_GLF_global_loop_count
+        %163:bool = lt %x_272, 100i
+        if %163 [t: %b67, f: %b68] {  # if_16
+          %b67 = block {  # true
+            exit_if  # if_16
+          }
+          %b68 = block {  # false
+            exit_loop  # loop_17
+          }
+        }
+        %x_275:i32 = load %x_GLF_global_loop_count
+        %165:i32 = add %x_275, 1i
+        store %x_GLF_global_loop_count, %165
+        %x_277:f32 = load %f
+        %x_278:f32 = load %sum
+        %168:f32 = add %x_278, %x_277
+        store %sum, %168
+        continue %b66
+      }
+      %b66 = block {  # continuing
+        %x_280:i32 = load %r
+        %170:i32 = add %x_280, 1i
+        store %r, %170
+        next_iteration %b65
+      }
+    }
+    %x_282:f32 = load %sum
+    %172:ptr<uniform, f32, read> = access %x_7, 0u, 2i, 0u
+    %x_284:f32 = load %172
+    %174:bool = eq %x_282, %x_284
+    if %174 [t: %b69, f: %b70] {  # if_17
+      %b69 = block {  # true
+        %175:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_290:i32 = load %175
+        %177:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_293:i32 = load %177
+        %179:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_296:i32 = load %179
+        %181:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_299:i32 = load %181
+        %183:f32 = convert %x_290
+        %184:f32 = convert %x_293
+        %185:f32 = convert %x_296
+        %186:f32 = convert %x_299
+        %187:vec4<f32> = construct %183, %184, %185, %186
+        store %x_GLF_color, %187
+        exit_if  # if_17
+      }
+      %b70 = block {  # false
+        %188:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_303:i32 = load %188
+        %x_304:f32 = convert %x_303
+        %191:vec4<f32> = construct %x_304, %x_304, %x_304, %x_304
+        store %x_GLF_color, %191
+        exit_if  # if_17
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b71 {
+  %b71 = block {
+    %193:void = call %main_1
+    %194:vec4<f32> = load %x_GLF_color
+    %195:main_out = construct %194
+    ret %195
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..057e8c1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,231 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 19> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %A:ptr<function, array<i32, 17>, read_write> = var
+    %r:ptr<function, array<i32, 17>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %ok:ptr<function, bool, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %11:i32 = load %10
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %13:i32 = load %12
+    %14:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %15:i32 = load %14
+    %16:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %17:i32 = load %16
+    %18:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %19:i32 = load %18
+    %20:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %21:i32 = load %20
+    %22:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %23:i32 = load %22
+    %24:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %25:i32 = load %24
+    %26:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %27:i32 = load %26
+    %28:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %29:i32 = load %28
+    %30:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %31:i32 = load %30
+    %32:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %33:i32 = load %32
+    %34:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %35:i32 = load %34
+    %36:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %37:i32 = load %36
+    %38:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %39:i32 = load %38
+    %40:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %41:i32 = load %40
+    %42:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %43:i32 = load %42
+    %44:array<i32, 17> = construct %11, %13, %15, %17, %19, %21, %23, %25, %27, %29, %31, %33, %35, %37, %39, %41, %43
+    store %A, %44
+    %45:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %46:i32 = load %45
+    %47:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %48:i32 = load %47
+    %49:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %50:i32 = load %49
+    %51:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+    %52:i32 = load %51
+    %53:ptr<uniform, i32, read> = access %x_6, 0u, 7i, 0u
+    %54:i32 = load %53
+    %55:ptr<uniform, i32, read> = access %x_6, 0u, 8i, 0u
+    %56:i32 = load %55
+    %57:ptr<uniform, i32, read> = access %x_6, 0u, 9i, 0u
+    %58:i32 = load %57
+    %59:ptr<uniform, i32, read> = access %x_6, 0u, 10i, 0u
+    %60:i32 = load %59
+    %61:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
+    %62:i32 = load %61
+    %63:ptr<uniform, i32, read> = access %x_6, 0u, 12i, 0u
+    %64:i32 = load %63
+    %65:ptr<uniform, i32, read> = access %x_6, 0u, 13i, 0u
+    %66:i32 = load %65
+    %67:ptr<uniform, i32, read> = access %x_6, 0u, 14i, 0u
+    %68:i32 = load %67
+    %69:ptr<uniform, i32, read> = access %x_6, 0u, 15i, 0u
+    %70:i32 = load %69
+    %71:ptr<uniform, i32, read> = access %x_6, 0u, 16i, 0u
+    %72:i32 = load %71
+    %73:ptr<uniform, i32, read> = access %x_6, 0u, 17i, 0u
+    %74:i32 = load %73
+    %75:ptr<uniform, i32, read> = access %x_6, 0u, 18i, 0u
+    %76:i32 = load %75
+    %77:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %78:i32 = load %77
+    %79:array<i32, 17> = construct %46, %48, %50, %52, %54, %56, %58, %60, %62, %64, %66, %68, %70, %72, %74, %76, %78
+    store %r, %79
+    %80:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %81:i32 = load %80
+    store %a, %81
+    %82:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %83:i32 = load %82
+    store %i, %83
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %84:i32 = load %i
+        %85:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %86:i32 = load %85
+        %87:bool = lt %84, %86
+        if %87 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_134:i32 = load %i
+        %x_135:i32 = load %a
+        %90:i32 = load %a
+        %91:i32 = sub %90, 1i
+        store %a, %91
+        %92:ptr<function, i32, read_write> = access %A, %x_134
+        store %92, %x_135
+        %x_138:i32 = load %i
+        %94:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_140:i32 = load %94
+        %96:ptr<uniform, i32, read> = access %x_6, 0u, 18i, 0u
+        %x_142:i32 = load %96
+        %98:i32 = clamp %x_138, %x_140, %x_142
+        %99:ptr<function, i32, read_write> = access %A, %98
+        %100:i32 = load %i
+        %101:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %102:i32 = load %101
+        %103:i32 = add %100, %102
+        store %99, %103
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %104:i32 = load %i
+        %105:i32 = add %104, 1i
+        store %i, %105
+        next_iteration %b3
+      }
+    }
+    store %ok, true
+    %106:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %107:i32 = load %106
+    store %i_1, %107
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %108:i32 = load %i_1
+        %109:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %110:i32 = load %109
+        %111:bool = lt %108, %110
+        if %111 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %112:i32 = load %i_1
+        %113:ptr<function, i32, read_write> = access %A, %112
+        %114:i32 = load %113
+        %115:i32 = load %i_1
+        %116:ptr<function, i32, read_write> = access %r, %115
+        %117:i32 = load %116
+        %118:bool = neq %114, %117
+        if %118 [t: %b11] {  # if_3
+          %b11 = block {  # true
+            store %ok, false
+            exit_if  # if_3
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %119:i32 = load %i_1
+        %120:i32 = add %119, 1i
+        store %i_1, %120
+        next_iteration %b7
+      }
+    }
+    %121:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %122:i32 = load %121
+    %123:f32 = convert %122
+    %124:vec4<f32> = construct %123
+    store %x_GLF_color, %124
+    %125:bool = load %ok
+    if %125 [t: %b12] {  # if_4
+      %b12 = block {  # true
+        %126:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %127:i32 = load %126
+        %128:f32 = convert %127
+        %129:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %130:i32 = load %129
+        %131:f32 = convert %130
+        %132:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %133:i32 = load %132
+        %134:f32 = convert %133
+        %135:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %136:i32 = load %135
+        %137:f32 = convert %136
+        %138:vec4<f32> = construct %128, %131, %134, %137
+        store %x_GLF_color, %138
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %140:void = call %main_1
+    %141:vec4<f32> = load %x_GLF_color
+    %142:main_out = construct %141
+    ret %142
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ad88df7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,230 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 19> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %A:ptr<function, array<i32, 17>, read_write> = var
+    %r:ptr<function, array<i32, 17>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %ok:ptr<function, bool, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_52:i32 = load %10
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_54:i32 = load %12
+    %14:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_56:i32 = load %14
+    %16:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_58:i32 = load %16
+    %18:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_60:i32 = load %18
+    %20:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_62:i32 = load %20
+    %22:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_64:i32 = load %22
+    %24:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_66:i32 = load %24
+    %26:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_68:i32 = load %26
+    %28:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_70:i32 = load %28
+    %30:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_72:i32 = load %30
+    %32:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_74:i32 = load %32
+    %34:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_76:i32 = load %34
+    %36:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_78:i32 = load %36
+    %38:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_80:i32 = load %38
+    %40:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_82:i32 = load %40
+    %42:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_84:i32 = load %42
+    %44:array<i32, 17> = construct %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
+    store %A, %44
+    %45:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_87:i32 = load %45
+    %47:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %x_89:i32 = load %47
+    %49:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %x_91:i32 = load %49
+    %51:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+    %x_93:i32 = load %51
+    %53:ptr<uniform, i32, read> = access %x_6, 0u, 7i, 0u
+    %x_95:i32 = load %53
+    %55:ptr<uniform, i32, read> = access %x_6, 0u, 8i, 0u
+    %x_97:i32 = load %55
+    %57:ptr<uniform, i32, read> = access %x_6, 0u, 9i, 0u
+    %x_99:i32 = load %57
+    %59:ptr<uniform, i32, read> = access %x_6, 0u, 10i, 0u
+    %x_101:i32 = load %59
+    %61:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
+    %x_103:i32 = load %61
+    %63:ptr<uniform, i32, read> = access %x_6, 0u, 12i, 0u
+    %x_105:i32 = load %63
+    %65:ptr<uniform, i32, read> = access %x_6, 0u, 13i, 0u
+    %x_107:i32 = load %65
+    %67:ptr<uniform, i32, read> = access %x_6, 0u, 14i, 0u
+    %x_109:i32 = load %67
+    %69:ptr<uniform, i32, read> = access %x_6, 0u, 15i, 0u
+    %x_111:i32 = load %69
+    %71:ptr<uniform, i32, read> = access %x_6, 0u, 16i, 0u
+    %x_113:i32 = load %71
+    %73:ptr<uniform, i32, read> = access %x_6, 0u, 17i, 0u
+    %x_115:i32 = load %73
+    %75:ptr<uniform, i32, read> = access %x_6, 0u, 18i, 0u
+    %x_117:i32 = load %75
+    %77:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_119:i32 = load %77
+    %79:array<i32, 17> = construct %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
+    store %r, %79
+    %80:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_122:i32 = load %80
+    store %a, %x_122
+    %82:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_124:i32 = load %82
+    store %i, %x_124
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_129:i32 = load %i
+        %85:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_131:i32 = load %85
+        %87:bool = lt %x_129, %x_131
+        if %87 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_134:i32 = load %i
+        %x_135:i32 = load %a
+        %90:i32 = sub %x_135, 1i
+        store %a, %90
+        %91:ptr<function, i32, read_write> = access %A, %x_134
+        store %91, %x_135
+        %x_138:i32 = load %i
+        %93:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_140:i32 = load %93
+        %95:ptr<uniform, i32, read> = access %x_6, 0u, 18i, 0u
+        %x_142:i32 = load %95
+        %x_144:i32 = load %i
+        %98:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_146:i32 = load %98
+        %100:i32 = clamp %x_138, %x_140, %x_142
+        %101:ptr<function, i32, read_write> = access %A, %100
+        %102:i32 = add %x_144, %x_146
+        store %101, %102
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_149:i32 = load %i
+        %104:i32 = add %x_149, 1i
+        store %i, %104
+        next_iteration %b3
+      }
+    }
+    store %ok, true
+    %105:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_152:i32 = load %105
+    store %i_1, %x_152
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_157:i32 = load %i_1
+        %108:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_159:i32 = load %108
+        %110:bool = lt %x_157, %x_159
+        if %110 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_162:i32 = load %i_1
+        %112:ptr<function, i32, read_write> = access %A, %x_162
+        %x_164:i32 = load %112
+        %x_165:i32 = load %i_1
+        %115:ptr<function, i32, read_write> = access %r, %x_165
+        %x_167:i32 = load %115
+        %117:bool = neq %x_164, %x_167
+        if %117 [t: %b11] {  # if_3
+          %b11 = block {  # true
+            store %ok, false
+            exit_if  # if_3
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %x_171:i32 = load %i_1
+        %119:i32 = add %x_171, 1i
+        store %i_1, %119
+        next_iteration %b7
+      }
+    }
+    %120:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_174:i32 = load %120
+    %x_175:f32 = convert %x_174
+    %123:vec4<f32> = construct %x_175, %x_175, %x_175, %x_175
+    store %x_GLF_color, %123
+    %x_177:bool = load %ok
+    if %x_177 [t: %b12] {  # if_4
+      %b12 = block {  # true
+        %125:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_181:i32 = load %125
+        %127:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_184:i32 = load %127
+        %129:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_187:i32 = load %129
+        %131:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_190:i32 = load %131
+        %133:f32 = convert %x_181
+        %134:f32 = convert %x_184
+        %135:f32 = convert %x_187
+        %136:f32 = convert %x_190
+        %137:vec4<f32> = construct %133, %134, %135, %136
+        store %x_GLF_color, %137
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %139:void = call %main_1
+    %140:vec4<f32> = load %x_GLF_color
+    %141:main_out = construct %140
+    ret %141
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..c4a2b71
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,121 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, array<vec4<f32>, 2>, read_write> = var
+    %indexable_1:ptr<function, array<vec4<f32>, 2>, read_write> = var
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %11:f32 = load %10
+    %12:vec4<f32> = construct %11
+    store %v1, %12
+    %13:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %14:i32 = load %13
+    store %i, %14
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %15:i32 = load %i
+        %16:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %17:i32 = load %16
+        %18:bool = lt %15, %17
+        if %18 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_58:i32 = load %i
+        %20:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_60:i32 = load %20
+        %22:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %x_62:i32 = load %22
+        store %indexable, array<vec4<f32>, 2>(vec4<f32>(1.0f), vec4<f32>(0.0f))
+        %24:i32 = clamp %x_58, %x_60, %x_62
+        %25:ptr<function, vec4<f32>, read_write> = access %indexable, %24
+        %26:f32 = load_vector_element %25, 0u
+        %27:i32 = convert %26
+        store %a, %27
+        %x_86:i32 = load %a
+        %29:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %30:f32 = load %29
+        %31:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %32:f32 = load %31
+        %33:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %34:f32 = load %33
+        %35:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %36:f32 = load %35
+        %37:vec4<f32> = construct %30, %32, %34, %36
+        %38:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %39:f32 = load %38
+        %40:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %41:f32 = load %40
+        %42:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %43:f32 = load %42
+        %44:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %45:f32 = load %44
+        %46:vec4<f32> = construct %39, %41, %43, %45
+        %47:array<vec4<f32>, 2> = construct %37, %46
+        store %indexable_1, %47
+        %48:ptr<function, vec4<f32>, read_write> = access %indexable_1, %x_86
+        %49:vec4<f32> = load %48
+        store %v1, %49
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %50:i32 = load %i
+        %51:i32 = add %50, 1i
+        store %i, %51
+        next_iteration %b3
+      }
+    }
+    %52:vec4<f32> = load %v1
+    store %x_GLF_color, %52
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %54:void = call %main_1
+    %55:vec4<f32> = load %x_GLF_color
+    %56:main_out = construct %55
+    ret %56
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e73f2b5
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,121 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v1:ptr<function, vec4<f32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, array<vec4<f32>, 2>, read_write> = var
+    %indexable_1:ptr<function, array<vec4<f32>, 2>, read_write> = var
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_45:f32 = load %10
+    %12:vec4<f32> = construct %x_45, %x_45, %x_45, %x_45
+    store %v1, %12
+    %13:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %x_48:i32 = load %13
+    store %i, %x_48
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_53:i32 = load %i
+        %16:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_55:i32 = load %16
+        %18:bool = lt %x_53, %x_55
+        if %18 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_58:i32 = load %i
+        %20:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_60:i32 = load %20
+        %22:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+        %x_62:i32 = load %22
+        store %indexable, array<vec4<f32>, 2>(vec4<f32>(1.0f), vec4<f32>(0.0f))
+        %24:i32 = clamp %x_58, %x_60, %x_62
+        %25:ptr<function, vec4<f32>, read_write> = access %indexable, %24
+        %x_65:f32 = load_vector_element %25, 0u
+        %27:i32 = convert %x_65
+        store %a, %27
+        %28:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_68:f32 = load %28
+        %30:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_70:f32 = load %30
+        %32:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_72:f32 = load %32
+        %34:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_74:f32 = load %34
+        %36:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_77:f32 = load %36
+        %38:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_79:f32 = load %38
+        %40:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_81:f32 = load %40
+        %42:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_83:f32 = load %42
+        %x_86:i32 = load %a
+        %45:vec4<f32> = construct %x_68, %x_70, %x_72, %x_74
+        %46:vec4<f32> = construct %x_77, %x_79, %x_81, %x_83
+        %47:array<vec4<f32>, 2> = construct %45, %46
+        store %indexable_1, %47
+        %48:ptr<function, vec4<f32>, read_write> = access %indexable_1, %x_86
+        %x_88:vec4<f32> = load %48
+        store %v1, %x_88
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_89:i32 = load %i
+        %51:i32 = add %x_89, 1i
+        store %i, %51
+        next_iteration %b3
+      }
+    }
+    %x_91:vec4<f32> = load %v1
+    store %x_GLF_color, %x_91
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %54:void = call %main_1
+    %55:vec4<f32> = load %x_GLF_color
+    %56:main_out = construct %55
+    ret %56
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..949a481
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,131 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %6:ptr<uniform, f32, read> = access %x_5, 0u, 1i, 0u
+    %7:f32 = load %6
+    %8:vec4<f32> = construct %7
+    store %x_GLF_color, %8
+    %9:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+    %10:f32 = load %9
+    store %a, %10
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %11:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %12:f32 = load %11
+        %13:f32 = div %12, 0.20000000298023223877f
+        %14:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %15:f32 = load %14
+        %16:bool = lt %13, %15
+        if %16 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            ret
+          }
+        }
+        %17:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %18:f32 = load %17
+        %19:f32 = div %18, 0.20000000298023223877f
+        %20:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %21:f32 = load %20
+        %22:bool = lt %19, %21
+        if %22 [t: %b6] {  # if_2
+          %b6 = block {  # true
+            ret
+          }
+        }
+        %23:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %24:f32 = load %23
+        %25:f32 = div %24, 0.20000000298023223877f
+        %26:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %27:f32 = load %26
+        %28:bool = lt %25, %27
+        if %28 [t: %b7] {  # if_3
+          %b7 = block {  # true
+            ret
+          }
+        }
+        %29:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %30:f32 = load %29
+        %31:f32 = div %30, 0.20000000298023223877f
+        %32:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %33:f32 = load %32
+        %34:bool = lt %31, %33
+        if %34 [t: %b8, f: %b9] {  # if_4
+          %b8 = block {  # true
+            ret
+          }
+          %b9 = block {  # false
+            store %a, 0.0f
+            exit_if  # if_4
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_72:f32 = load %a
+        %36:bool = eq %x_72, 0.0f
+        %37:bool = eq %36, false
+        %38:bool = eq %37, false
+        break_if %38 %b3
+      }
+    }
+    %39:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %40:i32 = load %39
+    %41:f32 = convert %40
+    %42:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %43:i32 = load %42
+    %44:f32 = convert %43
+    %45:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %46:i32 = load %45
+    %47:f32 = convert %46
+    %48:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %49:i32 = load %48
+    %50:f32 = convert %49
+    %51:vec4<f32> = construct %41, %44, %47, %50
+    store %x_GLF_color, %51
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %53:void = call %main_1
+    %54:vec4<f32> = load %x_GLF_color
+    %55:main_out = construct %54
+    ret %55
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8cc2929
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,130 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %6:ptr<uniform, f32, read> = access %x_5, 0u, 1i, 0u
+    %x_31:f32 = load %6
+    %8:vec4<f32> = construct %x_31, %x_31, %x_31, %x_31
+    store %x_GLF_color, %8
+    %9:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+    %x_34:f32 = load %9
+    store %a, %x_34
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %11:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %x_40:f32 = load %11
+        %13:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %x_43:f32 = load %13
+        %15:f32 = div %x_40, 0.20000000298023223877f
+        %16:bool = lt %15, %x_43
+        if %16 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            ret
+          }
+        }
+        %17:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %x_48:f32 = load %17
+        %19:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %x_51:f32 = load %19
+        %21:f32 = div %x_48, 0.20000000298023223877f
+        %22:bool = lt %21, %x_51
+        if %22 [t: %b6] {  # if_2
+          %b6 = block {  # true
+            ret
+          }
+        }
+        %23:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %x_56:f32 = load %23
+        %25:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %x_59:f32 = load %25
+        %27:f32 = div %x_56, 0.20000000298023223877f
+        %28:bool = lt %27, %x_59
+        if %28 [t: %b7] {  # if_3
+          %b7 = block {  # true
+            ret
+          }
+        }
+        %29:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %x_64:f32 = load %29
+        %31:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+        %x_67:f32 = load %31
+        %33:f32 = div %x_64, 0.20000000298023223877f
+        %34:bool = lt %33, %x_67
+        if %34 [t: %b8, f: %b9] {  # if_4
+          %b8 = block {  # true
+            ret
+          }
+          %b9 = block {  # false
+            store %a, 0.0f
+            exit_if  # if_4
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_72:f32 = load %a
+        %36:bool = eq %x_72, 0.0f
+        %37:bool = eq %36, false
+        break_if %37 %b3
+      }
+    }
+    %38:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %x_75:i32 = load %38
+    %40:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_78:i32 = load %40
+    %42:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_81:i32 = load %42
+    %44:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+    %x_84:i32 = load %44
+    %46:f32 = convert %x_75
+    %47:f32 = convert %x_78
+    %48:f32 = convert %x_81
+    %49:f32 = convert %x_84
+    %50:vec4<f32> = construct %46, %47, %48, %49
+    store %x_GLF_color, %50
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %52:void = call %main_1
+    %53:vec4<f32> = load %x_GLF_color
+    %54:main_out = construct %53
+    ret %54
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1e8f24b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,134 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 5> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %M1:ptr<function, mat2x2<f32>, read_write> = var
+    %a:ptr<function, f32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %8:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %9:f32 = load %8
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %11:f32 = load %10
+    %12:vec2<f32> = construct %9, %11
+    %13:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+    %14:f32 = load %13
+    %15:ptr<uniform, f32, read> = access %x_6, 0u, 4i, 0u
+    %16:f32 = load %15
+    %17:vec2<f32> = construct %14, %16
+    %18:mat2x2<f32> = construct %12, %17
+    store %M1, %18
+    %19:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %20:f32 = load %19
+    store %a, %20
+    %21:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %22:i32 = load %21
+    store %c, %22
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %23:i32 = load %c
+        %24:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %25:i32 = load %24
+        %26:bool = lt %23, %25
+        if %26 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %27:f32 = load %a
+        %28:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %29:i32 = load %28
+        %30:ptr<function, vec2<f32>, read_write> = access %M1, %29
+        %31:i32 = load %c
+        %32:i32 = complement %31
+        %33:i32 = clamp %32, 0i, 1i
+        %34:f32 = load_vector_element %30, %33
+        %35:f32 = add %27, %34
+        store %a, %35
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %36:i32 = load %c
+        %37:i32 = add %36, 1i
+        store %c, %37
+        next_iteration %b3
+      }
+    }
+    %38:f32 = load %a
+    %39:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %40:f32 = load %39
+    %41:bool = eq %38, %40
+    if %41 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %42:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %43:i32 = load %42
+        %44:f32 = convert %43
+        %45:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %46:i32 = load %45
+        %47:f32 = convert %46
+        %48:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %49:i32 = load %48
+        %50:f32 = convert %49
+        %51:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %52:i32 = load %51
+        %53:f32 = convert %52
+        %54:vec4<f32> = construct %44, %47, %50, %53
+        store %x_GLF_color, %54
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %55:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %56:i32 = load %55
+        %57:f32 = convert %56
+        %58:vec4<f32> = construct %57
+        store %x_GLF_color, %58
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %60:void = call %main_1
+    %61:vec4<f32> = load %x_GLF_color
+    %62:main_out = construct %61
+    ret %62
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1833c8e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,134 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 5> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %M1:ptr<function, mat2x2<f32>, read_write> = var
+    %a:ptr<function, f32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %8:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_41:f32 = load %8
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %x_43:f32 = load %10
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+    %x_45:f32 = load %12
+    %14:ptr<uniform, f32, read> = access %x_6, 0u, 4i, 0u
+    %x_47:f32 = load %14
+    %16:vec2<f32> = construct %x_41, %x_43
+    %17:vec2<f32> = construct %x_45, %x_47
+    %18:mat2x2<f32> = construct %16, %17
+    store %M1, %18
+    %19:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_52:f32 = load %19
+    store %a, %x_52
+    %21:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+    %x_54:i32 = load %21
+    store %c, %x_54
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_59:i32 = load %c
+        %24:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_61:i32 = load %24
+        %26:bool = lt %x_59, %x_61
+        if %26 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %27:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_65:i32 = load %27
+        %x_66:i32 = load %c
+        %30:ptr<function, vec2<f32>, read_write> = access %M1, %x_65
+        %31:i32 = complement %x_66
+        %32:i32 = clamp %31, 0i, 1i
+        %x_70:f32 = load_vector_element %30, %32
+        %x_71:f32 = load %a
+        %35:f32 = add %x_71, %x_70
+        store %a, %35
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_73:i32 = load %c
+        %37:i32 = add %x_73, 1i
+        store %c, %37
+        next_iteration %b3
+      }
+    }
+    %x_75:f32 = load %a
+    %39:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_77:f32 = load %39
+    %41:bool = eq %x_75, %x_77
+    if %41 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %42:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_83:i32 = load %42
+        %44:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_86:i32 = load %44
+        %46:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_89:i32 = load %46
+        %48:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_92:i32 = load %48
+        %50:f32 = convert %x_83
+        %51:f32 = convert %x_86
+        %52:f32 = convert %x_89
+        %53:f32 = convert %x_92
+        %54:vec4<f32> = construct %50, %51, %52, %53
+        store %x_GLF_color, %54
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %55:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_96:i32 = load %55
+        %x_97:f32 = convert %x_96
+        %58:vec4<f32> = construct %x_97, %x_97, %x_97, %x_97
+        store %x_GLF_color, %58
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %60:void = call %main_1
+    %61:vec4<f32> = load %x_GLF_color
+    %62:main_out = construct %61
+    ret %62
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..6d6b4b8
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,79 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    store %f, 2.0f
+    %6:f32 = load %f
+    %7:f32 = clamp 1.0f, 1.0f, %6
+    %8:f32 = sub 1.0f, %7
+    %9:i32 = convert %8
+    store %a, %9
+    %10:i32 = load %a
+    %11:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %12:i32 = load %11
+    %13:bool = eq %10, %12
+    if %13 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %14:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %15:i32 = load %14
+        %16:f32 = convert %15
+        %17:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %18:i32 = load %17
+        %19:f32 = convert %18
+        %20:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %21:i32 = load %20
+        %22:f32 = convert %21
+        %23:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %24:i32 = load %23
+        %25:f32 = convert %24
+        %26:vec4<f32> = construct %16, %19, %22, %25
+        store %x_GLF_color, %26
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %27:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %28:i32 = load %27
+        %29:f32 = convert %28
+        %30:vec4<f32> = construct %29
+        store %x_GLF_color, %30
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %32:void = call %main_1
+    %33:vec4<f32> = load %x_GLF_color
+    %34:main_out = construct %33
+    ret %34
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7651745
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,79 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    store %f, 2.0f
+    %x_27:f32 = load %f
+    %7:f32 = clamp 1.0f, 1.0f, %x_27
+    %8:f32 = sub 1.0f, %7
+    %9:i32 = convert %8
+    store %a, %9
+    %x_31:i32 = load %a
+    %11:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_33:i32 = load %11
+    %13:bool = eq %x_31, %x_33
+    if %13 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %14:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_39:i32 = load %14
+        %16:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_42:i32 = load %16
+        %18:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_45:i32 = load %18
+        %20:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_48:i32 = load %20
+        %22:f32 = convert %x_39
+        %23:f32 = convert %x_42
+        %24:f32 = convert %x_45
+        %25:f32 = convert %x_48
+        %26:vec4<f32> = construct %22, %23, %24, %25
+        store %x_GLF_color, %26
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %27:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_52:i32 = load %27
+        %x_53:f32 = convert %x_52
+        %30:vec4<f32> = construct %x_53, %x_53, %x_53, %x_53
+        store %x_GLF_color, %30
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %32:void = call %main_1
+    %33:vec4<f32> = load %x_GLF_color
+    %34:main_out = construct %33
+    ret %34
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..6afd172
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,173 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_11:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %9:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %10:i32 = load %9
+    store %a, %10
+    %11:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %12:i32 = load %11
+    store %i, %12
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %13:i32 = load %i
+        %14:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %15:i32 = load %14
+        %16:bool = lt %13, %15
+        if %16 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %17:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %18:i32 = load %17
+        store %j, %18
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %19:i32 = load %j
+            %20:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+            %21:i32 = load %20
+            %22:bool = lt %19, %21
+            if %22 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            loop [b: %b11, c: %b12] {  # loop_3
+              %b11 = block {  # body
+                %23:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+                %24:i32 = load %23
+                store %a, %24
+                %25:f32 = load_vector_element %gl_FragCoord, 1u
+                %26:ptr<uniform, f32, read> = access %x_11, 0u, 0i, 0u
+                %27:f32 = load %26
+                %28:bool = lt %25, %27
+                if %28 [t: %b13] {  # if_3
+                  %b13 = block {  # true
+                    discard
+                    exit_if  # if_3
+                  }
+                }
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %x_72:i32 = load %a
+                %30:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+                %x_74:i32 = load %30
+                %32:bool = lt %x_72, %x_74
+                %33:bool = eq %32, false
+                break_if %33 %b11
+              }
+            }
+            %34:f32 = load_vector_element %gl_FragCoord, 1u
+            %35:ptr<uniform, f32, read> = access %x_11, 0u, 0i, 0u
+            %36:f32 = load %35
+            %37:bool = lt %34, %36
+            if %37 [t: %b14] {  # if_4
+              %b14 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %38:i32 = load %j
+            %39:i32 = add %38, 1i
+            store %j, %39
+            next_iteration %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %40:i32 = load %i
+        %41:i32 = add %40, 1i
+        store %i, %41
+        next_iteration %b3
+      }
+    }
+    %42:i32 = load %a
+    %43:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %44:i32 = load %43
+    %45:bool = eq %42, %44
+    if %45 [t: %b15, f: %b16] {  # if_5
+      %b15 = block {  # true
+        %46:i32 = load %a
+        %47:f32 = convert %46
+        %48:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %49:i32 = load %48
+        %50:f32 = convert %49
+        %51:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %52:i32 = load %51
+        %53:f32 = convert %52
+        %54:i32 = load %a
+        %55:f32 = convert %54
+        %56:vec4<f32> = construct %47, %50, %53, %55
+        store %x_GLF_color, %56
+        exit_if  # if_5
+      }
+      %b16 = block {  # false
+        %57:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %58:i32 = load %57
+        %59:f32 = convert %58
+        %60:vec4<f32> = construct %59
+        store %x_GLF_color, %60
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b17 {
+  %b17 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %63:void = call %main_1
+    %64:vec4<f32> = load %x_GLF_color
+    %65:main_out = construct %64
+    ret %65
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bef51b0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,173 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_11:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %9:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %x_36:i32 = load %9
+    store %a, %x_36
+    %11:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+    %x_38:i32 = load %11
+    store %i, %x_38
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_43:i32 = load %i
+        %14:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_45:i32 = load %14
+        %16:bool = lt %x_43, %x_45
+        if %16 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %17:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %x_49:i32 = load %17
+        store %j, %x_49
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %x_54:i32 = load %j
+            %20:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+            %x_56:i32 = load %20
+            %22:bool = lt %x_54, %x_56
+            if %22 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            loop [b: %b11, c: %b12] {  # loop_3
+              %b11 = block {  # body
+                %23:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+                %x_64:i32 = load %23
+                store %a, %x_64
+                %x_66:f32 = load_vector_element %gl_FragCoord, 1u
+                %26:ptr<uniform, f32, read> = access %x_11, 0u, 0i, 0u
+                %x_68:f32 = load %26
+                %28:bool = lt %x_66, %x_68
+                if %28 [t: %b13] {  # if_3
+                  %b13 = block {  # true
+                    discard
+                    exit_if  # if_3
+                  }
+                }
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %x_72:i32 = load %a
+                %30:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+                %x_74:i32 = load %30
+                %32:bool = lt %x_72, %x_74
+                %33:bool = eq %32, false
+                break_if %33 %b11
+              }
+            }
+            %x_77:f32 = load_vector_element %gl_FragCoord, 1u
+            %35:ptr<uniform, f32, read> = access %x_11, 0u, 0i, 0u
+            %x_79:f32 = load %35
+            %37:bool = lt %x_77, %x_79
+            if %37 [t: %b14] {  # if_4
+              %b14 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %x_83:i32 = load %j
+            %39:i32 = add %x_83, 1i
+            store %j, %39
+            next_iteration %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_85:i32 = load %i
+        %41:i32 = add %x_85, 1i
+        store %i, %41
+        next_iteration %b3
+      }
+    }
+    %x_87:i32 = load %a
+    %43:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_89:i32 = load %43
+    %45:bool = eq %x_87, %x_89
+    if %45 [t: %b15, f: %b16] {  # if_5
+      %b15 = block {  # true
+        %x_94:i32 = load %a
+        %47:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %x_97:i32 = load %47
+        %49:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %x_100:i32 = load %49
+        %x_102:i32 = load %a
+        %52:f32 = convert %x_94
+        %53:f32 = convert %x_97
+        %54:f32 = convert %x_100
+        %55:f32 = convert %x_102
+        %56:vec4<f32> = construct %52, %53, %54, %55
+        store %x_GLF_color, %56
+        exit_if  # if_5
+      }
+      %b16 = block {  # false
+        %57:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %x_106:i32 = load %57
+        %x_107:f32 = convert %x_106
+        %60:vec4<f32> = construct %x_107, %x_107, %x_107, %x_107
+        store %x_GLF_color, %60
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b17 {
+  %b17 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %63:void = call %main_1
+    %64:vec4<f32> = load %x_GLF_color
+    %65:main_out = construct %64
+    ret %65
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..5a7f941
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,377 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_11:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %i_3:ptr<function, i32, read_write> = var
+    %i_4:ptr<function, i32, read_write> = var
+    %i_5:ptr<function, i32, read_write> = var
+    %i_6:ptr<function, i32, read_write> = var
+    %i_7:ptr<function, i32, read_write> = var
+    %i_8:ptr<function, i32, read_write> = var
+    %i_9:ptr<function, i32, read_write> = var
+    %i_10:ptr<function, i32, read_write> = var
+    %19:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %20:f32 = load %19
+    store %a, %20
+    %21:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %22:f32 = load %21
+    store %b, %22
+    %23:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+    %24:i32 = load %23
+    store %i, %24
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %25:i32 = load %i
+        %26:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+        %27:i32 = load %26
+        %28:bool = lt %25, %27
+        if %28 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %29:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %30:i32 = load %29
+        store %i_1, %30
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %31:i32 = load %i_1
+            %32:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+            %33:i32 = load %32
+            %34:bool = lt %31, %33
+            if %34 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %35:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+            %36:i32 = load %35
+            store %i_2, %36
+            loop [b: %b11, c: %b12] {  # loop_3
+              %b11 = block {  # body
+                %37:i32 = load %i_2
+                %38:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+                %39:i32 = load %38
+                %40:bool = lt %37, %39
+                if %40 [t: %b13, f: %b14] {  # if_3
+                  %b13 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b14 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %41:ptr<uniform, i32, read> = access %x_11, 0u, 2i, 0u
+                %42:i32 = load %41
+                store %i_3, %42
+                loop [b: %b15, c: %b16] {  # loop_4
+                  %b15 = block {  # body
+                    %43:i32 = load %i_3
+                    %44:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+                    %45:i32 = load %44
+                    %46:bool = lt %43, %45
+                    if %46 [t: %b17, f: %b18] {  # if_4
+                      %b17 = block {  # true
+                        exit_if  # if_4
+                      }
+                      %b18 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %47:ptr<uniform, i32, read> = access %x_11, 0u, 2i, 0u
+                    %48:i32 = load %47
+                    store %i_4, %48
+                    loop [b: %b19, c: %b20] {  # loop_5
+                      %b19 = block {  # body
+                        %49:i32 = load %i_4
+                        %50:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+                        %51:i32 = load %50
+                        %52:bool = lt %49, %51
+                        if %52 [t: %b21, f: %b22] {  # if_5
+                          %b21 = block {  # true
+                            exit_if  # if_5
+                          }
+                          %b22 = block {  # false
+                            exit_loop  # loop_5
+                          }
+                        }
+                        %53:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+                        %54:i32 = load %53
+                        store %i_5, %54
+                        loop [b: %b23, c: %b24] {  # loop_6
+                          %b23 = block {  # body
+                            %55:i32 = load %i_5
+                            %56:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+                            %57:i32 = load %56
+                            %58:bool = lt %55, %57
+                            if %58 [t: %b25, f: %b26] {  # if_6
+                              %b25 = block {  # true
+                                exit_if  # if_6
+                              }
+                              %b26 = block {  # false
+                                exit_loop  # loop_6
+                              }
+                            }
+                            %59:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+                            %60:i32 = load %59
+                            store %i_6, %60
+                            loop [b: %b27, c: %b28] {  # loop_7
+                              %b27 = block {  # body
+                                %61:i32 = load %i_6
+                                %62:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+                                %63:i32 = load %62
+                                %64:bool = lt %61, %63
+                                if %64 [t: %b29, f: %b30] {  # if_7
+                                  %b29 = block {  # true
+                                    exit_if  # if_7
+                                  }
+                                  %b30 = block {  # false
+                                    exit_loop  # loop_7
+                                  }
+                                }
+                                %65:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+                                %66:i32 = load %65
+                                store %i_7, %66
+                                loop [b: %b31, c: %b32] {  # loop_8
+                                  %b31 = block {  # body
+                                    %67:i32 = load %i_7
+                                    %68:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+                                    %69:i32 = load %68
+                                    %70:bool = lt %67, %69
+                                    if %70 [t: %b33, f: %b34] {  # if_8
+                                      %b33 = block {  # true
+                                        exit_if  # if_8
+                                      }
+                                      %b34 = block {  # false
+                                        exit_loop  # loop_8
+                                      }
+                                    }
+                                    %71:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+                                    %72:i32 = load %71
+                                    store %i_8, %72
+                                    loop [b: %b35, c: %b36] {  # loop_9
+                                      %b35 = block {  # body
+                                        %73:i32 = load %i_8
+                                        %74:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+                                        %75:i32 = load %74
+                                        %76:bool = lt %73, %75
+                                        if %76 [t: %b37, f: %b38] {  # if_9
+                                          %b37 = block {  # true
+                                            exit_if  # if_9
+                                          }
+                                          %b38 = block {  # false
+                                            exit_loop  # loop_9
+                                          }
+                                        }
+                                        %77:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+                                        %78:i32 = load %77
+                                        store %i_9, %78
+                                        loop [b: %b39, c: %b40] {  # loop_10
+                                          %b39 = block {  # body
+                                            %79:i32 = load %i_9
+                                            %80:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+                                            %81:i32 = load %80
+                                            %82:bool = lt %79, %81
+                                            if %82 [t: %b41, f: %b42] {  # if_10
+                                              %b41 = block {  # true
+                                                exit_if  # if_10
+                                              }
+                                              %b42 = block {  # false
+                                                exit_loop  # loop_10
+                                              }
+                                            }
+                                            %83:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+                                            %84:i32 = load %83
+                                            store %i_10, %84
+                                            loop [b: %b43, c: %b44] {  # loop_11
+                                              %b43 = block {  # body
+                                                %85:i32 = load %i_10
+                                                %86:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+                                                %87:i32 = load %86
+                                                %88:bool = lt %85, %87
+                                                if %88 [t: %b45, f: %b46] {  # if_11
+                                                  %b45 = block {  # true
+                                                    exit_if  # if_11
+                                                  }
+                                                  %b46 = block {  # false
+                                                    exit_loop  # loop_11
+                                                  }
+                                                }
+                                                %89:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+                                                %90:f32 = load %89
+                                                store %a, %90
+                                                %91:f32 = load_vector_element %gl_FragCoord, 1u
+                                                %92:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+                                                %93:f32 = load %92
+                                                %94:bool = gt %91, %93
+                                                if %94 [t: %b47] {  # if_12
+                                                  %b47 = block {  # true
+                                                    exit_loop  # loop_11
+                                                  }
+                                                }
+                                                continue %b44
+                                              }
+                                              %b44 = block {  # continuing
+                                                %95:i32 = load %i_10
+                                                %96:i32 = add %95, 1i
+                                                store %i_10, %96
+                                                next_iteration %b43
+                                              }
+                                            }
+                                            continue %b40
+                                          }
+                                          %b40 = block {  # continuing
+                                            %97:i32 = load %i_9
+                                            %98:i32 = add %97, 1i
+                                            store %i_9, %98
+                                            next_iteration %b39
+                                          }
+                                        }
+                                        continue %b36
+                                      }
+                                      %b36 = block {  # continuing
+                                        %99:i32 = load %i_8
+                                        %100:i32 = add %99, 1i
+                                        store %i_8, %100
+                                        next_iteration %b35
+                                      }
+                                    }
+                                    continue %b32
+                                  }
+                                  %b32 = block {  # continuing
+                                    %101:i32 = load %i_7
+                                    %102:i32 = add %101, 1i
+                                    store %i_7, %102
+                                    next_iteration %b31
+                                  }
+                                }
+                                continue %b28
+                              }
+                              %b28 = block {  # continuing
+                                %103:i32 = load %i_6
+                                %104:i32 = add %103, 1i
+                                store %i_6, %104
+                                next_iteration %b27
+                              }
+                            }
+                            continue %b24
+                          }
+                          %b24 = block {  # continuing
+                            %105:i32 = load %i_5
+                            %106:i32 = add %105, 1i
+                            store %i_5, %106
+                            next_iteration %b23
+                          }
+                        }
+                        continue %b20
+                      }
+                      %b20 = block {  # continuing
+                        %107:i32 = load %i_4
+                        %108:i32 = add %107, 1i
+                        store %i_4, %108
+                        next_iteration %b19
+                      }
+                    }
+                    continue %b16
+                  }
+                  %b16 = block {  # continuing
+                    %109:i32 = load %i_3
+                    %110:i32 = add %109, 1i
+                    store %i_3, %110
+                    next_iteration %b15
+                  }
+                }
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %111:i32 = load %i_2
+                %112:i32 = add %111, 1i
+                store %i_2, %112
+                next_iteration %b11
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %113:i32 = load %i_1
+            %114:i32 = add %113, 1i
+            store %i_1, %114
+            next_iteration %b7
+          }
+        }
+        %115:f32 = load %b
+        %116:f32 = add %115, 1.0f
+        store %b, %116
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %117:i32 = load %i
+        %118:i32 = add %117, 1i
+        store %i, %118
+        next_iteration %b3
+      }
+    }
+    %119:f32 = load %b
+    %120:f32 = load %a
+    %121:f32 = load %a
+    %122:f32 = load %b
+    %123:vec4<f32> = construct %119, %120, %121, %122
+    store %x_GLF_color, %123
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b48 {
+  %b48 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %126:void = call %main_1
+    %127:vec4<f32> = load %x_GLF_color
+    %128:main_out = construct %127
+    ret %128
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d8d7348
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,377 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_11:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %i_3:ptr<function, i32, read_write> = var
+    %i_4:ptr<function, i32, read_write> = var
+    %i_5:ptr<function, i32, read_write> = var
+    %i_6:ptr<function, i32, read_write> = var
+    %i_7:ptr<function, i32, read_write> = var
+    %i_8:ptr<function, i32, read_write> = var
+    %i_9:ptr<function, i32, read_write> = var
+    %i_10:ptr<function, i32, read_write> = var
+    %19:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_104:f32 = load %19
+    store %a, %x_104
+    %21:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_106:f32 = load %21
+    store %b, %x_106
+    %23:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+    %x_24:i32 = load %23
+    store %i, %x_24
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_25:i32 = load %i
+        %26:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+        %x_26:i32 = load %26
+        %28:bool = lt %x_25, %x_26
+        if %28 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %29:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %x_27:i32 = load %29
+        store %i_1, %x_27
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %x_28:i32 = load %i_1
+            %32:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+            %x_29:i32 = load %32
+            %34:bool = lt %x_28, %x_29
+            if %34 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %35:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+            %x_30:i32 = load %35
+            store %i_2, %x_30
+            loop [b: %b11, c: %b12] {  # loop_3
+              %b11 = block {  # body
+                %x_31:i32 = load %i_2
+                %38:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+                %x_32:i32 = load %38
+                %40:bool = lt %x_31, %x_32
+                if %40 [t: %b13, f: %b14] {  # if_3
+                  %b13 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b14 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %41:ptr<uniform, i32, read> = access %x_11, 0u, 2i, 0u
+                %x_33:i32 = load %41
+                store %i_3, %x_33
+                loop [b: %b15, c: %b16] {  # loop_4
+                  %b15 = block {  # body
+                    %x_34:i32 = load %i_3
+                    %44:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+                    %x_35:i32 = load %44
+                    %46:bool = lt %x_34, %x_35
+                    if %46 [t: %b17, f: %b18] {  # if_4
+                      %b17 = block {  # true
+                        exit_if  # if_4
+                      }
+                      %b18 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %47:ptr<uniform, i32, read> = access %x_11, 0u, 2i, 0u
+                    %x_36:i32 = load %47
+                    store %i_4, %x_36
+                    loop [b: %b19, c: %b20] {  # loop_5
+                      %b19 = block {  # body
+                        %x_37:i32 = load %i_4
+                        %50:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+                        %x_38:i32 = load %50
+                        %52:bool = lt %x_37, %x_38
+                        if %52 [t: %b21, f: %b22] {  # if_5
+                          %b21 = block {  # true
+                            exit_if  # if_5
+                          }
+                          %b22 = block {  # false
+                            exit_loop  # loop_5
+                          }
+                        }
+                        %53:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+                        %x_39:i32 = load %53
+                        store %i_5, %x_39
+                        loop [b: %b23, c: %b24] {  # loop_6
+                          %b23 = block {  # body
+                            %x_40:i32 = load %i_5
+                            %56:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+                            %x_41:i32 = load %56
+                            %58:bool = lt %x_40, %x_41
+                            if %58 [t: %b25, f: %b26] {  # if_6
+                              %b25 = block {  # true
+                                exit_if  # if_6
+                              }
+                              %b26 = block {  # false
+                                exit_loop  # loop_6
+                              }
+                            }
+                            %59:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+                            %x_42:i32 = load %59
+                            store %i_6, %x_42
+                            loop [b: %b27, c: %b28] {  # loop_7
+                              %b27 = block {  # body
+                                %x_43:i32 = load %i_6
+                                %62:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+                                %x_44:i32 = load %62
+                                %64:bool = lt %x_43, %x_44
+                                if %64 [t: %b29, f: %b30] {  # if_7
+                                  %b29 = block {  # true
+                                    exit_if  # if_7
+                                  }
+                                  %b30 = block {  # false
+                                    exit_loop  # loop_7
+                                  }
+                                }
+                                %65:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+                                %x_45:i32 = load %65
+                                store %i_7, %x_45
+                                loop [b: %b31, c: %b32] {  # loop_8
+                                  %b31 = block {  # body
+                                    %x_46:i32 = load %i_7
+                                    %68:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+                                    %x_47:i32 = load %68
+                                    %70:bool = lt %x_46, %x_47
+                                    if %70 [t: %b33, f: %b34] {  # if_8
+                                      %b33 = block {  # true
+                                        exit_if  # if_8
+                                      }
+                                      %b34 = block {  # false
+                                        exit_loop  # loop_8
+                                      }
+                                    }
+                                    %71:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+                                    %x_48:i32 = load %71
+                                    store %i_8, %x_48
+                                    loop [b: %b35, c: %b36] {  # loop_9
+                                      %b35 = block {  # body
+                                        %x_49:i32 = load %i_8
+                                        %74:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+                                        %x_50:i32 = load %74
+                                        %76:bool = lt %x_49, %x_50
+                                        if %76 [t: %b37, f: %b38] {  # if_9
+                                          %b37 = block {  # true
+                                            exit_if  # if_9
+                                          }
+                                          %b38 = block {  # false
+                                            exit_loop  # loop_9
+                                          }
+                                        }
+                                        %77:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+                                        %x_51:i32 = load %77
+                                        store %i_9, %x_51
+                                        loop [b: %b39, c: %b40] {  # loop_10
+                                          %b39 = block {  # body
+                                            %x_52:i32 = load %i_9
+                                            %80:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+                                            %x_53:i32 = load %80
+                                            %82:bool = lt %x_52, %x_53
+                                            if %82 [t: %b41, f: %b42] {  # if_10
+                                              %b41 = block {  # true
+                                                exit_if  # if_10
+                                              }
+                                              %b42 = block {  # false
+                                                exit_loop  # loop_10
+                                              }
+                                            }
+                                            %83:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+                                            %x_54:i32 = load %83
+                                            store %i_10, %x_54
+                                            loop [b: %b43, c: %b44] {  # loop_11
+                                              %b43 = block {  # body
+                                                %x_55:i32 = load %i_10
+                                                %86:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+                                                %x_56:i32 = load %86
+                                                %88:bool = lt %x_55, %x_56
+                                                if %88 [t: %b45, f: %b46] {  # if_11
+                                                  %b45 = block {  # true
+                                                    exit_if  # if_11
+                                                  }
+                                                  %b46 = block {  # false
+                                                    exit_loop  # loop_11
+                                                  }
+                                                }
+                                                %89:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+                                                %x_196:f32 = load %89
+                                                store %a, %x_196
+                                                %x_198:f32 = load_vector_element %gl_FragCoord, 1u
+                                                %92:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+                                                %x_200:f32 = load %92
+                                                %94:bool = gt %x_198, %x_200
+                                                if %94 [t: %b47] {  # if_12
+                                                  %b47 = block {  # true
+                                                    exit_loop  # loop_11
+                                                  }
+                                                }
+                                                continue %b44
+                                              }
+                                              %b44 = block {  # continuing
+                                                %x_57:i32 = load %i_10
+                                                %96:i32 = add %x_57, 1i
+                                                store %i_10, %96
+                                                next_iteration %b43
+                                              }
+                                            }
+                                            continue %b40
+                                          }
+                                          %b40 = block {  # continuing
+                                            %x_59:i32 = load %i_9
+                                            %98:i32 = add %x_59, 1i
+                                            store %i_9, %98
+                                            next_iteration %b39
+                                          }
+                                        }
+                                        continue %b36
+                                      }
+                                      %b36 = block {  # continuing
+                                        %x_61:i32 = load %i_8
+                                        %100:i32 = add %x_61, 1i
+                                        store %i_8, %100
+                                        next_iteration %b35
+                                      }
+                                    }
+                                    continue %b32
+                                  }
+                                  %b32 = block {  # continuing
+                                    %x_63:i32 = load %i_7
+                                    %102:i32 = add %x_63, 1i
+                                    store %i_7, %102
+                                    next_iteration %b31
+                                  }
+                                }
+                                continue %b28
+                              }
+                              %b28 = block {  # continuing
+                                %x_65:i32 = load %i_6
+                                %104:i32 = add %x_65, 1i
+                                store %i_6, %104
+                                next_iteration %b27
+                              }
+                            }
+                            continue %b24
+                          }
+                          %b24 = block {  # continuing
+                            %x_67:i32 = load %i_5
+                            %106:i32 = add %x_67, 1i
+                            store %i_5, %106
+                            next_iteration %b23
+                          }
+                        }
+                        continue %b20
+                      }
+                      %b20 = block {  # continuing
+                        %x_69:i32 = load %i_4
+                        %108:i32 = add %x_69, 1i
+                        store %i_4, %108
+                        next_iteration %b19
+                      }
+                    }
+                    continue %b16
+                  }
+                  %b16 = block {  # continuing
+                    %x_71:i32 = load %i_3
+                    %110:i32 = add %x_71, 1i
+                    store %i_3, %110
+                    next_iteration %b15
+                  }
+                }
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %x_73:i32 = load %i_2
+                %112:i32 = add %x_73, 1i
+                store %i_2, %112
+                next_iteration %b11
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %x_75:i32 = load %i_1
+            %114:i32 = add %x_75, 1i
+            store %i_1, %114
+            next_iteration %b7
+          }
+        }
+        %x_204:f32 = load %b
+        %116:f32 = add %x_204, 1.0f
+        store %b, %116
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_77:i32 = load %i
+        %118:i32 = add %x_77, 1i
+        store %i, %118
+        next_iteration %b3
+      }
+    }
+    %x_206:f32 = load %b
+    %x_207:f32 = load %a
+    %x_208:f32 = load %a
+    %x_209:f32 = load %b
+    %123:vec4<f32> = construct %x_206, %x_207, %x_208, %x_209
+    store %x_GLF_color, %123
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b48 {
+  %b48 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %126:void = call %main_1
+    %127:vec4<f32> = load %x_GLF_color
+    %128:main_out = construct %127
+    ret %128
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..dd9c0e8
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,184 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, u32, read_write> = var
+    %values:ptr<function, vec4<f32>, read_write> = var
+    %r:ptr<function, vec4<f32>, read_write> = var
+    %x_85:ptr<function, bool, read_write> = var
+    %x_86:ptr<function, bool, read_write> = var
+    %x_101:ptr<function, bool, read_write> = var
+    %x_102:ptr<function, bool, read_write> = var
+    %x_117:ptr<function, bool, read_write> = var
+    %x_118:ptr<function, bool, read_write> = var
+    store %a, 1006648320u
+    %14:u32 = load %a
+    %15:vec4<f32> = unpack4x8unorm %14
+    store %values, %15
+    %16:ptr<uniform, f32, read> = access %x_8, 0u, 3i, 0u
+    %17:f32 = load %16
+    %18:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %19:f32 = load %18
+    %20:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %21:f32 = load %20
+    %22:f32 = div %19, %21
+    %23:ptr<uniform, f32, read> = access %x_8, 0u, 3i, 0u
+    %24:f32 = load %23
+    %25:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %26:f32 = load %25
+    %27:f32 = div %24, %26
+    %28:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %29:f32 = load %28
+    %30:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %31:f32 = load %30
+    %32:f32 = div %29, %31
+    %33:vec4<f32> = construct %17, %22, %27, %32
+    store %r, %33
+    %34:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+    %35:i32 = load %34
+    %36:f32 = load_vector_element %values, %35
+    %37:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+    %38:i32 = load %37
+    %39:f32 = load_vector_element %r, %38
+    %40:f32 = sub %36, %39
+    %41:f32 = abs %40
+    %42:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+    %43:f32 = load %42
+    %x_70:bool = lt %41, %43
+    store %x_86, %x_70
+    if %x_70 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %45:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %46:i32 = load %45
+        %47:f32 = load_vector_element %values, %46
+        %48:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %49:i32 = load %48
+        %50:f32 = load_vector_element %r, %49
+        %51:f32 = sub %47, %50
+        %52:f32 = abs %51
+        %53:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+        %54:f32 = load %53
+        %55:bool = lt %52, %54
+        store %x_85, %55
+        %56:bool = load %x_85
+        store %x_86, %56
+        exit_if  # if_1
+      }
+    }
+    %57:bool = load %x_86
+    store %x_102, %57
+    %58:bool = load %x_86
+    if %58 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %59:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %60:i32 = load %59
+        %61:f32 = load_vector_element %values, %60
+        %62:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %63:i32 = load %62
+        %64:f32 = load_vector_element %r, %63
+        %65:f32 = sub %61, %64
+        %66:f32 = abs %65
+        %67:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+        %68:f32 = load %67
+        %69:bool = lt %66, %68
+        store %x_101, %69
+        %70:bool = load %x_101
+        store %x_102, %70
+        exit_if  # if_2
+      }
+    }
+    %71:bool = load %x_102
+    store %x_118, %71
+    %72:bool = load %x_102
+    if %72 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        %73:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %74:i32 = load %73
+        %75:f32 = load_vector_element %values, %74
+        %76:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %77:i32 = load %76
+        %78:f32 = load_vector_element %r, %77
+        %79:f32 = sub %75, %78
+        %80:f32 = abs %79
+        %81:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+        %82:f32 = load %81
+        %83:bool = lt %80, %82
+        store %x_117, %83
+        %84:bool = load %x_117
+        store %x_118, %84
+        exit_if  # if_3
+      }
+    }
+    %85:bool = load %x_118
+    if %85 [t: %b6, f: %b7] {  # if_4
+      %b6 = block {  # true
+        %86:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %87:i32 = load %86
+        %88:f32 = convert %87
+        %89:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %90:i32 = load %89
+        %91:f32 = convert %90
+        %92:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %93:i32 = load %92
+        %94:f32 = convert %93
+        %95:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %96:i32 = load %95
+        %97:f32 = convert %96
+        %98:vec4<f32> = construct %88, %91, %94, %97
+        store %x_GLF_color, %98
+        exit_if  # if_4
+      }
+      %b7 = block {  # false
+        %99:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %100:i32 = load %99
+        %101:f32 = convert %100
+        %102:vec4<f32> = construct %101
+        store %x_GLF_color, %102
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %104:void = call %main_1
+    %105:vec4<f32> = load %x_GLF_color
+    %106:main_out = construct %105
+    ret %106
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e2408a5
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,182 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, u32, read_write> = var
+    %values:ptr<function, vec4<f32>, read_write> = var
+    %r:ptr<function, vec4<f32>, read_write> = var
+    %x_85:ptr<function, bool, read_write> = var
+    %x_101:ptr<function, bool, read_write> = var
+    %x_117:ptr<function, bool, read_write> = var
+    %x_86_phi:ptr<function, bool, read_write> = var
+    %x_102_phi:ptr<function, bool, read_write> = var
+    %x_118_phi:ptr<function, bool, read_write> = var
+    store %a, 1006648320u
+    %x_38:u32 = load %a
+    %15:vec4<f32> = unpack4x8unorm %x_38
+    store %values, %15
+    %16:ptr<uniform, f32, read> = access %x_8, 0u, 3i, 0u
+    %x_41:f32 = load %16
+    %18:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %x_43:f32 = load %18
+    %20:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_45:f32 = load %20
+    %22:ptr<uniform, f32, read> = access %x_8, 0u, 3i, 0u
+    %x_48:f32 = load %22
+    %24:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_50:f32 = load %24
+    %26:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %x_53:f32 = load %26
+    %28:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_55:f32 = load %28
+    %30:f32 = div %x_43, %x_45
+    %31:f32 = div %x_48, %x_50
+    %32:f32 = div %x_53, %x_55
+    %33:vec4<f32> = construct %x_41, %30, %31, %32
+    store %r, %33
+    %34:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+    %x_59:i32 = load %34
+    %x_61:f32 = load_vector_element %values, %x_59
+    %37:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+    %x_63:i32 = load %37
+    %x_65:f32 = load_vector_element %r, %x_63
+    %40:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+    %x_69:f32 = load %40
+    %42:f32 = sub %x_61, %x_65
+    %43:f32 = abs %42
+    %x_70:bool = lt %43, %x_69
+    store %x_86_phi, %x_70
+    if %x_70 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %45:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_74:i32 = load %45
+        %x_76:f32 = load_vector_element %values, %x_74
+        %48:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_78:i32 = load %48
+        %x_80:f32 = load_vector_element %r, %x_78
+        %51:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+        %x_84:f32 = load %51
+        %53:f32 = sub %x_76, %x_80
+        %54:f32 = abs %53
+        %55:bool = lt %54, %x_84
+        store %x_85, %55
+        %56:bool = load %x_85
+        store %x_86_phi, %56
+        exit_if  # if_1
+      }
+    }
+    %x_86:bool = load %x_86_phi
+    store %x_102_phi, %x_86
+    if %x_86 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %58:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_90:i32 = load %58
+        %x_92:f32 = load_vector_element %values, %x_90
+        %61:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_94:i32 = load %61
+        %x_96:f32 = load_vector_element %r, %x_94
+        %64:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+        %x_100:f32 = load %64
+        %66:f32 = sub %x_92, %x_96
+        %67:f32 = abs %66
+        %68:bool = lt %67, %x_100
+        store %x_101, %68
+        %69:bool = load %x_101
+        store %x_102_phi, %69
+        exit_if  # if_2
+      }
+    }
+    %x_102:bool = load %x_102_phi
+    store %x_118_phi, %x_102
+    if %x_102 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        %71:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_106:i32 = load %71
+        %x_108:f32 = load_vector_element %values, %x_106
+        %74:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_110:i32 = load %74
+        %x_112:f32 = load_vector_element %r, %x_110
+        %77:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+        %x_116:f32 = load %77
+        %79:f32 = sub %x_108, %x_112
+        %80:f32 = abs %79
+        %81:bool = lt %80, %x_116
+        store %x_117, %81
+        %82:bool = load %x_117
+        store %x_118_phi, %82
+        exit_if  # if_3
+      }
+    }
+    %x_118:bool = load %x_118_phi
+    if %x_118 [t: %b6, f: %b7] {  # if_4
+      %b6 = block {  # true
+        %84:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_123:i32 = load %84
+        %86:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_126:i32 = load %86
+        %88:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_129:i32 = load %88
+        %90:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_132:i32 = load %90
+        %92:f32 = convert %x_123
+        %93:f32 = convert %x_126
+        %94:f32 = convert %x_129
+        %95:f32 = convert %x_132
+        %96:vec4<f32> = construct %92, %93, %94, %95
+        store %x_GLF_color, %96
+        exit_if  # if_4
+      }
+      %b7 = block {  # false
+        %97:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_136:i32 = load %97
+        %x_137:f32 = convert %x_136
+        %100:vec4<f32> = construct %x_137, %x_137, %x_137, %x_137
+        store %x_GLF_color, %100
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %102:void = call %main_1
+    %103:vec4<f32> = load %x_GLF_color
+    %104:main_out = construct %103
+    ret %104
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..0f4e8a3
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,66 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_i1_ = func(%x:ptr<function, i32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, i32, read> = access %x_7, 0u
+    %6:i32 = load %5
+    %7:bool = eq %6, 1i
+    if %7 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_39:i32 = load %x
+        ret %x_39
+      }
+    }
+    %9:ptr<uniform, i32, read> = access %x_7, 0u
+    %x_41:i32 = load %9
+    ret %x_41
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    %param:ptr<function, i32, read_write> = var
+    store %param, -1i
+    %x_28:i32 = call %func_i1_, %param
+    %14:bool = lte %x_28, 0i
+    if %14 [t: %b5, f: %b6] {  # if_2
+      %b5 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b6 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %16:void = call %main_1
+    %17:vec4<f32> = load %x_GLF_color
+    %18:main_out = construct %17
+    ret %18
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5467112
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,66 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_i1_ = func(%x:ptr<function, i32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, i32, read> = access %x_7, 0u
+    %x_35:i32 = load %5
+    %7:bool = eq %x_35, 1i
+    if %7 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_39:i32 = load %x
+        ret %x_39
+      }
+    }
+    %9:ptr<uniform, i32, read> = access %x_7, 0u
+    %x_41:i32 = load %9
+    ret %x_41
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    %param:ptr<function, i32, read_write> = var
+    store %param, -1i
+    %x_28:i32 = call %func_i1_, %param
+    %14:bool = lte %x_28, 0i
+    if %14 [t: %b5, f: %b6] {  # if_2
+      %b5 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b6 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %16:void = call %main_1
+    %17:vec4<f32> = load %x_GLF_color
+    %18:main_out = construct %17
+    ret %18
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..91cbeee
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  three:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, i32, read> = access %x_5, 0u
+    %5:i32 = load %4
+    %6:i32 = and 2i, %5
+    %7:i32 = div 10i, %6
+    %8:bool = eq %7, 5i
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %10:void = call %main_1
+    %11:vec4<f32> = load %x_GLF_color
+    %12:main_out = construct %11
+    ret %12
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0fe4397
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  three:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, i32, read> = access %x_5, 0u
+    %x_25:i32 = load %4
+    %6:i32 = and 2i, %x_25
+    %7:i32 = div 10i, %6
+    %8:bool = eq %7, 5i
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %10:void = call %main_1
+    %11:vec4<f32> = load %x_GLF_color
+    %12:main_out = construct %11
+    ret %12
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..d520a12
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,145 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %8:i32 = load %7
+    %9:f32 = convert %8
+    %10:vec4<f32> = construct %9
+    store %x_GLF_color, %10
+    %11:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %12:i32 = load %11
+    store %i, %12
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %13:i32 = load %i
+        %14:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %15:i32 = load %14
+        %16:bool = lt %13, %15
+        if %16 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %17:f32 = load_vector_element %gl_FragCoord, 1u
+        %18:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+        %19:f32 = load %18
+        %20:bool = lt %17, %19
+        if %20 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %21:f32 = load_vector_element %gl_FragCoord, 0u
+            %22:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+            %23:f32 = load %22
+            %24:bool = lt %21, %23
+            if %24 [t: %b8] {  # if_3
+              %b8 = block {  # true
+                ret
+              }
+            }
+            %25:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+            %26:f32 = load %25
+            %27:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+            %28:f32 = load %27
+            %29:bool = gt %26, %28
+            if %29 [t: %b9] {  # if_4
+              %b9 = block {  # true
+                ret
+              }
+            }
+            discard
+            exit_if  # if_2
+          }
+        }
+        %30:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+        %31:f32 = load %30
+        %32:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+        %33:f32 = load %32
+        %34:bool = gt %31, %33
+        if %34 [t: %b10] {  # if_5
+          %b10 = block {  # true
+            %35:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+            %36:i32 = load %35
+            %37:f32 = convert %36
+            %38:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %39:i32 = load %38
+            %40:f32 = convert %39
+            %41:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %42:i32 = load %41
+            %43:f32 = convert %42
+            %44:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+            %45:i32 = load %44
+            %46:f32 = convert %45
+            %47:vec4<f32> = construct %37, %40, %43, %46
+            store %x_GLF_color, %47
+            exit_loop  # loop_1
+          }
+        }
+        %48:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+        %49:f32 = load %48
+        %50:bool = lt %49, 0.0f
+        if %50 [t: %b11] {  # if_6
+          %b11 = block {  # true
+            discard
+            exit_if  # if_6
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %51:i32 = load %i
+        %52:i32 = add %51, 1i
+        store %i, %52
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b12 {
+  %b12 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %55:void = call %main_1
+    %56:vec4<f32> = load %x_GLF_color
+    %57:main_out = construct %56
+    ret %57
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..50035ac
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,145 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_37:i32 = load %7
+    %x_38:f32 = convert %x_37
+    %10:vec4<f32> = construct %x_38, %x_38, %x_38, %x_38
+    store %x_GLF_color, %10
+    %11:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_41:i32 = load %11
+    store %i, %x_41
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_46:i32 = load %i
+        %14:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_48:i32 = load %14
+        %16:bool = lt %x_46, %x_48
+        if %16 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_52:f32 = load_vector_element %gl_FragCoord, 1u
+        %18:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+        %x_54:f32 = load %18
+        %20:bool = lt %x_52, %x_54
+        if %20 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %x_59:f32 = load_vector_element %gl_FragCoord, 0u
+            %22:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+            %x_61:f32 = load %22
+            %24:bool = lt %x_59, %x_61
+            if %24 [t: %b8] {  # if_3
+              %b8 = block {  # true
+                ret
+              }
+            }
+            %25:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+            %x_66:f32 = load %25
+            %27:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+            %x_68:f32 = load %27
+            %29:bool = gt %x_66, %x_68
+            if %29 [t: %b9] {  # if_4
+              %b9 = block {  # true
+                ret
+              }
+            }
+            discard
+            exit_if  # if_2
+          }
+        }
+        %30:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+        %x_73:f32 = load %30
+        %32:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+        %x_75:f32 = load %32
+        %34:bool = gt %x_73, %x_75
+        if %34 [t: %b10] {  # if_5
+          %b10 = block {  # true
+            %35:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+            %x_80:i32 = load %35
+            %37:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %x_83:i32 = load %37
+            %39:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+            %x_86:i32 = load %39
+            %41:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+            %x_89:i32 = load %41
+            %43:f32 = convert %x_80
+            %44:f32 = convert %x_83
+            %45:f32 = convert %x_86
+            %46:f32 = convert %x_89
+            %47:vec4<f32> = construct %43, %44, %45, %46
+            store %x_GLF_color, %47
+            exit_loop  # loop_1
+          }
+        }
+        %48:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+        %x_93:f32 = load %48
+        %50:bool = lt %x_93, 0.0f
+        if %50 [t: %b11] {  # if_6
+          %b11 = block {  # true
+            discard
+            exit_if  # if_6
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_97:i32 = load %i
+        %52:i32 = add %x_97, 1i
+        store %i, %52
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b12 {
+  %b12 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %55:void = call %main_1
+    %56:vec4<f32> = load %x_GLF_color
+    %57:main_out = construct %56
+    ret %57
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..178a545
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,115 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+buf2 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_11:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_13:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f0:ptr<function, f32, read_write> = var
+    %f1:ptr<function, f32, read_write> = var
+    %f2:ptr<function, f32, read_write> = var
+    %f3:ptr<function, f32, read_write> = var
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %11:f32 = load %10
+    store %f0, %11
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %13:f32 = load %12
+    %14:f32 = load %f0
+    %15:f32 = pow %14, 4.0f
+    %16:f32 = mul %13, %15
+    store %f1, %16
+    %17:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %18:f32 = load %17
+    %19:f32 = load %f0
+    %20:f32 = pow %19, 4.0f
+    %21:f32 = mul %18, %20
+    store %f2, %21
+    %22:f32 = load %f1
+    %23:f32 = load %f2
+    %24:f32 = sub %22, %23
+    %25:ptr<uniform, f32, read> = access %x_11, 0u
+    %26:f32 = load %25
+    %27:f32 = sub %24, %26
+    %28:f32 = load %f0
+    %29:f32 = add %27, %28
+    %30:f32 = sqrt %29
+    store %f3, %30
+    %31:f32 = load %f3
+    %32:i32 = convert %31
+    %33:ptr<uniform, i32, read> = access %x_13, 0u, 0i, 0u
+    %34:i32 = load %33
+    %35:bool = eq %32, %34
+    if %35 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %36:ptr<uniform, i32, read> = access %x_13, 0u, 0i, 0u
+        %37:i32 = load %36
+        %38:f32 = convert %37
+        %39:ptr<uniform, i32, read> = access %x_13, 0u, 1i, 0u
+        %40:i32 = load %39
+        %41:f32 = convert %40
+        %42:ptr<uniform, i32, read> = access %x_13, 0u, 1i, 0u
+        %43:i32 = load %42
+        %44:f32 = convert %43
+        %45:ptr<uniform, i32, read> = access %x_13, 0u, 0i, 0u
+        %46:i32 = load %45
+        %47:f32 = convert %46
+        %48:vec4<f32> = construct %38, %41, %44, %47
+        store %x_GLF_color, %48
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %49:ptr<uniform, i32, read> = access %x_13, 0u, 1i, 0u
+        %50:i32 = load %49
+        %51:f32 = convert %50
+        %52:vec4<f32> = construct %51
+        store %x_GLF_color, %52
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %54:void = call %main_1
+    %55:vec4<f32> = load %x_GLF_color
+    %56:main_out = construct %55
+    ret %56
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..40e79a0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,115 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+buf2 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_11:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_13:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f0:ptr<function, f32, read_write> = var
+    %f1:ptr<function, f32, read_write> = var
+    %f2:ptr<function, f32, read_write> = var
+    %f3:ptr<function, f32, read_write> = var
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_36:f32 = load %10
+    store %f0, %x_36
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_38:f32 = load %12
+    %x_39:f32 = load %f0
+    %15:f32 = pow %x_39, 4.0f
+    %16:f32 = mul %x_38, %15
+    store %f1, %16
+    %17:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_43:f32 = load %17
+    %x_44:f32 = load %f0
+    %20:f32 = pow %x_44, 4.0f
+    %21:f32 = mul %x_43, %20
+    store %f2, %21
+    %x_47:f32 = load %f1
+    %x_48:f32 = load %f2
+    %24:ptr<uniform, f32, read> = access %x_11, 0u
+    %x_51:f32 = load %24
+    %x_53:f32 = load %f0
+    %27:f32 = sub %x_47, %x_48
+    %28:f32 = sub %27, %x_51
+    %29:f32 = add %28, %x_53
+    %30:f32 = sqrt %29
+    store %f3, %30
+    %x_56:f32 = load %f3
+    %32:ptr<uniform, i32, read> = access %x_13, 0u, 0i, 0u
+    %x_59:i32 = load %32
+    %34:i32 = convert %x_56
+    %35:bool = eq %34, %x_59
+    if %35 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %36:ptr<uniform, i32, read> = access %x_13, 0u, 0i, 0u
+        %x_65:i32 = load %36
+        %38:ptr<uniform, i32, read> = access %x_13, 0u, 1i, 0u
+        %x_68:i32 = load %38
+        %40:ptr<uniform, i32, read> = access %x_13, 0u, 1i, 0u
+        %x_71:i32 = load %40
+        %42:ptr<uniform, i32, read> = access %x_13, 0u, 0i, 0u
+        %x_74:i32 = load %42
+        %44:f32 = convert %x_65
+        %45:f32 = convert %x_68
+        %46:f32 = convert %x_71
+        %47:f32 = convert %x_74
+        %48:vec4<f32> = construct %44, %45, %46, %47
+        store %x_GLF_color, %48
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %49:ptr<uniform, i32, read> = access %x_13, 0u, 1i, 0u
+        %x_78:i32 = load %49
+        %x_79:f32 = convert %x_78
+        %52:vec4<f32> = construct %x_79, %x_79, %x_79, %x_79
+        store %x_GLF_color, %52
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %54:void = call %main_1
+    %55:vec4<f32> = load %x_GLF_color
+    %56:main_out = construct %55
+    ret %56
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..d4f8153
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,109 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+buf2 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_8:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %x_48:ptr<function, bool, read_write> = var
+    %x_49:ptr<function, bool, read_write> = var
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %10:f32 = load %9
+    %11:f32 = negation %10
+    %12:f32 = pow %11, 1.17520117759704589844f
+    store %f, %12
+    %13:f32 = load %f
+    %14:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %15:f32 = load %14
+    %x_40:bool = eq %13, %15
+    store %x_49, %x_40
+    %17:bool = eq %x_40, false
+    if %17 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %18:ptr<uniform, i32, read> = access %x_8, 0u
+        %19:i32 = load %18
+        %20:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %21:i32 = load %20
+        %22:bool = eq %19, %21
+        store %x_48, %22
+        %23:bool = load %x_48
+        store %x_49, %23
+        exit_if  # if_1
+      }
+    }
+    %24:bool = load %x_49
+    if %24 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %25:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %26:i32 = load %25
+        %27:f32 = convert %26
+        %28:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %29:i32 = load %28
+        %30:f32 = convert %29
+        %31:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %32:i32 = load %31
+        %33:f32 = convert %32
+        %34:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %35:i32 = load %34
+        %36:f32 = convert %35
+        %37:vec4<f32> = construct %27, %30, %33, %36
+        store %x_GLF_color, %37
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %38:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %39:i32 = load %38
+        %40:f32 = convert %39
+        %41:vec4<f32> = construct %40
+        store %x_GLF_color, %41
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..347ae46
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,109 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+buf2 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_8:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %x_48:ptr<function, bool, read_write> = var
+    %x_49_phi:ptr<function, bool, read_write> = var
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_33:f32 = load %9
+    %11:f32 = negation %x_33
+    %12:f32 = pow %11, 1.17520117759704589844f
+    store %f, %12
+    %x_37:f32 = load %f
+    %14:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_39:f32 = load %14
+    %x_40:bool = eq %x_37, %x_39
+    store %x_49_phi, %x_40
+    %17:bool = eq %x_40, false
+    if %17 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %18:ptr<uniform, i32, read> = access %x_8, 0u
+        %x_45:i32 = load %18
+        %20:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_47:i32 = load %20
+        %22:bool = eq %x_45, %x_47
+        store %x_48, %22
+        %23:bool = load %x_48
+        store %x_49_phi, %23
+        exit_if  # if_1
+      }
+    }
+    %x_49:bool = load %x_49_phi
+    if %x_49 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %25:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_54:i32 = load %25
+        %27:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_57:i32 = load %27
+        %29:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_60:i32 = load %29
+        %31:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_63:i32 = load %31
+        %33:f32 = convert %x_54
+        %34:f32 = convert %x_57
+        %35:f32 = convert %x_60
+        %36:f32 = convert %x_63
+        %37:vec4<f32> = construct %33, %34, %35, %36
+        store %x_GLF_color, %37
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %38:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_67:i32 = load %38
+        %x_68:f32 = convert %x_67
+        %41:vec4<f32> = construct %x_68, %x_68, %x_68, %x_68
+        store %x_GLF_color, %41
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..5667092
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,79 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %c:ptr<function, f32, read_write> = var
+    store %a, -1.0f
+    store %b, 1.70000004768371582031f
+    %7:f32 = load %a
+    %8:f32 = load %b
+    %9:f32 = pow %7, %8
+    store %c, %9
+    %10:f32 = load %c
+    %11:vec4<f32> = construct %10
+    store %x_GLF_color, %11
+    %12:f32 = load %a
+    %13:bool = eq %12, -1.0f
+    %14:f32 = load %b
+    %15:bool = eq %14, 1.70000004768371582031f
+    %16:bool = and %13, %15
+    if %16 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %17:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %18:f32 = load %17
+        %19:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+        %20:f32 = load %19
+        %21:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+        %22:f32 = load %21
+        %23:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %24:f32 = load %23
+        %25:vec4<f32> = construct %18, %20, %22, %24
+        store %x_GLF_color, %25
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %26:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %27:f32 = load %26
+        %28:vec4<f32> = construct %27
+        store %x_GLF_color, %28
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %30:void = call %main_1
+    %31:vec4<f32> = load %x_GLF_color
+    %32:main_out = construct %31
+    ret %32
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2115188
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,79 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %c:ptr<function, f32, read_write> = var
+    store %a, -1.0f
+    store %b, 1.70000004768371582031f
+    %x_27:f32 = load %a
+    %x_28:f32 = load %b
+    %9:f32 = pow %x_27, %x_28
+    store %c, %9
+    %x_30:f32 = load %c
+    %11:vec4<f32> = construct %x_30, %x_30, %x_30, %x_30
+    store %x_GLF_color, %11
+    %x_32:f32 = load %a
+    %x_34:f32 = load %b
+    %14:bool = eq %x_32, -1.0f
+    %15:bool = eq %x_34, 1.70000004768371582031f
+    %16:bool = and %14, %15
+    if %16 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %17:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %x_41:f32 = load %17
+        %19:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+        %x_43:f32 = load %19
+        %21:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+        %x_45:f32 = load %21
+        %23:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %x_47:f32 = load %23
+        %25:vec4<f32> = construct %x_41, %x_43, %x_45, %x_47
+        store %x_GLF_color, %25
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %26:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+        %x_50:f32 = load %26
+        %28:vec4<f32> = construct %x_50, %x_50, %x_50, %x_50
+        store %x_GLF_color, %28
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %30:void = call %main_1
+    %31:vec4<f32> = load %x_GLF_color
+    %32:main_out = construct %31
+    ret %32
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..89a729d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,76 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    store %a, -7563i
+    %5:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %6:i32 = load %5
+    %7:i32 = load %a
+    %8:i32 = div %6, %7
+    %9:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %10:i32 = load %9
+    %11:bool = eq %8, %10
+    if %11 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %12:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %13:i32 = load %12
+        %14:f32 = convert %13
+        %15:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %16:i32 = load %15
+        %17:f32 = convert %16
+        %18:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %19:i32 = load %18
+        %20:f32 = convert %19
+        %21:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %22:i32 = load %21
+        %23:f32 = convert %22
+        %24:vec4<f32> = construct %14, %17, %20, %23
+        store %x_GLF_color, %24
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %26:i32 = load %25
+        %27:f32 = convert %26
+        %28:vec4<f32> = construct %27
+        store %x_GLF_color, %28
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %30:void = call %main_1
+    %31:vec4<f32> = load %x_GLF_color
+    %32:main_out = construct %31
+    ret %32
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2dfe747
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,76 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    store %a, -7563i
+    %5:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_25:i32 = load %5
+    %x_26:i32 = load %a
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_29:i32 = load %8
+    %10:i32 = div %x_25, %x_26
+    %11:bool = eq %10, %x_29
+    if %11 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %12:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_35:i32 = load %12
+        %14:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_38:i32 = load %14
+        %16:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_41:i32 = load %16
+        %18:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_44:i32 = load %18
+        %20:f32 = convert %x_35
+        %21:f32 = convert %x_38
+        %22:f32 = convert %x_41
+        %23:f32 = convert %x_44
+        %24:vec4<f32> = construct %20, %21, %22, %23
+        store %x_GLF_color, %24
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_48:i32 = load %25
+        %x_49:f32 = convert %x_48
+        %28:vec4<f32> = construct %x_49, %x_49, %x_49, %x_49
+        store %x_GLF_color, %28
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %30:void = call %main_1
+    %31:vec4<f32> = load %x_GLF_color
+    %32:main_out = construct %31
+    ret %32
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..16f9ea0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,76 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    store %a, -1i
+    %5:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %6:i32 = load %5
+    %7:i32 = load %a
+    %8:i32 = div %6, %7
+    %9:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %10:i32 = load %9
+    %11:bool = lt %8, %10
+    if %11 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %12:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %13:i32 = load %12
+        %14:f32 = convert %13
+        %15:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %16:i32 = load %15
+        %17:f32 = convert %16
+        %18:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %19:i32 = load %18
+        %20:f32 = convert %19
+        %21:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %22:i32 = load %21
+        %23:f32 = convert %22
+        %24:vec4<f32> = construct %14, %17, %20, %23
+        store %x_GLF_color, %24
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %26:i32 = load %25
+        %27:f32 = convert %26
+        %28:vec4<f32> = construct %27
+        store %x_GLF_color, %28
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %30:void = call %main_1
+    %31:vec4<f32> = load %x_GLF_color
+    %32:main_out = construct %31
+    ret %32
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a059c03
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,76 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    store %a, -1i
+    %5:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_25:i32 = load %5
+    %x_26:i32 = load %a
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_29:i32 = load %8
+    %10:i32 = div %x_25, %x_26
+    %11:bool = lt %10, %x_29
+    if %11 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %12:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_35:i32 = load %12
+        %14:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_38:i32 = load %14
+        %16:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_41:i32 = load %16
+        %18:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_44:i32 = load %18
+        %20:f32 = convert %x_35
+        %21:f32 = convert %x_38
+        %22:f32 = convert %x_41
+        %23:f32 = convert %x_44
+        %24:vec4<f32> = construct %20, %21, %22, %23
+        store %x_GLF_color, %24
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_48:i32 = load %25
+        %x_49:f32 = convert %x_48
+        %28:vec4<f32> = construct %x_49, %x_49, %x_49, %x_49
+        store %x_GLF_color, %28
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %30:void = call %main_1
+    %31:vec4<f32> = load %x_GLF_color
+    %32:main_out = construct %31
+    ret %32
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..5287888
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.spvasm.expected.ir.msl
@@ -0,0 +1,76 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_9:ptr<function, array<i32, 1>, read_write> = var
+    %x_10:ptr<function, i32, read_write> = var
+    %6:ptr<function, i32, read_write> = access %x_9, 0u
+    %x_6:i32 = load %6
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        store %x_GLF_color, vec4<f32>(0.0f)
+        %8:ptr<uniform, i32, read> = access %x_5, 0u
+        %9:i32 = load %8
+        %10:ptr<function, i32, read_write> = access %x_9, %9
+        %11:i32 = load %10
+        %12:bool = eq %11, %x_6
+        if %12 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            store %x_10, 1i
+            exit_loop  # loop_1
+          }
+        }
+        store %x_10, 2i
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %13:i32 = load %x_10
+    %14:bool = eq %13, 1i
+    %15:i32 = load %x_10
+    %16:bool = eq %15, 2i
+    %17:bool = or %14, %16
+    if %17 [t: %b6, f: %b7] {  # if_2
+      %b6 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b7 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..714b3d2
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl.expected.ir.msl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_9:ptr<function, array<i32, 1>, read_write> = var
+    %x_10_phi:ptr<function, i32, read_write> = var
+    %x_33:array<i32, 1> = load %x_9
+    %x_6:i32 = access %x_33, 0u
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        store %x_GLF_color, vec4<f32>(0.0f)
+        %8:ptr<uniform, i32, read> = access %x_5, 0u
+        %x_7:i32 = load %8
+        %10:ptr<function, i32, read_write> = access %x_9, %x_7
+        %x_8:i32 = load %10
+        %12:bool = eq %x_8, %x_6
+        if %12 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            store %x_10_phi, 1i
+            exit_loop  # loop_1
+          }
+        }
+        store %x_10_phi, 2i
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %x_10:i32 = load %x_10_phi
+    %14:bool = eq %x_10, 1i
+    %15:bool = eq %x_10, 2i
+    %16:bool = or %14, %15
+    if %16 [t: %b6, f: %b7] {  # if_2
+      %b6 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b7 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %18:void = call %main_1
+    %19:vec4<f32> = load %x_GLF_color
+    %20:main_out = construct %19
+    ret %20
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..93f6ab6
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,104 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+S = struct @align(4) {
+  x:i32 @offset(0)
+  y:i32 @offset(4)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_struct_S_i1_i11_ = func(%arg:ptr<function, S, read_write>):void -> %b2 {
+  %b2 = block {
+    %5:ptr<function, i32, read_write> = access %arg, 1u
+    store %5, 1i
+    ret
+  }
+}
+%main_1 = func():void -> %b3 {
+  %b3 = block {
+    %a:ptr<function, f32, read_write> = var
+    %b:ptr<function, array<S, 2>, read_write> = var
+    %param:ptr<function, S, read_write> = var
+    store %a, 5.0f
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %10:ptr<uniform, i32, read> = access %x_10, 0u
+        %x_43:i32 = load %10
+        %12:ptr<function, i32, read_write> = access %b, %x_43, 0u
+        store %12, 1i
+        %13:ptr<function, i32, read_write> = access %b, 1i, 0u
+        %14:i32 = load %13
+        %15:bool = eq %14, 1i
+        if %15 [t: %b6] {  # if_1
+          %b6 = block {  # true
+            %16:ptr<uniform, i32, read> = access %x_10, 0u
+            %17:i32 = load %16
+            %18:bool = eq %17, 1i
+            if %18 [t: %b7] {  # if_2
+              %b7 = block {  # true
+                exit_loop  # loop_1
+              }
+            }
+            %19:ptr<function, S, read_write> = access %b, 1i
+            %20:S = load %19
+            store %param, %20
+            %21:void = call %func_struct_S_i1_i11_, %param
+            %22:ptr<function, S, read_write> = access %b, 1i
+            %23:S = load %param
+            store %22, %23
+            %24:ptr<function, i32, read_write> = access %b, 1i, 1u
+            %25:i32 = load %24
+            %26:f32 = convert %25
+            store %a, %26
+            exit_if  # if_1
+          }
+        }
+        store %a, 0.0f
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        break_if true %b4
+      }
+    }
+    %27:f32 = load %a
+    %28:bool = eq %27, 5.0f
+    if %28 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %30:void = call %main_1
+    %31:vec4<f32> = load %x_GLF_color
+    %32:main_out = construct %31
+    ret %32
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..68c8437
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,104 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+S = struct @align(4) {
+  x:i32 @offset(0)
+  y:i32 @offset(4)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_struct_S_i1_i11_ = func(%arg:ptr<function, S, read_write>):void -> %b2 {
+  %b2 = block {
+    %5:ptr<function, i32, read_write> = access %arg, 1u
+    store %5, 1i
+    ret
+  }
+}
+%main_1 = func():void -> %b3 {
+  %b3 = block {
+    %a:ptr<function, f32, read_write> = var
+    %b:ptr<function, array<S, 2>, read_write> = var
+    %param:ptr<function, S, read_write> = var
+    store %a, 5.0f
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %10:ptr<uniform, i32, read> = access %x_10, 0u
+        %x_43:i32 = load %10
+        %12:ptr<function, i32, read_write> = access %b, %x_43, 0u
+        store %12, 1i
+        %13:ptr<function, i32, read_write> = access %b, 1i, 0u
+        %x_46:i32 = load %13
+        %15:bool = eq %x_46, 1i
+        if %15 [t: %b6] {  # if_1
+          %b6 = block {  # true
+            %16:ptr<uniform, i32, read> = access %x_10, 0u
+            %x_51:i32 = load %16
+            %18:bool = eq %x_51, 1i
+            if %18 [t: %b7] {  # if_2
+              %b7 = block {  # true
+                exit_loop  # loop_1
+              }
+            }
+            %19:ptr<function, S, read_write> = access %b, 1i
+            %x_56:S = load %19
+            store %param, %x_56
+            %21:void = call %func_struct_S_i1_i11_, %param
+            %x_58:S = load %param
+            %23:ptr<function, S, read_write> = access %b, 1i
+            store %23, %x_58
+            %24:ptr<function, i32, read_write> = access %b, 1i, 1u
+            %x_61:i32 = load %24
+            %26:f32 = convert %x_61
+            store %a, %26
+            exit_if  # if_1
+          }
+        }
+        store %a, 0.0f
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        break_if true %b4
+      }
+    }
+    %x_63:f32 = load %a
+    %28:bool = eq %x_63, 5.0f
+    if %28 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %30:void = call %main_1
+    %31:vec4<f32> = load %x_GLF_color
+    %32:main_out = construct %31
+    ret %32
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1b157dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,140 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_v1_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_v1:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %8:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %9:i32 = load %8
+    store %i, %9
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %10:i32 = load %i
+        %11:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %12:i32 = load %11
+        %13:bool = lt %10, %12
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %14:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+        %15:f32 = load %14
+        %16:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+        %17:f32 = load %16
+        %18:bool = gt %15, %17
+        if %18 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            discard
+            exit_if  # if_2
+          }
+        }
+        %19:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %20:i32 = load %19
+        store %j, %20
+        loop [b: %b8, c: %b9] {  # loop_2
+          %b8 = block {  # body
+            %21:i32 = load %j
+            %22:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+            %23:i32 = load %22
+            %24:bool = lt %21, %23
+            if %24 [t: %b10, f: %b11] {  # if_3
+              %b10 = block {  # true
+                exit_if  # if_3
+              }
+              %b11 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %25:f32 = load_vector_element %gl_FragCoord, 0u
+            %26:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+            %27:f32 = load %26
+            %28:bool = lt %25, %27
+            if %28 [t: %b12] {  # if_4
+              %b12 = block {  # true
+                discard
+                exit_if  # if_4
+              }
+            }
+            %29:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+            %30:i32 = load %29
+            %31:f32 = convert %30
+            %32:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+            %33:i32 = load %32
+            %34:f32 = convert %33
+            %35:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+            %36:i32 = load %35
+            %37:f32 = convert %36
+            %38:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+            %39:i32 = load %38
+            %40:f32 = convert %39
+            %41:vec4<f32> = construct %31, %34, %37, %40
+            store %x_GLF_v1, %41
+            continue %b9
+          }
+          %b9 = block {  # continuing
+            %42:i32 = load %j
+            %43:i32 = add %42, 1i
+            store %j, %43
+            next_iteration %b8
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %44:i32 = load %i
+        %45:i32 = add %44, 1i
+        store %i, %45
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b13 {
+  %b13 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %48:void = call %main_1
+    %49:vec4<f32> = load %x_GLF_v1
+    %50:main_out = construct %49
+    ret %50
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ff4053b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,140 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_v1_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_v1:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %8:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_36:i32 = load %8
+    store %i, %x_36
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_41:i32 = load %i
+        %11:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_43:i32 = load %11
+        %13:bool = lt %x_41, %x_43
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %14:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+        %x_47:f32 = load %14
+        %16:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
+        %x_49:f32 = load %16
+        %18:bool = gt %x_47, %x_49
+        if %18 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            discard
+            exit_if  # if_2
+          }
+        }
+        %19:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_54:i32 = load %19
+        store %j, %x_54
+        loop [b: %b8, c: %b9] {  # loop_2
+          %b8 = block {  # body
+            %x_59:i32 = load %j
+            %22:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+            %x_61:i32 = load %22
+            %24:bool = lt %x_59, %x_61
+            if %24 [t: %b10, f: %b11] {  # if_3
+              %b10 = block {  # true
+                exit_if  # if_3
+              }
+              %b11 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_65:f32 = load_vector_element %gl_FragCoord, 0u
+            %26:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+            %x_67:f32 = load %26
+            %28:bool = lt %x_65, %x_67
+            if %28 [t: %b12] {  # if_4
+              %b12 = block {  # true
+                discard
+                exit_if  # if_4
+              }
+            }
+            %29:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+            %x_72:i32 = load %29
+            %31:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+            %x_75:i32 = load %31
+            %33:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+            %x_78:i32 = load %33
+            %35:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+            %x_81:i32 = load %35
+            %37:f32 = convert %x_72
+            %38:f32 = convert %x_75
+            %39:f32 = convert %x_78
+            %40:f32 = convert %x_81
+            %41:vec4<f32> = construct %37, %38, %39, %40
+            store %x_GLF_v1, %41
+            continue %b9
+          }
+          %b9 = block {  # continuing
+            %x_84:i32 = load %j
+            %43:i32 = add %x_84, 1i
+            store %j, %43
+            next_iteration %b8
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_86:i32 = load %i
+        %45:i32 = add %x_86, 1i
+        store %i, %45
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b13 {
+  %b13 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %48:void = call %main_1
+    %49:vec4<f32> = load %x_GLF_v1
+    %50:main_out = construct %49
+    ret %50
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..59782d1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,174 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat2x2<f32>, read_write> = var
+    %f:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %8:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %9:i32 = load %8
+    %10:bool = eq %9, 1i
+    if %10 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %11:f32 = load %f
+        %12:vec2<f32> = construct %11, 0.0f
+        %13:f32 = load %f
+        %14:vec2<f32> = construct 0.0f, %13
+        %15:mat2x2<f32> = construct %12, %14
+        store %m, %15
+        exit_if  # if_1
+      }
+    }
+    %16:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %17:i32 = load %16
+    store %i, %17
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %18:i32 = load %i
+        %19:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %20:i32 = load %19
+        %21:bool = lt %18, %20
+        if %21 [t: %b6, f: %b7] {  # if_2
+          %b6 = block {  # true
+            exit_if  # if_2
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %22:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %23:i32 = load %22
+        store %j, %23
+        loop [b: %b8, c: %b9] {  # loop_2
+          %b8 = block {  # body
+            %24:i32 = load %j
+            %25:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+            %26:i32 = load %25
+            %27:bool = lt %24, %26
+            if %27 [t: %b10, f: %b11] {  # if_3
+              %b10 = block {  # true
+                exit_if  # if_3
+              }
+              %b11 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_66:i32 = load %i
+            %x_67:i32 = load %j
+            %30:ptr<function, vec2<f32>, read_write> = access %m, %x_66
+            %31:i32 = load %i
+            %32:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+            %33:i32 = load %32
+            %34:i32 = mul %31, %33
+            %35:i32 = load %j
+            %36:i32 = add %34, %35
+            %37:f32 = convert %36
+            store_vector_element %30, %x_67, %37
+            continue %b9
+          }
+          %b9 = block {  # continuing
+            %38:i32 = load %j
+            %39:i32 = add %38, 1i
+            store %j, %39
+            next_iteration %b8
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %40:i32 = load %i
+        %41:i32 = add %40, 1i
+        store %i, %41
+        next_iteration %b4
+      }
+    }
+    %42:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %43:i32 = load %42
+    %44:f32 = convert %43
+    %45:ptr<uniform, i32, read> = access %x_5, 0u, 2i, 0u
+    %46:i32 = load %45
+    %47:f32 = convert %46
+    %48:vec2<f32> = construct %44, %47
+    %49:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %50:i32 = load %49
+    %51:f32 = convert %50
+    %52:ptr<uniform, i32, read> = access %x_5, 0u, 3i, 0u
+    %53:i32 = load %52
+    %54:f32 = convert %53
+    %55:vec2<f32> = construct %51, %54
+    %x_95:mat2x2<f32> = construct %48, %55
+    %57:ptr<function, vec2<f32>, read_write> = access %m, 0u
+    %58:vec2<f32> = load %57
+    %59:vec2<f32> = access %x_95, 0u
+    %60:vec2<bool> = eq %58, %59
+    %61:bool = all %60
+    %62:ptr<function, vec2<f32>, read_write> = access %m, 1u
+    %63:vec2<f32> = load %62
+    %64:vec2<f32> = access %x_95, 1u
+    %65:vec2<bool> = eq %63, %64
+    %66:bool = all %65
+    %67:bool = and %61, %66
+    if %67 [t: %b12, f: %b13] {  # if_4
+      %b12 = block {  # true
+        %68:ptr<uniform, i32, read> = access %x_5, 0u, 2i, 0u
+        %69:i32 = load %68
+        %70:f32 = convert %69
+        %71:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %72:i32 = load %71
+        %73:f32 = convert %72
+        %74:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %75:i32 = load %74
+        %76:f32 = convert %75
+        %77:ptr<uniform, i32, read> = access %x_5, 0u, 2i, 0u
+        %78:i32 = load %77
+        %79:f32 = convert %78
+        %80:vec4<f32> = construct %70, %73, %76, %79
+        store %x_GLF_color, %80
+        exit_if  # if_4
+      }
+      %b13 = block {  # false
+        %81:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %82:i32 = load %81
+        %83:f32 = convert %82
+        %84:vec4<f32> = construct %83
+        store %x_GLF_color, %84
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b14 {
+  %b14 = block {
+    %86:void = call %main_1
+    %87:vec4<f32> = load %x_GLF_color
+    %88:main_out = construct %87
+    ret %88
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28ee770
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,172 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, mat2x2<f32>, read_write> = var
+    %f:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %8:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %x_36:i32 = load %8
+    %10:bool = eq %x_36, 1i
+    if %10 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_40:f32 = load %f
+        %12:vec2<f32> = construct %x_40, 0.0f
+        %13:vec2<f32> = construct 0.0f, %x_40
+        %14:mat2x2<f32> = construct %12, %13
+        store %m, %14
+        exit_if  # if_1
+      }
+    }
+    %15:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %x_45:i32 = load %15
+    store %i, %x_45
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %x_50:i32 = load %i
+        %18:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %x_52:i32 = load %18
+        %20:bool = lt %x_50, %x_52
+        if %20 [t: %b6, f: %b7] {  # if_2
+          %b6 = block {  # true
+            exit_if  # if_2
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %21:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %x_56:i32 = load %21
+        store %j, %x_56
+        loop [b: %b8, c: %b9] {  # loop_2
+          %b8 = block {  # body
+            %x_61:i32 = load %j
+            %24:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+            %x_63:i32 = load %24
+            %26:bool = lt %x_61, %x_63
+            if %26 [t: %b10, f: %b11] {  # if_3
+              %b10 = block {  # true
+                exit_if  # if_3
+              }
+              %b11 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_66:i32 = load %i
+            %x_67:i32 = load %j
+            %x_68:i32 = load %i
+            %30:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+            %x_70:i32 = load %30
+            %x_72:i32 = load %j
+            %33:ptr<function, vec2<f32>, read_write> = access %m, %x_66
+            %34:i32 = mul %x_68, %x_70
+            %35:i32 = add %34, %x_72
+            %36:f32 = convert %35
+            store_vector_element %33, %x_67, %36
+            continue %b9
+          }
+          %b9 = block {  # continuing
+            %x_76:i32 = load %j
+            %38:i32 = add %x_76, 1i
+            store %j, %38
+            next_iteration %b8
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %x_78:i32 = load %i
+        %40:i32 = add %x_78, 1i
+        store %i, %40
+        next_iteration %b4
+      }
+    }
+    %x_80:mat2x2<f32> = load %m
+    %42:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %x_82:i32 = load %42
+    %44:ptr<uniform, i32, read> = access %x_5, 0u, 2i, 0u
+    %x_85:i32 = load %44
+    %46:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_88:i32 = load %46
+    %48:ptr<uniform, i32, read> = access %x_5, 0u, 3i, 0u
+    %x_91:i32 = load %48
+    %50:f32 = convert %x_82
+    %51:f32 = convert %x_85
+    %52:vec2<f32> = construct %50, %51
+    %53:f32 = convert %x_88
+    %54:f32 = convert %x_91
+    %55:vec2<f32> = construct %53, %54
+    %x_95:mat2x2<f32> = construct %52, %55
+    %57:vec2<f32> = access %x_80, 0u
+    %58:vec2<f32> = access %x_95, 0u
+    %59:vec2<bool> = eq %57, %58
+    %60:bool = all %59
+    %61:vec2<f32> = access %x_80, 1u
+    %62:vec2<f32> = access %x_95, 1u
+    %63:vec2<bool> = eq %61, %62
+    %64:bool = all %63
+    %65:bool = and %60, %64
+    if %65 [t: %b12, f: %b13] {  # if_4
+      %b12 = block {  # true
+        %66:ptr<uniform, i32, read> = access %x_5, 0u, 2i, 0u
+        %x_109:i32 = load %66
+        %68:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %x_112:i32 = load %68
+        %70:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %x_115:i32 = load %70
+        %72:ptr<uniform, i32, read> = access %x_5, 0u, 2i, 0u
+        %x_118:i32 = load %72
+        %74:f32 = convert %x_109
+        %75:f32 = convert %x_112
+        %76:f32 = convert %x_115
+        %77:f32 = convert %x_118
+        %78:vec4<f32> = construct %74, %75, %76, %77
+        store %x_GLF_color, %78
+        exit_if  # if_4
+      }
+      %b13 = block {  # false
+        %79:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %x_122:i32 = load %79
+        %x_123:f32 = convert %x_122
+        %82:vec4<f32> = construct %x_123, %x_123, %x_123, %x_123
+        store %x_GLF_color, %82
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b14 {
+  %b14 = block {
+    %84:void = call %main_1
+    %85:vec4<f32> = load %x_GLF_color
+    %86:main_out = construct %85
+    ret %86
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1692514
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,140 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+S = struct @align(4) {
+  data:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_11:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_struct_S_i11_i1_ = func(%s:ptr<function, S, read_write>, %x:ptr<function, i32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %6:ptr<function, i32, read_write> = access %s, 0u
+    %7:i32 = load %6
+    %8:bool = eq %7, 1i
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %x_18:i32 = load %x
+        %10:ptr<function, i32, read_write> = access %s, 0u
+        %x_19:i32 = load %10
+        %12:i32 = add %x_18, %x_19
+        ret %12
+      }
+      %b4 = block {  # false
+        %x_21:i32 = load %x
+        ret %x_21
+      }
+    }
+    unreachable
+  }
+}
+%main_1 = func():void -> %b5 {
+  %b5 = block {
+    %a:ptr<function, i32, read_write> = var
+    %arr:ptr<function, array<S, 1>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %param:ptr<function, S, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, S, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    store %a, 0i
+    %22:ptr<function, i32, read_write> = access %arr, 0i, 0u
+    %23:ptr<uniform, i32, read> = access %x_11, 0u
+    %24:i32 = load %23
+    store %22, %24
+    store %i, 0i
+    loop [b: %b6, c: %b7] {  # loop_1
+      %b6 = block {  # body
+        %25:i32 = load %i
+        %26:ptr<uniform, i32, read> = access %x_11, 0u
+        %27:i32 = load %26
+        %28:i32 = add 5i, %27
+        %29:bool = lt %25, %28
+        if %29 [t: %b8, f: %b9] {  # if_2
+          %b8 = block {  # true
+            exit_if  # if_2
+          }
+          %b9 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %30:i32 = load %i
+        %31:i32 = mod %30, 2i
+        %32:bool = neq %31, 0i
+        if %32 [t: %b10, f: %b11] {  # if_3
+          %b10 = block {  # true
+            %33:ptr<function, S, read_write> = access %arr, 0i
+            %34:S = load %33
+            store %param, %34
+            %35:i32 = load %i
+            store %param_1, %35
+            %x_29:i32 = call %func_struct_S_i11_i1_, %param, %param_1
+            %37:ptr<function, S, read_write> = access %arr, 0i
+            %38:S = load %param
+            store %37, %38
+            store %a, %x_29
+            exit_if  # if_3
+          }
+          %b11 = block {  # false
+            %39:ptr<function, S, read_write> = access %arr, 0i
+            %40:S = load %39
+            store %param_2, %40
+            store %param_3, 1i
+            %x_30:i32 = call %func_struct_S_i11_i1_, %param_2, %param_3
+            %42:ptr<function, S, read_write> = access %arr, 0i
+            %43:S = load %param_2
+            store %42, %43
+            store %a, %x_30
+            exit_if  # if_3
+          }
+        }
+        continue %b7
+      }
+      %b7 = block {  # continuing
+        %44:i32 = load %i
+        %45:i32 = add %44, 1i
+        store %i, %45
+        next_iteration %b6
+      }
+    }
+    %46:i32 = load %a
+    %47:bool = eq %46, 6i
+    if %47 [t: %b12, f: %b13] {  # if_4
+      %b12 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_4
+      }
+      %b13 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b14 {
+  %b14 = block {
+    %49:void = call %main_1
+    %50:vec4<f32> = load %x_GLF_color
+    %51:main_out = construct %50
+    ret %51
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..587796d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,140 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+S = struct @align(4) {
+  data:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_11:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_struct_S_i11_i1_ = func(%s:ptr<function, S, read_write>, %x:ptr<function, i32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %6:ptr<function, i32, read_write> = access %s, 0u
+    %x_17:i32 = load %6
+    %8:bool = eq %x_17, 1i
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %x_18:i32 = load %x
+        %10:ptr<function, i32, read_write> = access %s, 0u
+        %x_19:i32 = load %10
+        %12:i32 = add %x_18, %x_19
+        ret %12
+      }
+      %b4 = block {  # false
+        %x_21:i32 = load %x
+        ret %x_21
+      }
+    }
+    unreachable
+  }
+}
+%main_1 = func():void -> %b5 {
+  %b5 = block {
+    %a:ptr<function, i32, read_write> = var
+    %arr:ptr<function, array<S, 1>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %param:ptr<function, S, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, S, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    store %a, 0i
+    %22:ptr<uniform, i32, read> = access %x_11, 0u
+    %x_22:i32 = load %22
+    %24:ptr<function, i32, read_write> = access %arr, 0i, 0u
+    store %24, %x_22
+    store %i, 0i
+    loop [b: %b6, c: %b7] {  # loop_1
+      %b6 = block {  # body
+        %x_23:i32 = load %i
+        %26:ptr<uniform, i32, read> = access %x_11, 0u
+        %x_24:i32 = load %26
+        %28:i32 = add 5i, %x_24
+        %29:bool = lt %x_23, %28
+        if %29 [t: %b8, f: %b9] {  # if_2
+          %b8 = block {  # true
+            exit_if  # if_2
+          }
+          %b9 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_26:i32 = load %i
+        %31:i32 = mod %x_26, 2i
+        %32:bool = neq %31, 0i
+        if %32 [t: %b10, f: %b11] {  # if_3
+          %b10 = block {  # true
+            %33:ptr<function, S, read_write> = access %arr, 0i
+            %x_74:S = load %33
+            store %param, %x_74
+            %x_28:i32 = load %i
+            store %param_1, %x_28
+            %x_29:i32 = call %func_struct_S_i11_i1_, %param, %param_1
+            %x_75:S = load %param
+            %38:ptr<function, S, read_write> = access %arr, 0i
+            store %38, %x_75
+            store %a, %x_29
+            exit_if  # if_3
+          }
+          %b11 = block {  # false
+            %39:ptr<function, S, read_write> = access %arr, 0i
+            %x_78:S = load %39
+            store %param_2, %x_78
+            store %param_3, 1i
+            %x_30:i32 = call %func_struct_S_i11_i1_, %param_2, %param_3
+            %x_79:S = load %param_2
+            %43:ptr<function, S, read_write> = access %arr, 0i
+            store %43, %x_79
+            store %a, %x_30
+            exit_if  # if_3
+          }
+        }
+        continue %b7
+      }
+      %b7 = block {  # continuing
+        %x_31:i32 = load %i
+        %45:i32 = add %x_31, 1i
+        store %i, %45
+        next_iteration %b6
+      }
+    }
+    %x_33:i32 = load %a
+    %47:bool = eq %x_33, 6i
+    if %47 [t: %b12, f: %b13] {  # if_4
+      %b12 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_4
+      }
+      %b13 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b14 {
+  %b14 = block {
+    %49:void = call %main_1
+    %50:vec4<f32> = load %x_GLF_color
+    %51:main_out = construct %50
+    ret %51
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..c8834f6
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,83 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf1, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %5:i32 = load %4
+    %6:f32 = convert %5
+    %7:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %8:i32 = load %7
+    %9:f32 = convert %8
+    %10:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %11:i32 = load %10
+    %12:f32 = convert %11
+    %13:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %14:i32 = load %13
+    %15:f32 = convert %14
+    %16:vec4<f32> = construct %6, %9, %12, %15
+    store %x_GLF_color, %16
+    %17:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %18:i32 = load %17
+    %19:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %20:i32 = load %19
+    %21:bool = gt %18, %20
+    if %21 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %22:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+            %23:i32 = load %22
+            %24:f32 = convert %23
+            %25:vec4<f32> = construct %24
+            store %x_GLF_color, %25
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            %26:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+            %x_50:i32 = load %26
+            %28:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+            %x_52:i32 = load %28
+            %30:bool = gt %x_50, %x_52
+            %31:bool = eq %30, false
+            break_if %31 %b4
+          }
+        }
+        ret
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %33:void = call %main_1
+    %34:vec4<f32> = load %x_GLF_color
+    %35:main_out = construct %34
+    ret %35
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0533ff1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,83 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf1, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_22:i32 = load %4
+    %6:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %x_25:i32 = load %6
+    %8:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %x_28:i32 = load %8
+    %10:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_31:i32 = load %10
+    %12:f32 = convert %x_22
+    %13:f32 = convert %x_25
+    %14:f32 = convert %x_28
+    %15:f32 = convert %x_31
+    %16:vec4<f32> = construct %12, %13, %14, %15
+    store %x_GLF_color, %16
+    %17:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %x_35:i32 = load %17
+    %19:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_37:i32 = load %19
+    %21:bool = gt %x_35, %x_37
+    if %21 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %22:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+            %x_46:i32 = load %22
+            %x_47:f32 = convert %x_46
+            %25:vec4<f32> = construct %x_47, %x_47, %x_47, %x_47
+            store %x_GLF_color, %25
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            %26:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+            %x_50:i32 = load %26
+            %28:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+            %x_52:i32 = load %28
+            %30:bool = gt %x_50, %x_52
+            %31:bool = eq %30, false
+            break_if %31 %b4
+          }
+        }
+        ret
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %33:void = call %main_1
+    %34:vec4<f32> = load %x_GLF_color
+    %35:main_out = construct %34
+    ret %35
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..fbb28fd
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,106 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+buf2 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_11:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    %8:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %9:i32 = load %8
+    store %i, %9
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %10:i32 = load %i
+        %11:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %12:i32 = load %11
+        %13:bool = lt %10, %12
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %14:i32 = load %i
+        %15:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %16:i32 = load %15
+        %17:bool = neq %14, %16
+        if %17 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            ret
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %18:i32 = load %i
+        %19:i32 = add %18, 1i
+        store %i, %19
+        next_iteration %b3
+      }
+    }
+    %20:f32 = load_vector_element %gl_FragCoord, 1u
+    %21:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+    %22:f32 = load %21
+    %23:bool = lt %20, %22
+    if %23 [t: %b8] {  # if_3
+      %b8 = block {  # true
+        ret
+      }
+    }
+    %24:ptr<uniform, vec2<f32>, read> = access %x_11, 0u
+    %25:f32 = load_vector_element %24, 1u
+    %26:vec4<f32> = construct 1.0f, 1.0f, 1.0f, %25
+    store %x_GLF_color, %26
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b9 {
+  %b9 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %29:void = call %main_1
+    %30:vec4<f32> = load %x_GLF_color
+    %31:main_out = construct %30
+    ret %31
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b5edf9c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,106 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+buf2 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_11:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    %8:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_42:i32 = load %8
+    store %i, %x_42
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_47:i32 = load %i
+        %11:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_49:i32 = load %11
+        %13:bool = lt %x_47, %x_49
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_52:i32 = load %i
+        %15:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_54:i32 = load %15
+        %17:bool = neq %x_52, %x_54
+        if %17 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            ret
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_58:i32 = load %i
+        %19:i32 = add %x_58, 1i
+        store %i, %19
+        next_iteration %b3
+      }
+    }
+    %x_61:f32 = load_vector_element %gl_FragCoord, 1u
+    %21:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
+    %x_63:f32 = load %21
+    %23:bool = lt %x_61, %x_63
+    if %23 [t: %b8] {  # if_3
+      %b8 = block {  # true
+        ret
+      }
+    }
+    %24:ptr<uniform, vec2<f32>, read> = access %x_11, 0u
+    %x_68:f32 = load_vector_element %24, 1u
+    %26:vec4<f32> = construct 1.0f, 1.0f, 1.0f, %x_68
+    store %x_GLF_color, %26
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b9 {
+  %b9 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %29:void = call %main_1
+    %30:vec4<f32> = load %x_GLF_color
+    %31:main_out = construct %30
+    ret %31
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..12b0b76
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,105 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_11:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%func_ = func():vec2<f32> -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec2<f32>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, array<vec2<f32>, 3>, read_write> = var
+    %8:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %9:f32 = load %8
+    store_vector_element %v, 1u, %9
+    store %a, 2i
+    %x_77:i32 = load %a
+    %11:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %12:f32 = load %11
+    %13:vec2<f32> = construct %12
+    %14:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %15:f32 = load %14
+    %16:vec2<f32> = construct %15
+    %17:vec2<f32> = load %v
+    %18:array<vec2<f32>, 3> = construct %13, %16, %17
+    store %indexable, %18
+    %19:ptr<function, vec2<f32>, read_write> = access %indexable, %x_77
+    %x_79:vec2<f32> = load %19
+    ret %x_79
+  }
+}
+%main_1 = func():void -> %b3 {
+  %b3 = block {
+    %x_40:vec2<f32> = call %func_
+    %23:f32 = access %x_40, 1u
+    %24:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %25:f32 = load %24
+    %26:bool = eq %23, %25
+    if %26 [t: %b4, f: %b5] {  # if_1
+      %b4 = block {  # true
+        %27:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+        %28:i32 = load %27
+        %29:f32 = convert %28
+        %30:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %31:i32 = load %30
+        %32:f32 = convert %31
+        %33:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %34:i32 = load %33
+        %35:f32 = convert %34
+        %36:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+        %37:i32 = load %36
+        %38:f32 = convert %37
+        %39:vec4<f32> = construct %29, %32, %35, %38
+        store %x_GLF_color, %39
+        exit_if  # if_1
+      }
+      %b5 = block {  # false
+        %40:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %41:i32 = load %40
+        %42:f32 = convert %41
+        %43:vec4<f32> = construct %42
+        store %x_GLF_color, %43
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %45:void = call %main_1
+    %46:vec4<f32> = load %x_GLF_color
+    %47:main_out = construct %46
+    ret %47
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c256d16
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,105 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_11:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%func_ = func():vec2<f32> -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec2<f32>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, array<vec2<f32>, 3>, read_write> = var
+    %8:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_67:f32 = load %8
+    store_vector_element %v, 1u, %x_67
+    store %a, 2i
+    %10:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_70:f32 = load %10
+    %12:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_73:f32 = load %12
+    %x_75:vec2<f32> = load %v
+    %x_77:i32 = load %a
+    %16:vec2<f32> = construct %x_70, %x_70
+    %17:vec2<f32> = construct %x_73, %x_73
+    %18:array<vec2<f32>, 3> = construct %16, %17, %x_75
+    store %indexable, %18
+    %19:ptr<function, vec2<f32>, read_write> = access %indexable, %x_77
+    %x_79:vec2<f32> = load %19
+    ret %x_79
+  }
+}
+%main_1 = func():void -> %b3 {
+  %b3 = block {
+    %x_40:vec2<f32> = call %func_
+    %23:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_43:f32 = load %23
+    %25:f32 = access %x_40, 1u
+    %26:bool = eq %25, %x_43
+    if %26 [t: %b4, f: %b5] {  # if_1
+      %b4 = block {  # true
+        %27:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+        %x_49:i32 = load %27
+        %29:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %x_52:i32 = load %29
+        %31:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %x_55:i32 = load %31
+        %33:ptr<uniform, i32, read> = access %x_11, 0u, 0i, 0u
+        %x_58:i32 = load %33
+        %35:f32 = convert %x_49
+        %36:f32 = convert %x_52
+        %37:f32 = convert %x_55
+        %38:f32 = convert %x_58
+        %39:vec4<f32> = construct %35, %36, %37, %38
+        store %x_GLF_color, %39
+        exit_if  # if_1
+      }
+      %b5 = block {  # false
+        %40:ptr<uniform, i32, read> = access %x_11, 0u, 1i, 0u
+        %x_62:i32 = load %40
+        %x_63:f32 = convert %x_62
+        %43:vec4<f32> = construct %x_63, %x_63, %x_63, %x_63
+        store %x_GLF_color, %43
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %45:void = call %main_1
+    %46:vec4<f32> = load %x_GLF_color
+    %47:main_out = construct %46
+    ret %47
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..8678bc3
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,394 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 7> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %sums:ptr<function, array<f32, 2>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %d:ptr<function, i32, read_write> = var
+    %e:ptr<function, i32, read_write> = var
+    %f:ptr<function, i32, read_write> = var
+    %g:ptr<function, i32, read_write> = var
+    %h:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %x_215:ptr<function, bool, read_write> = var
+    %x_216:ptr<function, bool, read_write> = var
+    %18:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_20:i32 = load %18
+    %20:ptr<function, f32, read_write> = access %sums, %x_20
+    %21:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %22:f32 = load %21
+    store %20, %22
+    %23:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_22:i32 = load %23
+    %25:ptr<function, f32, read_write> = access %sums, %x_22
+    %26:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %27:f32 = load %26
+    store %25, %27
+    %28:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %29:i32 = load %28
+    store %a, %29
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %30:i32 = load %a
+        %31:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %32:i32 = load %31
+        %33:bool = lt %30, %32
+        if %33 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %34:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+        %35:i32 = load %34
+        store %b, %35
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %36:i32 = load %b
+            %37:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+            %38:i32 = load %37
+            %39:bool = lt %36, %38
+            if %39 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %40:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+            %41:i32 = load %40
+            store %c, %41
+            loop [b: %b11, c: %b12] {  # loop_3
+              %b11 = block {  # body
+                %42:i32 = load %c
+                %43:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+                %44:i32 = load %43
+                %45:bool = lte %42, %44
+                if %45 [t: %b13, f: %b14] {  # if_3
+                  %b13 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b14 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %46:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                %47:i32 = load %46
+                store %d, %47
+                loop [b: %b15, c: %b16] {  # loop_4
+                  %b15 = block {  # body
+                    %48:i32 = load %d
+                    %49:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+                    %50:i32 = load %49
+                    %51:bool = lt %48, %50
+                    if %51 [t: %b17, f: %b18] {  # if_4
+                      %b17 = block {  # true
+                        exit_if  # if_4
+                      }
+                      %b18 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %52:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+                    %53:i32 = load %52
+                    store %e, %53
+                    loop [b: %b19, c: %b20] {  # loop_5
+                      %b19 = block {  # body
+                        %54:i32 = load %e
+                        %55:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+                        %56:i32 = load %55
+                        %57:bool = lte %54, %56
+                        if %57 [t: %b21, f: %b22] {  # if_5
+                          %b21 = block {  # true
+                            exit_if  # if_5
+                          }
+                          %b22 = block {  # false
+                            exit_loop  # loop_5
+                          }
+                        }
+                        %58:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                        %59:i32 = load %58
+                        store %f, %59
+                        loop [b: %b23, c: %b24] {  # loop_6
+                          %b23 = block {  # body
+                            %60:i32 = load %f
+                            %61:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+                            %62:i32 = load %61
+                            %63:bool = lt %60, %62
+                            if %63 [t: %b25, f: %b26] {  # if_6
+                              %b25 = block {  # true
+                                exit_if  # if_6
+                              }
+                              %b26 = block {  # false
+                                exit_loop  # loop_6
+                              }
+                            }
+                            %64:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                            %65:i32 = load %64
+                            store %g, %65
+                            loop [b: %b27, c: %b28] {  # loop_7
+                              %b27 = block {  # body
+                                %66:i32 = load %g
+                                %67:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+                                %68:i32 = load %67
+                                %69:bool = lt %66, %68
+                                if %69 [t: %b29, f: %b30] {  # if_7
+                                  %b29 = block {  # true
+                                    exit_if  # if_7
+                                  }
+                                  %b30 = block {  # false
+                                    exit_loop  # loop_7
+                                  }
+                                }
+                                %70:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                                %71:i32 = load %70
+                                store %h, %71
+                                loop [b: %b31, c: %b32] {  # loop_8
+                                  %b31 = block {  # body
+                                    %72:i32 = load %h
+                                    %73:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+                                    %74:i32 = load %73
+                                    %75:bool = lt %72, %74
+                                    if %75 [t: %b33, f: %b34] {  # if_8
+                                      %b33 = block {  # true
+                                        exit_if  # if_8
+                                      }
+                                      %b34 = block {  # false
+                                        exit_loop  # loop_8
+                                      }
+                                    }
+                                    %76:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                                    %77:i32 = load %76
+                                    store %i, %77
+                                    loop [b: %b35, c: %b36] {  # loop_9
+                                      %b35 = block {  # body
+                                        %78:i32 = load %i
+                                        %79:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+                                        %80:i32 = load %79
+                                        %81:bool = lt %78, %80
+                                        if %81 [t: %b37, f: %b38] {  # if_9
+                                          %b37 = block {  # true
+                                            exit_if  # if_9
+                                          }
+                                          %b38 = block {  # false
+                                            exit_loop  # loop_9
+                                          }
+                                        }
+                                        %82:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+                                        %83:i32 = load %82
+                                        store %j, %83
+                                        loop [b: %b39, c: %b40] {  # loop_10
+                                          %b39 = block {  # body
+                                            %84:i32 = load %j
+                                            %85:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                                            %86:i32 = load %85
+                                            %87:bool = gt %84, %86
+                                            if %87 [t: %b41, f: %b42] {  # if_10
+                                              %b41 = block {  # true
+                                                exit_if  # if_10
+                                              }
+                                              %b42 = block {  # false
+                                                exit_loop  # loop_10
+                                              }
+                                            }
+                                            %x_53:i32 = load %a
+                                            %89:ptr<function, f32, read_write> = access %sums, %x_53
+                                            %90:i32 = load %a
+                                            %91:ptr<function, f32, read_write> = access %sums, %90
+                                            %92:f32 = load %91
+                                            %93:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+                                            %94:f32 = load %93
+                                            %95:f32 = add %92, %94
+                                            store %89, %95
+                                            continue %b40
+                                          }
+                                          %b40 = block {  # continuing
+                                            %96:i32 = load %j
+                                            %97:i32 = sub %96, 1i
+                                            store %j, %97
+                                            next_iteration %b39
+                                          }
+                                        }
+                                        continue %b36
+                                      }
+                                      %b36 = block {  # continuing
+                                        %98:i32 = load %i
+                                        %99:i32 = add %98, 1i
+                                        store %i, %99
+                                        next_iteration %b35
+                                      }
+                                    }
+                                    continue %b32
+                                  }
+                                  %b32 = block {  # continuing
+                                    %100:i32 = load %h
+                                    %101:i32 = add %100, 1i
+                                    store %h, %101
+                                    next_iteration %b31
+                                  }
+                                }
+                                continue %b28
+                              }
+                              %b28 = block {  # continuing
+                                %102:i32 = load %g
+                                %103:i32 = add %102, 1i
+                                store %g, %103
+                                next_iteration %b27
+                              }
+                            }
+                            continue %b24
+                          }
+                          %b24 = block {  # continuing
+                            %104:i32 = load %f
+                            %105:i32 = add %104, 1i
+                            store %f, %105
+                            next_iteration %b23
+                          }
+                        }
+                        continue %b20
+                      }
+                      %b20 = block {  # continuing
+                        %106:i32 = load %e
+                        %107:i32 = add %106, 1i
+                        store %e, %107
+                        next_iteration %b19
+                      }
+                    }
+                    continue %b16
+                  }
+                  %b16 = block {  # continuing
+                    %108:i32 = load %d
+                    %109:i32 = add %108, 1i
+                    store %d, %109
+                    next_iteration %b15
+                  }
+                }
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %110:i32 = load %c
+                %111:i32 = add %110, 1i
+                store %c, %111
+                next_iteration %b11
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %112:i32 = load %b
+            %113:i32 = add %112, 1i
+            store %b, %113
+            next_iteration %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %114:i32 = load %a
+        %115:i32 = add %114, 1i
+        store %a, %115
+        next_iteration %b3
+      }
+    }
+    %116:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %117:i32 = load %116
+    %118:ptr<function, f32, read_write> = access %sums, %117
+    %119:f32 = load %118
+    %120:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %121:f32 = load %120
+    %x_207:bool = eq %119, %121
+    store %x_216, %x_207
+    if %x_207 [t: %b43] {  # if_11
+      %b43 = block {  # true
+        %123:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %124:i32 = load %123
+        %125:ptr<function, f32, read_write> = access %sums, %124
+        %126:f32 = load %125
+        %127:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+        %128:f32 = load %127
+        %129:bool = eq %126, %128
+        store %x_215, %129
+        %130:bool = load %x_215
+        store %x_216, %130
+        exit_if  # if_11
+      }
+    }
+    %131:bool = load %x_216
+    if %131 [t: %b44, f: %b45] {  # if_12
+      %b44 = block {  # true
+        %132:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %133:i32 = load %132
+        %134:f32 = convert %133
+        %135:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %136:i32 = load %135
+        %137:f32 = convert %136
+        %138:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %139:i32 = load %138
+        %140:f32 = convert %139
+        %141:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %142:i32 = load %141
+        %143:f32 = convert %142
+        %144:vec4<f32> = construct %134, %137, %140, %143
+        store %x_GLF_color, %144
+        exit_if  # if_12
+      }
+      %b45 = block {  # false
+        %145:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %146:i32 = load %145
+        %147:f32 = convert %146
+        %148:vec4<f32> = construct %147
+        store %x_GLF_color, %148
+        exit_if  # if_12
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b46 {
+  %b46 = block {
+    %150:void = call %main_1
+    %151:vec4<f32> = load %x_GLF_color
+    %152:main_out = construct %151
+    ret %152
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d190569
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,393 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 7> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %sums:ptr<function, array<f32, 2>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %d:ptr<function, i32, read_write> = var
+    %e:ptr<function, i32, read_write> = var
+    %f:ptr<function, i32, read_write> = var
+    %g:ptr<function, i32, read_write> = var
+    %h:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %x_215:ptr<function, bool, read_write> = var
+    %x_216_phi:ptr<function, bool, read_write> = var
+    %18:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_20:i32 = load %18
+    %20:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_110:f32 = load %20
+    %22:ptr<function, f32, read_write> = access %sums, %x_20
+    store %22, %x_110
+    %23:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_22:i32 = load %23
+    %25:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_114:f32 = load %25
+    %27:ptr<function, f32, read_write> = access %sums, %x_22
+    store %27, %x_114
+    %28:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_23:i32 = load %28
+    store %a, %x_23
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_24:i32 = load %a
+        %31:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_25:i32 = load %31
+        %33:bool = lt %x_24, %x_25
+        if %33 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %34:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+        %x_26:i32 = load %34
+        store %b, %x_26
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %x_27:i32 = load %b
+            %37:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+            %x_28:i32 = load %37
+            %39:bool = lt %x_27, %x_28
+            if %39 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %40:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+            %x_29:i32 = load %40
+            store %c, %x_29
+            loop [b: %b11, c: %b12] {  # loop_3
+              %b11 = block {  # body
+                %x_30:i32 = load %c
+                %43:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+                %x_31:i32 = load %43
+                %45:bool = lte %x_30, %x_31
+                if %45 [t: %b13, f: %b14] {  # if_3
+                  %b13 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b14 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %46:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                %x_32:i32 = load %46
+                store %d, %x_32
+                loop [b: %b15, c: %b16] {  # loop_4
+                  %b15 = block {  # body
+                    %x_33:i32 = load %d
+                    %49:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+                    %x_34:i32 = load %49
+                    %51:bool = lt %x_33, %x_34
+                    if %51 [t: %b17, f: %b18] {  # if_4
+                      %b17 = block {  # true
+                        exit_if  # if_4
+                      }
+                      %b18 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %52:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+                    %x_35:i32 = load %52
+                    store %e, %x_35
+                    loop [b: %b19, c: %b20] {  # loop_5
+                      %b19 = block {  # body
+                        %x_36:i32 = load %e
+                        %55:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+                        %x_37:i32 = load %55
+                        %57:bool = lte %x_36, %x_37
+                        if %57 [t: %b21, f: %b22] {  # if_5
+                          %b21 = block {  # true
+                            exit_if  # if_5
+                          }
+                          %b22 = block {  # false
+                            exit_loop  # loop_5
+                          }
+                        }
+                        %58:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                        %x_38:i32 = load %58
+                        store %f, %x_38
+                        loop [b: %b23, c: %b24] {  # loop_6
+                          %b23 = block {  # body
+                            %x_39:i32 = load %f
+                            %61:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+                            %x_40:i32 = load %61
+                            %63:bool = lt %x_39, %x_40
+                            if %63 [t: %b25, f: %b26] {  # if_6
+                              %b25 = block {  # true
+                                exit_if  # if_6
+                              }
+                              %b26 = block {  # false
+                                exit_loop  # loop_6
+                              }
+                            }
+                            %64:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                            %x_41:i32 = load %64
+                            store %g, %x_41
+                            loop [b: %b27, c: %b28] {  # loop_7
+                              %b27 = block {  # body
+                                %x_42:i32 = load %g
+                                %67:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+                                %x_43:i32 = load %67
+                                %69:bool = lt %x_42, %x_43
+                                if %69 [t: %b29, f: %b30] {  # if_7
+                                  %b29 = block {  # true
+                                    exit_if  # if_7
+                                  }
+                                  %b30 = block {  # false
+                                    exit_loop  # loop_7
+                                  }
+                                }
+                                %70:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                                %x_44:i32 = load %70
+                                store %h, %x_44
+                                loop [b: %b31, c: %b32] {  # loop_8
+                                  %b31 = block {  # body
+                                    %x_45:i32 = load %h
+                                    %73:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+                                    %x_46:i32 = load %73
+                                    %75:bool = lt %x_45, %x_46
+                                    if %75 [t: %b33, f: %b34] {  # if_8
+                                      %b33 = block {  # true
+                                        exit_if  # if_8
+                                      }
+                                      %b34 = block {  # false
+                                        exit_loop  # loop_8
+                                      }
+                                    }
+                                    %76:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                                    %x_47:i32 = load %76
+                                    store %i, %x_47
+                                    loop [b: %b35, c: %b36] {  # loop_9
+                                      %b35 = block {  # body
+                                        %x_48:i32 = load %i
+                                        %79:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+                                        %x_49:i32 = load %79
+                                        %81:bool = lt %x_48, %x_49
+                                        if %81 [t: %b37, f: %b38] {  # if_9
+                                          %b37 = block {  # true
+                                            exit_if  # if_9
+                                          }
+                                          %b38 = block {  # false
+                                            exit_loop  # loop_9
+                                          }
+                                        }
+                                        %82:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+                                        %x_50:i32 = load %82
+                                        store %j, %x_50
+                                        loop [b: %b39, c: %b40] {  # loop_10
+                                          %b39 = block {  # body
+                                            %x_51:i32 = load %j
+                                            %85:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+                                            %x_52:i32 = load %85
+                                            %87:bool = gt %x_51, %x_52
+                                            if %87 [t: %b41, f: %b42] {  # if_10
+                                              %b41 = block {  # true
+                                                exit_if  # if_10
+                                              }
+                                              %b42 = block {  # false
+                                                exit_loop  # loop_10
+                                              }
+                                            }
+                                            %x_53:i32 = load %a
+                                            %89:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
+                                            %x_197:f32 = load %89
+                                            %91:ptr<function, f32, read_write> = access %sums, %x_53
+                                            %x_199:f32 = load %91
+                                            %93:ptr<function, f32, read_write> = access %sums, %x_53
+                                            %94:f32 = add %x_199, %x_197
+                                            store %93, %94
+                                            continue %b40
+                                          }
+                                          %b40 = block {  # continuing
+                                            %x_54:i32 = load %j
+                                            %96:i32 = sub %x_54, 1i
+                                            store %j, %96
+                                            next_iteration %b39
+                                          }
+                                        }
+                                        continue %b36
+                                      }
+                                      %b36 = block {  # continuing
+                                        %x_56:i32 = load %i
+                                        %98:i32 = add %x_56, 1i
+                                        store %i, %98
+                                        next_iteration %b35
+                                      }
+                                    }
+                                    continue %b32
+                                  }
+                                  %b32 = block {  # continuing
+                                    %x_58:i32 = load %h
+                                    %100:i32 = add %x_58, 1i
+                                    store %h, %100
+                                    next_iteration %b31
+                                  }
+                                }
+                                continue %b28
+                              }
+                              %b28 = block {  # continuing
+                                %x_60:i32 = load %g
+                                %102:i32 = add %x_60, 1i
+                                store %g, %102
+                                next_iteration %b27
+                              }
+                            }
+                            continue %b24
+                          }
+                          %b24 = block {  # continuing
+                            %x_62:i32 = load %f
+                            %104:i32 = add %x_62, 1i
+                            store %f, %104
+                            next_iteration %b23
+                          }
+                        }
+                        continue %b20
+                      }
+                      %b20 = block {  # continuing
+                        %x_64:i32 = load %e
+                        %106:i32 = add %x_64, 1i
+                        store %e, %106
+                        next_iteration %b19
+                      }
+                    }
+                    continue %b16
+                  }
+                  %b16 = block {  # continuing
+                    %x_66:i32 = load %d
+                    %108:i32 = add %x_66, 1i
+                    store %d, %108
+                    next_iteration %b15
+                  }
+                }
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %x_68:i32 = load %c
+                %110:i32 = add %x_68, 1i
+                store %c, %110
+                next_iteration %b11
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %x_70:i32 = load %b
+            %112:i32 = add %x_70, 1i
+            store %b, %112
+            next_iteration %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_72:i32 = load %a
+        %114:i32 = add %x_72, 1i
+        store %a, %114
+        next_iteration %b3
+      }
+    }
+    %115:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_74:i32 = load %115
+    %117:ptr<function, f32, read_write> = access %sums, %x_74
+    %x_204:f32 = load %117
+    %119:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+    %x_206:f32 = load %119
+    %x_207:bool = eq %x_204, %x_206
+    store %x_216_phi, %x_207
+    if %x_207 [t: %b43] {  # if_11
+      %b43 = block {  # true
+        %122:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_75:i32 = load %122
+        %124:ptr<function, f32, read_write> = access %sums, %x_75
+        %x_212:f32 = load %124
+        %126:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+        %x_214:f32 = load %126
+        %128:bool = eq %x_212, %x_214
+        store %x_215, %128
+        %129:bool = load %x_215
+        store %x_216_phi, %129
+        exit_if  # if_11
+      }
+    }
+    %x_216:bool = load %x_216_phi
+    if %x_216 [t: %b44, f: %b45] {  # if_12
+      %b44 = block {  # true
+        %131:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_76:i32 = load %131
+        %133:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_77:i32 = load %133
+        %135:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_78:i32 = load %135
+        %137:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_79:i32 = load %137
+        %139:f32 = convert %x_76
+        %140:f32 = convert %x_77
+        %141:f32 = convert %x_78
+        %142:f32 = convert %x_79
+        %143:vec4<f32> = construct %139, %140, %141, %142
+        store %x_GLF_color, %143
+        exit_if  # if_12
+      }
+      %b45 = block {  # false
+        %144:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_80:i32 = load %144
+        %x_230:f32 = convert %x_80
+        %147:vec4<f32> = construct %x_230, %x_230, %x_230, %x_230
+        store %x_GLF_color, %147
+        exit_if  # if_12
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b46 {
+  %b46 = block {
+    %149:void = call %main_1
+    %150:vec4<f32> = load %x_GLF_color
+    %151:main_out = construct %150
+    ret %151
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..460cbc3
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,323 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i0:ptr<function, i32, read_write> = var
+    %i1:ptr<function, i32, read_write> = var
+    %i2:ptr<function, i32, read_write> = var
+    %i3:ptr<function, i32, read_write> = var
+    %i4:ptr<function, i32, read_write> = var
+    %i5:ptr<function, i32, read_write> = var
+    %i6:ptr<function, i32, read_write> = var
+    %i7:ptr<function, i32, read_write> = var
+    %i8_1:ptr<function, i32, read_write> = var
+    %i9:ptr<function, i32, read_write> = var
+    store %a, 0i
+    store %i0, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %15:i32 = load %i0
+        %16:ptr<uniform, i32, read> = access %x_7, 0u
+        %17:i32 = load %16
+        %18:bool = lt %15, %17
+        if %18 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        store %i1, 0i
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %19:i32 = load %i1
+            %20:ptr<uniform, i32, read> = access %x_7, 0u
+            %21:i32 = load %20
+            %22:bool = lt %19, %21
+            if %22 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            store %i2, 0i
+            loop [b: %b11, c: %b12] {  # loop_3
+              %b11 = block {  # body
+                %23:i32 = load %i2
+                %24:ptr<uniform, i32, read> = access %x_7, 0u
+                %25:i32 = load %24
+                %26:bool = lt %23, %25
+                if %26 [t: %b13, f: %b14] {  # if_3
+                  %b13 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b14 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                store %i3, 0i
+                loop [b: %b15, c: %b16] {  # loop_4
+                  %b15 = block {  # body
+                    %27:i32 = load %i3
+                    %28:ptr<uniform, i32, read> = access %x_7, 0u
+                    %29:i32 = load %28
+                    %30:i32 = add %29, 2i
+                    %31:bool = lt %27, %30
+                    if %31 [t: %b17, f: %b18] {  # if_4
+                      %b17 = block {  # true
+                        exit_if  # if_4
+                      }
+                      %b18 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    store %i4, 0i
+                    loop [b: %b19, c: %b20] {  # loop_5
+                      %b19 = block {  # body
+                        %32:i32 = load %i4
+                        %33:ptr<uniform, i32, read> = access %x_7, 0u
+                        %34:i32 = load %33
+                        %35:bool = lt %32, %34
+                        if %35 [t: %b21, f: %b22] {  # if_5
+                          %b21 = block {  # true
+                            exit_if  # if_5
+                          }
+                          %b22 = block {  # false
+                            exit_loop  # loop_5
+                          }
+                        }
+                        store %i5, 0i
+                        loop [b: %b23, c: %b24] {  # loop_6
+                          %b23 = block {  # body
+                            %36:i32 = load %i5
+                            %37:ptr<uniform, i32, read> = access %x_7, 0u
+                            %38:i32 = load %37
+                            %39:bool = lt %36, %38
+                            if %39 [t: %b25, f: %b26] {  # if_6
+                              %b25 = block {  # true
+                                exit_if  # if_6
+                              }
+                              %b26 = block {  # false
+                                exit_loop  # loop_6
+                              }
+                            }
+                            loop [b: %b27, c: %b28] {  # loop_7
+                              %b27 = block {  # body
+                                %40:ptr<uniform, i32, read> = access %x_7, 0u
+                                %41:i32 = load %40
+                                %42:bool = gt %41, 0i
+                                if %42 [t: %b29, f: %b30] {  # if_7
+                                  %b29 = block {  # true
+                                    exit_if  # if_7
+                                  }
+                                  %b30 = block {  # false
+                                    exit_loop  # loop_7
+                                  }
+                                }
+                                store %i6, 0i
+                                loop [b: %b31, c: %b32] {  # loop_8
+                                  %b31 = block {  # body
+                                    %43:i32 = load %i6
+                                    %44:ptr<uniform, i32, read> = access %x_7, 0u
+                                    %45:i32 = load %44
+                                    %46:bool = lt %43, %45
+                                    if %46 [t: %b33, f: %b34] {  # if_8
+                                      %b33 = block {  # true
+                                        exit_if  # if_8
+                                      }
+                                      %b34 = block {  # false
+                                        exit_loop  # loop_8
+                                      }
+                                    }
+                                    store %i7, 0i
+                                    loop [b: %b35, c: %b36] {  # loop_9
+                                      %b35 = block {  # body
+                                        %47:i32 = load %i7
+                                        %48:ptr<uniform, i32, read> = access %x_7, 0u
+                                        %49:i32 = load %48
+                                        %50:bool = lt %47, %49
+                                        if %50 [t: %b37, f: %b38] {  # if_9
+                                          %b37 = block {  # true
+                                            exit_if  # if_9
+                                          }
+                                          %b38 = block {  # false
+                                            exit_loop  # loop_9
+                                          }
+                                        }
+                                        store %i8_1, 0i
+                                        loop [b: %b39, c: %b40] {  # loop_10
+                                          %b39 = block {  # body
+                                            %51:i32 = load %i8_1
+                                            %52:ptr<uniform, i32, read> = access %x_7, 0u
+                                            %53:i32 = load %52
+                                            %54:bool = lt %51, %53
+                                            if %54 [t: %b41, f: %b42] {  # if_10
+                                              %b41 = block {  # true
+                                                exit_if  # if_10
+                                              }
+                                              %b42 = block {  # false
+                                                exit_loop  # loop_10
+                                              }
+                                            }
+                                            store %i9, 0i
+                                            loop [b: %b43, c: %b44] {  # loop_11
+                                              %b43 = block {  # body
+                                                %55:i32 = load %i9
+                                                %56:ptr<uniform, i32, read> = access %x_7, 0u
+                                                %57:i32 = load %56
+                                                %58:bool = lt %55, %57
+                                                if %58 [t: %b45, f: %b46] {  # if_11
+                                                  %b45 = block {  # true
+                                                    exit_if  # if_11
+                                                  }
+                                                  %b46 = block {  # false
+                                                    exit_loop  # loop_11
+                                                  }
+                                                }
+                                                %59:i32 = load %a
+                                                %60:i32 = add %59, 1i
+                                                store %a, %60
+                                                continue %b44
+                                              }
+                                              %b44 = block {  # continuing
+                                                %61:i32 = load %i9
+                                                %62:i32 = add %61, 1i
+                                                store %i9, %62
+                                                next_iteration %b43
+                                              }
+                                            }
+                                            continue %b40
+                                          }
+                                          %b40 = block {  # continuing
+                                            %63:i32 = load %i8_1
+                                            %64:i32 = add %63, 1i
+                                            store %i8_1, %64
+                                            next_iteration %b39
+                                          }
+                                        }
+                                        continue %b36
+                                      }
+                                      %b36 = block {  # continuing
+                                        %65:i32 = load %i7
+                                        %66:i32 = add %65, 1i
+                                        store %i7, %66
+                                        next_iteration %b35
+                                      }
+                                    }
+                                    continue %b32
+                                  }
+                                  %b32 = block {  # continuing
+                                    %67:i32 = load %i6
+                                    %68:i32 = add %67, 1i
+                                    store %i6, %68
+                                    next_iteration %b31
+                                  }
+                                }
+                                exit_loop  # loop_7
+                              }
+                              %b28 = block {  # continuing
+                                next_iteration %b27
+                              }
+                            }
+                            continue %b24
+                          }
+                          %b24 = block {  # continuing
+                            %69:i32 = load %i5
+                            %70:i32 = add %69, 1i
+                            store %i5, %70
+                            next_iteration %b23
+                          }
+                        }
+                        continue %b20
+                      }
+                      %b20 = block {  # continuing
+                        %71:i32 = load %i4
+                        %72:i32 = add %71, 1i
+                        store %i4, %72
+                        next_iteration %b19
+                      }
+                    }
+                    continue %b16
+                  }
+                  %b16 = block {  # continuing
+                    %73:i32 = load %i3
+                    %74:i32 = add %73, 1i
+                    store %i3, %74
+                    next_iteration %b15
+                  }
+                }
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %75:i32 = load %i2
+                %76:i32 = add %75, 1i
+                store %i2, %76
+                next_iteration %b11
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %77:i32 = load %i1
+            %78:i32 = add %77, 1i
+            store %i1, %78
+            next_iteration %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %79:i32 = load %i0
+        %80:i32 = add %79, 1i
+        store %i0, %80
+        next_iteration %b3
+      }
+    }
+    %81:i32 = load %a
+    %82:bool = eq %81, 3i
+    if %82 [t: %b47, f: %b48] {  # if_12
+      %b47 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_12
+      }
+      %b48 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_12
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b49 {
+  %b49 = block {
+    %84:void = call %main_1
+    %85:vec4<f32> = load %x_GLF_color
+    %86:main_out = construct %85
+    ret %86
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a053759
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,323 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i0:ptr<function, i32, read_write> = var
+    %i1:ptr<function, i32, read_write> = var
+    %i2:ptr<function, i32, read_write> = var
+    %i3:ptr<function, i32, read_write> = var
+    %i4:ptr<function, i32, read_write> = var
+    %i5:ptr<function, i32, read_write> = var
+    %i6:ptr<function, i32, read_write> = var
+    %i7:ptr<function, i32, read_write> = var
+    %i8_1:ptr<function, i32, read_write> = var
+    %i9:ptr<function, i32, read_write> = var
+    store %a, 0i
+    store %i0, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_40:i32 = load %i0
+        %16:ptr<uniform, i32, read> = access %x_7, 0u
+        %x_42:i32 = load %16
+        %18:bool = lt %x_40, %x_42
+        if %18 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        store %i1, 0i
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %x_49:i32 = load %i1
+            %20:ptr<uniform, i32, read> = access %x_7, 0u
+            %x_51:i32 = load %20
+            %22:bool = lt %x_49, %x_51
+            if %22 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            store %i2, 0i
+            loop [b: %b11, c: %b12] {  # loop_3
+              %b11 = block {  # body
+                %x_58:i32 = load %i2
+                %24:ptr<uniform, i32, read> = access %x_7, 0u
+                %x_60:i32 = load %24
+                %26:bool = lt %x_58, %x_60
+                if %26 [t: %b13, f: %b14] {  # if_3
+                  %b13 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b14 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                store %i3, 0i
+                loop [b: %b15, c: %b16] {  # loop_4
+                  %b15 = block {  # body
+                    %x_67:i32 = load %i3
+                    %28:ptr<uniform, i32, read> = access %x_7, 0u
+                    %x_69:i32 = load %28
+                    %30:i32 = add %x_69, 2i
+                    %31:bool = lt %x_67, %30
+                    if %31 [t: %b17, f: %b18] {  # if_4
+                      %b17 = block {  # true
+                        exit_if  # if_4
+                      }
+                      %b18 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    store %i4, 0i
+                    loop [b: %b19, c: %b20] {  # loop_5
+                      %b19 = block {  # body
+                        %x_77:i32 = load %i4
+                        %33:ptr<uniform, i32, read> = access %x_7, 0u
+                        %x_79:i32 = load %33
+                        %35:bool = lt %x_77, %x_79
+                        if %35 [t: %b21, f: %b22] {  # if_5
+                          %b21 = block {  # true
+                            exit_if  # if_5
+                          }
+                          %b22 = block {  # false
+                            exit_loop  # loop_5
+                          }
+                        }
+                        store %i5, 0i
+                        loop [b: %b23, c: %b24] {  # loop_6
+                          %b23 = block {  # body
+                            %x_86:i32 = load %i5
+                            %37:ptr<uniform, i32, read> = access %x_7, 0u
+                            %x_88:i32 = load %37
+                            %39:bool = lt %x_86, %x_88
+                            if %39 [t: %b25, f: %b26] {  # if_6
+                              %b25 = block {  # true
+                                exit_if  # if_6
+                              }
+                              %b26 = block {  # false
+                                exit_loop  # loop_6
+                              }
+                            }
+                            loop [b: %b27, c: %b28] {  # loop_7
+                              %b27 = block {  # body
+                                %40:ptr<uniform, i32, read> = access %x_7, 0u
+                                %x_96:i32 = load %40
+                                %42:bool = gt %x_96, 0i
+                                if %42 [t: %b29, f: %b30] {  # if_7
+                                  %b29 = block {  # true
+                                    exit_if  # if_7
+                                  }
+                                  %b30 = block {  # false
+                                    exit_loop  # loop_7
+                                  }
+                                }
+                                store %i6, 0i
+                                loop [b: %b31, c: %b32] {  # loop_8
+                                  %b31 = block {  # body
+                                    %x_103:i32 = load %i6
+                                    %44:ptr<uniform, i32, read> = access %x_7, 0u
+                                    %x_105:i32 = load %44
+                                    %46:bool = lt %x_103, %x_105
+                                    if %46 [t: %b33, f: %b34] {  # if_8
+                                      %b33 = block {  # true
+                                        exit_if  # if_8
+                                      }
+                                      %b34 = block {  # false
+                                        exit_loop  # loop_8
+                                      }
+                                    }
+                                    store %i7, 0i
+                                    loop [b: %b35, c: %b36] {  # loop_9
+                                      %b35 = block {  # body
+                                        %x_112:i32 = load %i7
+                                        %48:ptr<uniform, i32, read> = access %x_7, 0u
+                                        %x_114:i32 = load %48
+                                        %50:bool = lt %x_112, %x_114
+                                        if %50 [t: %b37, f: %b38] {  # if_9
+                                          %b37 = block {  # true
+                                            exit_if  # if_9
+                                          }
+                                          %b38 = block {  # false
+                                            exit_loop  # loop_9
+                                          }
+                                        }
+                                        store %i8_1, 0i
+                                        loop [b: %b39, c: %b40] {  # loop_10
+                                          %b39 = block {  # body
+                                            %x_121:i32 = load %i8_1
+                                            %52:ptr<uniform, i32, read> = access %x_7, 0u
+                                            %x_123:i32 = load %52
+                                            %54:bool = lt %x_121, %x_123
+                                            if %54 [t: %b41, f: %b42] {  # if_10
+                                              %b41 = block {  # true
+                                                exit_if  # if_10
+                                              }
+                                              %b42 = block {  # false
+                                                exit_loop  # loop_10
+                                              }
+                                            }
+                                            store %i9, 0i
+                                            loop [b: %b43, c: %b44] {  # loop_11
+                                              %b43 = block {  # body
+                                                %x_130:i32 = load %i9
+                                                %56:ptr<uniform, i32, read> = access %x_7, 0u
+                                                %x_132:i32 = load %56
+                                                %58:bool = lt %x_130, %x_132
+                                                if %58 [t: %b45, f: %b46] {  # if_11
+                                                  %b45 = block {  # true
+                                                    exit_if  # if_11
+                                                  }
+                                                  %b46 = block {  # false
+                                                    exit_loop  # loop_11
+                                                  }
+                                                }
+                                                %x_135:i32 = load %a
+                                                %60:i32 = add %x_135, 1i
+                                                store %a, %60
+                                                continue %b44
+                                              }
+                                              %b44 = block {  # continuing
+                                                %x_137:i32 = load %i9
+                                                %62:i32 = add %x_137, 1i
+                                                store %i9, %62
+                                                next_iteration %b43
+                                              }
+                                            }
+                                            continue %b40
+                                          }
+                                          %b40 = block {  # continuing
+                                            %x_139:i32 = load %i8_1
+                                            %64:i32 = add %x_139, 1i
+                                            store %i8_1, %64
+                                            next_iteration %b39
+                                          }
+                                        }
+                                        continue %b36
+                                      }
+                                      %b36 = block {  # continuing
+                                        %x_141:i32 = load %i7
+                                        %66:i32 = add %x_141, 1i
+                                        store %i7, %66
+                                        next_iteration %b35
+                                      }
+                                    }
+                                    continue %b32
+                                  }
+                                  %b32 = block {  # continuing
+                                    %x_143:i32 = load %i6
+                                    %68:i32 = add %x_143, 1i
+                                    store %i6, %68
+                                    next_iteration %b31
+                                  }
+                                }
+                                exit_loop  # loop_7
+                              }
+                              %b28 = block {  # continuing
+                                next_iteration %b27
+                              }
+                            }
+                            continue %b24
+                          }
+                          %b24 = block {  # continuing
+                            %x_145:i32 = load %i5
+                            %70:i32 = add %x_145, 1i
+                            store %i5, %70
+                            next_iteration %b23
+                          }
+                        }
+                        continue %b20
+                      }
+                      %b20 = block {  # continuing
+                        %x_147:i32 = load %i4
+                        %72:i32 = add %x_147, 1i
+                        store %i4, %72
+                        next_iteration %b19
+                      }
+                    }
+                    continue %b16
+                  }
+                  %b16 = block {  # continuing
+                    %x_149:i32 = load %i3
+                    %74:i32 = add %x_149, 1i
+                    store %i3, %74
+                    next_iteration %b15
+                  }
+                }
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %x_151:i32 = load %i2
+                %76:i32 = add %x_151, 1i
+                store %i2, %76
+                next_iteration %b11
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %x_153:i32 = load %i1
+            %78:i32 = add %x_153, 1i
+            store %i1, %78
+            next_iteration %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_155:i32 = load %i0
+        %80:i32 = add %x_155, 1i
+        store %i0, %80
+        next_iteration %b3
+      }
+    }
+    %x_157:i32 = load %a
+    %82:bool = eq %x_157, 3i
+    if %82 [t: %b47, f: %b48] {  # if_12
+      %b47 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_12
+      }
+      %b48 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_12
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b49 {
+  %b49 = block {
+    %84:void = call %main_1
+    %85:vec4<f32> = load %x_GLF_color
+    %86:main_out = construct %85
+    ret %86
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..74ff1e4
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,95 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 5> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %x_51:ptr<function, bool, read_write> = var
+    %x_52:ptr<function, bool, read_write> = var
+    %8:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %9:f32 = load %8
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+    %11:f32 = load %10
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+    %13:f32 = load %12
+    %14:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %15:f32 = load %14
+    %16:bool = gt %13, %15
+    %17:f32 = select %9, %11, %16
+    store %a, %17
+    %18:f32 = load %a
+    %19:f32 = log %18
+    %20:f32 = cos %19
+    store %b, %20
+    %21:f32 = load %b
+    %22:vec4<f32> = construct %21
+    store %x_GLF_color, %22
+    %23:f32 = load %b
+    %24:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %25:f32 = load %24
+    %x_45:bool = gt %23, %25
+    store %x_52, %x_45
+    if %x_45 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %27:f32 = load %b
+        %28:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %29:f32 = load %28
+        %30:bool = lt %27, %29
+        store %x_51, %30
+        %31:bool = load %x_51
+        store %x_52, %31
+        exit_if  # if_1
+      }
+    }
+    %32:bool = load %x_52
+    if %32 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %33:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %34:f32 = load %33
+        %35:ptr<uniform, f32, read> = access %x_6, 0u, 4i, 0u
+        %36:f32 = load %35
+        %37:ptr<uniform, f32, read> = access %x_6, 0u, 4i, 0u
+        %38:f32 = load %37
+        %39:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %40:f32 = load %39
+        %41:vec4<f32> = construct %34, %36, %38, %40
+        store %x_GLF_color, %41
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..083d029
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,95 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 5> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %x_51:ptr<function, bool, read_write> = var
+    %x_52_phi:ptr<function, bool, read_write> = var
+    %8:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %x_28:f32 = load %8
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+    %x_30:f32 = load %10
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+    %x_32:f32 = load %12
+    %14:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %x_34:f32 = load %14
+    %16:bool = gt %x_32, %x_34
+    %17:f32 = select %x_28, %x_30, %16
+    store %a, %17
+    %x_37:f32 = load %a
+    %19:f32 = log %x_37
+    %20:f32 = cos %19
+    store %b, %20
+    %x_40:f32 = load %b
+    %22:vec4<f32> = construct %x_40, %x_40, %x_40, %x_40
+    store %x_GLF_color, %22
+    %x_42:f32 = load %b
+    %24:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_44:f32 = load %24
+    %x_45:bool = gt %x_42, %x_44
+    store %x_52_phi, %x_45
+    if %x_45 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_48:f32 = load %b
+        %28:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_50:f32 = load %28
+        %30:bool = lt %x_48, %x_50
+        store %x_51, %30
+        %31:bool = load %x_51
+        store %x_52_phi, %31
+        exit_if  # if_1
+      }
+    }
+    %x_52:bool = load %x_52_phi
+    if %x_52 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %33:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %x_56:f32 = load %33
+        %35:ptr<uniform, f32, read> = access %x_6, 0u, 4i, 0u
+        %x_58:f32 = load %35
+        %37:ptr<uniform, f32, read> = access %x_6, 0u, 4i, 0u
+        %x_60:f32 = load %37
+        %39:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+        %x_62:f32 = load %39
+        %41:vec4<f32> = construct %x_56, %x_58, %x_60, %x_62
+        store %x_GLF_color, %41
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..97f6095
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,60 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %6:i32 = load %5
+    %7:f32 = convert %6
+    %8:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %9:i32 = load %8
+    %10:f32 = convert %9
+    %11:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %12:i32 = load %11
+    %13:f32 = convert %12
+    %14:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %15:i32 = load %14
+    %16:f32 = convert %15
+    %17:vec4<f32> = construct %7, %10, %13, %16
+    store %x_GLF_color, %17
+    %18:vec4<f32> = load %x_GLF_color
+    store %v, %18
+    store %x_GLF_color, vec4<f32>(0.0f)
+    %19:vec4<f32> = load %v
+    store %x_GLF_color, %19
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b3 {
+  %b3 = block {
+    %21:void = call %main_1
+    %22:vec4<f32> = load %x_GLF_color
+    %23:main_out = construct %22
+    ret %23
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3c8563a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,60 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_25:i32 = load %5
+    %7:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %x_28:i32 = load %7
+    %9:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %x_31:i32 = load %9
+    %11:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_34:i32 = load %11
+    %13:f32 = convert %x_25
+    %14:f32 = convert %x_28
+    %15:f32 = convert %x_31
+    %16:f32 = convert %x_34
+    %17:vec4<f32> = construct %13, %14, %15, %16
+    store %x_GLF_color, %17
+    %x_37:vec4<f32> = load %x_GLF_color
+    store %v, %x_37
+    store %x_GLF_color, vec4<f32>(0.0f)
+    %x_38:vec4<f32> = load %v
+    store %x_GLF_color, %x_38
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b3 {
+  %b3 = block {
+    %21:void = call %main_1
+    %22:vec4<f32> = load %x_GLF_color
+    %23:main_out = construct %22
+    ret %23
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2d413e7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,105 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %c:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %7:i32 = load %6
+    store %c, %7
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %9:i32 = load %8
+    store %i, %9
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %10:i32 = load %i
+        %11:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %12:i32 = load %11
+        %13:bool = lt %10, %12
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %14:i32 = load %i
+        %15:i32 = complement %14
+        store %c, %15
+        %16:i32 = load %c
+        %17:i32 = clamp %16, 0i, 3i
+        store %c, %17
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %18:i32 = load %i
+        %19:i32 = add %18, 1i
+        store %i, %19
+        next_iteration %b3
+      }
+    }
+    %20:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %21:i32 = load %20
+    %22:f32 = convert %21
+    %23:vec4<f32> = construct %22
+    store %x_GLF_color, %23
+    %24:i32 = load %c
+    %25:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %26:i32 = load %25
+    %27:bool = eq %24, %26
+    if %27 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        %28:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %29:i32 = load %28
+        %30:f32 = convert %29
+        %31:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %32:i32 = load %31
+        %33:f32 = convert %32
+        %34:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %35:i32 = load %34
+        %36:f32 = convert %35
+        %37:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %38:i32 = load %37
+        %39:f32 = convert %38
+        %40:vec4<f32> = construct %30, %33, %36, %39
+        store %x_GLF_color, %40
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %42:void = call %main_1
+    %43:vec4<f32> = load %x_GLF_color
+    %44:main_out = construct %43
+    ret %44
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d2c3809
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,105 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %c:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_27:i32 = load %6
+    store %c, %x_27
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_29:i32 = load %8
+    store %i, %x_29
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_34:i32 = load %i
+        %11:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_36:i32 = load %11
+        %13:bool = lt %x_34, %x_36
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_39:i32 = load %i
+        %15:i32 = complement %x_39
+        store %c, %15
+        %x_41:i32 = load %c
+        %17:i32 = clamp %x_41, 0i, 3i
+        store %c, %17
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_43:i32 = load %i
+        %19:i32 = add %x_43, 1i
+        store %i, %19
+        next_iteration %b3
+      }
+    }
+    %20:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_46:i32 = load %20
+    %x_47:f32 = convert %x_46
+    %23:vec4<f32> = construct %x_47, %x_47, %x_47, %x_47
+    store %x_GLF_color, %23
+    %x_49:i32 = load %c
+    %25:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_51:i32 = load %25
+    %27:bool = eq %x_49, %x_51
+    if %27 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        %28:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_56:i32 = load %28
+        %30:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_59:i32 = load %30
+        %32:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_62:i32 = load %32
+        %34:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_65:i32 = load %34
+        %36:f32 = convert %x_56
+        %37:f32 = convert %x_59
+        %38:f32 = convert %x_62
+        %39:f32 = convert %x_65
+        %40:vec4<f32> = construct %36, %37, %38, %39
+        store %x_GLF_color, %40
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %42:void = call %main_1
+    %43:vec4<f32> = load %x_GLF_color
+    %44:main_out = construct %43
+    ret %44
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1054fba
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,92 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  v1:vec2<f32> @offset(0)
+}
+
+strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+    %6:f32 = load_vector_element %5, 0u
+    %7:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+    %8:f32 = load_vector_element %7, 1u
+    %9:bool = lt %6, %8
+    if %9 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %10:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %11:i32 = load %10
+        %12:f32 = convert %11
+        %13:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %14:i32 = load %13
+        %15:f32 = convert %14
+        %16:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %17:i32 = load %16
+        %18:f32 = convert %17
+        %19:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %20:i32 = load %19
+        %21:f32 = convert %20
+        %22:vec4<f32> = construct %12, %15, %18, %21
+        store %x_GLF_color, %22
+        %23:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+        %24:f32 = load_vector_element %23, 0u
+        %25:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+        %26:f32 = load_vector_element %25, 1u
+        %27:bool = gt %24, %26
+        if %27 [t: %b5] {  # if_2
+          %b5 = block {  # true
+            %28:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+            %29:i32 = load %28
+            %30:f32 = convert %29
+            %31:vec4<f32> = construct %30
+            store %x_GLF_color, %31
+            exit_if  # if_2
+          }
+        }
+        ret
+      }
+      %b4 = block {  # false
+        %32:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %33:i32 = load %32
+        %34:f32 = convert %33
+        %35:vec4<f32> = construct %34
+        store %x_GLF_color, %35
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %37:void = call %main_1
+    %38:vec4<f32> = load %x_GLF_color
+    %39:main_out = construct %38
+    ret %39
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..824e5de
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,92 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  v1:vec2<f32> @offset(0)
+}
+
+strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+    %x_29:f32 = load_vector_element %5, 0u
+    %7:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+    %x_31:f32 = load_vector_element %7, 1u
+    %9:bool = lt %x_29, %x_31
+    if %9 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %10:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_37:i32 = load %10
+        %12:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_40:i32 = load %12
+        %14:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_43:i32 = load %14
+        %16:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_46:i32 = load %16
+        %18:f32 = convert %x_37
+        %19:f32 = convert %x_40
+        %20:f32 = convert %x_43
+        %21:f32 = convert %x_46
+        %22:vec4<f32> = construct %18, %19, %20, %21
+        store %x_GLF_color, %22
+        %23:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+        %x_50:f32 = load_vector_element %23, 0u
+        %25:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+        %x_52:f32 = load_vector_element %25, 1u
+        %27:bool = gt %x_50, %x_52
+        if %27 [t: %b5] {  # if_2
+          %b5 = block {  # true
+            %28:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+            %x_57:i32 = load %28
+            %x_58:f32 = convert %x_57
+            %31:vec4<f32> = construct %x_58, %x_58, %x_58, %x_58
+            store %x_GLF_color, %31
+            exit_if  # if_2
+          }
+        }
+        ret
+      }
+      %b4 = block {  # false
+        %32:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_61:i32 = load %32
+        %x_62:f32 = convert %x_61
+        %35:vec4<f32> = construct %x_62, %x_62, %x_62, %x_62
+        store %x_GLF_color, %35
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %37:void = call %main_1
+    %38:vec4<f32> = load %x_GLF_color
+    %39:main_out = construct %38
+    ret %39
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..97c118a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,65 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_29:ptr<function, bool, read_write> = var
+    %x_30:ptr<function, bool, read_write> = var
+    store %x_GLF_color, vec4<f32>(0.0f)
+    %6:ptr<uniform, f32, read> = access %x_5, 0u
+    %7:f32 = load %6
+    %x_24:bool = lt %7, 0.0f
+    store %x_30, %x_24
+    if %x_24 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %9:ptr<uniform, f32, read> = access %x_5, 0u
+        %10:f32 = load %9
+        %11:bool = lt %10, 0.0f
+        store %x_29, %11
+        %12:bool = load %x_29
+        store %x_30, %12
+        exit_if  # if_1
+      }
+    }
+    %13:bool = load %x_30
+    if %13 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f)
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %15:void = call %main_1
+    %16:vec4<f32> = load %x_GLF_color
+    %17:main_out = construct %16
+    ret %17
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2303bd4
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,65 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_29:ptr<function, bool, read_write> = var
+    %x_30_phi:ptr<function, bool, read_write> = var
+    store %x_GLF_color, vec4<f32>(0.0f)
+    %6:ptr<uniform, f32, read> = access %x_5, 0u
+    %x_23:f32 = load %6
+    %x_24:bool = lt %x_23, 0.0f
+    store %x_30_phi, %x_24
+    if %x_24 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %9:ptr<uniform, f32, read> = access %x_5, 0u
+        %x_28:f32 = load %9
+        %11:bool = lt %x_28, 0.0f
+        store %x_29, %11
+        %12:bool = load %x_29
+        store %x_30_phi, %12
+        exit_if  # if_1
+      }
+    }
+    %x_30:bool = load %x_30_phi
+    if %x_30 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f)
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %15:void = call %main_1
+    %16:vec4<f32> = load %x_GLF_color
+    %17:main_out = construct %16
+    ret %17
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..e3ce766
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.spvasm.expected.ir.msl
@@ -0,0 +1,182 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 6> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_33:ptr<function, vec4<f32>, read_write> = var
+    %x_36:ptr<function, i32, read_write> = var
+    %x_38:ptr<function, i32, read_write> = var
+    %x_74:ptr<function, bool, read_write> = var
+    %x_75:ptr<function, bool, read_write> = var
+    %9:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_29:i32 = load %9
+    %11:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %x_31:i32 = load %11
+    store %x_33, vec4<f32>(0.0f)
+    store %x_36, %x_29
+    store %x_38, %x_31
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_53:ptr<function, vec4<f32>, read_write> = var
+        %x_34:ptr<function, vec4<f32>, read_write> = var
+        %x_62:ptr<function, i32, read_write> = var
+        %x_39:ptr<function, i32, read_write> = var
+        %17:ptr<uniform, i32, read> = access %x_5, 0u, 4i, 0u
+        %x_41:i32 = load %17
+        %19:i32 = load %x_38
+        %20:bool = lt %19, %x_41
+        if %20 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_56:ptr<function, i32, read_write> = var
+        switch 0u [c: (default, %b7)] {  # switch_1
+          %b7 = block {  # case
+            %22:i32 = load %x_38
+            %23:ptr<uniform, i32, read> = access %x_5, 0u, 3i, 0u
+            %24:i32 = load %23
+            %25:bool = gt %22, %24
+            if %25 [t: %b8] {  # if_2
+              %b8 = block {  # true
+                %26:vec4<f32> = load %x_33
+                store %x_34, %26
+                store %x_62, 2i
+                exit_switch  # switch_1
+              }
+            }
+            %27:vec4<f32> = load %x_33
+            store %x_53, %27
+            store %x_56, %x_29
+            loop [b: %b9, c: %b10] {  # loop_2
+              %b9 = block {  # body
+                %x_54:ptr<function, vec4<f32>, read_write> = var
+                %x_57:ptr<function, i32, read_write> = var
+                %30:i32 = load %x_56
+                %31:bool = lt %30, %x_41
+                if %31 [t: %b11, f: %b12] {  # if_3
+                  %b11 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b12 = block {  # false
+                    exit_loop  # loop_2
+                  }
+                }
+                continue %b10
+              }
+              %b10 = block {  # continuing
+                %32:i32 = load %x_38
+                %33:i32 = load %x_56
+                %34:i32 = add %32, %33
+                %35:f32 = convert %34
+                %36:vec4<f32> = construct %35
+                store %x_54, %36
+                %37:i32 = load %x_56
+                %38:i32 = add %37, 1i
+                store %x_57, %38
+                %39:vec4<f32> = load %x_54
+                store %x_53, %39
+                %40:i32 = load %x_57
+                store %x_56, %40
+                next_iteration %b9
+              }
+            }
+            %41:vec4<f32> = load %x_53
+            store %x_GLF_color, %41
+            %42:vec4<f32> = load %x_53
+            store %x_34, %42
+            store %x_62, %x_31
+            exit_switch  # switch_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %43:i32 = load %x_38
+        %44:i32 = add %43, 1i
+        store %x_39, %44
+        %45:vec4<f32> = load %x_34
+        store %x_33, %45
+        %46:i32 = load %x_36
+        %47:i32 = load %x_62
+        %48:i32 = add %46, %47
+        store %x_36, %48
+        %49:i32 = load %x_39
+        store %x_38, %49
+        next_iteration %b3
+      }
+    }
+    %50:vec4<f32> = load %x_GLF_color
+    %51:ptr<uniform, i32, read> = access %x_5, 0u, 2i, 0u
+    %52:i32 = load %51
+    %53:f32 = convert %52
+    %54:vec4<f32> = construct %53
+    %55:vec4<bool> = eq %50, %54
+    %x_69:bool = all %55
+    store %x_75, %x_69
+    if %x_69 [t: %b13] {  # if_4
+      %b13 = block {  # true
+        %57:i32 = load %x_36
+        %58:ptr<uniform, i32, read> = access %x_5, 0u, 5i, 0u
+        %59:i32 = load %58
+        %60:bool = eq %57, %59
+        store %x_74, %60
+        %61:bool = load %x_74
+        store %x_75, %61
+        exit_if  # if_4
+      }
+    }
+    %62:bool = load %x_75
+    if %62 [t: %b14, f: %b15] {  # if_5
+      %b14 = block {  # true
+        %x_79:f32 = convert %x_31
+        %x_80:f32 = convert %x_29
+        %65:vec4<f32> = construct %x_79, %x_80, %x_80, %x_79
+        store %x_GLF_color, %65
+        exit_if  # if_5
+      }
+      %b15 = block {  # false
+        %66:f32 = convert %x_29
+        %67:vec4<f32> = construct %66
+        store %x_GLF_color, %67
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b16 {
+  %b16 = block {
+    %69:void = call %main_1
+    %70:vec4<f32> = load %x_GLF_color
+    %71:main_out = construct %70
+    ret %71
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9238001
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl.expected.ir.msl
@@ -0,0 +1,185 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 6> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_36:ptr<function, i32, read_write> = var
+    %x_74:ptr<function, bool, read_write> = var
+    %x_33_phi:ptr<function, vec4<f32>, read_write> = var
+    %x_36_phi:ptr<function, i32, read_write> = var
+    %x_38_phi:ptr<function, i32, read_write> = var
+    %x_75_phi:ptr<function, bool, read_write> = var
+    %10:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_29:i32 = load %10
+    %12:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+    %x_31:i32 = load %12
+    store %x_33_phi, vec4<f32>(0.0f)
+    store %x_36_phi, %x_29
+    store %x_38_phi, %x_31
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_53:ptr<function, vec4<f32>, read_write> = var
+        %x_39:ptr<function, i32, read_write> = var
+        %x_34_phi:ptr<function, vec4<f32>, read_write> = var
+        %x_62_phi:ptr<function, i32, read_write> = var
+        %x_33:vec4<f32> = load %x_33_phi
+        %19:i32 = load %x_36_phi
+        store %x_36, %19
+        %x_38:i32 = load %x_38_phi
+        %21:ptr<uniform, i32, read> = access %x_5, 0u, 4i, 0u
+        %x_41:i32 = load %21
+        %23:bool = lt %x_38, %x_41
+        if %23 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_53_phi:ptr<function, vec4<f32>, read_write> = var
+        %x_56_phi:ptr<function, i32, read_write> = var
+        switch 0u [c: (default, %b7)] {  # switch_1
+          %b7 = block {  # case
+            %26:ptr<uniform, i32, read> = access %x_5, 0u, 3i, 0u
+            %x_48:i32 = load %26
+            %28:bool = gt %x_38, %x_48
+            if %28 [t: %b8] {  # if_2
+              %b8 = block {  # true
+                store %x_34_phi, %x_33
+                store %x_62_phi, 2i
+                exit_switch  # switch_1
+              }
+            }
+            store %x_53_phi, %x_33
+            store %x_56_phi, %x_29
+            loop [b: %b9, c: %b10] {  # loop_2
+              %b9 = block {  # body
+                %x_54:ptr<function, vec4<f32>, read_write> = var
+                %x_57:ptr<function, i32, read_write> = var
+                %31:vec4<f32> = load %x_53_phi
+                store %x_53, %31
+                %x_56:i32 = load %x_56_phi
+                %33:bool = lt %x_56, %x_41
+                if %33 [t: %b11, f: %b12] {  # if_3
+                  %b11 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b12 = block {  # false
+                    exit_loop  # loop_2
+                  }
+                }
+                continue %b10
+              }
+              %b10 = block {  # continuing
+                %34:i32 = add %x_38, %x_56
+                %x_61:f32 = convert %34
+                %36:vec4<f32> = construct %x_61, %x_61, %x_61, %x_61
+                store %x_54, %36
+                %37:i32 = add %x_56, 1i
+                store %x_57, %37
+                %38:vec4<f32> = load %x_54
+                store %x_53_phi, %38
+                %39:i32 = load %x_57
+                store %x_56_phi, %39
+                next_iteration %b9
+              }
+            }
+            %40:vec4<f32> = load %x_53
+            store %x_GLF_color, %40
+            %41:vec4<f32> = load %x_53
+            store %x_34_phi, %41
+            store %x_62_phi, %x_31
+            exit_switch  # switch_1
+          }
+        }
+        %x_34:vec4<f32> = load %x_34_phi
+        %x_62:i32 = load %x_62_phi
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %44:i32 = add %x_38, 1i
+        store %x_39, %44
+        store %x_33_phi, %x_34
+        %45:i32 = load %x_36
+        %46:i32 = bitcast %x_62
+        %47:i32 = add %45, %46
+        %48:i32 = bitcast %47
+        store %x_36_phi, %48
+        %49:i32 = load %x_39
+        store %x_38_phi, %49
+        next_iteration %b3
+      }
+    }
+    %x_63:vec4<f32> = load %x_GLF_color
+    %51:ptr<uniform, i32, read> = access %x_5, 0u, 2i, 0u
+    %x_65:i32 = load %51
+    %x_66:f32 = convert %x_65
+    %54:vec4<f32> = construct %x_66, %x_66, %x_66, %x_66
+    %55:vec4<bool> = eq %x_63, %54
+    %x_69:bool = all %55
+    store %x_75_phi, %x_69
+    if %x_69 [t: %b13] {  # if_4
+      %b13 = block {  # true
+        %57:ptr<uniform, i32, read> = access %x_5, 0u, 5i, 0u
+        %x_73:i32 = load %57
+        %59:i32 = load %x_36
+        %60:i32 = bitcast %x_73
+        %61:bool = eq %59, %60
+        store %x_74, %61
+        %62:bool = load %x_74
+        store %x_75_phi, %62
+        exit_if  # if_4
+      }
+    }
+    %x_75:bool = load %x_75_phi
+    if %x_75 [t: %b14, f: %b15] {  # if_5
+      %b14 = block {  # true
+        %x_79:f32 = convert %x_31
+        %x_80:f32 = convert %x_29
+        %66:vec4<f32> = construct %x_79, %x_80, %x_80, %x_79
+        store %x_GLF_color, %66
+        exit_if  # if_5
+      }
+      %b15 = block {  # false
+        %x_82:f32 = convert %x_29
+        %68:vec4<f32> = construct %x_82, %x_82, %x_82, %x_82
+        store %x_GLF_color, %68
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b16 {
+  %b16 = block {
+    %70:void = call %main_1
+    %71:vec4<f32> = load %x_GLF_color
+    %72:main_out = construct %71
+    ret %72
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..98fb23e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,151 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, vec2<f32>, read_write> = var
+    %b:ptr<function, vec3<f32>, read_write> = var
+    %x_105:ptr<function, bool, read_write> = var
+    %x_106:ptr<function, bool, read_write> = var
+    %x_111:ptr<function, bool, read_write> = var
+    %x_112:ptr<function, bool, read_write> = var
+    store %a, vec2<f32>(1.0f)
+    store %b, vec3<f32>(0.0f)
+    %11:f32 = load_vector_element %gl_FragCoord, 1u
+    %12:i32 = convert %11
+    %13:bool = lt %12, 40i
+    if %13 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %b, vec3<f32>(0.10000000149011611938f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %14:f32 = load_vector_element %gl_FragCoord, 1u
+        %15:i32 = convert %14
+        %16:bool = lt %15, 60i
+        if %16 [t: %b5, f: %b6] {  # if_2
+          %b5 = block {  # true
+            store %b, vec3<f32>(0.20000000298023223877f)
+            exit_if  # if_2
+          }
+          %b6 = block {  # false
+            %17:f32 = load_vector_element %gl_FragCoord, 1u
+            %18:bool = lt %17, 80.0f
+            if %18 [t: %b7, f: %b8] {  # if_3
+              %b7 = block {  # true
+                %19:f32 = load_vector_element %a, 0u
+                %20:vec3<f32> = construct %19
+                %21:ptr<uniform, f32, read> = access %x_8, 0u
+                %22:f32 = load %21
+                %23:vec3<f32> = construct %22
+                %24:vec3<f32> = add %20, %23
+                %25:vec3<f32> = cos %24
+                %26:vec3<f32> = add %25, vec3<f32>(0.00999999977648258209f)
+                store %b, %26
+                exit_if  # if_3
+              }
+              %b8 = block {  # false
+                %27:f32 = load_vector_element %gl_FragCoord, 1u
+                %28:i32 = convert %27
+                %29:bool = lt %28, 100i
+                if %29 [t: %b9, f: %b10] {  # if_4
+                  %b9 = block {  # true
+                    %30:ptr<uniform, f32, read> = access %x_8, 0u
+                    %31:f32 = load %30
+                    %32:vec3<f32> = construct %31
+                    %33:vec3<f32> = cos %32
+                    store %b, %33
+                    exit_if  # if_4
+                  }
+                  %b10 = block {  # false
+                    %34:f32 = load_vector_element %gl_FragCoord, 1u
+                    %35:i32 = convert %34
+                    %36:bool = lt %35, 500i
+                    if %36 [t: %b11] {  # if_5
+                      %b11 = block {  # true
+                        store %b, vec3<f32>(0.540302276611328125f, 0.540302276611328125f, -0.99996083974838256836f)
+                        exit_if  # if_5
+                      }
+                    }
+                    exit_if  # if_4
+                  }
+                }
+                exit_if  # if_3
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        exit_if  # if_1
+      }
+    }
+    %37:f32 = load_vector_element %b, 0u
+    %x_100:bool = lt %37, 1.01999998092651367188f
+    store %x_106, %x_100
+    if %x_100 [t: %b12] {  # if_6
+      %b12 = block {  # true
+        %39:f32 = load_vector_element %b, 1u
+        %40:bool = lt %39, 1.01999998092651367188f
+        store %x_105, %40
+        %41:bool = load %x_105
+        store %x_106, %41
+        exit_if  # if_6
+      }
+    }
+    %42:bool = load %x_106
+    store %x_112, %42
+    %43:bool = load %x_106
+    if %43 [t: %b13] {  # if_7
+      %b13 = block {  # true
+        %44:f32 = load_vector_element %b, 2u
+        %45:bool = lt %44, 1.01999998092651367188f
+        store %x_111, %45
+        %46:bool = load %x_111
+        store %x_112, %46
+        exit_if  # if_7
+      }
+    }
+    %47:bool = load %x_112
+    if %47 [t: %b14, f: %b15] {  # if_8
+      %b14 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_8
+      }
+      %b15 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_8
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b16 {
+  %b16 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %50:void = call %main_1
+    %51:vec4<f32> = load %x_GLF_color
+    %52:main_out = construct %51
+    ret %52
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0c09b27
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,150 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, vec2<f32>, read_write> = var
+    %b:ptr<function, vec3<f32>, read_write> = var
+    %x_105:ptr<function, bool, read_write> = var
+    %x_111:ptr<function, bool, read_write> = var
+    %x_106_phi:ptr<function, bool, read_write> = var
+    %x_112_phi:ptr<function, bool, read_write> = var
+    store %a, vec2<f32>(1.0f)
+    store %b, vec3<f32>(0.0f)
+    %x_52:f32 = load_vector_element %gl_FragCoord, 1u
+    %12:i32 = convert %x_52
+    %13:bool = lt %12, 40i
+    if %13 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %b, vec3<f32>(0.10000000149011611938f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %x_59:f32 = load_vector_element %gl_FragCoord, 1u
+        %15:i32 = convert %x_59
+        %16:bool = lt %15, 60i
+        if %16 [t: %b5, f: %b6] {  # if_2
+          %b5 = block {  # true
+            store %b, vec3<f32>(0.20000000298023223877f)
+            exit_if  # if_2
+          }
+          %b6 = block {  # false
+            %x_66:f32 = load_vector_element %gl_FragCoord, 1u
+            %18:bool = lt %x_66, 80.0f
+            if %18 [t: %b7, f: %b8] {  # if_3
+              %b7 = block {  # true
+                %x_72:f32 = load_vector_element %a, 0u
+                %20:ptr<uniform, f32, read> = access %x_8, 0u
+                %x_74:f32 = load %20
+                %22:vec3<f32> = construct %x_72, %x_72, %x_72
+                %23:vec3<f32> = construct %x_74, %x_74, %x_74
+                %24:vec3<f32> = add %22, %23
+                %25:vec3<f32> = cos %24
+                %26:vec3<f32> = add %25, vec3<f32>(0.00999999977648258209f)
+                store %b, %26
+                exit_if  # if_3
+              }
+              %b8 = block {  # false
+                %x_82:f32 = load_vector_element %gl_FragCoord, 1u
+                %28:i32 = convert %x_82
+                %29:bool = lt %28, 100i
+                if %29 [t: %b9, f: %b10] {  # if_4
+                  %b9 = block {  # true
+                    %30:ptr<uniform, f32, read> = access %x_8, 0u
+                    %x_89:f32 = load %30
+                    %32:vec3<f32> = construct %x_89, %x_89, %x_89
+                    %33:vec3<f32> = cos %32
+                    store %b, %33
+                    exit_if  # if_4
+                  }
+                  %b10 = block {  # false
+                    %x_93:f32 = load_vector_element %gl_FragCoord, 1u
+                    %35:i32 = convert %x_93
+                    %36:bool = lt %35, 500i
+                    if %36 [t: %b11] {  # if_5
+                      %b11 = block {  # true
+                        store %b, vec3<f32>(0.540302276611328125f, 0.540302276611328125f, -0.99996083974838256836f)
+                        exit_if  # if_5
+                      }
+                    }
+                    exit_if  # if_4
+                  }
+                }
+                exit_if  # if_3
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        exit_if  # if_1
+      }
+    }
+    %x_99:f32 = load_vector_element %b, 0u
+    %x_100:bool = lt %x_99, 1.01999998092651367188f
+    store %x_106_phi, %x_100
+    if %x_100 [t: %b12] {  # if_6
+      %b12 = block {  # true
+        %x_104:f32 = load_vector_element %b, 1u
+        %40:bool = lt %x_104, 1.01999998092651367188f
+        store %x_105, %40
+        %41:bool = load %x_105
+        store %x_106_phi, %41
+        exit_if  # if_6
+      }
+    }
+    %x_106:bool = load %x_106_phi
+    store %x_112_phi, %x_106
+    if %x_106 [t: %b13] {  # if_7
+      %b13 = block {  # true
+        %x_110:f32 = load_vector_element %b, 2u
+        %44:bool = lt %x_110, 1.01999998092651367188f
+        store %x_111, %44
+        %45:bool = load %x_111
+        store %x_112_phi, %45
+        exit_if  # if_7
+      }
+    }
+    %x_112:bool = load %x_112_phi
+    if %x_112 [t: %b14, f: %b15] {  # if_8
+      %b14 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_8
+      }
+      %b15 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_8
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b16 {
+  %b16 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %49:void = call %main_1
+    %50:vec4<f32> = load %x_GLF_color
+    %51:main_out = construct %50
+    ret %51
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..9ecb0fe
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,140 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+S = struct @align(4) {
+  arr:array<i32, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_struct_S_i1_2_1_i1_ = func(%s:ptr<function, S, read_write>, %x:ptr<function, i32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %6:ptr<function, i32, read_write> = access %s, 0u, 1i
+    %7:i32 = load %x
+    %8:i32 = add %7, 1i
+    store %6, %8
+    %9:ptr<uniform, i32, read> = access %x_9, 0u
+    %10:i32 = load %9
+    %11:ptr<function, i32, read_write> = access %s, 0u, %10
+    %12:i32 = load %11
+    %13:i32 = load %x
+    %14:bool = eq %12, %13
+    if %14 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret -1i
+      }
+    }
+    %x_21:i32 = load %x
+    ret %x_21
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %s_1:ptr<function, S, read_write> = var
+    %param:ptr<function, S, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    store %a, 0i
+    store %i, 0i
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %23:i32 = load %i
+        %24:ptr<uniform, i32, read> = access %x_9, 0u
+        %25:i32 = load %24
+        %26:i32 = add 2i, %25
+        %27:bool = lt %23, %26
+        if %27 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        store %j, 0i
+        loop [b: %b9, c: %b10] {  # loop_2
+          %b9 = block {  # body
+            %28:i32 = load %j
+            %29:ptr<uniform, i32, read> = access %x_9, 0u
+            %30:i32 = load %29
+            %31:i32 = add 3i, %30
+            %32:bool = lt %28, %31
+            if %32 [t: %b11, f: %b12] {  # if_3
+              %b11 = block {  # true
+                exit_if  # if_3
+              }
+              %b12 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_28:i32 = load %i
+            %x_29:i32 = load %j
+            %35:S = load %s_1
+            store %param, %35
+            %36:i32 = add %x_28, %x_29
+            store %param_1, %36
+            %x_31:i32 = call %func_struct_S_i1_2_1_i1_, %param, %param_1
+            %38:i32 = load %a
+            %39:i32 = add %38, %x_31
+            store %a, %39
+            continue %b10
+          }
+          %b10 = block {  # continuing
+            %40:i32 = load %j
+            %41:i32 = add %40, 1i
+            store %j, %41
+            next_iteration %b9
+          }
+        }
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        %42:i32 = load %i
+        %43:i32 = add %42, 1i
+        store %i, %43
+        next_iteration %b5
+      }
+    }
+    %44:i32 = load %a
+    %45:bool = eq %44, 30i
+    if %45 [t: %b13, f: %b14] {  # if_4
+      %b13 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_4
+      }
+      %b14 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b15 {
+  %b15 = block {
+    %47:void = call %main_1
+    %48:vec4<f32> = load %x_GLF_color
+    %49:main_out = construct %48
+    ret %49
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..45174b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,140 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+S = struct @align(4) {
+  arr:array<i32, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_struct_S_i1_2_1_i1_ = func(%s:ptr<function, S, read_write>, %x:ptr<function, i32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %x_16:i32 = load %x
+    %7:ptr<function, i32, read_write> = access %s, 0u, 1i
+    %8:i32 = add %x_16, 1i
+    store %7, %8
+    %9:ptr<uniform, i32, read> = access %x_9, 0u
+    %x_18:i32 = load %9
+    %11:ptr<function, i32, read_write> = access %s, 0u, %x_18
+    %x_19:i32 = load %11
+    %x_20:i32 = load %x
+    %14:bool = eq %x_19, %x_20
+    if %14 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret -1i
+      }
+    }
+    %x_21:i32 = load %x
+    ret %x_21
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %s_1:ptr<function, S, read_write> = var
+    %param:ptr<function, S, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    store %a, 0i
+    store %i, 0i
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %x_22:i32 = load %i
+        %24:ptr<uniform, i32, read> = access %x_9, 0u
+        %x_23:i32 = load %24
+        %26:i32 = add 2i, %x_23
+        %27:bool = lt %x_22, %26
+        if %27 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        store %j, 0i
+        loop [b: %b9, c: %b10] {  # loop_2
+          %b9 = block {  # body
+            %x_25:i32 = load %j
+            %29:ptr<uniform, i32, read> = access %x_9, 0u
+            %x_26:i32 = load %29
+            %31:i32 = add 3i, %x_26
+            %32:bool = lt %x_25, %31
+            if %32 [t: %b11, f: %b12] {  # if_3
+              %b11 = block {  # true
+                exit_if  # if_3
+              }
+              %b12 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_28:i32 = load %i
+            %x_29:i32 = load %j
+            %x_79:S = load %s_1
+            store %param, %x_79
+            %36:i32 = add %x_28, %x_29
+            store %param_1, %36
+            %x_31:i32 = call %func_struct_S_i1_2_1_i1_, %param, %param_1
+            %x_32:i32 = load %a
+            %39:i32 = add %x_32, %x_31
+            store %a, %39
+            continue %b10
+          }
+          %b10 = block {  # continuing
+            %x_34:i32 = load %j
+            %41:i32 = add %x_34, 1i
+            store %j, %41
+            next_iteration %b9
+          }
+        }
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        %x_36:i32 = load %i
+        %43:i32 = add %x_36, 1i
+        store %i, %43
+        next_iteration %b5
+      }
+    }
+    %x_38:i32 = load %a
+    %45:bool = eq %x_38, 30i
+    if %45 [t: %b13, f: %b14] {  # if_4
+      %b13 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_4
+      }
+      %b14 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b15 {
+  %b15 = block {
+    %47:void = call %main_1
+    %48:vec4<f32> = load %x_GLF_color
+    %49:main_out = construct %48
+    ret %49
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..47db413
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,91 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %v:ptr<function, vec4<f32>, read_write> = var
+    store %x_GLF_color, vec4<f32>(0.0f)
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %7:i32 = load %i
+        %8:ptr<uniform, i32, read> = access %x_6, 0u
+        %9:i32 = load %8
+        %10:bool = lt %7, %9
+        if %10 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %11:ptr<uniform, i32, read> = access %x_6, 0u
+            %12:i32 = load %11
+            %13:bool = eq %12, 1i
+            if %13 [t: %b9] {  # if_2
+              %b9 = block {  # true
+                store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+                exit_if  # if_2
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            break_if true %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %14:i32 = load %i
+        %15:i32 = add %14, 1i
+        store %i, %15
+        next_iteration %b3
+      }
+    }
+    %16:ptr<uniform, i32, read> = access %x_9, 0u
+    %17:i32 = load %16
+    %18:f32 = convert %17
+    store_vector_element %v, 1u, %18
+    %19:f32 = load_vector_element %v, 1u
+    store_vector_element %x_GLF_color, 1u, %19
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %21:void = call %main_1
+    %22:vec4<f32> = load %x_GLF_color
+    %23:main_out = construct %22
+    ret %23
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ac6e258
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,91 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %v:ptr<function, vec4<f32>, read_write> = var
+    store %x_GLF_color, vec4<f32>(0.0f)
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_38:i32 = load %i
+        %8:ptr<uniform, i32, read> = access %x_6, 0u
+        %x_40:i32 = load %8
+        %10:bool = lt %x_38, %x_40
+        if %10 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %11:ptr<uniform, i32, read> = access %x_6, 0u
+            %x_48:i32 = load %11
+            %13:bool = eq %x_48, 1i
+            if %13 [t: %b9] {  # if_2
+              %b9 = block {  # true
+                store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+                exit_if  # if_2
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            break_if true %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_52:i32 = load %i
+        %15:i32 = add %x_52, 1i
+        store %i, %15
+        next_iteration %b3
+      }
+    }
+    %16:ptr<uniform, i32, read> = access %x_9, 0u
+    %x_55:i32 = load %16
+    %18:f32 = convert %x_55
+    store_vector_element %v, 1u, %18
+    %x_59:f32 = load_vector_element %v, 1u
+    store_vector_element %x_GLF_color, 1u, %x_59
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %21:void = call %main_1
+    %22:vec4<f32> = load %x_GLF_color
+    %23:main_out = construct %22
+    ret %23
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..22f3794
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,106 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(16) {
+  sequence:vec4<i32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, vec4<i32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %sum:ptr<function, i32, read_write> = var
+    store %a, vec4<i32>(0i)
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %7:i32 = load %i
+        %8:ptr<uniform, vec4<i32>, read> = access %x_7, 0u
+        %9:i32 = load_vector_element %8, 3u
+        %10:i32 = add %9, 1i
+        %11:bool = lt %7, %10
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %12:ptr<uniform, vec4<i32>, read> = access %x_7, 0u
+        %13:i32 = load %i
+        %14:ptr<uniform, vec4<i32>, read> = access %x_7, 0u
+        %15:i32 = load_vector_element %14, 0u
+        %16:i32 = load %i
+        %17:i32 = clamp %13, %15, %16
+        %18:i32 = load_vector_element %12, %17
+        %19:bool = eq %18, 1i
+        if %19 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_57:i32 = load %i
+            store_vector_element %a, %x_57, 5i
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_59:i32 = load %i
+            %22:i32 = load %i
+            store_vector_element %a, %x_59, %22
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %23:i32 = load %i
+        %24:i32 = add %23, 1i
+        store %i, %24
+        next_iteration %b3
+      }
+    }
+    %25:i32 = load_vector_element %a, 0u
+    %26:i32 = load_vector_element %a, 1u
+    %27:i32 = add %25, %26
+    %28:i32 = load_vector_element %a, 2u
+    %29:i32 = add %27, %28
+    %30:i32 = load_vector_element %a, 3u
+    %31:i32 = add %29, %30
+    store %sum, %31
+    %32:i32 = load %sum
+    %33:bool = eq %32, 10i
+    if %33 [t: %b9, f: %b10] {  # if_3
+      %b9 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b10 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %35:void = call %main_1
+    %36:vec4<f32> = load %x_GLF_color
+    %37:main_out = construct %36
+    ret %37
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5acce72
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,106 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(16) {
+  sequence:vec4<i32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, vec4<i32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %sum:ptr<function, i32, read_write> = var
+    store %a, vec4<i32>(0i)
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_40:i32 = load %i
+        %8:ptr<uniform, vec4<i32>, read> = access %x_7, 0u
+        %x_42:i32 = load_vector_element %8, 3u
+        %10:i32 = add %x_42, 1i
+        %11:bool = lt %x_40, %10
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_46:i32 = load %i
+        %13:ptr<uniform, vec4<i32>, read> = access %x_7, 0u
+        %x_48:i32 = load_vector_element %13, 0u
+        %x_49:i32 = load %i
+        %16:ptr<uniform, vec4<i32>, read> = access %x_7, 0u
+        %17:i32 = clamp %x_46, %x_48, %x_49
+        %x_52:i32 = load_vector_element %16, %17
+        %19:bool = eq %x_52, 1i
+        if %19 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_57:i32 = load %i
+            store_vector_element %a, %x_57, 5i
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_59:i32 = load %i
+            %x_60:i32 = load %i
+            store_vector_element %a, %x_59, %x_60
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_62:i32 = load %i
+        %24:i32 = add %x_62, 1i
+        store %i, %24
+        next_iteration %b3
+      }
+    }
+    %x_65:i32 = load_vector_element %a, 0u
+    %x_67:i32 = load_vector_element %a, 1u
+    %x_70:i32 = load_vector_element %a, 2u
+    %x_73:i32 = load_vector_element %a, 3u
+    %29:i32 = add %x_65, %x_67
+    %30:i32 = add %29, %x_70
+    %31:i32 = add %30, %x_73
+    store %sum, %31
+    %x_75:i32 = load %sum
+    %33:bool = eq %x_75, 10i
+    if %33 [t: %b9, f: %b10] {  # if_3
+      %b9 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b10 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %35:void = call %main_1
+    %36:vec4<f32> = load %x_GLF_color
+    %37:main_out = construct %36
+    ret %37
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f678b4b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,76 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %6:i32 = load %5
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %8:i32 = load %7
+    %9:i32 = max %8, 1i
+    %10:i32 = max %6, %9
+    store %a, %10
+    %11:i32 = load %a
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %13:i32 = load %12
+    %14:bool = eq %11, %13
+    if %14 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %15:i32 = load %a
+        %16:f32 = convert %15
+        %17:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %18:i32 = load %17
+        %19:f32 = convert %18
+        %20:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %21:i32 = load %20
+        %22:f32 = convert %21
+        %23:i32 = load %a
+        %24:f32 = convert %23
+        %25:vec4<f32> = construct %16, %19, %22, %24
+        store %x_GLF_color, %25
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %26:i32 = load %a
+        %27:f32 = convert %26
+        %28:vec4<f32> = construct %27
+        store %x_GLF_color, %28
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %30:void = call %main_1
+    %31:vec4<f32> = load %x_GLF_color
+    %32:main_out = construct %31
+    ret %32
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..12a378f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,76 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_24:i32 = load %5
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_26:i32 = load %7
+    %9:i32 = max %x_26, 1i
+    %10:i32 = max %x_24, %9
+    store %a, %10
+    %x_29:i32 = load %a
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_31:i32 = load %12
+    %14:bool = eq %x_29, %x_31
+    if %14 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %x_36:i32 = load %a
+        %16:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_39:i32 = load %16
+        %18:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_42:i32 = load %18
+        %x_44:i32 = load %a
+        %21:f32 = convert %x_36
+        %22:f32 = convert %x_39
+        %23:f32 = convert %x_42
+        %24:f32 = convert %x_44
+        %25:vec4<f32> = construct %21, %22, %23, %24
+        store %x_GLF_color, %25
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %x_47:i32 = load %a
+        %x_48:f32 = convert %x_47
+        %28:vec4<f32> = construct %x_48, %x_48, %x_48, %x_48
+        store %x_GLF_color, %28
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %30:void = call %main_1
+    %31:vec4<f32> = load %x_GLF_color
+    %32:main_out = construct %31
+    ret %32
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..83b62ec
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  two:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %r:ptr<function, i32, read_write> = var
+    store %i, 0i
+    store %r, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %6:i32 = load %r
+        %7:ptr<uniform, i32, read> = access %x_7, 0u
+        %8:i32 = load %7
+        %9:i32 = mul %8, 4i
+        %10:bool = lt %6, %9
+        if %10 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %11:i32 = load %i
+        %12:i32 = load %r
+        %13:ptr<uniform, i32, read> = access %x_7, 0u
+        %14:i32 = load %13
+        %15:i32 = div %12, %14
+        %16:i32 = access vec4<i32>(1i, 2i, 3i, 4i), %15
+        %17:i32 = add %11, %16
+        store %i, %17
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %18:i32 = load %r
+        %19:i32 = add %18, 2i
+        store %r, %19
+        next_iteration %b3
+      }
+    }
+    %20:i32 = load %i
+    %21:bool = eq %20, 10i
+    if %21 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %23:void = call %main_1
+    %24:vec4<f32> = load %x_GLF_color
+    %25:main_out = construct %24
+    ret %25
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..21a7abc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  two:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %r:ptr<function, i32, read_write> = var
+    store %i, 0i
+    store %r, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_35:i32 = load %r
+        %7:ptr<uniform, i32, read> = access %x_7, 0u
+        %x_37:i32 = load %7
+        %9:i32 = mul %x_37, 4i
+        %10:bool = lt %x_35, %9
+        if %10 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_41:i32 = load %r
+        %12:ptr<uniform, i32, read> = access %x_7, 0u
+        %x_43:i32 = load %12
+        %x_46:i32 = load %i
+        %15:i32 = div %x_41, %x_43
+        %16:i32 = access vec4<i32>(1i, 2i, 3i, 4i), %15
+        %17:i32 = add %x_46, %16
+        store %i, %17
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_48:i32 = load %r
+        %19:i32 = add %x_48, 2i
+        store %r, %19
+        next_iteration %b3
+      }
+    }
+    %x_50:i32 = load %i
+    %21:bool = eq %x_50, 10i
+    if %21 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %23:void = call %main_1
+    %24:vec4<f32> = load %x_GLF_color
+    %25:main_out = construct %24
+    ret %25
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1eebd8c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  two:u32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, u32, read_write> = var
+    %5:ptr<uniform, u32, read> = access %x_6, 0u
+    %6:u32 = load %5
+    %7:u32 = div %6, 1u
+    store %a, %7
+    %8:u32 = load %a
+    %9:bool = eq %8, 2u
+    if %9 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %11:void = call %main_1
+    %12:vec4<f32> = load %x_GLF_color
+    %13:main_out = construct %12
+    ret %13
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e698452
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  two:u32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, u32, read_write> = var
+    %5:ptr<uniform, u32, read> = access %x_6, 0u
+    %x_27:u32 = load %5
+    %7:u32 = div %x_27, 1u
+    store %a, %7
+    %x_29:u32 = load %a
+    %9:bool = eq %x_29, 2u
+    if %9 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %11:void = call %main_1
+    %12:vec4<f32> = load %x_GLF_color
+    %13:main_out = construct %12
+    ret %13
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..14c1fb3
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,111 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %7:i32 = load %6
+    store %a, %7
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %9:i32 = load %8
+    %10:i32 = negation %9
+    store %i, %10
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %11:i32 = load %i
+        %12:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %13:i32 = load %12
+        %14:i32 = or %11, %13
+        %15:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %16:i32 = load %15
+        %17:bool = lt %14, %16
+        if %17 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %18:i32 = load %i
+        %19:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %20:i32 = load %19
+        %21:i32 = mul %18, %20
+        store %a, %21
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %22:i32 = load %i
+        %23:i32 = add %22, 1i
+        store %i, %23
+        next_iteration %b3
+      }
+    }
+    %24:i32 = load %a
+    %25:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %26:i32 = load %25
+    %27:i32 = negation %26
+    %28:bool = eq %24, %27
+    if %28 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %30:i32 = load %29
+        %31:f32 = convert %30
+        %32:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %33:i32 = load %32
+        %34:f32 = convert %33
+        %35:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %36:i32 = load %35
+        %37:f32 = convert %36
+        %38:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %39:i32 = load %38
+        %40:f32 = convert %39
+        %41:vec4<f32> = construct %31, %34, %37, %40
+        store %x_GLF_color, %41
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %42:i32 = load %a
+        %43:f32 = convert %42
+        %44:vec4<f32> = construct %43
+        store %x_GLF_color, %44
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %46:void = call %main_1
+    %47:vec4<f32> = load %x_GLF_color
+    %48:main_out = construct %47
+    ret %48
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..04c1588
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,111 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_25:i32 = load %6
+    store %a, %x_25
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_27:i32 = load %8
+    %10:i32 = negation %x_27
+    store %i, %10
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_33:i32 = load %i
+        %12:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_35:i32 = load %12
+        %14:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_38:i32 = load %14
+        %16:i32 = or %x_33, %x_35
+        %17:bool = lt %16, %x_38
+        if %17 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_41:i32 = load %i
+        %19:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_43:i32 = load %19
+        %21:i32 = mul %x_41, %x_43
+        store %a, %21
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_45:i32 = load %i
+        %23:i32 = add %x_45, 1i
+        store %i, %23
+        next_iteration %b3
+      }
+    }
+    %x_47:i32 = load %a
+    %25:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_49:i32 = load %25
+    %27:i32 = negation %x_49
+    %28:bool = eq %x_47, %27
+    if %28 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_56:i32 = load %29
+        %31:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_59:i32 = load %31
+        %33:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_62:i32 = load %33
+        %35:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_65:i32 = load %35
+        %37:f32 = convert %x_56
+        %38:f32 = convert %x_59
+        %39:f32 = convert %x_62
+        %40:f32 = convert %x_65
+        %41:vec4<f32> = construct %37, %38, %39, %40
+        store %x_GLF_color, %41
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %x_68:i32 = load %a
+        %x_69:f32 = convert %x_68
+        %44:vec4<f32> = construct %x_69, %x_69, %x_69, %x_69
+        store %x_GLF_color, %44
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %46:void = call %main_1
+    %47:vec4<f32> = load %x_GLF_color
+    %48:main_out = construct %47
+    ret %48
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2a71d33
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  three:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %5:ptr<uniform, f32, read> = access %x_6, 0u
+    %6:f32 = load %5
+    %7:f32 = ldexp %6, 0i
+    store %f, %7
+    %8:f32 = load %f
+    %9:bool = eq %8, 3.0f
+    if %9 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %11:void = call %main_1
+    %12:vec4<f32> = load %x_GLF_color
+    %13:main_out = construct %12
+    ret %13
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ff5d03a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  three:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %5:ptr<uniform, f32, read> = access %x_6, 0u
+    %x_25:f32 = load %5
+    %7:f32 = ldexp %x_25, 0i
+    store %f, %7
+    %x_27:f32 = load %f
+    %9:bool = eq %x_27, 3.0f
+    if %9 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %11:void = call %main_1
+    %12:vec4<f32> = load %x_GLF_color
+    %13:main_out = construct %12
+    ret %13
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..dd03bc1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,179 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %A:ptr<function, array<i32, 4>, read_write> = var
+    %x_77:ptr<function, bool, read_write> = var
+    %x_78:ptr<function, bool, read_write> = var
+    %x_87:ptr<function, bool, read_write> = var
+    %x_88:ptr<function, bool, read_write> = var
+    %x_97:ptr<function, bool, read_write> = var
+    %x_98:ptr<function, bool, read_write> = var
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %13:i32 = load %12
+    store %i, %13
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %14:i32 = load %i
+        %15:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %16:i32 = load %15
+        %17:bool = lt %14, %16
+        if %17 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_43:i32 = load %i
+        %19:ptr<function, i32, read_write> = access %A, %x_43
+        %20:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %21:i32 = load %20
+        store %19, %21
+        %22:i32 = load %i
+        %23:i32 = mul 2i, %22
+        %24:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %25:i32 = load %24
+        %26:i32 = mul 2i, %25
+        %27:i32 = max %23, %26
+        %28:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %29:i32 = load %28
+        %30:bool = eq %27, %29
+        if %30 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %x_58:i32 = load %i
+            %32:ptr<function, i32, read_write> = access %A, %x_58
+            store %32, 1i
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %33:i32 = load %i
+        %34:i32 = add %33, 1i
+        store %i, %34
+        next_iteration %b3
+      }
+    }
+    %35:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %36:i32 = load %35
+    %37:ptr<function, i32, read_write> = access %A, %36
+    %38:i32 = load %37
+    %39:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %40:i32 = load %39
+    %x_68:bool = eq %38, %40
+    store %x_78, %x_68
+    if %x_68 [t: %b8] {  # if_3
+      %b8 = block {  # true
+        %42:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %43:i32 = load %42
+        %44:ptr<function, i32, read_write> = access %A, %43
+        %45:i32 = load %44
+        %46:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %47:i32 = load %46
+        %48:bool = eq %45, %47
+        store %x_77, %48
+        %49:bool = load %x_77
+        store %x_78, %49
+        exit_if  # if_3
+      }
+    }
+    %50:bool = load %x_78
+    store %x_88, %50
+    %51:bool = load %x_78
+    if %51 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        %52:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %53:i32 = load %52
+        %54:ptr<function, i32, read_write> = access %A, %53
+        %55:i32 = load %54
+        %56:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %57:i32 = load %56
+        %58:bool = eq %55, %57
+        store %x_87, %58
+        %59:bool = load %x_87
+        store %x_88, %59
+        exit_if  # if_4
+      }
+    }
+    %60:bool = load %x_88
+    store %x_98, %60
+    %61:bool = load %x_88
+    if %61 [t: %b10] {  # if_5
+      %b10 = block {  # true
+        %62:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %63:i32 = load %62
+        %64:ptr<function, i32, read_write> = access %A, %63
+        %65:i32 = load %64
+        %66:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %67:i32 = load %66
+        %68:bool = eq %65, %67
+        store %x_97, %68
+        %69:bool = load %x_97
+        store %x_98, %69
+        exit_if  # if_5
+      }
+    }
+    %70:bool = load %x_98
+    if %70 [t: %b11, f: %b12] {  # if_6
+      %b11 = block {  # true
+        %71:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %72:i32 = load %71
+        %73:f32 = convert %72
+        %74:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %75:i32 = load %74
+        %76:f32 = convert %75
+        %77:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %78:i32 = load %77
+        %79:f32 = convert %78
+        %80:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %81:i32 = load %80
+        %82:f32 = convert %81
+        %83:vec4<f32> = construct %73, %76, %79, %82
+        store %x_GLF_color, %83
+        exit_if  # if_6
+      }
+      %b12 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f)
+        exit_if  # if_6
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %85:void = call %main_1
+    %86:vec4<f32> = load %x_GLF_color
+    %87:main_out = construct %86
+    ret %87
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b2c8b88
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,177 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %A:ptr<function, array<i32, 4>, read_write> = var
+    %x_77:ptr<function, bool, read_write> = var
+    %x_87:ptr<function, bool, read_write> = var
+    %x_97:ptr<function, bool, read_write> = var
+    %x_78_phi:ptr<function, bool, read_write> = var
+    %x_88_phi:ptr<function, bool, read_write> = var
+    %x_98_phi:ptr<function, bool, read_write> = var
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_33:i32 = load %12
+    store %i, %x_33
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_38:i32 = load %i
+        %15:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+        %x_40:i32 = load %15
+        %17:bool = lt %x_38, %x_40
+        if %17 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_43:i32 = load %i
+        %19:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_45:i32 = load %19
+        %21:ptr<function, i32, read_write> = access %A, %x_43
+        store %21, %x_45
+        %x_47:i32 = load %i
+        %23:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_50:i32 = load %23
+        %25:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_54:i32 = load %25
+        %27:i32 = mul 2i, %x_47
+        %28:i32 = mul 2i, %x_50
+        %29:i32 = max %27, %28
+        %30:bool = eq %29, %x_54
+        if %30 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %x_58:i32 = load %i
+            %32:ptr<function, i32, read_write> = access %A, %x_58
+            store %32, 1i
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_60:i32 = load %i
+        %34:i32 = add %x_60, 1i
+        store %i, %34
+        next_iteration %b3
+      }
+    }
+    %35:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_63:i32 = load %35
+    %37:ptr<function, i32, read_write> = access %A, %x_63
+    %x_65:i32 = load %37
+    %39:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_67:i32 = load %39
+    %x_68:bool = eq %x_65, %x_67
+    store %x_78_phi, %x_68
+    if %x_68 [t: %b8] {  # if_3
+      %b8 = block {  # true
+        %42:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_72:i32 = load %42
+        %44:ptr<function, i32, read_write> = access %A, %x_72
+        %x_74:i32 = load %44
+        %46:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_76:i32 = load %46
+        %48:bool = eq %x_74, %x_76
+        store %x_77, %48
+        %49:bool = load %x_77
+        store %x_78_phi, %49
+        exit_if  # if_3
+      }
+    }
+    %x_78:bool = load %x_78_phi
+    store %x_88_phi, %x_78
+    if %x_78 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        %51:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_82:i32 = load %51
+        %53:ptr<function, i32, read_write> = access %A, %x_82
+        %x_84:i32 = load %53
+        %55:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_86:i32 = load %55
+        %57:bool = eq %x_84, %x_86
+        store %x_87, %57
+        %58:bool = load %x_87
+        store %x_88_phi, %58
+        exit_if  # if_4
+      }
+    }
+    %x_88:bool = load %x_88_phi
+    store %x_98_phi, %x_88
+    if %x_88 [t: %b10] {  # if_5
+      %b10 = block {  # true
+        %60:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_92:i32 = load %60
+        %62:ptr<function, i32, read_write> = access %A, %x_92
+        %x_94:i32 = load %62
+        %64:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_96:i32 = load %64
+        %66:bool = eq %x_94, %x_96
+        store %x_97, %66
+        %67:bool = load %x_97
+        store %x_98_phi, %67
+        exit_if  # if_5
+      }
+    }
+    %x_98:bool = load %x_98_phi
+    if %x_98 [t: %b11, f: %b12] {  # if_6
+      %b11 = block {  # true
+        %69:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_103:i32 = load %69
+        %71:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_106:i32 = load %71
+        %73:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_109:i32 = load %73
+        %75:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_112:i32 = load %75
+        %77:f32 = convert %x_103
+        %78:f32 = convert %x_106
+        %79:f32 = convert %x_109
+        %80:f32 = convert %x_112
+        %81:vec4<f32> = construct %77, %78, %79, %80
+        store %x_GLF_color, %81
+        exit_if  # if_6
+      }
+      %b12 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f)
+        exit_if  # if_6
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %83:void = call %main_1
+    %84:vec4<f32> = load %x_GLF_color
+    %85:main_out = construct %84
+    ret %85
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..ee256e3
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,82 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %6:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_30:f32 = load %6
+    %8:f32 = div %x_30, 1.0f
+    %9:f32 = floor %8
+    %10:f32 = mul 1.0f, %9
+    %11:f32 = sub %x_30, %10
+    store %a, %11
+    %12:f32 = load %a
+    %13:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %14:f32 = load %13
+    %15:bool = eq %12, %14
+    if %15 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %16:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %17:i32 = load %16
+        %18:f32 = convert %17
+        %19:f32 = load %a
+        %20:f32 = load %a
+        %21:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %22:i32 = load %21
+        %23:f32 = convert %22
+        %24:vec4<f32> = construct %18, %19, %20, %23
+        store %x_GLF_color, %24
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %25:f32 = load %a
+        %26:vec4<f32> = construct %25
+        store %x_GLF_color, %26
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %28:void = call %main_1
+    %29:vec4<f32> = load %x_GLF_color
+    %30:main_out = construct %29
+    ret %30
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ab8df29
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,82 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %6:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_30:f32 = load %6
+    %8:f32 = div %x_30, 1.0f
+    %9:f32 = floor %8
+    %10:f32 = mul 1.0f, %9
+    %11:f32 = sub %x_30, %10
+    store %a, %11
+    %x_32:f32 = load %a
+    %13:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_34:f32 = load %13
+    %15:bool = eq %x_32, %x_34
+    if %15 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %16:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_40:i32 = load %16
+        %x_42:f32 = load %a
+        %x_43:f32 = load %a
+        %20:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_45:i32 = load %20
+        %22:f32 = convert %x_40
+        %23:f32 = convert %x_45
+        %24:vec4<f32> = construct %22, %x_42, %x_43, %23
+        store %x_GLF_color, %24
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %x_48:f32 = load %a
+        %26:vec4<f32> = construct %x_48, %x_48, %x_48, %x_48
+        store %x_GLF_color, %26
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %28:void = call %main_1
+    %29:vec4<f32> = load %x_GLF_color
+    %30:main_out = construct %29
+    ret %30
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..4750db9
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %res:ptr<function, vec4<f32>, read_write> = var
+    store %v, vec4<f32>(8.3999996185302734375f, -864.66497802734375f, 945.41998291015625f, 1.0f)
+    %6:ptr<uniform, f32, read> = access %x_7, 0u
+    %x_31:f32 = load %6
+    %8:vec4<f32> = construct %x_31, 0.0f, 0.0f, 0.0f
+    %9:vec4<f32> = construct 0.0f, %x_31, 0.0f, 0.0f
+    %10:vec4<f32> = construct 0.0f, 0.0f, %x_31, 0.0f
+    %11:vec4<f32> = construct 0.0f, 0.0f, 0.0f, %x_31
+    %12:mat4x4<f32> = construct %8, %9, %10, %11
+    %13:vec4<f32> = load %v
+    %14:vec4<f32> = mul %12, %13
+    store %res, %14
+    %15:vec4<f32> = load %v
+    %16:vec4<f32> = load %res
+    %17:f32 = distance %15, %16
+    %18:bool = lt %17, 0.00999999977648258209f
+    if %18 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %20:void = call %main_1
+    %21:vec4<f32> = load %x_GLF_color
+    %22:main_out = construct %21
+    ret %22
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3177272
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %res:ptr<function, vec4<f32>, read_write> = var
+    store %v, vec4<f32>(8.3999996185302734375f, -864.66497802734375f, 945.41998291015625f, 1.0f)
+    %6:ptr<uniform, f32, read> = access %x_7, 0u
+    %x_31:f32 = load %6
+    %x_37:vec4<f32> = load %v
+    %9:vec4<f32> = construct %x_31, 0.0f, 0.0f, 0.0f
+    %10:vec4<f32> = construct 0.0f, %x_31, 0.0f, 0.0f
+    %11:vec4<f32> = construct 0.0f, 0.0f, %x_31, 0.0f
+    %12:vec4<f32> = construct 0.0f, 0.0f, 0.0f, %x_31
+    %13:mat4x4<f32> = construct %9, %10, %11, %12
+    %14:vec4<f32> = mul %13, %x_37
+    store %res, %14
+    %x_39:vec4<f32> = load %v
+    %x_40:vec4<f32> = load %res
+    %17:f32 = distance %x_39, %x_40
+    %18:bool = lt %17, 0.00999999977648258209f
+    if %18 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %20:void = call %main_1
+    %21:vec4<f32> = load %x_GLF_color
+    %22:main_out = construct %21
+    ret %22
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..19bb4e5
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.spvasm.expected.ir.msl
@@ -0,0 +1,66 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  three:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_36:ptr<function, bool, read_write> = var
+    %x_37:ptr<function, bool, read_write> = var
+    %7:ptr<uniform, i32, read> = access %x_6, 0u
+    %8:i32 = load %7
+    %x_30:bool = gt %8, 1i
+    store %x_37, %x_30
+    if %x_30 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %10:f32 = load_vector_element %gl_FragCoord, 1u
+        %11:bool = lt %10, -5.0f
+        %12:bool = eq %11, false
+        store %x_36, %12
+        %13:bool = load %x_36
+        store %x_37, %13
+        exit_if  # if_1
+      }
+    }
+    %14:bool = load %x_37
+    if %14 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b6 {
+  %b6 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %17:void = call %main_1
+    %18:vec4<f32> = load %x_GLF_color
+    %19:main_out = construct %18
+    ret %19
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fcdd82c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl.expected.ir.msl
@@ -0,0 +1,66 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  three:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_36:ptr<function, bool, read_write> = var
+    %x_37_phi:ptr<function, bool, read_write> = var
+    %7:ptr<uniform, i32, read> = access %x_6, 0u
+    %x_29:i32 = load %7
+    %x_30:bool = gt %x_29, 1i
+    store %x_37_phi, %x_30
+    if %x_30 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_34:f32 = load_vector_element %gl_FragCoord, 1u
+        %11:bool = lt %x_34, -5.0f
+        %12:bool = eq %11, false
+        store %x_36, %12
+        %13:bool = load %x_36
+        store %x_37_phi, %13
+        exit_if  # if_1
+      }
+    }
+    %x_37:bool = load %x_37_phi
+    if %x_37 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b6 {
+  %b6 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %17:void = call %main_1
+    %18:vec4<f32> = load %x_GLF_color
+    %19:main_out = construct %18
+    ret %19
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..582bd4b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %5:i32 = load %4
+    %6:u32 = bitcast %5
+    %7:i32 = shiftr 1i, %6
+    %8:bool = gt %7, 0i
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %9:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %10:i32 = load %9
+        %11:f32 = convert %10
+        %12:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %13:i32 = load %12
+        %14:f32 = convert %13
+        %15:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %16:i32 = load %15
+        %17:f32 = convert %16
+        %18:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %19:i32 = load %18
+        %20:f32 = convert %19
+        %21:vec4<f32> = construct %11, %14, %17, %20
+        store %x_GLF_color, %21
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %22:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %23:i32 = load %22
+        %24:f32 = convert %23
+        %25:vec4<f32> = construct %24
+        store %x_GLF_color, %25
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %27:void = call %main_1
+    %28:vec4<f32> = load %x_GLF_color
+    %29:main_out = construct %28
+    ret %29
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9d67f8d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+    %x_22:i32 = load %4
+    %6:u32 = bitcast %x_22
+    %7:i32 = shiftr 1i, %6
+    %8:bool = gt %7, 0i
+    if %8 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %9:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %x_29:i32 = load %9
+        %11:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %x_32:i32 = load %11
+        %13:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %x_35:i32 = load %13
+        %15:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
+        %x_38:i32 = load %15
+        %17:f32 = convert %x_29
+        %18:f32 = convert %x_32
+        %19:f32 = convert %x_35
+        %20:f32 = convert %x_38
+        %21:vec4<f32> = construct %17, %18, %19, %20
+        store %x_GLF_color, %21
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %22:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
+        %x_42:i32 = load %22
+        %x_43:f32 = convert %x_42
+        %25:vec4<f32> = construct %x_43, %x_43, %x_43, %x_43
+        store %x_GLF_color, %25
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %27:void = call %main_1
+    %28:vec4<f32> = load %x_GLF_color
+    %29:main_out = construct %28
+    ret %29
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2113f0e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.spvasm.expected.ir.msl
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_31:ptr<function, bool, read_write> = var
+    %x_32:ptr<function, bool, read_write> = var
+    %x_26:bool = let true
+    store %x_32, %x_26
+    %7:bool = eq %x_26, false
+    if %7 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %8:ptr<uniform, i32, read> = access %x_5, 0u
+        %9:i32 = load %8
+        %10:bool = eq %9, 1i
+        store %x_31, %10
+        %11:bool = load %x_31
+        store %x_32, %11
+        exit_if  # if_1
+      }
+    }
+    %12:bool = load %x_32
+    if %12 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %14:void = call %main_1
+    %15:vec4<f32> = load %x_GLF_color
+    %16:main_out = construct %15
+    ret %16
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..66fd17d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl.expected.ir.msl
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_31:ptr<function, bool, read_write> = var
+    %x_32_phi:ptr<function, bool, read_write> = var
+    %x_26:bool = let true
+    store %x_32_phi, %x_26
+    %7:bool = eq %x_26, false
+    if %7 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %8:ptr<uniform, i32, read> = access %x_5, 0u
+        %x_6:i32 = load %8
+        %10:bool = eq %x_6, 1i
+        store %x_31, %10
+        %11:bool = load %x_31
+        store %x_32_phi, %11
+        exit_if  # if_1
+      }
+    }
+    %x_32:bool = load %x_32_phi
+    if %x_32 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %14:void = call %main_1
+    %15:vec4<f32> = load %x_GLF_color
+    %16:main_out = construct %15
+    ret %16
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..8e17cd9
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,143 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%f1_vf2_ = func(%v1:ptr<function, vec2<f32>, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %x_99:ptr<function, bool, read_write> = var
+    %x_100:ptr<function, bool, read_write> = var
+    %8:f32 = load_vector_element %v1, 0u
+    %9:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %10:f32 = load %9
+    %x_92:bool = eq %8, %10
+    store %x_100, %x_92
+    if %x_92 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %12:f32 = load_vector_element %v1, 1u
+        %13:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+        %14:f32 = load %13
+        %15:bool = eq %12, %14
+        store %x_99, %15
+        %16:bool = load %x_99
+        store %x_100, %16
+        exit_if  # if_1
+      }
+    }
+    %17:bool = load %x_100
+    if %17 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %18:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_104:i32 = load %18
+        ret %x_104
+      }
+    }
+    %20:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %x_106:i32 = load %20
+    ret %x_106
+  }
+}
+%main_1 = func():void -> %b5 {
+  %b5 = block {
+    %m1:ptr<function, mat2x2<f32>, read_write> = var
+    %m2:ptr<function, mat2x2<f32>, read_write> = var
+    %v1_1:ptr<function, vec2<f32>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %28:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %29:f32 = load %28
+    %30:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %31:f32 = load %30
+    %32:f32 = negation %31
+    %33:vec2<f32> = construct %29, %32
+    %34:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %35:f32 = load %34
+    %36:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %37:f32 = load %36
+    %38:f32 = sin %37
+    %39:vec2<f32> = construct %35, %38
+    %40:mat2x2<f32> = construct %33, %39
+    store %m1, %40
+    %41:mat2x2<f32> = load %m1
+    %42:mat2x2<f32> = load %m1
+    %43:mat2x2<f32> = mul %41, %42
+    store %m2, %43
+    %44:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %45:f32 = load %44
+    %46:vec2<f32> = construct %45
+    %47:mat2x2<f32> = load %m2
+    %48:vec2<f32> = mul %46, %47
+    store %v1_1, %48
+    %49:vec2<f32> = load %v1_1
+    store %param, %49
+    %x_66:i32 = call %f1_vf2_, %param
+    store %a, %x_66
+    %51:i32 = load %a
+    %52:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %53:i32 = load %52
+    %54:bool = eq %51, %53
+    if %54 [t: %b6, f: %b7] {  # if_3
+      %b6 = block {  # true
+        %55:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %56:f32 = load %55
+        %57:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+        %58:f32 = load %57
+        %59:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+        %60:f32 = load %59
+        %61:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %62:f32 = load %61
+        %63:vec4<f32> = construct %56, %58, %60, %62
+        store %x_GLF_color, %63
+        exit_if  # if_3
+      }
+      %b7 = block {  # false
+        %64:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %65:i32 = load %64
+        %66:f32 = convert %65
+        %67:vec4<f32> = construct %66
+        store %x_GLF_color, %67
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %69:void = call %main_1
+    %70:vec4<f32> = load %x_GLF_color
+    %71:main_out = construct %70
+    ret %71
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1afc70c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,143 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%f1_vf2_ = func(%v1:ptr<function, vec2<f32>, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %x_99:ptr<function, bool, read_write> = var
+    %x_100_phi:ptr<function, bool, read_write> = var
+    %x_89:f32 = load_vector_element %v1, 0u
+    %9:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_91:f32 = load %9
+    %x_92:bool = eq %x_89, %x_91
+    store %x_100_phi, %x_92
+    if %x_92 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_96:f32 = load_vector_element %v1, 1u
+        %13:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+        %x_98:f32 = load %13
+        %15:bool = eq %x_96, %x_98
+        store %x_99, %15
+        %16:bool = load %x_99
+        store %x_100_phi, %16
+        exit_if  # if_1
+      }
+    }
+    %x_100:bool = load %x_100_phi
+    if %x_100 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %18:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_104:i32 = load %18
+        ret %x_104
+      }
+    }
+    %20:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %x_106:i32 = load %20
+    ret %x_106
+  }
+}
+%main_1 = func():void -> %b5 {
+  %b5 = block {
+    %m1:ptr<function, mat2x2<f32>, read_write> = var
+    %m2:ptr<function, mat2x2<f32>, read_write> = var
+    %v1_1:ptr<function, vec2<f32>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %28:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_45:f32 = load %28
+    %30:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_47:f32 = load %30
+    %32:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_50:f32 = load %32
+    %34:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_52:f32 = load %34
+    %36:f32 = negation %x_47
+    %37:vec2<f32> = construct %x_45, %36
+    %38:f32 = sin %x_52
+    %39:vec2<f32> = construct %x_50, %38
+    %40:mat2x2<f32> = construct %37, %39
+    store %m1, %40
+    %x_57:mat2x2<f32> = load %m1
+    %x_58:mat2x2<f32> = load %m1
+    %43:mat2x2<f32> = mul %x_57, %x_58
+    store %m2, %43
+    %44:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_61:f32 = load %44
+    %x_63:mat2x2<f32> = load %m2
+    %47:vec2<f32> = construct %x_61, %x_61
+    %48:vec2<f32> = mul %47, %x_63
+    store %v1_1, %48
+    %x_65:vec2<f32> = load %v1_1
+    store %param, %x_65
+    %x_66:i32 = call %f1_vf2_, %param
+    store %a, %x_66
+    %x_67:i32 = load %a
+    %52:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %x_69:i32 = load %52
+    %54:bool = eq %x_67, %x_69
+    if %54 [t: %b6, f: %b7] {  # if_3
+      %b6 = block {  # true
+        %55:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %x_75:f32 = load %55
+        %57:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+        %x_77:f32 = load %57
+        %59:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+        %x_79:f32 = load %59
+        %61:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+        %x_81:f32 = load %61
+        %63:vec4<f32> = construct %x_75, %x_77, %x_79, %x_81
+        store %x_GLF_color, %63
+        exit_if  # if_3
+      }
+      %b7 = block {  # false
+        %64:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_84:i32 = load %64
+        %x_85:f32 = convert %x_84
+        %67:vec4<f32> = construct %x_85, %x_85, %x_85, %x_85
+        store %x_GLF_color, %67
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %69:void = call %main_1
+    %70:vec4<f32> = load %x_GLF_color
+    %71:main_out = construct %70
+    ret %71
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b07711a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,104 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %g:ptr<private, i32, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    store %g, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %6:i32 = load %g
+        %7:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %8:f32 = load_vector_element %7, 0u
+        %9:f32 = add %8, 2.0f
+        %10:i32 = convert %9
+        %11:bool = lt %6, %10
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %12:i32 = load %g
+        %13:i32 = add %12, 1i
+        store %g, %13
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %14:i32 = load %g
+    store %a, %14
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %15:i32 = load %g
+        %16:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %17:f32 = load_vector_element %16, 1u
+        %18:i32 = convert %17
+        %19:bool = lt %15, %18
+        if %19 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %20:i32 = load %g
+        %21:i32 = add %20, 1i
+        store %g, %21
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        next_iteration %b7
+      }
+    }
+    %22:i32 = load %a
+    store %a, %22
+    %23:i32 = load %a
+    %24:bool = eq %23, 2i
+    if %24 [t: %b11, f: %b12] {  # if_3
+      %b11 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b12 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %26:void = call %main_1
+    %27:vec4<f32> = load %x_GLF_color
+    %28:main_out = construct %27
+    ret %28
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..214517d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,104 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %g:ptr<private, i32, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    store %g, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_8:i32 = load %g
+        %7:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %x_46:f32 = load_vector_element %7, 0u
+        %9:f32 = add %x_46, 2.0f
+        %10:i32 = convert %9
+        %11:bool = lt %x_8, %10
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_9:i32 = load %g
+        %13:i32 = add %x_9, 1i
+        store %g, %13
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %x_11:i32 = load %g
+    store %a, %x_11
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_12:i32 = load %g
+        %16:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %x_56:f32 = load_vector_element %16, 1u
+        %18:i32 = convert %x_56
+        %19:bool = lt %x_12, %18
+        if %19 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_13:i32 = load %g
+        %21:i32 = add %x_13, 1i
+        store %g, %21
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        next_iteration %b7
+      }
+    }
+    %x_15:i32 = load %a
+    store %a, %x_15
+    %x_16:i32 = load %a
+    %24:bool = eq %x_16, 2i
+    if %24 [t: %b11, f: %b12] {  # if_3
+      %b11 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b12 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %26:void = call %main_1
+    %27:vec4<f32> = load %x_GLF_color
+    %28:main_out = construct %27
+    ret %28
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b4118e4
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,117 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v1:ptr<function, vec2<f32>, read_write> = var
+    %v2:ptr<function, vec2<i32>, read_write> = var
+    %v3:ptr<function, vec2<f32>, read_write> = var
+    %x_66:ptr<function, bool, read_write> = var
+    %x_67:ptr<function, bool, read_write> = var
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %11:f32 = load %10
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+    %13:f32 = load %12
+    %14:vec2<f32> = construct %11, %13
+    %15:vec2<f32> = sinh %14
+    store %v1, %15
+    %16:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %17:i32 = load %16
+    %18:vec2<i32> = construct %17, -3000i
+    store %v2, %18
+    %19:vec2<f32> = load %v1
+    %20:vec2<i32> = load %v2
+    %21:vec2<f32> = ldexp %19, %20
+    store %v3, %21
+    %22:f32 = load_vector_element %v3, 1u
+    %23:vec4<f32> = construct %22
+    store %x_GLF_color, %23
+    %24:f32 = load_vector_element %v3, 0u
+    %25:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %26:f32 = load %25
+    %x_59:bool = gt %24, %26
+    store %x_67, %x_59
+    if %x_59 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %28:f32 = load_vector_element %v3, 0u
+        %29:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %30:f32 = load %29
+        %31:bool = lt %28, %30
+        store %x_66, %31
+        %32:bool = load %x_66
+        store %x_67, %32
+        exit_if  # if_1
+      }
+    }
+    %33:bool = load %x_67
+    if %33 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %34:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %35:i32 = load %34
+        %36:f32 = convert %35
+        %37:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %38:i32 = load %37
+        %39:f32 = convert %38
+        %40:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %41:i32 = load %40
+        %42:f32 = convert %41
+        %43:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %44:i32 = load %43
+        %45:f32 = convert %44
+        %46:vec4<f32> = construct %36, %39, %42, %45
+        store %x_GLF_color, %46
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %47:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %48:i32 = load %47
+        %49:f32 = convert %48
+        %50:vec4<f32> = construct %49
+        store %x_GLF_color, %50
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %52:void = call %main_1
+    %53:vec4<f32> = load %x_GLF_color
+    %54:main_out = construct %53
+    ret %54
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..02b707c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,117 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v1:ptr<function, vec2<f32>, read_write> = var
+    %v2:ptr<function, vec2<i32>, read_write> = var
+    %v3:ptr<function, vec2<f32>, read_write> = var
+    %x_66:ptr<function, bool, read_write> = var
+    %x_67_phi:ptr<function, bool, read_write> = var
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %x_41:f32 = load %10
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
+    %x_43:f32 = load %12
+    %14:vec2<f32> = construct %x_41, %x_43
+    %15:vec2<f32> = sinh %14
+    store %v1, %15
+    %16:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %x_47:i32 = load %16
+    %18:vec2<i32> = construct %x_47, -3000i
+    store %v2, %18
+    %x_49:vec2<f32> = load %v1
+    %x_50:vec2<i32> = load %v2
+    %21:vec2<f32> = ldexp %x_49, %x_50
+    store %v3, %21
+    %x_53:f32 = load_vector_element %v3, 1u
+    %23:vec4<f32> = construct %x_53, %x_53, %x_53, %x_53
+    store %x_GLF_color, %23
+    %x_56:f32 = load_vector_element %v3, 0u
+    %25:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_58:f32 = load %25
+    %x_59:bool = gt %x_56, %x_58
+    store %x_67_phi, %x_59
+    if %x_59 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_63:f32 = load_vector_element %v3, 0u
+        %29:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+        %x_65:f32 = load %29
+        %31:bool = lt %x_63, %x_65
+        store %x_66, %31
+        %32:bool = load %x_66
+        store %x_67_phi, %32
+        exit_if  # if_1
+      }
+    }
+    %x_67:bool = load %x_67_phi
+    if %x_67 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %34:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_72:i32 = load %34
+        %36:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_75:i32 = load %36
+        %38:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_78:i32 = load %38
+        %40:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_81:i32 = load %40
+        %42:f32 = convert %x_72
+        %43:f32 = convert %x_75
+        %44:f32 = convert %x_78
+        %45:f32 = convert %x_81
+        %46:vec4<f32> = construct %42, %43, %44, %45
+        store %x_GLF_color, %46
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %47:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_85:i32 = load %47
+        %x_86:f32 = convert %x_85
+        %50:vec4<f32> = construct %x_86, %x_86, %x_86, %x_86
+        store %x_GLF_color, %50
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %52:void = call %main_1
+    %53:vec4<f32> = load %x_GLF_color
+    %54:main_out = construct %53
+    ret %54
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..629717a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,147 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 5> @offset(0)
+}
+
+buf2 = struct @align(8) {
+  zeroVec:vec2<f32> @offset(0)
+}
+
+buf3 = struct @align(8) {
+  oneVec:vec2<f32> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+S = struct @align(4) {
+  numbers:array<f32, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_12:ptr<uniform, buf3, read> = var @binding_point(0, 3)
+  %x_15:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %obj:ptr<function, S, read_write> = var
+    %a:ptr<function, f32, read_write> = var
+    %x_49:ptr<function, vec2<f32>, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %11:ptr<uniform, f32, read> = access %x_7, 0u, 3i, 0u
+    %12:f32 = load %11
+    %13:ptr<uniform, f32, read> = access %x_7, 0u, 2i, 0u
+    %14:f32 = load %13
+    %15:ptr<uniform, f32, read> = access %x_7, 0u, 4i, 0u
+    %16:f32 = load %15
+    %17:array<f32, 3> = construct %12, %14, %16
+    %18:S = construct %17
+    store %obj, %18
+    %19:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %x_59:f32 = load_vector_element %19, 0u
+    %21:i32 = convert %x_59
+    %22:ptr<function, f32, read_write> = access %obj, 0u, %21
+    %23:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %24:f32 = load %23
+    store %22, %24
+    %25:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %26:f32 = load_vector_element %25, 0u
+    %27:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %28:f32 = load %27
+    %29:bool = gt %26, %28
+    if %29 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %30:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+        %31:vec2<f32> = load %30
+        store %x_49, %31
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %32:ptr<uniform, vec2<f32>, read> = access %x_12, 0u
+        %33:vec2<f32> = load %32
+        store %x_49, %33
+        exit_if  # if_1
+      }
+    }
+    %34:f32 = load_vector_element %x_49, 1u
+    store %a, %34
+    %35:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %36:f32 = load %35
+    %37:f32 = load %a
+    %38:ptr<uniform, i32, read> = access %x_15, 0u, 0i, 0u
+    %39:i32 = load %38
+    %40:ptr<function, f32, read_write> = access %obj, 0u, %39
+    %41:f32 = load %40
+    %42:f32 = mix %36, %37, %41
+    store %b, %42
+    %43:f32 = load %b
+    %44:ptr<uniform, f32, read> = access %x_7, 0u, 2i, 0u
+    %45:f32 = load %44
+    %46:f32 = distance %43, %45
+    %47:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %48:f32 = load %47
+    %49:bool = lt %46, %48
+    if %49 [t: %b5, f: %b6] {  # if_2
+      %b5 = block {  # true
+        %50:ptr<uniform, i32, read> = access %x_15, 0u, 0i, 0u
+        %51:i32 = load %50
+        %52:f32 = convert %51
+        %53:ptr<uniform, i32, read> = access %x_15, 0u, 1i, 0u
+        %54:i32 = load %53
+        %55:f32 = convert %54
+        %56:ptr<uniform, i32, read> = access %x_15, 0u, 1i, 0u
+        %57:i32 = load %56
+        %58:f32 = convert %57
+        %59:ptr<uniform, i32, read> = access %x_15, 0u, 0i, 0u
+        %60:i32 = load %59
+        %61:f32 = convert %60
+        %62:vec4<f32> = construct %52, %55, %58, %61
+        store %x_GLF_color, %62
+        exit_if  # if_2
+      }
+      %b6 = block {  # false
+        %63:ptr<uniform, i32, read> = access %x_15, 0u, 1i, 0u
+        %64:i32 = load %63
+        %65:f32 = convert %64
+        %66:vec4<f32> = construct %65
+        store %x_GLF_color, %66
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %68:void = call %main_1
+    %69:vec4<f32> = load %x_GLF_color
+    %70:main_out = construct %69
+    ret %70
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f7c22bb
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,147 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 5> @offset(0)
+}
+
+buf2 = struct @align(8) {
+  zeroVec:vec2<f32> @offset(0)
+}
+
+buf3 = struct @align(8) {
+  oneVec:vec2<f32> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+S = struct @align(4) {
+  numbers:array<f32, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_12:ptr<uniform, buf3, read> = var @binding_point(0, 3)
+  %x_15:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %obj:ptr<function, S, read_write> = var
+    %a:ptr<function, f32, read_write> = var
+    %x_49:ptr<function, vec2<f32>, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %11:ptr<uniform, f32, read> = access %x_7, 0u, 3i, 0u
+    %x_51:f32 = load %11
+    %13:ptr<uniform, f32, read> = access %x_7, 0u, 2i, 0u
+    %x_53:f32 = load %13
+    %15:ptr<uniform, f32, read> = access %x_7, 0u, 4i, 0u
+    %x_55:f32 = load %15
+    %17:array<f32, 3> = construct %x_51, %x_53, %x_55
+    %18:S = construct %17
+    store %obj, %18
+    %19:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %x_59:f32 = load_vector_element %19, 0u
+    %21:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_62:f32 = load %21
+    %23:i32 = convert %x_59
+    %24:ptr<function, f32, read_write> = access %obj, 0u, %23
+    store %24, %x_62
+    %25:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %x_65:f32 = load_vector_element %25, 0u
+    %27:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_67:f32 = load %27
+    %29:bool = gt %x_65, %x_67
+    if %29 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %30:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+        %x_73:vec2<f32> = load %30
+        store %x_49, %x_73
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %32:ptr<uniform, vec2<f32>, read> = access %x_12, 0u
+        %x_75:vec2<f32> = load %32
+        store %x_49, %x_75
+        exit_if  # if_1
+      }
+    }
+    %x_77:f32 = load_vector_element %x_49, 1u
+    store %a, %x_77
+    %35:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_79:f32 = load %35
+    %x_80:f32 = load %a
+    %38:ptr<uniform, i32, read> = access %x_15, 0u, 0i, 0u
+    %x_82:i32 = load %38
+    %40:ptr<function, f32, read_write> = access %obj, 0u, %x_82
+    %x_84:f32 = load %40
+    %42:f32 = mix %x_79, %x_80, %x_84
+    store %b, %42
+    %x_86:f32 = load %b
+    %44:ptr<uniform, f32, read> = access %x_7, 0u, 2i, 0u
+    %x_88:f32 = load %44
+    %46:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_91:f32 = load %46
+    %48:f32 = distance %x_86, %x_88
+    %49:bool = lt %48, %x_91
+    if %49 [t: %b5, f: %b6] {  # if_2
+      %b5 = block {  # true
+        %50:ptr<uniform, i32, read> = access %x_15, 0u, 0i, 0u
+        %x_97:i32 = load %50
+        %52:ptr<uniform, i32, read> = access %x_15, 0u, 1i, 0u
+        %x_100:i32 = load %52
+        %54:ptr<uniform, i32, read> = access %x_15, 0u, 1i, 0u
+        %x_103:i32 = load %54
+        %56:ptr<uniform, i32, read> = access %x_15, 0u, 0i, 0u
+        %x_106:i32 = load %56
+        %58:f32 = convert %x_97
+        %59:f32 = convert %x_100
+        %60:f32 = convert %x_103
+        %61:f32 = convert %x_106
+        %62:vec4<f32> = construct %58, %59, %60, %61
+        store %x_GLF_color, %62
+        exit_if  # if_2
+      }
+      %b6 = block {  # false
+        %63:ptr<uniform, i32, read> = access %x_15, 0u, 1i, 0u
+        %x_110:i32 = load %63
+        %x_111:f32 = convert %x_110
+        %66:vec4<f32> = construct %x_111, %x_111, %x_111, %x_111
+        store %x_GLF_color, %66
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %68:void = call %main_1
+    %69:vec4<f32> = load %x_GLF_color
+    %70:main_out = construct %69
+    ret %70
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7731469
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,102 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+buf2 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_8:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %7:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %8:f32 = load %7
+    %9:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %10:f32 = load_vector_element %9, 0u
+    %11:f32 = mul %8, %10
+    %12:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %13:f32 = load %12
+    %14:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %15:f32 = load_vector_element %14, 0u
+    %16:f32 = round %15
+    %17:f32 = mul %13, %16
+    %18:f32 = add %11, %17
+    %19:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %20:f32 = load_vector_element %19, 1u
+    %21:f32 = add %18, %20
+    store %f, %21
+    %22:f32 = load %f
+    %23:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %24:f32 = load %23
+    %25:bool = eq %22, %24
+    if %25 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %26:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %27:i32 = load %26
+        %28:f32 = convert %27
+        %29:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %30:i32 = load %29
+        %31:f32 = convert %30
+        %32:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %33:i32 = load %32
+        %34:f32 = convert %33
+        %35:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %36:i32 = load %35
+        %37:f32 = convert %36
+        %38:vec4<f32> = construct %28, %31, %34, %37
+        store %x_GLF_color, %38
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %39:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %40:i32 = load %39
+        %41:f32 = convert %40
+        %42:vec4<f32> = construct %41
+        store %x_GLF_color, %42
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %44:void = call %main_1
+    %45:vec4<f32> = load %x_GLF_color
+    %46:main_out = construct %45
+    ret %46
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b69871a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,102 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+buf2 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_8:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %7:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_37:f32 = load %7
+    %9:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %x_39:f32 = load_vector_element %9, 0u
+    %11:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+    %x_42:f32 = load %11
+    %13:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %x_44:f32 = load_vector_element %13, 0u
+    %15:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %x_49:f32 = load_vector_element %15, 1u
+    %17:f32 = mul %x_37, %x_39
+    %18:f32 = round %x_44
+    %19:f32 = mul %x_42, %18
+    %20:f32 = add %17, %19
+    %21:f32 = add %20, %x_49
+    store %f, %21
+    %x_51:f32 = load %f
+    %23:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_53:f32 = load %23
+    %25:bool = eq %x_51, %x_53
+    if %25 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %26:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_59:i32 = load %26
+        %28:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_62:i32 = load %28
+        %30:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_65:i32 = load %30
+        %32:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_68:i32 = load %32
+        %34:f32 = convert %x_59
+        %35:f32 = convert %x_62
+        %36:f32 = convert %x_65
+        %37:f32 = convert %x_68
+        %38:vec4<f32> = construct %34, %35, %36, %37
+        store %x_GLF_color, %38
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %39:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_72:i32 = load %39
+        %x_73:f32 = convert %x_72
+        %42:vec4<f32> = construct %x_73, %x_73, %x_73, %x_73
+        store %x_GLF_color, %42
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %44:void = call %main_1
+    %45:vec4<f32> = load %x_GLF_color
+    %46:main_out = construct %45
+    ret %46
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..abede91
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,156 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_11:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %color:ptr<function, vec4<f32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %k:ptr<function, i32, read_write> = var
+    store %color, vec4<f32>(1.0f)
+    %9:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %10:i32 = load %9
+    store %i, %10
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %11:i32 = load %i
+        %12:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %13:i32 = load %12
+        %14:bool = lt %11, %13
+        if %14 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_47:i32 = load %i
+        switch %x_47 [c: (2i, %b7), c: (1i, %b8), c: (default, %b9)] {  # switch_1
+          %b7 = block {  # case
+            %x_83:i32 = load %i
+            %17:ptr<uniform, f32, read> = access %x_11, 0u, 0i, 0u
+            %18:f32 = load %17
+            store_vector_element %color, %x_83, %18
+            exit_switch  # switch_1
+          }
+          %b8 = block {  # case
+            %19:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+            %20:i32 = load %19
+            store %j, %20
+            loop [b: %b10, c: %b11] {  # loop_2
+              %b10 = block {  # body
+                %21:i32 = load %i
+                %22:i32 = load %i
+                %23:bool = gt %21, %22
+                if %23 [t: %b12, f: %b13] {  # if_2
+                  %b12 = block {  # true
+                    exit_if  # if_2
+                  }
+                  %b13 = block {  # false
+                    exit_loop  # loop_2
+                  }
+                }
+                %24:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+                %25:i32 = load %24
+                store %k, %25
+                loop [b: %b14, c: %b15] {  # loop_3
+                  %b14 = block {  # body
+                    %26:i32 = load %k
+                    %27:i32 = load %i
+                    %28:bool = lt %26, %27
+                    if %28 [t: %b16, f: %b17] {  # if_3
+                      %b16 = block {  # true
+                        exit_if  # if_3
+                      }
+                      %b17 = block {  # false
+                        exit_loop  # loop_3
+                      }
+                    }
+                    %x_71:i32 = load %k
+                    %30:ptr<uniform, f32, read> = access %x_11, 0u, 0i, 0u
+                    %31:f32 = load %30
+                    store_vector_element %color, %x_71, %31
+                    continue %b15
+                  }
+                  %b15 = block {  # continuing
+                    %32:i32 = load %k
+                    %33:i32 = add %32, 1i
+                    store %k, %33
+                    next_iteration %b14
+                  }
+                }
+                continue %b11
+              }
+              %b11 = block {  # continuing
+                %34:i32 = load %j
+                %35:i32 = add %34, 1i
+                store %j, %35
+                next_iteration %b10
+              }
+            }
+            %x_79:i32 = load %i
+            %37:ptr<uniform, f32, read> = access %x_11, 0u, 0i, 0u
+            %38:f32 = load %37
+            store_vector_element %color, %x_79, %38
+            exit_switch  # switch_1
+          }
+          %b9 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %39:i32 = load %i
+        %40:i32 = add %39, 1i
+        store %i, %40
+        next_iteration %b3
+      }
+    }
+    %41:vec4<f32> = load %color
+    store %x_GLF_color, %41
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b18 {
+  %b18 = block {
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..600b293
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,156 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_11:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %color:ptr<function, vec4<f32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %k:ptr<function, i32, read_write> = var
+    store %color, vec4<f32>(1.0f)
+    %9:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %x_37:i32 = load %9
+    store %i, %x_37
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_42:i32 = load %i
+        %12:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_44:i32 = load %12
+        %14:bool = lt %x_42, %x_44
+        if %14 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_47:i32 = load %i
+        switch %x_47 [c: (2i, %b7), c: (1i, %b8), c: (default, %b9)] {  # switch_1
+          %b7 = block {  # case
+            %x_83:i32 = load %i
+            %17:ptr<uniform, f32, read> = access %x_11, 0u, 0i, 0u
+            %x_85:f32 = load %17
+            store_vector_element %color, %x_83, %x_85
+            exit_switch  # switch_1
+          }
+          %b8 = block {  # case
+            %19:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+            %x_52:i32 = load %19
+            store %j, %x_52
+            loop [b: %b10, c: %b11] {  # loop_2
+              %b10 = block {  # body
+                %x_57:i32 = load %i
+                %x_58:i32 = load %i
+                %23:bool = gt %x_57, %x_58
+                if %23 [t: %b12, f: %b13] {  # if_2
+                  %b12 = block {  # true
+                    exit_if  # if_2
+                  }
+                  %b13 = block {  # false
+                    exit_loop  # loop_2
+                  }
+                }
+                %24:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+                %x_62:i32 = load %24
+                store %k, %x_62
+                loop [b: %b14, c: %b15] {  # loop_3
+                  %b14 = block {  # body
+                    %x_67:i32 = load %k
+                    %x_68:i32 = load %i
+                    %28:bool = lt %x_67, %x_68
+                    if %28 [t: %b16, f: %b17] {  # if_3
+                      %b16 = block {  # true
+                        exit_if  # if_3
+                      }
+                      %b17 = block {  # false
+                        exit_loop  # loop_3
+                      }
+                    }
+                    %x_71:i32 = load %k
+                    %30:ptr<uniform, f32, read> = access %x_11, 0u, 0i, 0u
+                    %x_73:f32 = load %30
+                    store_vector_element %color, %x_71, %x_73
+                    continue %b15
+                  }
+                  %b15 = block {  # continuing
+                    %x_75:i32 = load %k
+                    %33:i32 = add %x_75, 1i
+                    store %k, %33
+                    next_iteration %b14
+                  }
+                }
+                continue %b11
+              }
+              %b11 = block {  # continuing
+                %x_77:i32 = load %j
+                %35:i32 = add %x_77, 1i
+                store %j, %35
+                next_iteration %b10
+              }
+            }
+            %x_79:i32 = load %i
+            %37:ptr<uniform, f32, read> = access %x_11, 0u, 0i, 0u
+            %x_81:f32 = load %37
+            store_vector_element %color, %x_79, %x_81
+            exit_switch  # switch_1
+          }
+          %b9 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_87:i32 = load %i
+        %40:i32 = add %x_87, 1i
+        store %i, %40
+        next_iteration %b3
+      }
+    }
+    %x_89:vec4<f32> = load %color
+    store %x_GLF_color, %x_89
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b18 {
+  %b18 = block {
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..dc64a45
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,150 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+buf2 = struct @align(4) {
+  zero:f32 @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_7:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %7:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+    %8:f32 = load %7
+    %9:vec4<f32> = construct %8
+    store %x_GLF_color, %9
+    %10:ptr<uniform, f32, read> = access %x_7, 0u
+    %11:f32 = load %10
+    %12:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+    %13:f32 = load %12
+    %14:bool = gt %11, %13
+    if %14 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        loop [b: %b5, c: %b6] {  # loop_1
+          %b5 = block {  # body
+            %15:ptr<uniform, f32, read> = access %x_5, 0u, 1i, 0u
+            %16:f32 = load %15
+            %17:vec4<f32> = construct %16
+            store %x_GLF_color, %17
+            continue %b6
+          }
+          %b6 = block {  # continuing
+            break_if false %b5
+          }
+        }
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            loop [b: %b9, c: %b10] {  # loop_3
+              %b9 = block {  # body
+                if true [t: %b11, f: %b12] {  # if_2
+                  %b11 = block {  # true
+                    exit_if  # if_2
+                  }
+                  %b12 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %18:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                %19:i32 = load %18
+                store %i, %19
+                loop [b: %b13, c: %b14] {  # loop_4
+                  %b13 = block {  # body
+                    %20:i32 = load %i
+                    %21:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                    %22:i32 = load %21
+                    %23:bool = lt %20, %22
+                    if %23 [t: %b15, f: %b16] {  # if_3
+                      %b15 = block {  # true
+                        exit_if  # if_3
+                      }
+                      %b16 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %24:ptr<uniform, f32, read> = access %x_5, 0u, 1i, 0u
+                    %25:f32 = load %24
+                    %26:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+                    %27:f32 = load %26
+                    %28:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+                    %29:f32 = load %28
+                    %30:ptr<uniform, f32, read> = access %x_5, 0u, 1i, 0u
+                    %31:f32 = load %30
+                    %32:vec4<f32> = construct %25, %27, %29, %31
+                    store %x_GLF_color, %32
+                    continue %b14
+                  }
+                  %b14 = block {  # continuing
+                    %33:i32 = load %i
+                    %34:i32 = add %33, 1i
+                    store %i, %34
+                    next_iteration %b13
+                  }
+                }
+                exit_loop  # loop_3
+              }
+              %b10 = block {  # continuing
+                next_iteration %b9
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %35:ptr<uniform, f32, read> = access %x_7, 0u
+            %x_82:f32 = load %35
+            %37:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+            %x_84:f32 = load %37
+            %39:bool = gt %x_82, %x_84
+            %40:bool = eq %39, false
+            break_if %40 %b7
+          }
+        }
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b17 {
+  %b17 = block {
+    %42:void = call %main_1
+    %43:vec4<f32> = load %x_GLF_color
+    %44:main_out = construct %43
+    ret %44
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b7607fd
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,150 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+buf2 = struct @align(4) {
+  zero:f32 @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_7:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %7:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+    %x_38:f32 = load %7
+    %9:vec4<f32> = construct %x_38, %x_38, %x_38, %x_38
+    store %x_GLF_color, %9
+    %10:ptr<uniform, f32, read> = access %x_7, 0u
+    %x_41:f32 = load %10
+    %12:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+    %x_43:f32 = load %12
+    %14:bool = gt %x_41, %x_43
+    if %14 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        loop [b: %b5, c: %b6] {  # loop_1
+          %b5 = block {  # body
+            %15:ptr<uniform, f32, read> = access %x_5, 0u, 1i, 0u
+            %x_53:f32 = load %15
+            %17:vec4<f32> = construct %x_53, %x_53, %x_53, %x_53
+            store %x_GLF_color, %17
+            continue %b6
+          }
+          %b6 = block {  # continuing
+            break_if false %b5
+          }
+        }
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            loop [b: %b9, c: %b10] {  # loop_3
+              %b9 = block {  # body
+                if true [t: %b11, f: %b12] {  # if_2
+                  %b11 = block {  # true
+                    exit_if  # if_2
+                  }
+                  %b12 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %18:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                %x_13:i32 = load %18
+                store %i, %x_13
+                loop [b: %b13, c: %b14] {  # loop_4
+                  %b13 = block {  # body
+                    %x_14:i32 = load %i
+                    %21:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+                    %x_15:i32 = load %21
+                    %23:bool = lt %x_14, %x_15
+                    if %23 [t: %b15, f: %b16] {  # if_3
+                      %b15 = block {  # true
+                        exit_if  # if_3
+                      }
+                      %b16 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %24:ptr<uniform, f32, read> = access %x_5, 0u, 1i, 0u
+                    %x_73:f32 = load %24
+                    %26:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+                    %x_75:f32 = load %26
+                    %28:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+                    %x_77:f32 = load %28
+                    %30:ptr<uniform, f32, read> = access %x_5, 0u, 1i, 0u
+                    %x_79:f32 = load %30
+                    %32:vec4<f32> = construct %x_73, %x_75, %x_77, %x_79
+                    store %x_GLF_color, %32
+                    continue %b14
+                  }
+                  %b14 = block {  # continuing
+                    %x_16:i32 = load %i
+                    %34:i32 = add %x_16, 1i
+                    store %i, %34
+                    next_iteration %b13
+                  }
+                }
+                exit_loop  # loop_3
+              }
+              %b10 = block {  # continuing
+                next_iteration %b9
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %35:ptr<uniform, f32, read> = access %x_7, 0u
+            %x_82:f32 = load %35
+            %37:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
+            %x_84:f32 = load %37
+            %39:bool = gt %x_82, %x_84
+            %40:bool = eq %39, false
+            break_if %40 %b7
+          }
+        }
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b17 {
+  %b17 = block {
+    %42:void = call %main_1
+    %43:vec4<f32> = load %x_GLF_color
+    %44:main_out = construct %43
+    ret %44
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..c0d6f64
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  two:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %7:f32 = load_vector_element %gl_FragCoord, 0u
+    %8:f32 = cos %7
+    %9:f32 = dpdx %8
+    store %a, %9
+    %10:ptr<uniform, f32, read> = access %x_8, 0u
+    %11:f32 = load %10
+    %12:f32 = load %a
+    %13:f32 = mix 2.0f, %11, %12
+    store %b, %13
+    %14:f32 = load %b
+    %15:bool = gte %14, 1.89999997615814208984f
+    %16:f32 = load %b
+    %17:bool = lte %16, 2.09999990463256835938f
+    %18:bool = and %15, %17
+    if %18 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b5 {
+  %b5 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %21:void = call %main_1
+    %22:vec4<f32> = load %x_GLF_color
+    %23:main_out = construct %22
+    ret %23
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..510f82c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  two:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, f32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %x_33:f32 = load_vector_element %gl_FragCoord, 0u
+    %8:f32 = cos %x_33
+    %9:f32 = dpdx %8
+    store %a, %9
+    %10:ptr<uniform, f32, read> = access %x_8, 0u
+    %x_37:f32 = load %10
+    %x_38:f32 = load %a
+    %13:f32 = mix 2.0f, %x_37, %x_38
+    store %b, %13
+    %x_40:f32 = load %b
+    %x_42:f32 = load %b
+    %16:bool = gte %x_40, 1.89999997615814208984f
+    %17:bool = lte %x_42, 2.09999990463256835938f
+    %18:bool = and %16, %17
+    if %18 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b5 {
+  %b5 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %21:void = call %main_1
+    %22:vec4<f32> = load %x_GLF_color
+    %23:main_out = construct %22
+    ret %23
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..82b6730
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,288 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  v1:vec2<f32> @offset(0)
+}
+
+strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+S = struct @align(4) {
+  data:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_struct_S_i11_ = func(%s:ptr<function, S, read_write>):void -> %b2 {
+  %b2 = block {
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %6:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %7:f32 = load_vector_element %6, 0u
+        %8:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %9:f32 = load_vector_element %8, 1u
+        %10:bool = gt %7, %9
+        if %10 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        ret
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %11:ptr<function, i32, read_write> = access %s, 0u
+    %12:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+    %13:i32 = load %12
+    store %11, %13
+    ret
+  }
+}
+%main_1 = func():void -> %b7 {
+  %b7 = block {
+    %i:ptr<function, i32, read_write> = var
+    %arr:ptr<function, array<S, 3>, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, S, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %x_136:ptr<function, bool, read_write> = var
+    %x_137:ptr<function, bool, read_write> = var
+    %x_146:ptr<function, bool, read_write> = var
+    %x_147:ptr<function, bool, read_write> = var
+    %24:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+    %25:i32 = load %24
+    store %i, %25
+    loop [b: %b8, c: %b9] {  # loop_2
+      %b8 = block {  # body
+        %26:i32 = load %i
+        %27:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %28:i32 = load %27
+        %29:bool = lt %26, %28
+        if %29 [t: %b10, f: %b11] {  # if_2
+          %b10 = block {  # true
+            exit_if  # if_2
+          }
+          %b11 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_56:i32 = load %i
+        %31:ptr<function, i32, read_write> = access %arr, %x_56, 0u
+        %32:i32 = load %i
+        store %31, %32
+        continue %b9
+      }
+      %b9 = block {  # continuing
+        %33:i32 = load %i
+        %34:i32 = add %33, 1i
+        store %i, %34
+        next_iteration %b8
+      }
+    }
+    %35:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+    %36:i32 = load %35
+    store %i_1, %36
+    loop [b: %b12, c: %b13] {  # loop_3
+      %b12 = block {  # body
+        %37:i32 = load %i_1
+        %38:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %39:i32 = load %38
+        %40:bool = lt %37, %39
+        if %40 [t: %b14, f: %b15] {  # if_3
+          %b14 = block {  # true
+            exit_if  # if_3
+          }
+          %b15 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %41:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %42:f32 = load_vector_element %41, 0u
+        %43:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %44:f32 = load_vector_element %43, 1u
+        %45:bool = gt %42, %44
+        if %45 [t: %b16] {  # if_4
+          %b16 = block {  # true
+            exit_loop  # loop_3
+          }
+        }
+        %46:i32 = load %i_1
+        %47:ptr<function, i32, read_write> = access %arr, %46, 0u
+        %48:i32 = load %47
+        %49:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %50:i32 = load %49
+        %51:bool = eq %48, %50
+        if %51 [t: %b17, f: %b18] {  # if_5
+          %b17 = block {  # true
+            %x_88:i32 = load %i_1
+            %53:i32 = clamp %x_88, 0i, 3i
+            %54:ptr<function, i32, read_write> = access %arr, %53, 0u
+            %55:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+            %56:i32 = load %55
+            store %54, %56
+            %57:ptr<function, S, read_write> = access %arr, 2i
+            %58:S = load %57
+            store %param, %58
+            %59:void = call %func_struct_S_i11_, %param
+            %60:ptr<function, S, read_write> = access %arr, 2i
+            %61:S = load %param
+            store %60, %61
+            exit_if  # if_5
+          }
+          %b18 = block {  # false
+            %62:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+            %63:i32 = load %62
+            store %j, %63
+            loop [b: %b19, c: %b20] {  # loop_4
+              %b19 = block {  # body
+                %64:i32 = load %j
+                %65:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                %66:i32 = load %65
+                %67:bool = lt %64, %66
+                if %67 [t: %b21, f: %b22] {  # if_6
+                  %b21 = block {  # true
+                    exit_if  # if_6
+                  }
+                  %b22 = block {  # false
+                    exit_loop  # loop_4
+                  }
+                }
+                %68:i32 = load %j
+                %69:ptr<function, i32, read_write> = access %arr, %68, 0u
+                %70:i32 = load %69
+                %71:ptr<uniform, i32, read> = access %x_10, 0u, 4i, 0u
+                %72:i32 = load %71
+                %73:bool = gt %70, %72
+                if %73 [t: %b23] {  # if_7
+                  %b23 = block {  # true
+                    discard
+                    exit_if  # if_7
+                  }
+                }
+                continue %b20
+              }
+              %b20 = block {  # continuing
+                %74:i32 = load %j
+                %75:i32 = add %74, 1i
+                store %j, %75
+                next_iteration %b19
+              }
+            }
+            exit_if  # if_5
+          }
+        }
+        continue %b13
+      }
+      %b13 = block {  # continuing
+        %76:i32 = load %i_1
+        %77:i32 = add %76, 1i
+        store %i_1, %77
+        next_iteration %b12
+      }
+    }
+    %78:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+    %79:i32 = load %78
+    %80:ptr<function, i32, read_write> = access %arr, %79, 0u
+    %81:i32 = load %80
+    %82:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+    %83:i32 = load %82
+    %x_127:bool = eq %81, %83
+    store %x_137, %x_127
+    if %x_127 [t: %b24] {  # if_8
+      %b24 = block {  # true
+        %85:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %86:i32 = load %85
+        %87:ptr<function, i32, read_write> = access %arr, %86, 0u
+        %88:i32 = load %87
+        %89:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %90:i32 = load %89
+        %91:bool = eq %88, %90
+        store %x_136, %91
+        %92:bool = load %x_136
+        store %x_137, %92
+        exit_if  # if_8
+      }
+    }
+    %93:bool = load %x_137
+    store %x_147, %93
+    %94:bool = load %x_137
+    if %94 [t: %b25] {  # if_9
+      %b25 = block {  # true
+        %95:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %96:i32 = load %95
+        %97:ptr<function, i32, read_write> = access %arr, %96, 0u
+        %98:i32 = load %97
+        %99:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %100:i32 = load %99
+        %101:bool = eq %98, %100
+        store %x_146, %101
+        %102:bool = load %x_146
+        store %x_147, %102
+        exit_if  # if_9
+      }
+    }
+    %103:bool = load %x_147
+    if %103 [t: %b26, f: %b27] {  # if_10
+      %b26 = block {  # true
+        %104:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %105:i32 = load %104
+        %106:f32 = convert %105
+        %107:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %108:i32 = load %107
+        %109:f32 = convert %108
+        %110:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %111:i32 = load %110
+        %112:f32 = convert %111
+        %113:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %114:i32 = load %113
+        %115:f32 = convert %114
+        %116:vec4<f32> = construct %106, %109, %112, %115
+        store %x_GLF_color, %116
+        exit_if  # if_10
+      }
+      %b27 = block {  # false
+        %117:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %118:i32 = load %117
+        %119:f32 = convert %118
+        %120:vec4<f32> = construct %119
+        store %x_GLF_color, %120
+        exit_if  # if_10
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b28 {
+  %b28 = block {
+    %122:void = call %main_1
+    %123:vec4<f32> = load %x_GLF_color
+    %124:main_out = construct %123
+    ret %124
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dfd4ec1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,287 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  v1:vec2<f32> @offset(0)
+}
+
+strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 5> @offset(0)
+}
+
+S = struct @align(4) {
+  data:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_struct_S_i11_ = func(%s:ptr<function, S, read_write>):void -> %b2 {
+  %b2 = block {
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %6:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %x_174:f32 = load_vector_element %6, 0u
+        %8:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %x_176:f32 = load_vector_element %8, 1u
+        %10:bool = gt %x_174, %x_176
+        if %10 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        ret
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %11:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+    %x_180:i32 = load %11
+    %13:ptr<function, i32, read_write> = access %s, 0u
+    store %13, %x_180
+    ret
+  }
+}
+%main_1 = func():void -> %b7 {
+  %b7 = block {
+    %i:ptr<function, i32, read_write> = var
+    %arr:ptr<function, array<S, 3>, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, S, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %x_136:ptr<function, bool, read_write> = var
+    %x_146:ptr<function, bool, read_write> = var
+    %x_137_phi:ptr<function, bool, read_write> = var
+    %x_147_phi:ptr<function, bool, read_write> = var
+    %24:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+    %x_46:i32 = load %24
+    store %i, %x_46
+    loop [b: %b8, c: %b9] {  # loop_2
+      %b8 = block {  # body
+        %x_51:i32 = load %i
+        %27:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_53:i32 = load %27
+        %29:bool = lt %x_51, %x_53
+        if %29 [t: %b10, f: %b11] {  # if_2
+          %b10 = block {  # true
+            exit_if  # if_2
+          }
+          %b11 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_56:i32 = load %i
+        %x_57:i32 = load %i
+        %32:ptr<function, i32, read_write> = access %arr, %x_56, 0u
+        store %32, %x_57
+        continue %b9
+      }
+      %b9 = block {  # continuing
+        %x_59:i32 = load %i
+        %34:i32 = add %x_59, 1i
+        store %i, %34
+        next_iteration %b8
+      }
+    }
+    %35:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+    %x_62:i32 = load %35
+    store %i_1, %x_62
+    loop [b: %b12, c: %b13] {  # loop_3
+      %b12 = block {  # body
+        %x_67:i32 = load %i_1
+        %38:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_69:i32 = load %38
+        %40:bool = lt %x_67, %x_69
+        if %40 [t: %b14, f: %b15] {  # if_3
+          %b14 = block {  # true
+            exit_if  # if_3
+          }
+          %b15 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %41:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %x_73:f32 = load_vector_element %41, 0u
+        %43:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %x_75:f32 = load_vector_element %43, 1u
+        %45:bool = gt %x_73, %x_75
+        if %45 [t: %b16] {  # if_4
+          %b16 = block {  # true
+            exit_loop  # loop_3
+          }
+        }
+        %x_79:i32 = load %i_1
+        %47:ptr<function, i32, read_write> = access %arr, %x_79, 0u
+        %x_81:i32 = load %47
+        %49:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_83:i32 = load %49
+        %51:bool = eq %x_81, %x_83
+        if %51 [t: %b17, f: %b18] {  # if_5
+          %b17 = block {  # true
+            %x_88:i32 = load %i_1
+            %53:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+            %x_91:i32 = load %53
+            %55:i32 = clamp %x_88, 0i, 3i
+            %56:ptr<function, i32, read_write> = access %arr, %55, 0u
+            store %56, %x_91
+            %57:ptr<function, S, read_write> = access %arr, 2i
+            %x_94:S = load %57
+            store %param, %x_94
+            %59:void = call %func_struct_S_i11_, %param
+            %x_96:S = load %param
+            %61:ptr<function, S, read_write> = access %arr, 2i
+            store %61, %x_96
+            exit_if  # if_5
+          }
+          %b18 = block {  # false
+            %62:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+            %x_99:i32 = load %62
+            store %j, %x_99
+            loop [b: %b19, c: %b20] {  # loop_4
+              %b19 = block {  # body
+                %x_104:i32 = load %j
+                %65:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+                %x_106:i32 = load %65
+                %67:bool = lt %x_104, %x_106
+                if %67 [t: %b21, f: %b22] {  # if_6
+                  %b21 = block {  # true
+                    exit_if  # if_6
+                  }
+                  %b22 = block {  # false
+                    exit_loop  # loop_4
+                  }
+                }
+                %x_109:i32 = load %j
+                %69:ptr<function, i32, read_write> = access %arr, %x_109, 0u
+                %x_111:i32 = load %69
+                %71:ptr<uniform, i32, read> = access %x_10, 0u, 4i, 0u
+                %x_113:i32 = load %71
+                %73:bool = gt %x_111, %x_113
+                if %73 [t: %b23] {  # if_7
+                  %b23 = block {  # true
+                    discard
+                    exit_if  # if_7
+                  }
+                }
+                continue %b20
+              }
+              %b20 = block {  # continuing
+                %x_117:i32 = load %j
+                %75:i32 = add %x_117, 1i
+                store %j, %75
+                next_iteration %b19
+              }
+            }
+            exit_if  # if_5
+          }
+        }
+        continue %b13
+      }
+      %b13 = block {  # continuing
+        %x_119:i32 = load %i_1
+        %77:i32 = add %x_119, 1i
+        store %i_1, %77
+        next_iteration %b12
+      }
+    }
+    %78:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+    %x_122:i32 = load %78
+    %80:ptr<function, i32, read_write> = access %arr, %x_122, 0u
+    %x_124:i32 = load %80
+    %82:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+    %x_126:i32 = load %82
+    %x_127:bool = eq %x_124, %x_126
+    store %x_137_phi, %x_127
+    if %x_127 [t: %b24] {  # if_8
+      %b24 = block {  # true
+        %85:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_131:i32 = load %85
+        %87:ptr<function, i32, read_write> = access %arr, %x_131, 0u
+        %x_133:i32 = load %87
+        %89:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_135:i32 = load %89
+        %91:bool = eq %x_133, %x_135
+        store %x_136, %91
+        %92:bool = load %x_136
+        store %x_137_phi, %92
+        exit_if  # if_8
+      }
+    }
+    %x_137:bool = load %x_137_phi
+    store %x_147_phi, %x_137
+    if %x_137 [t: %b25] {  # if_9
+      %b25 = block {  # true
+        %94:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
+        %x_141:i32 = load %94
+        %96:ptr<function, i32, read_write> = access %arr, %x_141, 0u
+        %x_143:i32 = load %96
+        %98:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_145:i32 = load %98
+        %100:bool = eq %x_143, %x_145
+        store %x_146, %100
+        %101:bool = load %x_146
+        store %x_147_phi, %101
+        exit_if  # if_9
+      }
+    }
+    %x_147:bool = load %x_147_phi
+    if %x_147 [t: %b26, f: %b27] {  # if_10
+      %b26 = block {  # true
+        %103:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_152:i32 = load %103
+        %105:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_155:i32 = load %105
+        %107:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_158:i32 = load %107
+        %109:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_161:i32 = load %109
+        %111:f32 = convert %x_152
+        %112:f32 = convert %x_155
+        %113:f32 = convert %x_158
+        %114:f32 = convert %x_161
+        %115:vec4<f32> = construct %111, %112, %113, %114
+        store %x_GLF_color, %115
+        exit_if  # if_10
+      }
+      %b27 = block {  # false
+        %116:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
+        %x_165:i32 = load %116
+        %x_166:f32 = convert %x_165
+        %119:vec4<f32> = construct %x_166, %x_166, %x_166, %x_166
+        store %x_GLF_color, %119
+        exit_if  # if_10
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b28 {
+  %b28 = block {
+    %121:void = call %main_1
+    %122:vec4<f32> = load %x_GLF_color
+    %123:main_out = construct %122
+    ret %123
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1e85d65
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,91 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %7:f32 = load_vector_element %gl_FragCoord, 1u
+    %8:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %9:f32 = load %8
+    %10:bool = lt %7, %9
+    %11:f32 = select 1.0f, 0.10000000149011611938f, %10
+    %12:f32 = trunc %11
+    %13:f32 = fract %12
+    store %f, %13
+    %14:f32 = load %f
+    %15:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %16:f32 = load %15
+    %17:bool = eq %14, %16
+    if %17 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %18:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %19:i32 = load %18
+        %20:f32 = convert %19
+        %21:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %22:i32 = load %21
+        %23:f32 = convert %22
+        %24:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %25:i32 = load %24
+        %26:f32 = convert %25
+        %27:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %28:i32 = load %27
+        %29:f32 = convert %28
+        %30:vec4<f32> = construct %20, %23, %26, %29
+        store %x_GLF_color, %30
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %31:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %32:i32 = load %31
+        %33:f32 = convert %32
+        %34:vec4<f32> = construct %33
+        store %x_GLF_color, %34
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b5 {
+  %b5 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %37:void = call %main_1
+    %38:vec4<f32> = load %x_GLF_color
+    %39:main_out = construct %38
+    ret %39
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8b491a0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,91 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %x_35:f32 = load_vector_element %gl_FragCoord, 1u
+    %8:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
+    %x_37:f32 = load %8
+    %10:bool = lt %x_35, %x_37
+    %11:f32 = select 1.0f, 0.10000000149011611938f, %10
+    %12:f32 = trunc %11
+    %13:f32 = fract %12
+    store %f, %13
+    %x_42:f32 = load %f
+    %15:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
+    %x_44:f32 = load %15
+    %17:bool = eq %x_42, %x_44
+    if %17 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %18:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_50:i32 = load %18
+        %20:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_53:i32 = load %20
+        %22:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_56:i32 = load %22
+        %24:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_59:i32 = load %24
+        %26:f32 = convert %x_50
+        %27:f32 = convert %x_53
+        %28:f32 = convert %x_56
+        %29:f32 = convert %x_59
+        %30:vec4<f32> = construct %26, %27, %28, %29
+        store %x_GLF_color, %30
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %31:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_63:i32 = load %31
+        %x_64:f32 = convert %x_63
+        %34:vec4<f32> = construct %x_64, %x_64, %x_64, %x_64
+        store %x_GLF_color, %34
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b5 {
+  %b5 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %37:void = call %main_1
+    %38:vec4<f32> = load %x_GLF_color
+    %39:main_out = construct %38
+    ret %39
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..c8be0bb
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_24:ptr<function, vec4<f32>, read_write> = var
+    store %x_GLF_color, vec4<f32>(0.0f)
+    %5:ptr<uniform, i32, read> = access %x_6, 0u
+    %6:i32 = load %5
+    %7:bool = eq %6, 0i
+    if %7 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret
+      }
+    }
+    store %x_24, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b4 {
+  %b4 = block {
+    %9:void = call %main_1
+    %10:vec4<f32> = load %x_GLF_color
+    %11:main_out = construct %10
+    ret %11
+  }
+}
+%func_ = func():vec4<f32> -> %b5 {
+  %b5 = block {
+    ret vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b3d0a39
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,53 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_24:ptr<function, vec4<f32>, read_write> = var
+    store %x_GLF_color, vec4<f32>(0.0f)
+    %5:ptr<uniform, i32, read> = access %x_6, 0u
+    %x_26:i32 = load %5
+    %7:bool = eq %x_26, 0i
+    if %7 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret
+      }
+    }
+    store %x_24, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b4 {
+  %b4 = block {
+    %9:void = call %main_1
+    %10:vec4<f32> = load %x_GLF_color
+    %11:main_out = construct %10
+    ret %11
+  }
+}
+%func_ = func():vec4<f32> -> %b5 {
+  %b5 = block {
+    ret vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cc6ba45
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,97 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
+}
+
+buf1 = struct @align(8) {
+  v1:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m24:ptr<function, mat2x2<f32>, read_write> = var
+    %a:ptr<function, f32, read_write> = var
+    %v2:ptr<function, vec2<f32>, read_write> = var
+    %v3:ptr<function, vec2<f32>, read_write> = var
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %10:f32 = load %9
+    %11:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %12:f32 = load %11
+    %13:vec2<f32> = construct %10, %12
+    %14:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %15:f32 = load_vector_element %14, 0u
+    %16:f32 = mul %15, 1.0f
+    %17:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %18:f32 = load %17
+    %19:vec2<f32> = construct %16, %18
+    %20:mat2x2<f32> = construct %13, %19
+    store %m24, %20
+    %21:ptr<function, vec2<f32>, read_write> = access %m24, 0u
+    %22:f32 = load_vector_element %21, 0u
+    store %a, %22
+    store %v2, vec2<f32>(1.0f)
+    %23:vec2<f32> = load %v2
+    %24:f32 = load %a
+    %25:vec2<f32> = construct %24, 1.0f
+    %26:vec2<f32> = reflect %23, %25
+    store %v3, %26
+    %27:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %28:f32 = load %27
+    %29:f32 = load_vector_element %v3, 0u
+    %30:f32 = load_vector_element %v3, 1u
+    %31:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %32:f32 = load %31
+    %33:vec4<f32> = construct %28, %29, %30, %32
+    store %x_GLF_color, %33
+    %34:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %35:f32 = load_vector_element %34, 1u
+    %36:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %37:f32 = load %36
+    %38:bool = eq %35, %37
+    if %38 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %39:f32 = load_vector_element %x_GLF_color, 0u
+        %40:f32 = load_vector_element %x_GLF_color, 3u
+        %41:vec4<f32> = construct %39, vec2<f32>(0.0f), %40
+        store %x_GLF_color, %41
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1947d59
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,99 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
+}
+
+buf1 = struct @align(8) {
+  v1:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m24:ptr<function, mat2x2<f32>, read_write> = var
+    %a:ptr<function, f32, read_write> = var
+    %v2:ptr<function, vec2<f32>, read_write> = var
+    %v3:ptr<function, vec2<f32>, read_write> = var
+    %9:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_40:f32 = load %9
+    %11:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_42:f32 = load %11
+    %13:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %x_44:f32 = load_vector_element %13, 0u
+    %15:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_47:f32 = load %15
+    %17:vec2<f32> = construct %x_40, %x_42
+    %18:f32 = mul %x_44, 1.0f
+    %19:vec2<f32> = construct %18, %x_47
+    %20:mat2x2<f32> = construct %17, %19
+    store %m24, %20
+    %x_51:mat2x2<f32> = load %m24
+    %22:f32 = access %x_51, 0u, 0u
+    store %a, %22
+    store %v2, vec2<f32>(1.0f)
+    %x_53:vec2<f32> = load %v2
+    %x_54:f32 = load %a
+    %x_55:vec2<f32> = construct %x_54, 1.0f
+    %26:vec2<f32> = reflect %x_53, %x_55
+    store %v3, %26
+    %27:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_58:f32 = load %27
+    %x_59:vec2<f32> = load %v3
+    %30:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_61:f32 = load %30
+    %32:f32 = access %x_59, 0u
+    %33:f32 = access %x_59, 1u
+    %34:vec4<f32> = construct %x_58, %32, %33, %x_61
+    store %x_GLF_color, %34
+    %35:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %x_66:f32 = load_vector_element %35, 1u
+    %37:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_68:f32 = load %37
+    %39:bool = eq %x_66, %x_68
+    if %39 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %x_73:vec4<f32> = load %x_GLF_color
+        %41:f32 = access %x_73, 0u
+        %42:f32 = access %x_73, 3u
+        %43:vec4<f32> = construct %41, 0.0f, 0.0f, %42
+        store %x_GLF_color, %43
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %45:void = call %main_1
+    %46:vec4<f32> = load %x_GLF_color
+    %47:main_out = construct %46
+    ret %47
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..05b5015
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,164 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+S = struct @align(4) {
+  data:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_struct_S_i11_i1_ = func(%s:ptr<function, S, read_write>, %x:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %6:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %7:i32 = load %6
+    %8:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %9:i32 = load %8
+    %10:bool = eq %7, %9
+    if %10 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret
+      }
+    }
+    %11:ptr<function, i32, read_write> = access %s, 0u
+    %12:i32 = load %x
+    store %11, %12
+    ret
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    %i:ptr<function, i32, read_write> = var
+    %arr:ptr<function, array<S, 10>, read_write> = var
+    %index:ptr<function, i32, read_write> = var
+    %param:ptr<function, S, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, S, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    store %i, 0i
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %21:i32 = load %i
+        %22:bool = lt %21, 10i
+        if %22 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_46:i32 = load %i
+        %24:ptr<function, i32, read_write> = access %arr, %x_46, 0u
+        store %24, 0i
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        %25:i32 = load %i
+        %26:i32 = add %25, 1i
+        store %i, %26
+        next_iteration %b5
+      }
+    }
+    %27:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %28:i32 = load %27
+    %29:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %30:i32 = load %29
+    %31:bool = eq %28, %30
+    if %31 [t: %b9, f: %b10] {  # if_3
+      %b9 = block {  # true
+        %x_58:i32 = load %index
+        %33:i32 = load %index
+        %34:ptr<function, S, read_write> = access %arr, %33
+        %35:S = load %34
+        store %param, %35
+        %36:i32 = load %index
+        store %param_1, %36
+        %37:void = call %func_struct_S_i11_i1_, %param, %param_1
+        %38:ptr<function, S, read_write> = access %arr, %x_58
+        %39:S = load %param
+        store %38, %39
+        exit_if  # if_3
+      }
+      %b10 = block {  # false
+        %40:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_66:i32 = load %40
+        %42:ptr<function, S, read_write> = access %arr, %x_66
+        %43:S = load %42
+        store %param_2, %43
+        %44:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %45:i32 = load %44
+        store %param_3, %45
+        %46:void = call %func_struct_S_i11_i1_, %param_2, %param_3
+        %47:ptr<function, S, read_write> = access %arr, %x_66
+        %48:S = load %param_2
+        store %47, %48
+        exit_if  # if_3
+      }
+    }
+    %49:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %50:i32 = load %49
+    %51:ptr<function, i32, read_write> = access %arr, %50, 0u
+    %52:i32 = load %51
+    %53:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %54:i32 = load %53
+    %55:bool = eq %52, %54
+    if %55 [t: %b11, f: %b12] {  # if_4
+      %b11 = block {  # true
+        %56:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %57:i32 = load %56
+        %58:f32 = convert %57
+        %59:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %60:i32 = load %59
+        %61:f32 = convert %60
+        %62:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %63:i32 = load %62
+        %64:f32 = convert %63
+        %65:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %66:i32 = load %65
+        %67:f32 = convert %66
+        %68:vec4<f32> = construct %58, %61, %64, %67
+        store %x_GLF_color, %68
+        exit_if  # if_4
+      }
+      %b12 = block {  # false
+        %69:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %70:i32 = load %69
+        %71:f32 = convert %70
+        %72:vec4<f32> = construct %71
+        store %x_GLF_color, %72
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %74:void = call %main_1
+    %75:vec4<f32> = load %x_GLF_color
+    %76:main_out = construct %75
+    ret %76
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e6217f7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,163 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+S = struct @align(4) {
+  data:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_struct_S_i11_i1_ = func(%s:ptr<function, S, read_write>, %x:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %6:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %x_103:i32 = load %6
+    %8:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %x_105:i32 = load %8
+    %10:bool = eq %x_103, %x_105
+    if %10 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret
+      }
+    }
+    %x_109:i32 = load %x
+    %12:ptr<function, i32, read_write> = access %s, 0u
+    store %12, %x_109
+    ret
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    %i:ptr<function, i32, read_write> = var
+    %arr:ptr<function, array<S, 10>, read_write> = var
+    %index:ptr<function, i32, read_write> = var
+    %param:ptr<function, S, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, S, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    store %i, 0i
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %x_43:i32 = load %i
+        %22:bool = lt %x_43, 10i
+        if %22 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_46:i32 = load %i
+        %24:ptr<function, i32, read_write> = access %arr, %x_46, 0u
+        store %24, 0i
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        %x_48:i32 = load %i
+        %26:i32 = add %x_48, 1i
+        store %i, %26
+        next_iteration %b5
+      }
+    }
+    %27:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %x_51:i32 = load %27
+    %29:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %x_53:i32 = load %29
+    %31:bool = eq %x_51, %x_53
+    if %31 [t: %b9, f: %b10] {  # if_3
+      %b9 = block {  # true
+        %x_58:i32 = load %index
+        %33:ptr<function, S, read_write> = access %arr, %x_58
+        %x_60:S = load %33
+        store %param, %x_60
+        %x_61:i32 = load %index
+        store %param_1, %x_61
+        %36:void = call %func_struct_S_i11_i1_, %param, %param_1
+        %x_63:S = load %param
+        %38:ptr<function, S, read_write> = access %arr, %x_58
+        store %38, %x_63
+        exit_if  # if_3
+      }
+      %b10 = block {  # false
+        %39:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_66:i32 = load %39
+        %41:ptr<function, S, read_write> = access %arr, %x_66
+        %x_68:S = load %41
+        store %param_2, %x_68
+        %43:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_70:i32 = load %43
+        store %param_3, %x_70
+        %45:void = call %func_struct_S_i11_i1_, %param_2, %param_3
+        %x_72:S = load %param_2
+        %47:ptr<function, S, read_write> = access %arr, %x_66
+        store %47, %x_72
+        exit_if  # if_3
+      }
+    }
+    %48:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %x_75:i32 = load %48
+    %50:ptr<function, i32, read_write> = access %arr, %x_75, 0u
+    %x_77:i32 = load %50
+    %52:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+    %x_79:i32 = load %52
+    %54:bool = eq %x_77, %x_79
+    if %54 [t: %b11, f: %b12] {  # if_4
+      %b11 = block {  # true
+        %55:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_85:i32 = load %55
+        %57:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_88:i32 = load %57
+        %59:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_91:i32 = load %59
+        %61:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_94:i32 = load %61
+        %63:f32 = convert %x_85
+        %64:f32 = convert %x_88
+        %65:f32 = convert %x_91
+        %66:f32 = convert %x_94
+        %67:vec4<f32> = construct %63, %64, %65, %66
+        store %x_GLF_color, %67
+        exit_if  # if_4
+      }
+      %b12 = block {  # false
+        %68:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_98:i32 = load %68
+        %x_99:f32 = convert %x_98
+        %71:vec4<f32> = construct %x_99, %x_99, %x_99, %x_99
+        store %x_GLF_color, %71
+        exit_if  # if_4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %73:void = call %main_1
+    %74:vec4<f32> = load %x_GLF_color
+    %75:main_out = construct %74
+    ret %75
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cf36435
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,114 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:u32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_uint_values:array<strided_arr, 1> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+strided_arr_2 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf2 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_2, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %7:ptr<uniform, u32, read> = access %x_6, 0u, 0i, 0u
+    %8:u32 = load %7
+    %9:ptr<uniform, u32, read> = access %x_6, 0u, 0i, 0u
+    %10:u32 = load %9
+    %11:u32 = select %10, 92382u, true
+    %12:u32 = div %8, %11
+    %13:vec4<f32> = unpack4x8unorm %12
+    store %v, %13
+    %14:vec4<f32> = load %v
+    %15:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %16:i32 = load %15
+    %17:f32 = convert %16
+    %18:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %19:i32 = load %18
+    %20:f32 = convert %19
+    %21:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %22:i32 = load %21
+    %23:f32 = convert %22
+    %24:ptr<uniform, f32, read> = access %x_10, 0u, 1i, 0u
+    %25:f32 = load %24
+    %26:ptr<uniform, f32, read> = access %x_10, 0u, 2i, 0u
+    %27:f32 = load %26
+    %28:f32 = div %25, %27
+    %29:vec4<f32> = construct %17, %20, %23, %28
+    %30:f32 = distance %14, %29
+    %31:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
+    %32:f32 = load %31
+    %33:bool = lt %30, %32
+    if %33 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %34:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %35:i32 = load %34
+        %36:f32 = convert %35
+        %37:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %38:i32 = load %37
+        %39:f32 = convert %38
+        %40:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %41:i32 = load %40
+        %42:f32 = convert %41
+        %43:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %44:i32 = load %43
+        %45:f32 = convert %44
+        %46:vec4<f32> = construct %36, %39, %42, %45
+        store %x_GLF_color, %46
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %47:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %48:i32 = load %47
+        %49:f32 = convert %48
+        %50:vec4<f32> = construct %49
+        store %x_GLF_color, %50
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %52:void = call %main_1
+    %53:vec4<f32> = load %x_GLF_color
+    %54:main_out = construct %53
+    ret %54
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..eb67880
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,114 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:u32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_uint_values:array<strided_arr, 1> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
+}
+
+strided_arr_2 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf2 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_2, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec4<f32>, read_write> = var
+    %7:ptr<uniform, u32, read> = access %x_6, 0u, 0i, 0u
+    %x_39:u32 = load %7
+    %9:ptr<uniform, u32, read> = access %x_6, 0u, 0i, 0u
+    %x_41:u32 = load %9
+    %11:u32 = select %x_41, 92382u, true
+    %12:u32 = div %x_39, %11
+    %13:vec4<f32> = unpack4x8unorm %12
+    store %v, %13
+    %x_45:vec4<f32> = load %v
+    %15:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_47:i32 = load %15
+    %17:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_50:i32 = load %17
+    %19:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+    %x_53:i32 = load %19
+    %21:ptr<uniform, f32, read> = access %x_10, 0u, 1i, 0u
+    %x_56:f32 = load %21
+    %23:ptr<uniform, f32, read> = access %x_10, 0u, 2i, 0u
+    %x_58:f32 = load %23
+    %25:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
+    %x_63:f32 = load %25
+    %27:f32 = convert %x_47
+    %28:f32 = convert %x_50
+    %29:f32 = convert %x_53
+    %30:f32 = div %x_56, %x_58
+    %31:vec4<f32> = construct %27, %28, %29, %30
+    %32:f32 = distance %x_45, %31
+    %33:bool = lt %32, %x_63
+    if %33 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %34:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_69:i32 = load %34
+        %36:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_72:i32 = load %36
+        %38:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_75:i32 = load %38
+        %40:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
+        %x_78:i32 = load %40
+        %42:f32 = convert %x_69
+        %43:f32 = convert %x_72
+        %44:f32 = convert %x_75
+        %45:f32 = convert %x_78
+        %46:vec4<f32> = construct %42, %43, %44, %45
+        store %x_GLF_color, %46
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %47:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
+        %x_82:i32 = load %47
+        %x_83:f32 = convert %x_82
+        %50:vec4<f32> = construct %x_83, %x_83, %x_83, %x_83
+        store %x_GLF_color, %50
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %52:void = call %main_1
+    %53:vec4<f32> = load %x_GLF_color
+    %54:main_out = construct %53
+    ret %54
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..c8660d5
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,212 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m0:ptr<function, mat4x4<f32>, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %m1:ptr<function, mat4x4<f32>, read_write> = var
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %9:i32 = load %8
+    %x_41:f32 = convert %9
+    %11:vec4<f32> = construct %x_41, 0.0f, 0.0f, 0.0f
+    %12:vec4<f32> = construct 0.0f, %x_41, 0.0f, 0.0f
+    %13:vec4<f32> = construct 0.0f, 0.0f, %x_41, 0.0f
+    %14:vec4<f32> = construct 0.0f, 0.0f, 0.0f, %x_41
+    %15:mat4x4<f32> = construct %11, %12, %13, %14
+    store %m0, %15
+    %16:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %17:i32 = load %16
+    store %c, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %18:i32 = load %c
+        %19:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %20:i32 = load %19
+        %21:bool = lt %18, %20
+        if %21 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %22:mat4x4<f32> = load %m0
+        store %m1, %22
+        %x_59:i32 = load %c
+        %24:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_61:i32 = load %24
+        %26:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_64:i32 = load %26
+        %28:i32 = mod %x_59, %x_61
+        %29:ptr<function, vec4<f32>, read_write> = access %m1, %28
+        %30:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
+        %31:f32 = load %30
+        store_vector_element %29, %x_64, %31
+        %x_68:i32 = load %c
+        %33:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_70:i32 = load %33
+        %35:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_73:i32 = load %35
+        %37:i32 = mod %x_68, %x_70
+        %38:ptr<function, vec4<f32>, read_write> = access %m0, %37
+        %39:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
+        %40:f32 = load %39
+        store_vector_element %38, %x_73, %40
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %41:i32 = load %c
+        %42:i32 = add %41, 1i
+        store %c, %42
+        next_iteration %b3
+      }
+    }
+    %43:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %44:i32 = load %43
+    %45:f32 = convert %44
+    %46:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %47:i32 = load %46
+    %48:f32 = convert %47
+    %49:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %50:i32 = load %49
+    %51:f32 = convert %50
+    %52:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %53:i32 = load %52
+    %54:f32 = convert %53
+    %55:vec4<f32> = construct %45, %48, %51, %54
+    %56:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %57:i32 = load %56
+    %58:f32 = convert %57
+    %59:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %60:i32 = load %59
+    %61:f32 = convert %60
+    %62:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %63:i32 = load %62
+    %64:f32 = convert %63
+    %65:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %66:i32 = load %65
+    %67:f32 = convert %66
+    %68:vec4<f32> = construct %58, %61, %64, %67
+    %69:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %70:i32 = load %69
+    %71:f32 = convert %70
+    %72:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %73:i32 = load %72
+    %74:f32 = convert %73
+    %75:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %76:i32 = load %75
+    %77:f32 = convert %76
+    %78:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %79:i32 = load %78
+    %80:f32 = convert %79
+    %81:vec4<f32> = construct %71, %74, %77, %80
+    %82:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %83:i32 = load %82
+    %84:f32 = convert %83
+    %85:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %86:i32 = load %85
+    %87:f32 = convert %86
+    %88:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %89:i32 = load %88
+    %90:f32 = convert %89
+    %91:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %92:i32 = load %91
+    %93:f32 = convert %92
+    %94:vec4<f32> = construct %84, %87, %90, %93
+    %x_132:mat4x4<f32> = construct %55, %68, %81, %94
+    %96:ptr<function, vec4<f32>, read_write> = access %m0, 0u
+    %97:vec4<f32> = load %96
+    %98:vec4<f32> = access %x_132, 0u
+    %99:vec4<bool> = eq %97, %98
+    %100:bool = all %99
+    %101:ptr<function, vec4<f32>, read_write> = access %m0, 1u
+    %102:vec4<f32> = load %101
+    %103:vec4<f32> = access %x_132, 1u
+    %104:vec4<bool> = eq %102, %103
+    %105:bool = all %104
+    %106:bool = and %100, %105
+    %107:ptr<function, vec4<f32>, read_write> = access %m0, 2u
+    %108:vec4<f32> = load %107
+    %109:vec4<f32> = access %x_132, 2u
+    %110:vec4<bool> = eq %108, %109
+    %111:bool = all %110
+    %112:bool = and %106, %111
+    %113:ptr<function, vec4<f32>, read_write> = access %m0, 3u
+    %114:vec4<f32> = load %113
+    %115:vec4<f32> = access %x_132, 3u
+    %116:vec4<bool> = eq %114, %115
+    %117:bool = all %116
+    %118:bool = and %112, %117
+    if %118 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %119:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %120:i32 = load %119
+        %121:f32 = convert %120
+        %122:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %123:i32 = load %122
+        %124:f32 = convert %123
+        %125:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %126:i32 = load %125
+        %127:f32 = convert %126
+        %128:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %129:i32 = load %128
+        %130:f32 = convert %129
+        %131:vec4<f32> = construct %121, %124, %127, %130
+        store %x_GLF_color, %131
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %132:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %133:i32 = load %132
+        %134:f32 = convert %133
+        %135:vec4<f32> = construct %134
+        store %x_GLF_color, %135
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %137:void = call %main_1
+    %138:vec4<f32> = load %x_GLF_color
+    %139:main_out = construct %138
+    ret %139
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8f8a8e0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,209 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m0:ptr<function, mat4x4<f32>, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %m1:ptr<function, mat4x4<f32>, read_write> = var
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_40:i32 = load %8
+    %x_41:f32 = convert %x_40
+    %11:vec4<f32> = construct %x_41, 0.0f, 0.0f, 0.0f
+    %12:vec4<f32> = construct 0.0f, %x_41, 0.0f, 0.0f
+    %13:vec4<f32> = construct 0.0f, 0.0f, %x_41, 0.0f
+    %14:vec4<f32> = construct 0.0f, 0.0f, 0.0f, %x_41
+    %15:mat4x4<f32> = construct %11, %12, %13, %14
+    store %m0, %15
+    %16:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_48:i32 = load %16
+    store %c, %x_48
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_53:i32 = load %c
+        %19:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_55:i32 = load %19
+        %21:bool = lt %x_53, %x_55
+        if %21 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_58:mat4x4<f32> = load %m0
+        store %m1, %x_58
+        %x_59:i32 = load %c
+        %24:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_61:i32 = load %24
+        %26:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_64:i32 = load %26
+        %28:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
+        %x_66:f32 = load %28
+        %30:i32 = mod %x_59, %x_61
+        %31:ptr<function, vec4<f32>, read_write> = access %m1, %30
+        store_vector_element %31, %x_64, %x_66
+        %x_68:i32 = load %c
+        %33:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_70:i32 = load %33
+        %35:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_73:i32 = load %35
+        %37:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
+        %x_75:f32 = load %37
+        %39:i32 = mod %x_68, %x_70
+        %40:ptr<function, vec4<f32>, read_write> = access %m0, %39
+        store_vector_element %40, %x_73, %x_75
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_77:i32 = load %c
+        %42:i32 = add %x_77, 1i
+        store %c, %42
+        next_iteration %b3
+      }
+    }
+    %x_79:mat4x4<f32> = load %m0
+    %44:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_81:i32 = load %44
+    %46:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_84:i32 = load %46
+    %48:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_87:i32 = load %48
+    %50:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_90:i32 = load %50
+    %52:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_93:i32 = load %52
+    %54:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_96:i32 = load %54
+    %56:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_99:i32 = load %56
+    %58:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_102:i32 = load %58
+    %60:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_105:i32 = load %60
+    %62:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_108:i32 = load %62
+    %64:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_111:i32 = load %64
+    %66:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_114:i32 = load %66
+    %68:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_117:i32 = load %68
+    %70:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_120:i32 = load %70
+    %72:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_123:i32 = load %72
+    %74:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_126:i32 = load %74
+    %76:f32 = convert %x_81
+    %77:f32 = convert %x_84
+    %78:f32 = convert %x_87
+    %79:f32 = convert %x_90
+    %80:vec4<f32> = construct %76, %77, %78, %79
+    %81:f32 = convert %x_93
+    %82:f32 = convert %x_96
+    %83:f32 = convert %x_99
+    %84:f32 = convert %x_102
+    %85:vec4<f32> = construct %81, %82, %83, %84
+    %86:f32 = convert %x_105
+    %87:f32 = convert %x_108
+    %88:f32 = convert %x_111
+    %89:f32 = convert %x_114
+    %90:vec4<f32> = construct %86, %87, %88, %89
+    %91:f32 = convert %x_117
+    %92:f32 = convert %x_120
+    %93:f32 = convert %x_123
+    %94:f32 = convert %x_126
+    %95:vec4<f32> = construct %91, %92, %93, %94
+    %x_132:mat4x4<f32> = construct %80, %85, %90, %95
+    %97:vec4<f32> = access %x_79, 0u
+    %98:vec4<f32> = access %x_132, 0u
+    %99:vec4<bool> = eq %97, %98
+    %100:bool = all %99
+    %101:vec4<f32> = access %x_79, 1u
+    %102:vec4<f32> = access %x_132, 1u
+    %103:vec4<bool> = eq %101, %102
+    %104:bool = all %103
+    %105:bool = and %100, %104
+    %106:vec4<f32> = access %x_79, 2u
+    %107:vec4<f32> = access %x_132, 2u
+    %108:vec4<bool> = eq %106, %107
+    %109:bool = all %108
+    %110:bool = and %105, %109
+    %111:vec4<f32> = access %x_79, 3u
+    %112:vec4<f32> = access %x_132, 3u
+    %113:vec4<bool> = eq %111, %112
+    %114:bool = all %113
+    %115:bool = and %110, %114
+    if %115 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        %116:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_156:i32 = load %116
+        %118:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_159:i32 = load %118
+        %120:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_162:i32 = load %120
+        %122:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_165:i32 = load %122
+        %124:f32 = convert %x_156
+        %125:f32 = convert %x_159
+        %126:f32 = convert %x_162
+        %127:f32 = convert %x_165
+        %128:vec4<f32> = construct %124, %125, %126, %127
+        store %x_GLF_color, %128
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        %129:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_169:i32 = load %129
+        %x_170:f32 = convert %x_169
+        %132:vec4<f32> = construct %x_170, %x_170, %x_170, %x_170
+        store %x_GLF_color, %132
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %134:void = call %main_1
+    %135:vec4<f32> = load %x_GLF_color
+    %136:main_out = construct %135
+    ret %136
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..6c5f3a8
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,114 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %A:ptr<function, array<i32, 2>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %8:i32 = load %7
+    store %i, %8
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %9:i32 = load %i
+        %10:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %11:i32 = load %10
+        %12:bool = lt %9, %11
+        if %12 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_40:i32 = load %i
+        %14:ptr<function, i32, read_write> = access %A, %x_40
+        %15:i32 = load %i
+        store %14, %15
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %16:i32 = load %i
+        %17:i32 = add %16, 1i
+        store %i, %17
+        next_iteration %b3
+      }
+    }
+    %18:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %19:i32 = load %18
+    %20:ptr<function, i32, read_write> = access %A, %19
+    %21:i32 = load %20
+    %22:i32 = complement %21
+    %23:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %24:i32 = load %23
+    %25:ptr<function, i32, read_write> = access %A, %24
+    %26:i32 = load %25
+    %27:i32 = complement %26
+    %28:i32 = min %22, %27
+    store %a, %28
+    %29:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %30:i32 = load %29
+    %31:f32 = convert %30
+    %32:vec4<f32> = construct %31
+    store %x_GLF_color, %32
+    %33:i32 = load %a
+    %34:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %35:i32 = load %34
+    %36:i32 = negation %35
+    %37:bool = eq %33, %36
+    if %37 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        %38:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %39:i32 = load %38
+        %40:f32 = convert %39
+        %41:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %42:i32 = load %41
+        %43:f32 = convert %42
+        %44:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %45:i32 = load %44
+        %46:f32 = convert %45
+        %47:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %48:i32 = load %47
+        %49:f32 = convert %48
+        %50:vec4<f32> = construct %40, %43, %46, %49
+        store %x_GLF_color, %50
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %52:void = call %main_1
+    %53:vec4<f32> = load %x_GLF_color
+    %54:main_out = construct %53
+    ret %54
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dd77b49
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,114 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 3> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %A:ptr<function, array<i32, 2>, read_write> = var
+    %a:ptr<function, i32, read_write> = var
+    %7:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_30:i32 = load %7
+    store %i, %x_30
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_35:i32 = load %i
+        %10:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_37:i32 = load %10
+        %12:bool = lt %x_35, %x_37
+        if %12 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_40:i32 = load %i
+        %x_41:i32 = load %i
+        %15:ptr<function, i32, read_write> = access %A, %x_40
+        store %15, %x_41
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_43:i32 = load %i
+        %17:i32 = add %x_43, 1i
+        store %i, %17
+        next_iteration %b3
+      }
+    }
+    %18:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_46:i32 = load %18
+    %20:ptr<function, i32, read_write> = access %A, %x_46
+    %x_48:i32 = load %20
+    %22:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_51:i32 = load %22
+    %24:ptr<function, i32, read_write> = access %A, %x_51
+    %x_53:i32 = load %24
+    %26:i32 = complement %x_48
+    %27:i32 = complement %x_53
+    %28:i32 = min %26, %27
+    store %a, %28
+    %29:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_57:i32 = load %29
+    %x_58:f32 = convert %x_57
+    %32:vec4<f32> = construct %x_58, %x_58, %x_58, %x_58
+    store %x_GLF_color, %32
+    %x_60:i32 = load %a
+    %34:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_62:i32 = load %34
+    %36:i32 = negation %x_62
+    %37:bool = eq %x_60, %36
+    if %37 [t: %b7] {  # if_2
+      %b7 = block {  # true
+        %38:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_68:i32 = load %38
+        %40:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_71:i32 = load %40
+        %42:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_74:i32 = load %42
+        %44:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_77:i32 = load %44
+        %46:f32 = convert %x_68
+        %47:f32 = convert %x_71
+        %48:f32 = convert %x_74
+        %49:f32 = convert %x_77
+        %50:vec4<f32> = construct %46, %47, %48, %49
+        store %x_GLF_color, %50
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %52:void = call %main_1
+    %53:vec4<f32> = load %x_GLF_color
+    %54:main_out = construct %53
+    ret %54
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..6508e5b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,115 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %7:i32 = load %6
+    store %a, %7
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %9:i32 = load %8
+    store %i, %9
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %10:i32 = load %i
+        %11:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %12:i32 = load %11
+        %13:bool = lt %10, %12
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %14:i32 = load %i
+        %15:i32 = mod 1i, %14
+        %16:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %17:i32 = load %16
+        %18:bool = eq %15, %17
+        if %18 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            continue %b4
+          }
+        }
+        %19:i32 = load %a
+        %20:i32 = add %19, 1i
+        store %a, %20
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %21:i32 = load %i
+        %22:i32 = add %21, 1i
+        store %i, %22
+        next_iteration %b3
+      }
+    }
+    %23:i32 = load %a
+    %24:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %25:i32 = load %24
+    %26:bool = eq %23, %25
+    if %26 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %27:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %28:i32 = load %27
+        %29:f32 = convert %28
+        %30:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %31:i32 = load %30
+        %32:f32 = convert %31
+        %33:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %34:i32 = load %33
+        %35:f32 = convert %34
+        %36:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %37:i32 = load %36
+        %38:f32 = convert %37
+        %39:vec4<f32> = construct %29, %32, %35, %38
+        store %x_GLF_color, %39
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %40:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %41:i32 = load %40
+        %42:f32 = convert %41
+        %43:vec4<f32> = construct %42
+        store %x_GLF_color, %43
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %45:void = call %main_1
+    %46:vec4<f32> = load %x_GLF_color
+    %47:main_out = construct %46
+    ret %47
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..17da838
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,115 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_27:i32 = load %6
+    store %a, %x_27
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_29:i32 = load %8
+    store %i, %x_29
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_34:i32 = load %i
+        %11:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_36:i32 = load %11
+        %13:bool = lt %x_34, %x_36
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_39:i32 = load %i
+        %15:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_42:i32 = load %15
+        %17:i32 = mod 1i, %x_39
+        %18:bool = eq %17, %x_42
+        if %18 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            continue %b4
+          }
+        }
+        %x_46:i32 = load %a
+        %20:i32 = add %x_46, 1i
+        store %a, %20
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_48:i32 = load %i
+        %22:i32 = add %x_48, 1i
+        store %i, %22
+        next_iteration %b3
+      }
+    }
+    %x_50:i32 = load %a
+    %24:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_52:i32 = load %24
+    %26:bool = eq %x_50, %x_52
+    if %26 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %27:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_58:i32 = load %27
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_61:i32 = load %29
+        %31:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_64:i32 = load %31
+        %33:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+        %x_67:i32 = load %33
+        %35:f32 = convert %x_58
+        %36:f32 = convert %x_61
+        %37:f32 = convert %x_64
+        %38:f32 = convert %x_67
+        %39:vec4<f32> = construct %35, %36, %37, %38
+        store %x_GLF_color, %39
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %40:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+        %x_71:i32 = load %40
+        %x_72:f32 = convert %x_71
+        %43:vec4<f32> = construct %x_72, %x_72, %x_72, %x_72
+        store %x_GLF_color, %43
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %45:void = call %main_1
+    %46:vec4<f32> = load %x_GLF_color
+    %47:main_out = construct %46
+    ret %47
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..598d348
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,77 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  two:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %a, 0i
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %6:i32 = load %i
+        %7:bool = lt %6, 2i
+        if %7 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %8:i32 = load %i
+        %9:i32 = or %8, -2i
+        %10:i32 = sub %9, 1i
+        store %a, %10
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %11:i32 = load %i
+        %12:i32 = add %11, 1i
+        store %i, %12
+        next_iteration %b3
+      }
+    }
+    %13:i32 = load %a
+    %14:bool = eq %13, -2i
+    if %14 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %16:void = call %main_1
+    %17:vec4<f32> = load %x_GLF_color
+    %18:main_out = construct %17
+    ret %18
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f89f7ea
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,77 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  two:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %a, 0i
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_30:i32 = load %i
+        %7:bool = lt %x_30, 2i
+        if %7 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_33:i32 = load %i
+        %9:i32 = or %x_33, -2i
+        %10:i32 = sub %9, 1i
+        store %a, %10
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_36:i32 = load %i
+        %12:i32 = add %x_36, 1i
+        store %i, %12
+        next_iteration %b3
+      }
+    }
+    %x_38:i32 = load %a
+    %14:bool = eq %x_38, -2i
+    if %14 [t: %b7, f: %b8] {  # if_2
+      %b7 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b8 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %16:void = call %main_1
+    %17:vec4<f32> = load %x_GLF_color
+    %18:main_out = construct %17
+    ret %18
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..e2b5339
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,118 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %sum:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %a, 65536i
+    %7:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %8:i32 = load %7
+    store %sum, %8
+    %9:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %10:i32 = load %9
+    %11:bool = eq 1i, %10
+    if %11 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %12:i32 = load %a
+        %13:i32 = sub %12, 1i
+        store %a, %13
+        exit_if  # if_1
+      }
+    }
+    store %i, 0i
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %14:i32 = load %i
+        %15:i32 = load %a
+        %16:bool = lt %14, %15
+        if %16 [t: %b6, f: %b7] {  # if_2
+          %b6 = block {  # true
+            exit_if  # if_2
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %17:i32 = load %sum
+        %18:i32 = load %i
+        %19:i32 = add %17, %18
+        store %sum, %19
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %20:i32 = load %i
+        %21:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %22:i32 = load %21
+        %23:i32 = add %20, %22
+        store %i, %23
+        next_iteration %b4
+      }
+    }
+    %24:i32 = load %sum
+    %25:ptr<uniform, i32, read> = access %x_7, 0u, 3i, 0u
+    %26:i32 = load %25
+    %27:bool = eq %24, %26
+    if %27 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %28:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %29:i32 = load %28
+        %30:f32 = convert %29
+        %31:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %32:i32 = load %31
+        %33:f32 = convert %32
+        %34:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %35:i32 = load %34
+        %36:f32 = convert %35
+        %37:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %38:i32 = load %37
+        %39:f32 = convert %38
+        %40:vec4<f32> = construct %30, %33, %36, %39
+        store %x_GLF_color, %40
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %41:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %42:i32 = load %41
+        %43:f32 = convert %42
+        %44:vec4<f32> = construct %43
+        store %x_GLF_color, %44
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %46:void = call %main_1
+    %47:vec4<f32> = load %x_GLF_color
+    %48:main_out = construct %47
+    ret %48
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5369c53
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,118 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, i32, read_write> = var
+    %sum:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %a, 65536i
+    %7:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %x_29:i32 = load %7
+    store %sum, %x_29
+    %9:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_31:i32 = load %9
+    %11:bool = eq 1i, %x_31
+    if %11 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_35:i32 = load %a
+        %13:i32 = sub %x_35, 1i
+        store %a, %13
+        exit_if  # if_1
+      }
+    }
+    store %i, 0i
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %x_41:i32 = load %i
+        %x_42:i32 = load %a
+        %16:bool = lt %x_41, %x_42
+        if %16 [t: %b6, f: %b7] {  # if_2
+          %b6 = block {  # true
+            exit_if  # if_2
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_45:i32 = load %i
+        %x_46:i32 = load %sum
+        %19:i32 = add %x_46, %x_45
+        store %sum, %19
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %20:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
+        %x_49:i32 = load %20
+        %x_50:i32 = load %i
+        %23:i32 = add %x_50, %x_49
+        store %i, %23
+        next_iteration %b4
+      }
+    }
+    %x_52:i32 = load %sum
+    %25:ptr<uniform, i32, read> = access %x_7, 0u, 3i, 0u
+    %x_54:i32 = load %25
+    %27:bool = eq %x_52, %x_54
+    if %27 [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        %28:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_60:i32 = load %28
+        %30:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_63:i32 = load %30
+        %32:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_66:i32 = load %32
+        %34:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_69:i32 = load %34
+        %36:f32 = convert %x_60
+        %37:f32 = convert %x_63
+        %38:f32 = convert %x_66
+        %39:f32 = convert %x_69
+        %40:vec4<f32> = construct %36, %37, %38, %39
+        store %x_GLF_color, %40
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %41:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_73:i32 = load %41
+        %x_74:f32 = convert %x_73
+        %44:vec4<f32> = construct %x_74, %x_74, %x_74, %x_74
+        store %x_GLF_color, %44
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %46:void = call %main_1
+    %47:vec4<f32> = load %x_GLF_color
+    %48:main_out = construct %47
+    ret %48
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2963359
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,95 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:u32 @offset(0)
+}
+
+buf2 = struct @align(4) {
+  x_GLF_uniform_uint_values:array<strided_arr, 1> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+strided_arr_2 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_2, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %7:ptr<uniform, u32, read> = access %x_6, 0u, 0i, 0u
+    %8:u32 = load %7
+    %9:u32 = max 100u, %8
+    %10:f32 = bitcast %9
+    store %f, %10
+    %11:f32 = load %f
+    %12:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %13:f32 = load %12
+    %14:bool = eq %11, %13
+    if %14 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %15:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %16:i32 = load %15
+        %17:f32 = convert %16
+        %18:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %19:i32 = load %18
+        %20:f32 = convert %19
+        %21:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %22:i32 = load %21
+        %23:f32 = convert %22
+        %24:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %25:i32 = load %24
+        %26:f32 = convert %25
+        %27:vec4<f32> = construct %17, %20, %23, %26
+        store %x_GLF_color, %27
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %28:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %29:i32 = load %28
+        %30:f32 = convert %29
+        %31:vec4<f32> = construct %30
+        store %x_GLF_color, %31
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %33:void = call %main_1
+    %34:vec4<f32> = load %x_GLF_color
+    %35:main_out = construct %34
+    ret %35
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aecec09
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,95 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:u32 @offset(0)
+}
+
+buf2 = struct @align(4) {
+  x_GLF_uniform_uint_values:array<strided_arr, 1> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+strided_arr_2 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_2, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %f:ptr<function, f32, read_write> = var
+    %7:ptr<uniform, u32, read> = access %x_6, 0u, 0i, 0u
+    %x_36:u32 = load %7
+    %9:u32 = max 100u, %x_36
+    %10:f32 = bitcast %9
+    store %f, %10
+    %x_39:f32 = load %f
+    %12:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_41:f32 = load %12
+    %14:bool = eq %x_39, %x_41
+    if %14 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %15:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_47:i32 = load %15
+        %17:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_50:i32 = load %17
+        %19:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_53:i32 = load %19
+        %21:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
+        %x_56:i32 = load %21
+        %23:f32 = convert %x_47
+        %24:f32 = convert %x_50
+        %25:f32 = convert %x_53
+        %26:f32 = convert %x_56
+        %27:vec4<f32> = construct %23, %24, %25, %26
+        store %x_GLF_color, %27
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %28:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
+        %x_60:i32 = load %28
+        %x_61:f32 = convert %x_60
+        %31:vec4<f32> = construct %x_61, %x_61, %x_61, %x_61
+        store %x_GLF_color, %31
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %33:void = call %main_1
+    %34:vec4<f32> = load %x_GLF_color
+    %35:main_out = construct %34
+    ret %35
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..6476631
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,303 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 16> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %r:ptr<function, array<i32, 15>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %data:ptr<function, array<i32, 15>, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %i_3:ptr<function, i32, read_write> = var
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_46:i32 = load %10
+    %12:ptr<function, i32, read_write> = access %r, %x_46
+    %13:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %14:i32 = load %13
+    store %12, %14
+    %15:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_51:i32 = load %15
+    %17:ptr<function, i32, read_write> = access %r, %x_51
+    %18:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %19:i32 = load %18
+    store %17, %19
+    %20:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_56:i32 = load %20
+    %22:ptr<function, i32, read_write> = access %r, %x_56
+    %23:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %24:i32 = load %23
+    store %22, %24
+    %25:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_61:i32 = load %25
+    %27:ptr<function, i32, read_write> = access %r, %x_61
+    %28:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %29:i32 = load %28
+    store %27, %29
+    %30:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %x_66:i32 = load %30
+    %32:ptr<function, i32, read_write> = access %r, %x_66
+    %33:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %34:i32 = load %33
+    store %32, %34
+    %35:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %x_71:i32 = load %35
+    %37:ptr<function, i32, read_write> = access %r, %x_71
+    %38:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %39:i32 = load %38
+    %40:i32 = negation %39
+    store %37, %40
+    %41:ptr<uniform, i32, read> = access %x_6, 0u, 8i, 0u
+    %x_77:i32 = load %41
+    %43:ptr<function, i32, read_write> = access %r, %x_77
+    %44:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %45:i32 = load %44
+    %46:i32 = negation %45
+    store %43, %46
+    %47:ptr<uniform, i32, read> = access %x_6, 0u, 9i, 0u
+    %x_83:i32 = load %47
+    %49:ptr<function, i32, read_write> = access %r, %x_83
+    %50:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %51:i32 = load %50
+    %52:i32 = negation %51
+    store %49, %52
+    %53:ptr<uniform, i32, read> = access %x_6, 0u, 10i, 0u
+    %x_89:i32 = load %53
+    %55:ptr<function, i32, read_write> = access %r, %x_89
+    %56:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %57:i32 = load %56
+    %58:i32 = negation %57
+    store %55, %58
+    %59:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
+    %x_95:i32 = load %59
+    %61:ptr<function, i32, read_write> = access %r, %x_95
+    %62:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %63:i32 = load %62
+    %64:i32 = negation %63
+    store %61, %64
+    %65:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+    %x_101:i32 = load %65
+    %67:ptr<function, i32, read_write> = access %r, %x_101
+    %68:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %69:i32 = load %68
+    %70:i32 = negation %69
+    store %67, %70
+    %71:ptr<uniform, i32, read> = access %x_6, 0u, 12i, 0u
+    %x_107:i32 = load %71
+    %73:ptr<function, i32, read_write> = access %r, %x_107
+    %74:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %75:i32 = load %74
+    %76:i32 = negation %75
+    store %73, %76
+    %77:ptr<uniform, i32, read> = access %x_6, 0u, 13i, 0u
+    %x_113:i32 = load %77
+    %79:ptr<function, i32, read_write> = access %r, %x_113
+    %80:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %81:i32 = load %80
+    %82:i32 = negation %81
+    store %79, %82
+    %83:ptr<uniform, i32, read> = access %x_6, 0u, 14i, 0u
+    %x_119:i32 = load %83
+    %85:ptr<function, i32, read_write> = access %r, %x_119
+    %86:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %87:i32 = load %86
+    %88:i32 = negation %87
+    store %85, %88
+    %89:ptr<uniform, i32, read> = access %x_6, 0u, 15i, 0u
+    %x_125:i32 = load %89
+    %91:ptr<function, i32, read_write> = access %r, %x_125
+    %92:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %93:i32 = load %92
+    %94:i32 = negation %93
+    store %91, %94
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %95:i32 = load %i
+        %96:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+        %97:i32 = load %96
+        %98:bool = lt %95, %97
+        if %98 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_139:i32 = load %i
+        %100:ptr<function, i32, read_write> = access %data, %x_139
+        %101:i32 = load %i
+        %102:i32 = complement %101
+        %103:i32 = load %i
+        %104:i32 = complement %103
+        %105:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %106:i32 = load %105
+        %107:i32 = clamp %102, %104, %106
+        %108:i32 = complement %107
+        store %100, %108
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %109:i32 = load %i
+        %110:i32 = add %109, 1i
+        store %i, %110
+        next_iteration %b3
+      }
+    }
+    %111:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %112:i32 = load %111
+    store %i_1, %112
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %113:i32 = load %i_1
+        %114:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+        %115:i32 = load %114
+        %116:bool = lt %113, %115
+        if %116 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_162:i32 = load %i_1
+        %118:ptr<function, i32, read_write> = access %data, %x_162
+        %119:i32 = load %i_1
+        %120:i32 = complement %119
+        %121:i32 = clamp %120, 0i, 1i
+        %122:i32 = complement %121
+        store %118, %122
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %123:i32 = load %i_1
+        %124:i32 = add %123, 1i
+        store %i_1, %124
+        next_iteration %b7
+      }
+    }
+    %125:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+    %126:i32 = load %125
+    store %i_2, %126
+    loop [b: %b11, c: %b12] {  # loop_3
+      %b11 = block {  # body
+        %127:i32 = load %i_2
+        %128:ptr<uniform, i32, read> = access %x_6, 0u, 7i, 0u
+        %129:i32 = load %128
+        %130:bool = lt %127, %129
+        if %130 [t: %b13, f: %b14] {  # if_3
+          %b13 = block {  # true
+            exit_if  # if_3
+          }
+          %b14 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_181:i32 = load %i_2
+        %132:ptr<function, i32, read_write> = access %data, %x_181
+        %133:i32 = load %i_2
+        %134:i32 = clamp %133, 0i, 1i
+        %135:i32 = complement %134
+        store %132, %135
+        continue %b12
+      }
+      %b12 = block {  # continuing
+        %136:i32 = load %i_2
+        %137:i32 = add %136, 1i
+        store %i_2, %137
+        next_iteration %b11
+      }
+    }
+    %138:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %139:i32 = load %138
+    store %i_3, %139
+    loop [b: %b15, c: %b16] {  # loop_4
+      %b15 = block {  # body
+        %140:i32 = load %i_3
+        %141:ptr<uniform, i32, read> = access %x_6, 0u, 7i, 0u
+        %142:i32 = load %141
+        %143:bool = lt %140, %142
+        if %143 [t: %b17, f: %b18] {  # if_4
+          %b17 = block {  # true
+            exit_if  # if_4
+          }
+          %b18 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %144:i32 = load %i_3
+        %145:ptr<function, i32, read_write> = access %data, %144
+        %146:i32 = load %145
+        %147:i32 = load %i_3
+        %148:ptr<function, i32, read_write> = access %r, %147
+        %149:i32 = load %148
+        %150:bool = neq %146, %149
+        if %150 [t: %b19] {  # if_5
+          %b19 = block {  # true
+            %151:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+            %152:i32 = load %151
+            %153:f32 = convert %152
+            %154:vec4<f32> = construct %153
+            store %x_GLF_color, %154
+            ret
+          }
+        }
+        continue %b16
+      }
+      %b16 = block {  # continuing
+        %155:i32 = load %i_3
+        %156:i32 = add %155, 1i
+        store %i_3, %156
+        next_iteration %b15
+      }
+    }
+    %157:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %158:i32 = load %157
+    %159:f32 = convert %158
+    %160:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %161:i32 = load %160
+    %162:f32 = convert %161
+    %163:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %164:i32 = load %163
+    %165:f32 = convert %164
+    %166:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %167:i32 = load %166
+    %168:f32 = convert %167
+    %169:vec4<f32> = construct %159, %162, %165, %168
+    store %x_GLF_color, %169
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b20 {
+  %b20 = block {
+    %171:void = call %main_1
+    %172:vec4<f32> = load %x_GLF_color
+    %173:main_out = construct %172
+    ret %173
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9912064
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,303 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 16> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %r:ptr<function, array<i32, 15>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %data:ptr<function, array<i32, 15>, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %i_3:ptr<function, i32, read_write> = var
+    %10:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_46:i32 = load %10
+    %12:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_48:i32 = load %12
+    %14:ptr<function, i32, read_write> = access %r, %x_46
+    store %14, %x_48
+    %15:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_51:i32 = load %15
+    %17:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_53:i32 = load %17
+    %19:ptr<function, i32, read_write> = access %r, %x_51
+    store %19, %x_53
+    %20:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_56:i32 = load %20
+    %22:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_58:i32 = load %22
+    %24:ptr<function, i32, read_write> = access %r, %x_56
+    store %24, %x_58
+    %25:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_61:i32 = load %25
+    %27:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
+    %x_63:i32 = load %27
+    %29:ptr<function, i32, read_write> = access %r, %x_61
+    store %29, %x_63
+    %30:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %x_66:i32 = load %30
+    %32:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
+    %x_68:i32 = load %32
+    %34:ptr<function, i32, read_write> = access %r, %x_66
+    store %34, %x_68
+    %35:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %x_71:i32 = load %35
+    %37:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_73:i32 = load %37
+    %39:ptr<function, i32, read_write> = access %r, %x_71
+    %40:i32 = negation %x_73
+    store %39, %40
+    %41:ptr<uniform, i32, read> = access %x_6, 0u, 8i, 0u
+    %x_77:i32 = load %41
+    %43:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_79:i32 = load %43
+    %45:ptr<function, i32, read_write> = access %r, %x_77
+    %46:i32 = negation %x_79
+    store %45, %46
+    %47:ptr<uniform, i32, read> = access %x_6, 0u, 9i, 0u
+    %x_83:i32 = load %47
+    %49:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_85:i32 = load %49
+    %51:ptr<function, i32, read_write> = access %r, %x_83
+    %52:i32 = negation %x_85
+    store %51, %52
+    %53:ptr<uniform, i32, read> = access %x_6, 0u, 10i, 0u
+    %x_89:i32 = load %53
+    %55:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_91:i32 = load %55
+    %57:ptr<function, i32, read_write> = access %r, %x_89
+    %58:i32 = negation %x_91
+    store %57, %58
+    %59:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
+    %x_95:i32 = load %59
+    %61:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_97:i32 = load %61
+    %63:ptr<function, i32, read_write> = access %r, %x_95
+    %64:i32 = negation %x_97
+    store %63, %64
+    %65:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+    %x_101:i32 = load %65
+    %67:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_103:i32 = load %67
+    %69:ptr<function, i32, read_write> = access %r, %x_101
+    %70:i32 = negation %x_103
+    store %69, %70
+    %71:ptr<uniform, i32, read> = access %x_6, 0u, 12i, 0u
+    %x_107:i32 = load %71
+    %73:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_109:i32 = load %73
+    %75:ptr<function, i32, read_write> = access %r, %x_107
+    %76:i32 = negation %x_109
+    store %75, %76
+    %77:ptr<uniform, i32, read> = access %x_6, 0u, 13i, 0u
+    %x_113:i32 = load %77
+    %79:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_115:i32 = load %79
+    %81:ptr<function, i32, read_write> = access %r, %x_113
+    %82:i32 = negation %x_115
+    store %81, %82
+    %83:ptr<uniform, i32, read> = access %x_6, 0u, 14i, 0u
+    %x_119:i32 = load %83
+    %85:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_121:i32 = load %85
+    %87:ptr<function, i32, read_write> = access %r, %x_119
+    %88:i32 = negation %x_121
+    store %87, %88
+    %89:ptr<uniform, i32, read> = access %x_6, 0u, 15i, 0u
+    %x_125:i32 = load %89
+    %91:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
+    %x_127:i32 = load %91
+    %93:ptr<function, i32, read_write> = access %r, %x_125
+    %94:i32 = negation %x_127
+    store %93, %94
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_134:i32 = load %i
+        %96:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+        %x_136:i32 = load %96
+        %98:bool = lt %x_134, %x_136
+        if %98 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_139:i32 = load %i
+        %x_140:i32 = load %i
+        %x_142:i32 = load %i
+        %102:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_145:i32 = load %102
+        %104:ptr<function, i32, read_write> = access %data, %x_139
+        %105:i32 = complement %x_140
+        %106:i32 = complement %x_142
+        %107:i32 = clamp %105, %106, %x_145
+        %108:i32 = complement %107
+        store %104, %108
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_149:i32 = load %i
+        %110:i32 = add %x_149, 1i
+        store %i, %110
+        next_iteration %b3
+      }
+    }
+    %111:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
+    %x_152:i32 = load %111
+    store %i_1, %x_152
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_157:i32 = load %i_1
+        %114:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+        %x_159:i32 = load %114
+        %116:bool = lt %x_157, %x_159
+        if %116 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_162:i32 = load %i_1
+        %x_163:i32 = load %i_1
+        %119:ptr<function, i32, read_write> = access %data, %x_162
+        %120:i32 = complement %x_163
+        %121:i32 = clamp %120, 0i, 1i
+        %122:i32 = complement %121
+        store %119, %122
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %x_168:i32 = load %i_1
+        %124:i32 = add %x_168, 1i
+        store %i_1, %124
+        next_iteration %b7
+      }
+    }
+    %125:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
+    %x_171:i32 = load %125
+    store %i_2, %x_171
+    loop [b: %b11, c: %b12] {  # loop_3
+      %b11 = block {  # body
+        %x_176:i32 = load %i_2
+        %128:ptr<uniform, i32, read> = access %x_6, 0u, 7i, 0u
+        %x_178:i32 = load %128
+        %130:bool = lt %x_176, %x_178
+        if %130 [t: %b13, f: %b14] {  # if_3
+          %b13 = block {  # true
+            exit_if  # if_3
+          }
+          %b14 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_181:i32 = load %i_2
+        %x_182:i32 = load %i_2
+        %133:ptr<function, i32, read_write> = access %data, %x_181
+        %134:i32 = clamp %x_182, 0i, 1i
+        %135:i32 = complement %134
+        store %133, %135
+        continue %b12
+      }
+      %b12 = block {  # continuing
+        %x_186:i32 = load %i_2
+        %137:i32 = add %x_186, 1i
+        store %i_2, %137
+        next_iteration %b11
+      }
+    }
+    %138:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_189:i32 = load %138
+    store %i_3, %x_189
+    loop [b: %b15, c: %b16] {  # loop_4
+      %b15 = block {  # body
+        %x_194:i32 = load %i_3
+        %141:ptr<uniform, i32, read> = access %x_6, 0u, 7i, 0u
+        %x_196:i32 = load %141
+        %143:bool = lt %x_194, %x_196
+        if %143 [t: %b17, f: %b18] {  # if_4
+          %b17 = block {  # true
+            exit_if  # if_4
+          }
+          %b18 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %x_199:i32 = load %i_3
+        %145:ptr<function, i32, read_write> = access %data, %x_199
+        %x_201:i32 = load %145
+        %x_202:i32 = load %i_3
+        %148:ptr<function, i32, read_write> = access %r, %x_202
+        %x_204:i32 = load %148
+        %150:bool = neq %x_201, %x_204
+        if %150 [t: %b19] {  # if_5
+          %b19 = block {  # true
+            %151:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+            %x_209:i32 = load %151
+            %x_210:f32 = convert %x_209
+            %154:vec4<f32> = construct %x_210, %x_210, %x_210, %x_210
+            store %x_GLF_color, %154
+            ret
+          }
+        }
+        continue %b16
+      }
+      %b16 = block {  # continuing
+        %x_212:i32 = load %i_3
+        %156:i32 = add %x_212, 1i
+        store %i_3, %156
+        next_iteration %b15
+      }
+    }
+    %157:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_215:i32 = load %157
+    %159:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_218:i32 = load %159
+    %161:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_221:i32 = load %161
+    %163:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+    %x_224:i32 = load %163
+    %165:f32 = convert %x_215
+    %166:f32 = convert %x_218
+    %167:f32 = convert %x_221
+    %168:f32 = convert %x_224
+    %169:vec4<f32> = construct %165, %166, %167, %168
+    store %x_GLF_color, %169
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b20 {
+  %b20 = block {
+    %171:void = call %main_1
+    %172:vec4<f32> = load %x_GLF_color
+    %173:main_out = construct %172
+    ret %173
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..36ec8ed
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  quarter:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %N:ptr<function, vec4<f32>, read_write> = var
+    %I:ptr<function, vec4<f32>, read_write> = var
+    %Nref:ptr<function, vec4<f32>, read_write> = var
+    %v:ptr<function, vec4<f32>, read_write> = var
+    store %N, vec4<f32>(1.0f, 2.0f, 3.0f, 4.0f)
+    %8:ptr<uniform, f32, read> = access %x_7, 0u
+    %9:f32 = load %8
+    %10:vec4<f32> = construct 4.0f, 87.589996337890625f, %9, 92.51000213623046875f
+    store %I, %10
+    store %Nref, vec4<f32>(17.049999237060546875f, -6.09999990463256835938f, 4329.37060546875f, 2.70000004768371582031f)
+    %11:vec4<f32> = load %N
+    %12:vec4<f32> = load %I
+    %13:vec4<f32> = load %Nref
+    %14:vec4<f32> = faceForward %11, %12, %13
+    store %v, %14
+    %15:vec4<f32> = load %v
+    %16:vec4<bool> = eq %15, vec4<f32>(-1.0f, -2.0f, -3.0f, -4.0f)
+    %17:bool = all %16
+    if %17 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a027e89
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  quarter:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %N:ptr<function, vec4<f32>, read_write> = var
+    %I:ptr<function, vec4<f32>, read_write> = var
+    %Nref:ptr<function, vec4<f32>, read_write> = var
+    %v:ptr<function, vec4<f32>, read_write> = var
+    store %N, vec4<f32>(1.0f, 2.0f, 3.0f, 4.0f)
+    %8:ptr<uniform, f32, read> = access %x_7, 0u
+    %x_44:f32 = load %8
+    %10:vec4<f32> = construct 4.0f, 87.589996337890625f, %x_44, 92.51000213623046875f
+    store %I, %10
+    store %Nref, vec4<f32>(17.049999237060546875f, -6.09999990463256835938f, 4329.37060546875f, 2.70000004768371582031f)
+    %x_46:vec4<f32> = load %N
+    %x_47:vec4<f32> = load %I
+    %x_48:vec4<f32> = load %Nref
+    %14:vec4<f32> = faceForward %x_46, %x_47, %x_48
+    store %v, %14
+    %x_50:vec4<f32> = load %v
+    %16:vec4<bool> = eq %x_50, vec4<f32>(-1.0f, -2.0f, -3.0f, -4.0f)
+    %17:bool = all %16
+    if %17 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..aa9939b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, vec2<f32>, read_write> = var
+    %b:ptr<function, vec2<f32>, read_write> = var
+    store %a, vec2<f32>(1.0f)
+    %6:ptr<uniform, i32, read> = access %x_6, 0u
+    %7:i32 = load %6
+    %8:bool = eq %7, 1i
+    if %8 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %9:f32 = load_vector_element %a, 0u
+        %10:f32 = add %9, 1.0f
+        store_vector_element %a, 0u, %10
+        exit_if  # if_1
+      }
+    }
+    %11:f32 = load_vector_element %a, 1u
+    %12:vec2<f32> = construct %11
+    %13:vec2<f32> = add %12, vec2<f32>(2.0f, 3.0f)
+    store %b, %13
+    %14:vec2<f32> = load %b
+    %15:vec2<bool> = eq %14, vec2<f32>(3.0f, 4.0f)
+    %16:bool = all %15
+    if %16 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %18:void = call %main_1
+    %19:vec4<f32> = load %x_GLF_color
+    %20:main_out = construct %19
+    ret %20
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..30af25a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,67 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, vec2<f32>, read_write> = var
+    %b:ptr<function, vec2<f32>, read_write> = var
+    store %a, vec2<f32>(1.0f)
+    %6:ptr<uniform, i32, read> = access %x_6, 0u
+    %x_38:i32 = load %6
+    %8:bool = eq %x_38, 1i
+    if %8 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_43:f32 = load_vector_element %a, 0u
+        %10:f32 = add %x_43, 1.0f
+        store_vector_element %a, 0u, %10
+        exit_if  # if_1
+      }
+    }
+    %x_47:f32 = load_vector_element %a, 1u
+    %12:vec2<f32> = construct %x_47, %x_47
+    %13:vec2<f32> = add %12, vec2<f32>(2.0f, 3.0f)
+    store %b, %13
+    %x_50:vec2<f32> = load %b
+    %15:vec2<bool> = eq %x_50, vec2<f32>(3.0f, 4.0f)
+    %16:bool = all %15
+    if %16 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %18:void = call %main_1
+    %19:vec4<f32> = load %x_GLF_color
+    %20:main_out = construct %19
+    ret %20
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..36d61fc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,107 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v1:ptr<function, vec2<f32>, read_write> = var
+    %x_54:ptr<function, bool, read_write> = var
+    %x_55:ptr<function, bool, read_write> = var
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %9:i32 = load %8
+    %10:vec2<i32> = construct -1i, %9
+    %11:vec2<f32> = bitcast %10
+    %12:vec2<f32> = cos %11
+    %13:vec2<f32> = cos %12
+    store %v1, %13
+    %14:f32 = load_vector_element %v1, 0u
+    %15:vec4<f32> = construct %14
+    store %x_GLF_color, %15
+    %16:f32 = load_vector_element %v1, 1u
+    %17:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %18:f32 = load %17
+    %x_47:bool = gt %16, %18
+    store %x_55, %x_47
+    if %x_47 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %20:f32 = load_vector_element %v1, 1u
+        %21:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+        %22:f32 = load %21
+        %23:bool = lt %20, %22
+        store %x_54, %23
+        %24:bool = load %x_54
+        store %x_55, %24
+        exit_if  # if_1
+      }
+    }
+    %25:bool = load %x_55
+    if %25 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %26:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %27:i32 = load %26
+        %28:f32 = convert %27
+        %29:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %30:i32 = load %29
+        %31:f32 = convert %30
+        %32:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %33:i32 = load %32
+        %34:f32 = convert %33
+        %35:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %36:i32 = load %35
+        %37:f32 = convert %36
+        %38:vec4<f32> = construct %28, %31, %34, %37
+        store %x_GLF_color, %38
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %39:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %40:i32 = load %39
+        %41:f32 = convert %40
+        %42:vec4<f32> = construct %41
+        store %x_GLF_color, %42
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %44:void = call %main_1
+    %45:vec4<f32> = load %x_GLF_color
+    %46:main_out = construct %45
+    ret %46
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c84b3fb
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,107 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v1:ptr<function, vec2<f32>, read_write> = var
+    %x_54:ptr<function, bool, read_write> = var
+    %x_55_phi:ptr<function, bool, read_write> = var
+    %8:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+    %x_35:i32 = load %8
+    %10:vec2<i32> = construct -1i, %x_35
+    %11:vec2<f32> = bitcast %10
+    %12:vec2<f32> = cos %11
+    %13:vec2<f32> = cos %12
+    store %v1, %13
+    %x_41:f32 = load_vector_element %v1, 0u
+    %15:vec4<f32> = construct %x_41, %x_41, %x_41, %x_41
+    store %x_GLF_color, %15
+    %x_44:f32 = load_vector_element %v1, 1u
+    %17:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_46:f32 = load %17
+    %x_47:bool = gt %x_44, %x_46
+    store %x_55_phi, %x_47
+    if %x_47 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_51:f32 = load_vector_element %v1, 1u
+        %21:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
+        %x_53:f32 = load %21
+        %23:bool = lt %x_51, %x_53
+        store %x_54, %23
+        %24:bool = load %x_54
+        store %x_55_phi, %24
+        exit_if  # if_1
+      }
+    }
+    %x_55:bool = load %x_55_phi
+    if %x_55 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %26:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_60:i32 = load %26
+        %28:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_63:i32 = load %28
+        %30:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_66:i32 = load %30
+        %32:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
+        %x_69:i32 = load %32
+        %34:f32 = convert %x_60
+        %35:f32 = convert %x_63
+        %36:f32 = convert %x_66
+        %37:f32 = convert %x_69
+        %38:vec4<f32> = construct %34, %35, %36, %37
+        store %x_GLF_color, %38
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %39:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
+        %x_73:i32 = load %39
+        %x_74:f32 = convert %x_73
+        %42:vec4<f32> = construct %x_74, %x_74, %x_74, %x_74
+        store %x_GLF_color, %42
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %44:void = call %main_1
+    %45:vec4<f32> = load %x_GLF_color
+    %46:main_out = construct %45
+    ret %46
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..9fa3a55
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,103 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:u32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_uint_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf2 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+strided_arr_2 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_2, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_8:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_12:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, u32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %c:ptr<function, u32, read_write> = var
+    %9:ptr<uniform, u32, read> = access %x_6, 0u, 0i, 0u
+    %10:u32 = load %9
+    %11:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %12:f32 = load %11
+    %13:u32 = convert %12
+    %14:u32 = shiftr %10, %13
+    store %a, %14
+    %15:u32 = load %a
+    %16:f32 = bitcast %15
+    store %b, %16
+    %17:f32 = load %b
+    %18:u32 = bitcast %17
+    store %c, %18
+    %19:u32 = load %c
+    %20:ptr<uniform, u32, read> = access %x_6, 0u, 0i, 0u
+    %21:u32 = load %20
+    %22:bool = eq %19, %21
+    if %22 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %23:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
+        %24:i32 = load %23
+        %25:f32 = convert %24
+        %26:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+        %27:i32 = load %26
+        %28:f32 = convert %27
+        %29:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+        %30:i32 = load %29
+        %31:f32 = convert %30
+        %32:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
+        %33:i32 = load %32
+        %34:f32 = convert %33
+        %35:vec4<f32> = construct %25, %28, %31, %34
+        store %x_GLF_color, %35
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %36:f32 = load %b
+        %37:vec4<f32> = construct %36
+        store %x_GLF_color, %37
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %39:void = call %main_1
+    %40:vec4<f32> = load %x_GLF_color
+    %41:main_out = construct %40
+    ret %41
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e7ce436
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,103 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:u32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_uint_values:array<strided_arr, 2> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf2 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
+}
+
+strided_arr_2 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_2, 2> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_8:ptr<uniform, buf2, read> = var @binding_point(0, 2)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_12:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %a:ptr<function, u32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %c:ptr<function, u32, read_write> = var
+    %9:ptr<uniform, u32, read> = access %x_6, 0u, 0i, 0u
+    %x_38:u32 = load %9
+    %11:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
+    %x_40:f32 = load %11
+    %13:u32 = convert %x_40
+    %14:u32 = shiftr %x_38, %13
+    store %a, %14
+    %x_43:u32 = load %a
+    %16:f32 = bitcast %x_43
+    store %b, %16
+    %x_45:f32 = load %b
+    %18:u32 = bitcast %x_45
+    store %c, %18
+    %x_47:u32 = load %c
+    %20:ptr<uniform, u32, read> = access %x_6, 0u, 0i, 0u
+    %x_49:u32 = load %20
+    %22:bool = eq %x_47, %x_49
+    if %22 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %23:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
+        %x_55:i32 = load %23
+        %25:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+        %x_58:i32 = load %25
+        %27:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
+        %x_61:i32 = load %27
+        %29:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
+        %x_64:i32 = load %29
+        %31:f32 = convert %x_55
+        %32:f32 = convert %x_58
+        %33:f32 = convert %x_61
+        %34:f32 = convert %x_64
+        %35:vec4<f32> = construct %31, %32, %33, %34
+        store %x_GLF_color, %35
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %x_67:f32 = load %b
+        %37:vec4<f32> = construct %x_67, %x_67, %x_67, %x_67
+        store %x_GLF_color, %37
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b5 {
+  %b5 = block {
+    %39:void = call %main_1
+    %40:vec4<f32> = load %x_GLF_color
+    %41:main_out = construct %40
+    ret %41
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..0ed63e3
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,194 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %A:ptr<function, array<f32, 2>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %x_101:ptr<function, bool, read_write> = var
+    %x_102:ptr<function, bool, read_write> = var
+    %10:ptr<function, f32, read_write> = access %A, 0i
+    %11:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %12:f32 = load %11
+    store %10, %12
+    %13:ptr<function, f32, read_write> = access %A, 1i
+    %14:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %15:f32 = load %14
+    store %13, %15
+    %16:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %17:i32 = load %16
+    store %i, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %18:i32 = load %i
+        %19:ptr<uniform, i32, read> = access %x_9, 0u, 3i, 0u
+        %20:i32 = load %19
+        %21:bool = lt %18, %20
+        if %21 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %22:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %23:i32 = load %22
+        store %j, %23
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %24:i32 = load %j
+            %25:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+            %26:i32 = load %25
+            %27:bool = lt %24, %26
+            if %27 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_66:i32 = load %j
+            switch %x_66 [c: (1i, %b11), c: (0i, %b12), c: (default, %b13)] {  # switch_1
+              %b11 = block {  # case
+                %x_78:i32 = load %i
+                %30:ptr<function, f32, read_write> = access %A, %x_78
+                %31:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+                %32:f32 = load %31
+                store %30, %32
+                exit_switch  # switch_1
+              }
+              %b12 = block {  # case
+                %33:i32 = load %i
+                %34:bool = lt -2147483648i, %33
+                if %34 [t: %b14] {  # if_3
+                  %b14 = block {  # true
+                    continue %b8
+                  }
+                }
+                %x_74:i32 = load %i
+                %36:ptr<function, f32, read_write> = access %A, %x_74
+                %37:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+                %38:f32 = load %37
+                store %36, %38
+                exit_switch  # switch_1
+              }
+              %b13 = block {  # case
+                exit_switch  # switch_1
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %39:i32 = load %j
+            %40:i32 = add %39, 1i
+            store %j, %40
+            next_iteration %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %41:i32 = load %i
+        %42:i32 = add %41, 1i
+        store %i, %42
+        next_iteration %b3
+      }
+    }
+    %43:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %44:i32 = load %43
+    %45:ptr<function, f32, read_write> = access %A, %44
+    %46:f32 = load %45
+    %47:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %48:f32 = load %47
+    %x_92:bool = eq %46, %48
+    store %x_102, %x_92
+    if %x_92 [t: %b15] {  # if_4
+      %b15 = block {  # true
+        %50:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %51:i32 = load %50
+        %52:ptr<function, f32, read_write> = access %A, %51
+        %53:f32 = load %52
+        %54:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %55:f32 = load %54
+        %56:bool = eq %53, %55
+        store %x_101, %56
+        %57:bool = load %x_101
+        store %x_102, %57
+        exit_if  # if_4
+      }
+    }
+    %58:bool = load %x_102
+    if %58 [t: %b16, f: %b17] {  # if_5
+      %b16 = block {  # true
+        %59:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %60:i32 = load %59
+        %61:f32 = convert %60
+        %62:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %63:i32 = load %62
+        %64:f32 = convert %63
+        %65:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %66:i32 = load %65
+        %67:f32 = convert %66
+        %68:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %69:i32 = load %68
+        %70:f32 = convert %69
+        %71:vec4<f32> = construct %61, %64, %67, %70
+        store %x_GLF_color, %71
+        exit_if  # if_5
+      }
+      %b17 = block {  # false
+        %72:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %73:i32 = load %72
+        %74:f32 = convert %73
+        %75:vec4<f32> = construct %74
+        store %x_GLF_color, %75
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b18 {
+  %b18 = block {
+    %77:void = call %main_1
+    %78:vec4<f32> = load %x_GLF_color
+    %79:main_out = construct %78
+    ret %79
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1501033
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,194 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:f32 @offset(0)
+}
+
+buf1 = struct @align(4) {
+  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
+}
+
+strided_arr_1 = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %A:ptr<function, array<f32, 2>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %x_101:ptr<function, bool, read_write> = var
+    %x_102_phi:ptr<function, bool, read_write> = var
+    %10:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_39:f32 = load %10
+    %12:ptr<function, f32, read_write> = access %A, 0i
+    store %12, %x_39
+    %13:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
+    %x_42:f32 = load %13
+    %15:ptr<function, f32, read_write> = access %A, 1i
+    store %15, %x_42
+    %16:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %x_45:i32 = load %16
+    store %i, %x_45
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_50:i32 = load %i
+        %19:ptr<uniform, i32, read> = access %x_9, 0u, 3i, 0u
+        %x_52:i32 = load %19
+        %21:bool = lt %x_50, %x_52
+        if %21 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %22:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_56:i32 = load %22
+        store %j, %x_56
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %x_61:i32 = load %j
+            %25:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
+            %x_63:i32 = load %25
+            %27:bool = lt %x_61, %x_63
+            if %27 [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_66:i32 = load %j
+            switch %x_66 [c: (1i, %b11), c: (0i, %b12), c: (default, %b13)] {  # switch_1
+              %b11 = block {  # case
+                %x_78:i32 = load %i
+                %30:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+                %x_80:f32 = load %30
+                %32:ptr<function, f32, read_write> = access %A, %x_78
+                store %32, %x_80
+                exit_switch  # switch_1
+              }
+              %b12 = block {  # case
+                %x_70:i32 = load %i
+                %34:bool = lt -2147483648i, %x_70
+                if %34 [t: %b14] {  # if_3
+                  %b14 = block {  # true
+                    continue %b8
+                  }
+                }
+                %x_74:i32 = load %i
+                %36:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
+                %x_76:f32 = load %36
+                %38:ptr<function, f32, read_write> = access %A, %x_74
+                store %38, %x_76
+                exit_switch  # switch_1
+              }
+              %b13 = block {  # case
+                exit_switch  # switch_1
+              }
+            }
+            continue %b8
+          }
+          %b8 = block {  # continuing
+            %x_82:i32 = load %j
+            %40:i32 = add %x_82, 1i
+            store %j, %40
+            next_iteration %b7
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_84:i32 = load %i
+        %42:i32 = add %x_84, 1i
+        store %i, %42
+        next_iteration %b3
+      }
+    }
+    %43:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+    %x_87:i32 = load %43
+    %45:ptr<function, f32, read_write> = access %A, %x_87
+    %x_89:f32 = load %45
+    %47:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+    %x_91:f32 = load %47
+    %x_92:bool = eq %x_89, %x_91
+    store %x_102_phi, %x_92
+    if %x_92 [t: %b15] {  # if_4
+      %b15 = block {  # true
+        %50:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_96:i32 = load %50
+        %52:ptr<function, f32, read_write> = access %A, %x_96
+        %x_98:f32 = load %52
+        %54:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
+        %x_100:f32 = load %54
+        %56:bool = eq %x_98, %x_100
+        store %x_101, %56
+        %57:bool = load %x_101
+        store %x_102_phi, %57
+        exit_if  # if_4
+      }
+    }
+    %x_102:bool = load %x_102_phi
+    if %x_102 [t: %b16, f: %b17] {  # if_5
+      %b16 = block {  # true
+        %59:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_107:i32 = load %59
+        %61:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_110:i32 = load %61
+        %63:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
+        %x_113:i32 = load %63
+        %65:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_116:i32 = load %65
+        %67:f32 = convert %x_107
+        %68:f32 = convert %x_110
+        %69:f32 = convert %x_113
+        %70:f32 = convert %x_116
+        %71:vec4<f32> = construct %67, %68, %69, %70
+        store %x_GLF_color, %71
+        exit_if  # if_5
+      }
+      %b17 = block {  # false
+        %72:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
+        %x_120:i32 = load %72
+        %x_121:f32 = convert %x_120
+        %75:vec4<f32> = construct %x_121, %x_121, %x_121, %x_121
+        store %x_GLF_color, %75
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b18 {
+  %b18 = block {
+    %77:void = call %main_1
+    %78:vec4<f32> = load %x_GLF_color
+    %79:main_out = construct %78
+    ret %79
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..a64774d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,122 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+S = struct @align(4) {
+  a:i32 @offset(0)
+  b:i32 @offset(4)
+  c:i32 @offset(8)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %A:ptr<function, array<S, 2>, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_29:i32 = load %5
+    %7:ptr<function, S, read_write> = access %A, %x_29
+    %8:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %9:i32 = load %8
+    %10:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %11:i32 = load %10
+    %12:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %13:i32 = load %12
+    %14:S = construct %9, %11, %13
+    store %7, %14
+    %15:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %x_39:i32 = load %15
+    %17:ptr<function, S, read_write> = access %A, %x_39
+    %18:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %19:i32 = load %18
+    %20:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %21:i32 = load %20
+    %22:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %23:i32 = load %22
+    %24:S = construct %19, %21, %23
+    store %17, %24
+    %25:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %26:i32 = load %25
+    %27:ptr<function, i32, read_write> = access %A, %26, 1u
+    %28:i32 = load %27
+    %29:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %30:i32 = load %29
+    %31:bool = eq %28, %30
+    if %31 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %32:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_58:i32 = load %32
+        %34:i32 = clamp %x_58, 1i, 2i
+        %35:ptr<function, i32, read_write> = access %A, %34, 1u
+        %36:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %37:i32 = load %36
+        store %35, %37
+        exit_if  # if_1
+      }
+    }
+    %38:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %39:i32 = load %38
+    %40:ptr<function, i32, read_write> = access %A, %39, 1u
+    %41:i32 = load %40
+    %42:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %43:i32 = load %42
+    %44:bool = eq %41, %43
+    if %44 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %45:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %46:i32 = load %45
+        %47:f32 = convert %46
+        %48:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %49:i32 = load %48
+        %50:f32 = convert %49
+        %51:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %52:i32 = load %51
+        %53:f32 = convert %52
+        %54:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %55:i32 = load %54
+        %56:f32 = convert %55
+        %57:vec4<f32> = construct %47, %50, %53, %56
+        store %x_GLF_color, %57
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %58:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %59:i32 = load %58
+        %60:f32 = convert %59
+        %61:vec4<f32> = construct %60
+        store %x_GLF_color, %61
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %63:void = call %main_1
+    %64:vec4<f32> = load %x_GLF_color
+    %65:main_out = construct %64
+    ret %65
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b43d8ee
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,122 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
+  el:i32 @offset(0)
+}
+
+buf0 = struct @align(4) {
+  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
+}
+
+S = struct @align(4) {
+  a:i32 @offset(0)
+  b:i32 @offset(4)
+  c:i32 @offset(8)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %A:ptr<function, array<S, 2>, read_write> = var
+    %5:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_29:i32 = load %5
+    %7:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_31:i32 = load %7
+    %9:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_33:i32 = load %9
+    %11:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_35:i32 = load %11
+    %13:ptr<function, S, read_write> = access %A, %x_29
+    %14:S = construct %x_31, %x_33, %x_35
+    store %13, %14
+    %15:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %x_39:i32 = load %15
+    %17:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_41:i32 = load %17
+    %19:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_43:i32 = load %19
+    %21:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_45:i32 = load %21
+    %23:ptr<function, S, read_write> = access %A, %x_39
+    %24:S = construct %x_41, %x_43, %x_45
+    store %23, %24
+    %25:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_49:i32 = load %25
+    %27:ptr<function, i32, read_write> = access %A, %x_49, 1u
+    %x_51:i32 = load %27
+    %29:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+    %x_53:i32 = load %29
+    %31:bool = eq %x_51, %x_53
+    if %31 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %32:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_58:i32 = load %32
+        %34:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_61:i32 = load %34
+        %36:i32 = clamp %x_58, 1i, 2i
+        %37:ptr<function, i32, read_write> = access %A, %36, 1u
+        store %37, %x_61
+        exit_if  # if_1
+      }
+    }
+    %38:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %x_64:i32 = load %38
+    %40:ptr<function, i32, read_write> = access %A, %x_64, 1u
+    %x_66:i32 = load %40
+    %42:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+    %x_68:i32 = load %42
+    %44:bool = eq %x_66, %x_68
+    if %44 [t: %b4, f: %b5] {  # if_2
+      %b4 = block {  # true
+        %45:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_74:i32 = load %45
+        %47:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_77:i32 = load %47
+        %49:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
+        %x_80:i32 = load %49
+        %51:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_83:i32 = load %51
+        %53:f32 = convert %x_74
+        %54:f32 = convert %x_77
+        %55:f32 = convert %x_80
+        %56:f32 = convert %x_83
+        %57:vec4<f32> = construct %53, %54, %55, %56
+        store %x_GLF_color, %57
+        exit_if  # if_2
+      }
+      %b5 = block {  # false
+        %58:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
+        %x_87:i32 = load %58
+        %x_88:f32 = convert %x_87
+        %61:vec4<f32> = construct %x_88, %x_88, %x_88, %x_88
+        store %x_GLF_color, %61
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %63:void = call %main_1
+    %64:vec4<f32> = load %x_GLF_color
+    %65:main_out = construct %64
+    ret %65
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f1ef1dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,160 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec2<f32>, read_write> = var
+    %floats:ptr<function, array<f32, 9>, read_write> = var
+    %one:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %alwaysFalse:ptr<function, bool, read_write> = var
+    store %v, vec2<f32>(0.0f)
+    %10:ptr<function, f32, read_write> = access %floats, 1i
+    store %10, 0.0f
+    %11:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %12:f32 = load_vector_element %11, 1u
+    %13:i32 = convert %12
+    store %one, %13
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        store %i, 0i
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %14:i32 = load %i
+            %15:i32 = load %one
+            %16:bool = lt %14, %15
+            if %16 [t: %b7, f: %b8] {  # if_1
+              %b7 = block {  # true
+                exit_if  # if_1
+              }
+              %b8 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %17:i32 = load %i
+            %18:bool = eq %17, 0i
+            if %18 [t: %b9] {  # if_2
+              %b9 = block {  # true
+                %19:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+                %20:f32 = load_vector_element %19, 0u
+                %21:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+                %22:f32 = load_vector_element %21, 1u
+                %23:bool = gt %20, %22
+                store %alwaysFalse, %23
+                %24:bool = load %alwaysFalse
+                %25:bool = eq %24, false
+                if %25 [t: %b10] {  # if_3
+                  %b10 = block {  # true
+                    %x_73:i32 = load %one
+                    %27:ptr<function, f32, read_write> = access %floats, %x_73
+                    store %27, 1.0f
+                    store %x_GLF_color, vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f)
+                    exit_if  # if_3
+                  }
+                }
+                %x_75:i32 = load %one
+                store_vector_element %v, %x_75, 1.0f
+                %29:bool = load %alwaysFalse
+                if %29 [t: %b11] {  # if_4
+                  %b11 = block {  # true
+                    discard
+                    exit_if  # if_4
+                  }
+                }
+                %30:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+                %31:f32 = load_vector_element %30, 1u
+                %32:bool = lt %31, 0.0f
+                if %32 [t: %b12] {  # if_5
+                  %b12 = block {  # true
+                    store %x_GLF_color, vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f)
+                    exit_if  # if_5
+                  }
+                }
+                exit_if  # if_2
+              }
+            }
+            continue %b6
+          }
+          %b6 = block {  # continuing
+            %33:i32 = load %i
+            %34:i32 = add %33, 1i
+            store %i, %34
+            next_iteration %b5
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_87:i32 = load %one
+        %36:bool = lt %x_87, 0i
+        %37:bool = eq %36, false
+        break_if %37 %b3
+      }
+    }
+    %x_102:ptr<function, bool, read_write> = var
+    %x_103:ptr<function, bool, read_write> = var
+    %40:f32 = load_vector_element %gl_FragCoord, 1u
+    %41:bool = gte %40, 0.0f
+    if %41 [t: %b13, f: %b14] {  # if_6
+      %b13 = block {  # true
+        %42:f32 = load_vector_element %v, 1u
+        %x_97:bool = eq %42, 1.0f
+        store %x_103, %x_97
+        if %x_97 [t: %b15] {  # if_7
+          %b15 = block {  # true
+            %44:ptr<function, f32, read_write> = access %floats, 1i
+            %45:f32 = load %44
+            %46:bool = eq %45, 1.0f
+            store %x_102, %46
+            %47:bool = load %x_102
+            store %x_103, %47
+            exit_if  # if_7
+          }
+        }
+        %48:bool = load %x_103
+        if %48 [t: %b16] {  # if_8
+          %b16 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+            exit_if  # if_8
+          }
+        }
+        exit_if  # if_6
+      }
+      %b14 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_6
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b17 {
+  %b17 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %51:void = call %main_1
+    %52:vec4<f32> = load %x_GLF_color
+    %53:main_out = construct %52
+    ret %53
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..64a6564
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,160 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %v:ptr<function, vec2<f32>, read_write> = var
+    %floats:ptr<function, array<f32, 9>, read_write> = var
+    %one:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %alwaysFalse:ptr<function, bool, read_write> = var
+    store %v, vec2<f32>(0.0f)
+    %10:ptr<function, f32, read_write> = access %floats, 1i
+    store %10, 0.0f
+    %11:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %x_46:f32 = load_vector_element %11, 1u
+    %13:i32 = convert %x_46
+    store %one, %13
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        store %i, 0i
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %x_56:i32 = load %i
+            %x_57:i32 = load %one
+            %16:bool = lt %x_56, %x_57
+            if %16 [t: %b7, f: %b8] {  # if_1
+              %b7 = block {  # true
+                exit_if  # if_1
+              }
+              %b8 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_60:i32 = load %i
+            %18:bool = eq %x_60, 0i
+            if %18 [t: %b9] {  # if_2
+              %b9 = block {  # true
+                %19:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+                %x_65:f32 = load_vector_element %19, 0u
+                %21:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+                %x_67:f32 = load_vector_element %21, 1u
+                %23:bool = gt %x_65, %x_67
+                store %alwaysFalse, %23
+                %x_69:bool = load %alwaysFalse
+                %25:bool = eq %x_69, false
+                if %25 [t: %b10] {  # if_3
+                  %b10 = block {  # true
+                    %x_73:i32 = load %one
+                    %27:ptr<function, f32, read_write> = access %floats, %x_73
+                    store %27, 1.0f
+                    store %x_GLF_color, vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f)
+                    exit_if  # if_3
+                  }
+                }
+                %x_75:i32 = load %one
+                store_vector_element %v, %x_75, 1.0f
+                %x_77:bool = load %alwaysFalse
+                if %x_77 [t: %b11] {  # if_4
+                  %b11 = block {  # true
+                    discard
+                    exit_if  # if_4
+                  }
+                }
+                %30:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+                %x_81:f32 = load_vector_element %30, 1u
+                %32:bool = lt %x_81, 0.0f
+                if %32 [t: %b12] {  # if_5
+                  %b12 = block {  # true
+                    store %x_GLF_color, vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f)
+                    exit_if  # if_5
+                  }
+                }
+                exit_if  # if_2
+              }
+            }
+            continue %b6
+          }
+          %b6 = block {  # continuing
+            %x_85:i32 = load %i
+            %34:i32 = add %x_85, 1i
+            store %i, %34
+            next_iteration %b5
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_87:i32 = load %one
+        %36:bool = lt %x_87, 0i
+        %37:bool = eq %36, false
+        break_if %37 %b3
+      }
+    }
+    %x_102:ptr<function, bool, read_write> = var
+    %x_103_phi:ptr<function, bool, read_write> = var
+    %x_90:f32 = load_vector_element %gl_FragCoord, 1u
+    %41:bool = gte %x_90, 0.0f
+    if %41 [t: %b13, f: %b14] {  # if_6
+      %b13 = block {  # true
+        %x_96:f32 = load_vector_element %v, 1u
+        %x_97:bool = eq %x_96, 1.0f
+        store %x_103_phi, %x_97
+        if %x_97 [t: %b15] {  # if_7
+          %b15 = block {  # true
+            %44:ptr<function, f32, read_write> = access %floats, 1i
+            %x_101:f32 = load %44
+            %46:bool = eq %x_101, 1.0f
+            store %x_102, %46
+            %47:bool = load %x_102
+            store %x_103_phi, %47
+            exit_if  # if_7
+          }
+        }
+        %x_103:bool = load %x_103_phi
+        if %x_103 [t: %b16] {  # if_8
+          %b16 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+            exit_if  # if_8
+          }
+        }
+        exit_if  # if_6
+      }
+      %b14 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_6
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b17 {
+  %b17 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %51:void = call %main_1
+    %52:vec4<f32> = load %x_GLF_color
+    %53:main_out = construct %52
+    ret %53
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f4d02a0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,189 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: theSSBO = struct @align(4) {
+  out_data:i32 @offset(0)
+}
+
+buf1 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_4:ptr<storage, theSSBO, read_write> = var @binding_point(0, 0)
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %GLF_live3s:ptr<function, f32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %z:ptr<function, i32, read_write> = var
+    %8:ptr<storage, i32, read_write> = access %x_4, 0u
+    store %8, 42i
+    %9:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %10:f32 = load_vector_element %9, 0u
+    %11:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %12:f32 = load_vector_element %11, 1u
+    %13:bool = gt %10, %12
+    if %13 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %14:void = workgroupBarrier
+        exit_if  # if_1
+      }
+    }
+    %15:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %16:f32 = load_vector_element %15, 0u
+    %17:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %18:f32 = load_vector_element %17, 1u
+    %19:bool = gt %16, %18
+    if %19 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %20:void = workgroupBarrier
+        exit_if  # if_2
+      }
+    }
+    %21:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %22:f32 = load_vector_element %21, 1u
+    %23:i32 = convert %22
+    store %i, %23
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %24:i32 = load %i
+        %25:bool = gt %24, 0i
+        if %25 [t: %b7, f: %b8] {  # if_3
+          %b7 = block {  # true
+            exit_if  # if_3
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %26:void = workgroupBarrier
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        %27:i32 = load %i
+        %28:i32 = sub %27, 1i
+        store %i, %28
+        next_iteration %b5
+      }
+    }
+    store %GLF_live3s, 0.0f
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        store %i_1, 1i
+        loop [b: %b11, c: %b12] {  # loop_3
+          %b11 = block {  # body
+            %29:i32 = load %i_1
+            %30:bool = lt %29, 2i
+            if %30 [t: %b13, f: %b14] {  # if_4
+              %b13 = block {  # true
+                exit_if  # if_4
+              }
+              %b14 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %31:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+            %32:f32 = load_vector_element %31, 0u
+            %33:bool = gt %32, 1.0f
+            if %33 [t: %b15] {  # if_5
+              %b15 = block {  # true
+                %34:void = workgroupBarrier
+                exit_if  # if_5
+              }
+            }
+            %35:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+            %36:f32 = load_vector_element %35, 0u
+            %37:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+            %38:f32 = load_vector_element %37, 1u
+            %39:bool = gt %36, %38
+            if %39 [t: %b16] {  # if_6
+              %b16 = block {  # true
+                %40:void = workgroupBarrier
+                exit_if  # if_6
+              }
+            }
+            %41:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+            %42:f32 = load_vector_element %41, 1u
+            %43:i32 = convert %42
+            store %z, %43
+            loop [b: %b17, c: %b18] {  # loop_4
+              %b17 = block {  # body
+                %44:i32 = load %z
+                %45:bool = gt %44, 0i
+                if %45 [t: %b19, f: %b20] {  # if_7
+                  %b19 = block {  # true
+                    exit_if  # if_7
+                  }
+                  %b20 = block {  # false
+                    exit_loop  # loop_4
+                  }
+                }
+                %46:f32 = load %GLF_live3s
+                %47:f32 = add %46, 1.0f
+                store %GLF_live3s, %47
+                continue %b18
+              }
+              %b18 = block {  # continuing
+                %48:i32 = load %z
+                %49:i32 = sub %48, 1i
+                store %z, %49
+                next_iteration %b17
+              }
+            }
+            %50:i32 = load %i_1
+            %51:bool = gte %50, 1i
+            if %51 [t: %b21] {  # if_8
+              %b21 = block {  # true
+                %52:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+                %53:f32 = load_vector_element %52, 0u
+                %54:bool = gt %53, 1.0f
+                if %54 [t: %b22] {  # if_9
+                  %b22 = block {  # true
+                    %55:void = workgroupBarrier
+                    exit_if  # if_9
+                  }
+                }
+                exit_if  # if_8
+              }
+            }
+            continue %b12
+          }
+          %b12 = block {  # continuing
+            %56:i32 = load %i_1
+            %57:i32 = add %56, 1i
+            store %i_1, %57
+            next_iteration %b11
+          }
+        }
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        %58:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %x_111:f32 = load_vector_element %58, 0u
+        %60:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %x_113:f32 = load_vector_element %60, 1u
+        %62:bool = gt %x_111, %x_113
+        %63:bool = eq %62, false
+        break_if %63 %b9
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b23 {
+  %b23 = block {
+    %65:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1d98907
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,189 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: theSSBO = struct @align(4) {
+  out_data:i32 @offset(0)
+}
+
+buf1 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_4:ptr<storage, theSSBO, read_write> = var @binding_point(0, 0)
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %GLF_live3s:ptr<function, f32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %z:ptr<function, i32, read_write> = var
+    %8:ptr<storage, i32, read_write> = access %x_4, 0u
+    store %8, 42i
+    %9:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_37:f32 = load_vector_element %9, 0u
+    %11:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_39:f32 = load_vector_element %11, 1u
+    %13:bool = gt %x_37, %x_39
+    if %13 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %14:void = workgroupBarrier
+        exit_if  # if_1
+      }
+    }
+    %15:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_44:f32 = load_vector_element %15, 0u
+    %17:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_46:f32 = load_vector_element %17, 1u
+    %19:bool = gt %x_44, %x_46
+    if %19 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %20:void = workgroupBarrier
+        exit_if  # if_2
+      }
+    }
+    %21:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_51:f32 = load_vector_element %21, 1u
+    %23:i32 = convert %x_51
+    store %i, %23
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %x_57:i32 = load %i
+        %25:bool = gt %x_57, 0i
+        if %25 [t: %b7, f: %b8] {  # if_3
+          %b7 = block {  # true
+            exit_if  # if_3
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %26:void = workgroupBarrier
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        %x_60:i32 = load %i
+        %28:i32 = sub %x_60, 1i
+        store %i, %28
+        next_iteration %b5
+      }
+    }
+    store %GLF_live3s, 0.0f
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        store %i_1, 1i
+        loop [b: %b11, c: %b12] {  # loop_3
+          %b11 = block {  # body
+            %x_70:i32 = load %i_1
+            %30:bool = lt %x_70, 2i
+            if %30 [t: %b13, f: %b14] {  # if_4
+              %b13 = block {  # true
+                exit_if  # if_4
+              }
+              %b14 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %31:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+            %x_74:f32 = load_vector_element %31, 0u
+            %33:bool = gt %x_74, 1.0f
+            if %33 [t: %b15] {  # if_5
+              %b15 = block {  # true
+                %34:void = workgroupBarrier
+                exit_if  # if_5
+              }
+            }
+            %35:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+            %x_79:f32 = load_vector_element %35, 0u
+            %37:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+            %x_81:f32 = load_vector_element %37, 1u
+            %39:bool = gt %x_79, %x_81
+            if %39 [t: %b16] {  # if_6
+              %b16 = block {  # true
+                %40:void = workgroupBarrier
+                exit_if  # if_6
+              }
+            }
+            %41:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+            %x_86:f32 = load_vector_element %41, 1u
+            %43:i32 = convert %x_86
+            store %z, %43
+            loop [b: %b17, c: %b18] {  # loop_4
+              %b17 = block {  # body
+                %x_92:i32 = load %z
+                %45:bool = gt %x_92, 0i
+                if %45 [t: %b19, f: %b20] {  # if_7
+                  %b19 = block {  # true
+                    exit_if  # if_7
+                  }
+                  %b20 = block {  # false
+                    exit_loop  # loop_4
+                  }
+                }
+                %x_95:f32 = load %GLF_live3s
+                %47:f32 = add %x_95, 1.0f
+                store %GLF_live3s, %47
+                continue %b18
+              }
+              %b18 = block {  # continuing
+                %x_97:i32 = load %z
+                %49:i32 = sub %x_97, 1i
+                store %z, %49
+                next_iteration %b17
+              }
+            }
+            %x_99:i32 = load %i_1
+            %51:bool = gte %x_99, 1i
+            if %51 [t: %b21] {  # if_8
+              %b21 = block {  # true
+                %52:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+                %x_104:f32 = load_vector_element %52, 0u
+                %54:bool = gt %x_104, 1.0f
+                if %54 [t: %b22] {  # if_9
+                  %b22 = block {  # true
+                    %55:void = workgroupBarrier
+                    exit_if  # if_9
+                  }
+                }
+                exit_if  # if_8
+              }
+            }
+            continue %b12
+          }
+          %b12 = block {  # continuing
+            %x_108:i32 = load %i_1
+            %57:i32 = add %x_108, 1i
+            store %i_1, %57
+            next_iteration %b11
+          }
+        }
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        %58:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %x_111:f32 = load_vector_element %58, 0u
+        %60:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %x_113:f32 = load_vector_element %60, 1u
+        %62:bool = gt %x_111, %x_113
+        %63:bool = eq %62, false
+        break_if %63 %b9
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b23 {
+  %b23 = block {
+    %65:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f93413c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,130 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%x_51 = func():void -> %b2 {
+  %b2 = block {
+    discard
+    ret
+  }
+}
+%main_1 = func():void -> %b3 {
+  %b3 = block {
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %x_30:ptr<function, bool, read_write> = var
+        %x_31:ptr<function, bool, read_write> = var
+        store %x_30, false
+        loop [b: %b6, c: %b7] {  # loop_2
+          %b6 = block {  # body
+            loop [b: %b8, c: %b9] {  # loop_3
+              %b8 = block {  # body
+                %x_52:ptr<function, vec4<f32>, read_write> = var
+                %x_54:ptr<function, vec4<f32>, read_write> = var
+                %x_55:ptr<function, vec4<f32>, read_write> = var
+                %10:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+                %x_36:f32 = load_vector_element %10, 1u
+                %12:bool = load %x_30
+                store %x_31, %12
+                %13:bool = gt %x_36, 0.0f
+                if %13 [t: %b10, f: %b11] {  # if_1
+                  %b10 = block {  # true
+                    exit_if  # if_1
+                  }
+                  %b11 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                loop [b: %b12, c: %b13] {  # loop_4
+                  %b12 = block {  # body
+                    %14:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+                    %x_46:f32 = load_vector_element %14, 0u
+                    %16:bool = gt %x_46, 0.0f
+                    if %16 [t: %b14] {  # if_2
+                      %b14 = block {  # true
+                        %17:void = call %x_51
+                        store %x_52, vec4<f32>(0.0f)
+                        %18:vec4<f32> = load %x_52
+                        store %x_55, %18
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %19:vec4<f32> = construct %x_46
+                    %20:vec4<f32> = add vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), %19
+                    store %x_54, %20
+                    %21:vec4<f32> = load %x_54
+                    store %x_55, %21
+                    exit_loop  # loop_4
+                  }
+                  %b13 = block {  # continuing
+                    next_iteration %b12
+                  }
+                }
+                %22:vec4<f32> = load %x_55
+                store %x_GLF_color, %22
+                store %x_31, true
+                exit_loop  # loop_3
+              }
+              %b9 = block {  # continuing
+                next_iteration %b8
+              }
+            }
+            %23:bool = load %x_31
+            if %23 [t: %b15, f: %b16] {  # if_3
+              %b15 = block {  # true
+                exit_loop  # loop_2
+              }
+              %b16 = block {  # false
+                continue %b7
+              }
+            }
+            continue %b7
+          }
+          %b7 = block {  # continuing
+            %24:bool = load %x_31
+            store %x_30, %24
+            next_iteration %b6
+          }
+        }
+        %25:bool = load %x_31
+        if %25 [t: %b17] {  # if_4
+          %b17 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        exit_loop  # loop_1
+      }
+      %b5 = block {  # continuing
+        next_iteration %b4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b18 {
+  %b18 = block {
+    %27:void = call %main_1
+    %28:vec4<f32> = load %x_GLF_color
+    %29:main_out = construct %28
+    ret %29
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..af2a205
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,130 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%x_51 = func():void -> %b2 {
+  %b2 = block {
+    discard
+    ret
+  }
+}
+%main_1 = func():void -> %b3 {
+  %b3 = block {
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %x_31:ptr<function, bool, read_write> = var
+        %x_30_phi:ptr<function, bool, read_write> = var
+        store %x_30_phi, false
+        loop [b: %b6, c: %b7] {  # loop_2
+          %b6 = block {  # body
+            %x_31_phi:ptr<function, bool, read_write> = var
+            %x_30:bool = load %x_30_phi
+            loop [b: %b8, c: %b9] {  # loop_3
+              %b8 = block {  # body
+                %x_52:ptr<function, vec4<f32>, read_write> = var
+                %x_54:ptr<function, vec4<f32>, read_write> = var
+                %x_55_phi:ptr<function, vec4<f32>, read_write> = var
+                %12:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+                %x_36:f32 = load_vector_element %12, 1u
+                store %x_31_phi, %x_30
+                %14:bool = gt %x_36, 0.0f
+                if %14 [t: %b10, f: %b11] {  # if_1
+                  %b10 = block {  # true
+                    exit_if  # if_1
+                  }
+                  %b11 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                loop [b: %b12, c: %b13] {  # loop_4
+                  %b12 = block {  # body
+                    %15:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+                    %x_46:f32 = load_vector_element %15, 0u
+                    %17:bool = gt %x_46, 0.0f
+                    if %17 [t: %b14] {  # if_2
+                      %b14 = block {  # true
+                        %18:void = call %x_51
+                        exit_if  # if_2
+                      }
+                    }
+                    %19:vec4<f32> = construct %x_46, %x_46, %x_46, %x_46
+                    %20:vec4<f32> = add vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), %19
+                    store %x_54, %20
+                    %21:vec4<f32> = load %x_54
+                    store %x_55_phi, %21
+                    exit_loop  # loop_4
+                  }
+                  %b13 = block {  # continuing
+                    next_iteration %b12
+                  }
+                }
+                %x_55:vec4<f32> = load %x_55_phi
+                store %x_GLF_color, %x_55
+                store %x_31_phi, true
+                exit_loop  # loop_3
+              }
+              %b9 = block {  # continuing
+                next_iteration %b8
+              }
+            }
+            %23:bool = load %x_31_phi
+            store %x_31, %23
+            %24:bool = load %x_31
+            if %24 [t: %b15, f: %b16] {  # if_3
+              %b15 = block {  # true
+                exit_loop  # loop_2
+              }
+              %b16 = block {  # false
+                continue %b7
+              }
+            }
+            continue %b7
+          }
+          %b7 = block {  # continuing
+            %25:bool = load %x_31
+            store %x_30_phi, %25
+            next_iteration %b6
+          }
+        }
+        %26:bool = load %x_31
+        if %26 [t: %b17] {  # if_4
+          %b17 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        exit_loop  # loop_1
+      }
+      %b5 = block {  # continuing
+        next_iteration %b4
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b18 {
+  %b18 = block {
+    %28:void = call %main_1
+    %29:vec4<f32> = load %x_GLF_color
+    %30:main_out = construct %29
+    ret %30
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..8d7cd7f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,83 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_46:ptr<function, bool, read_write> = var
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %6:f32 = load_vector_element %gl_FragCoord, 0u
+            %7:bool = lt %6, 0.0f
+            if %7 [t: %b7] {  # if_1
+              %b7 = block {  # true
+                %8:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+                %9:f32 = load_vector_element %8, 1u
+                %10:bool = gt 1.0f, %9
+                if %10 [t: %b8, f: %b9] {  # if_2
+                  %b8 = block {  # true
+                    discard
+                    exit_if  # if_2
+                  }
+                  %b9 = block {  # false
+                    continue %b6
+                  }
+                }
+                continue %b6
+              }
+            }
+            store %x_46, true
+            exit_loop  # loop_2
+          }
+          %b6 = block {  # continuing
+            store %x_46, false
+            break_if true %b5
+          }
+        }
+        %11:bool = load %x_46
+        if %11 [t: %b10] {  # if_3
+          %b10 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b11 {
+  %b11 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %14:void = call %main_1
+    %15:vec4<f32> = load %x_GLF_color
+    %16:main_out = construct %15
+    ret %16
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..299e5df
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,83 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_46_phi:ptr<function, bool, read_write> = var
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %x_37:f32 = load_vector_element %gl_FragCoord, 0u
+            %7:bool = lt %x_37, 0.0f
+            if %7 [t: %b7] {  # if_1
+              %b7 = block {  # true
+                %8:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+                %x_42:f32 = load_vector_element %8, 1u
+                %10:bool = gt 1.0f, %x_42
+                if %10 [t: %b8, f: %b9] {  # if_2
+                  %b8 = block {  # true
+                    discard
+                    exit_if  # if_2
+                  }
+                  %b9 = block {  # false
+                    continue %b6
+                  }
+                }
+                exit_if  # if_1
+              }
+            }
+            store %x_46_phi, true
+            exit_loop  # loop_2
+          }
+          %b6 = block {  # continuing
+            store %x_46_phi, false
+            break_if true %b5
+          }
+        }
+        %x_46:bool = load %x_46_phi
+        if %x_46 [t: %b10] {  # if_3
+          %b10 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b11 {
+  %b11 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %14:void = call %main_1
+    %15:vec4<f32> = load %x_GLF_color
+    %16:main_out = construct %15
+    ret %16
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f9cd0d3
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%f_ = func():void -> %b2 {
+  %b2 = block {
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %5:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+        %6:f32 = load_vector_element %5, 1u
+        %7:bool = gt 1.0f, %6
+        if %7 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            %8:f32 = load_vector_element %gl_FragCoord, 1u
+            %9:bool = lt %8, 0.0f
+            if %9 [t: %b6, f: %b7] {  # if_2
+              %b6 = block {  # true
+                continue %b4
+              }
+              %b7 = block {  # false
+                continue %b4
+              }
+            }
+            exit_if  # if_1
+          }
+        }
+        discard
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        break_if true %b3
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b8 {
+  %b8 = block {
+    %11:void = call %f_
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b9 {
+  %b9 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %14:void = call %main_1
+    %15:vec4<f32> = load %x_GLF_color
+    %16:main_out = construct %15
+    ret %16
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..db8fde3
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%f_ = func():void -> %b2 {
+  %b2 = block {
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %5:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+        %x_35:f32 = load_vector_element %5, 1u
+        %7:bool = gt 1.0f, %x_35
+        if %7 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            %x_40:f32 = load_vector_element %gl_FragCoord, 1u
+            %9:bool = lt %x_40, 0.0f
+            if %9 [t: %b6, f: %b7] {  # if_2
+              %b6 = block {  # true
+                continue %b4
+              }
+              %b7 = block {  # false
+                continue %b4
+              }
+            }
+            exit_if  # if_1
+          }
+        }
+        discard
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        break_if true %b3
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b8 {
+  %b8 = block {
+    %11:void = call %f_
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b9 {
+  %b9 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %14:void = call %main_1
+    %15:vec4<f32> = load %x_GLF_color
+    %16:main_out = construct %15
+    ret %16
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..a331746
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,114 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():i32 -> %b2 {
+  %b2 = block {
+    %loop_count:ptr<function, i32, read_write> = var
+    %x_38:ptr<function, i32, read_write> = var
+    store %loop_count, 0i
+    store %x_38, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_45:ptr<function, i32, read_write> = var
+        %x_39:ptr<function, i32, read_write> = var
+        %8:i32 = load %x_38
+        %x_43:i32 = add %8, 1i
+        store %loop_count, %x_43
+        store %x_45, %x_43
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %10:i32 = load %x_45
+            %11:i32 = add %10, 1i
+            store %x_39, %11
+            %12:i32 = load %x_39
+            store %loop_count, %12
+            %13:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+            %14:f32 = load_vector_element %13, 0u
+            %15:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+            %16:f32 = load_vector_element %15, 1u
+            %17:bool = lt %14, %16
+            if %17 [t: %b7] {  # if_1
+              %b7 = block {  # true
+                ret 1i
+              }
+            }
+            %18:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+            %19:f32 = load_vector_element %18, 0u
+            %20:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+            %21:f32 = load_vector_element %20, 1u
+            %22:bool = lt %19, %21
+            if %22 [t: %b8] {  # if_2
+              %b8 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            continue %b6
+          }
+          %b6 = block {  # continuing
+            %23:i32 = load %x_39
+            store %x_45, %23
+            %24:i32 = load %x_39
+            %25:bool = lt %24, 100i
+            %26:bool = eq %25, false
+            break_if %26 %b5
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %27:i32 = load %x_39
+        store %x_38, %27
+        %28:i32 = load %x_39
+        %29:bool = lt %28, 100i
+        %30:bool = eq %29, false
+        break_if %30 %b3
+      }
+    }
+    ret 0i
+  }
+}
+%main_1 = func():void -> %b9 {
+  %b9 = block {
+    %x_31:i32 = call %func_
+    %33:bool = eq %x_31, 1i
+    if %33 [t: %b10, f: %b11] {  # if_3
+      %b10 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b11 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b12 {
+  %b12 = block {
+    %35:void = call %main_1
+    %36:vec4<f32> = load %x_GLF_color
+    %37:main_out = construct %36
+    ret %37
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5d0ab1f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,114 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():i32 -> %b2 {
+  %b2 = block {
+    %loop_count:ptr<function, i32, read_write> = var
+    %x_38_phi:ptr<function, i32, read_write> = var
+    store %loop_count, 0i
+    store %x_38_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_39:ptr<function, i32, read_write> = var
+        %x_45_phi:ptr<function, i32, read_write> = var
+        %x_38:i32 = load %x_38_phi
+        %x_43:i32 = add %x_38, 1i
+        store %loop_count, %x_43
+        store %x_45_phi, %x_43
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %x_45:i32 = load %x_45_phi
+            %11:i32 = add %x_45, 1i
+            store %x_39, %11
+            %12:i32 = load %x_39
+            store %loop_count, %12
+            %13:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+            %x_50:f32 = load_vector_element %13, 0u
+            %15:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+            %x_52:f32 = load_vector_element %15, 1u
+            %17:bool = lt %x_50, %x_52
+            if %17 [t: %b7] {  # if_1
+              %b7 = block {  # true
+                ret 1i
+              }
+            }
+            %18:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+            %x_57:f32 = load_vector_element %18, 0u
+            %20:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+            %x_59:f32 = load_vector_element %20, 1u
+            %22:bool = lt %x_57, %x_59
+            if %22 [t: %b8] {  # if_2
+              %b8 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            continue %b6
+          }
+          %b6 = block {  # continuing
+            %23:i32 = load %x_39
+            store %x_45_phi, %23
+            %24:i32 = load %x_39
+            %25:bool = lt %24, 100i
+            %26:bool = eq %25, false
+            break_if %26 %b5
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %27:i32 = load %x_39
+        store %x_38_phi, %27
+        %28:i32 = load %x_39
+        %29:bool = lt %28, 100i
+        %30:bool = eq %29, false
+        break_if %30 %b3
+      }
+    }
+    ret 0i
+  }
+}
+%main_1 = func():void -> %b9 {
+  %b9 = block {
+    %x_31:i32 = call %func_
+    %33:bool = eq %x_31, 1i
+    if %33 [t: %b10, f: %b11] {  # if_3
+      %b10 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_3
+      }
+      %b11 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f)
+        exit_if  # if_3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b12 {
+  %b12 = block {
+    %35:void = call %main_1
+    %36:vec4<f32> = load %x_GLF_color
+    %37:main_out = construct %36
+    ret %37
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..05d337a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.spvasm.expected.ir.msl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: theSSBO = struct @align(4) {
+  out_data:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %x_4:ptr<storage, theSSBO, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_30:ptr<function, mat2x2<f32>, read_write> = var
+    %x_32:ptr<function, i32, read_write> = var
+    %5:ptr<storage, i32, read_write> = access %x_4, 0u
+    store %5, 42i
+    store %x_30, mat2x2<f32>(vec2<f32>(0.0f))
+    store %x_32, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_33:ptr<function, i32, read_write> = var
+        %7:i32 = load %x_32
+        %8:bool = gt %7, 0i
+        if %8 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %9:i32 = load %x_32
+        %10:i32 = sub %9, 1i
+        store %x_33, %10
+        store %x_30, mat2x2<f32>(vec2<f32>(1.0f, 0.0f), vec2<f32>(0.0f, 1.0f))
+        %11:i32 = load %x_33
+        store %x_32, %11
+        next_iteration %b3
+      }
+    }
+    %12:ptr<function, vec2<f32>, read_write> = access %x_30, 0u
+    %13:vec2<f32> = load %12
+    %14:vec2<f32> = sub %13, vec2<f32>(1.0f, 0.0f)
+    %15:ptr<function, vec2<f32>, read_write> = access %x_30, 1u
+    %16:vec2<f32> = load %15
+    %17:vec2<f32> = sub %16, vec2<f32>(0.0f, 1.0f)
+    %18:mat2x2<f32> = construct %14, %17
+    %x_41:vec2<f32> = mul vec2<f32>(1.0f), %18
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %20:f32 = access %x_41, 0u
+        %21:bool = lt 1.0f, %20
+        if %21 [t: %b9] {  # if_2
+          %b9 = block {  # true
+            exit_loop  # loop_2
+          }
+        }
+        %22:void = workgroupBarrier
+        exit_loop  # loop_2
+      }
+      %b8 = block {  # continuing
+        next_iteration %b7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b10 {
+  %b10 = block {
+    %24:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b9183a2
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl.expected.ir.msl
@@ -0,0 +1,86 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: theSSBO = struct @align(4) {
+  out_data:i32 @offset(0)
+}
+
+%b1 = block {  # root
+  %x_4:ptr<storage, theSSBO, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_30:ptr<function, mat2x2<f32>, read_write> = var
+    %x_30_phi:ptr<function, mat2x2<f32>, read_write> = var
+    %x_32_phi:ptr<function, i32, read_write> = var
+    %6:ptr<storage, i32, read_write> = access %x_4, 0u
+    store %6, 42i
+    store %x_30_phi, mat2x2<f32>(vec2<f32>(0.0f))
+    store %x_32_phi, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_33:ptr<function, i32, read_write> = var
+        %8:mat2x2<f32> = load %x_30_phi
+        store %x_30, %8
+        %x_32:i32 = load %x_32_phi
+        %10:bool = gt %x_32, 0i
+        if %10 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %11:i32 = sub %x_32, 1i
+        store %x_33, %11
+        store %x_30_phi, mat2x2<f32>(vec2<f32>(1.0f, 0.0f), vec2<f32>(0.0f, 1.0f))
+        %12:i32 = load %x_33
+        store %x_32_phi, %12
+        next_iteration %b3
+      }
+    }
+    %13:ptr<function, vec2<f32>, read_write> = access %x_30, 0u
+    %14:vec2<f32> = load %13
+    %15:vec2<f32> = sub %14, vec2<f32>(1.0f, 0.0f)
+    %16:ptr<function, vec2<f32>, read_write> = access %x_30, 1u
+    %17:vec2<f32> = load %16
+    %18:vec2<f32> = sub %17, vec2<f32>(0.0f, 1.0f)
+    %19:mat2x2<f32> = construct %15, %18
+    %x_41:vec2<f32> = mul vec2<f32>(1.0f), %19
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %21:f32 = access %x_41, 0u
+        %22:bool = lt 1.0f, %21
+        if %22 [t: %b9] {  # if_2
+          %b9 = block {  # true
+            exit_loop  # loop_2
+          }
+        }
+        %23:void = workgroupBarrier
+        exit_loop  # loop_2
+      }
+      %b8 = block {  # continuing
+        next_iteration %b7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b10 {
+  %b10 = block {
+    %25:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..43e2505
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,145 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %loop_count:ptr<function, i32, read_write> = var
+    store %loop_count, 0i
+    %6:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %7:f32 = load_vector_element %6, 0u
+    %8:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %9:f32 = load_vector_element %8, 1u
+    %x_36:bool = gt %7, %9
+    if %x_36 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret
+      }
+    }
+    %11:f32 = load_vector_element %gl_FragCoord, 0u
+    %x_41:bool = lt %11, 0.0f
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %13:i32 = load %loop_count
+        %14:bool = lt %13, 100i
+        if %14 [t: %b6, f: %b7] {  # if_2
+          %b6 = block {  # true
+            exit_if  # if_2
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        if %x_36 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        if %x_36 [t: %b9, f: %b10] {  # if_4
+          %b9 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f)
+            exit_if  # if_4
+          }
+          %b10 = block {  # false
+            if %x_41 [t: %b11] {  # if_5
+              %b11 = block {  # true
+                ret
+              }
+            }
+            exit_if  # if_4
+          }
+        }
+        if %x_36 [t: %b12, f: %b13] {  # if_6
+          %b12 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f)
+            exit_if  # if_6
+          }
+          %b13 = block {  # false
+            store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+            exit_if  # if_6
+          }
+        }
+        if %x_36 [t: %b14] {  # if_7
+          %b14 = block {  # true
+            ret
+          }
+        }
+        if %x_41 [t: %b15] {  # if_8
+          %b15 = block {  # true
+            loop [b: %b16, c: %b17] {  # loop_2
+              %b16 = block {  # body
+                %15:i32 = load %loop_count
+                %16:bool = lt %15, 100i
+                if %16 [t: %b18, f: %b19] {  # if_9
+                  %b18 = block {  # true
+                    exit_if  # if_9
+                  }
+                  %b19 = block {  # false
+                    exit_loop  # loop_2
+                  }
+                }
+                continue %b17
+              }
+              %b17 = block {  # continuing
+                %17:i32 = load %loop_count
+                %18:i32 = add %17, 1i
+                store %loop_count, %18
+                next_iteration %b16
+              }
+            }
+            exit_if  # if_8
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %19:i32 = load %loop_count
+        %20:i32 = add %19, 1i
+        store %loop_count, %20
+        next_iteration %b4
+      }
+    }
+    %21:i32 = load %loop_count
+    %22:bool = gte %21, 100i
+    if %22 [t: %b20, f: %b21] {  # if_10
+      %b20 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_10
+      }
+      %b21 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f)
+        exit_if  # if_10
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b22 {
+  %b22 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %25:void = call %main_1
+    %26:vec4<f32> = load %x_GLF_color
+    %27:main_out = construct %26
+    ret %27
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..224f99f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,145 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %loop_count:ptr<function, i32, read_write> = var
+    store %loop_count, 0i
+    %6:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %x_33:f32 = load_vector_element %6, 0u
+    %8:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %x_35:f32 = load_vector_element %8, 1u
+    %x_36:bool = gt %x_33, %x_35
+    if %x_36 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret
+      }
+    }
+    %x_40:f32 = load_vector_element %gl_FragCoord, 0u
+    %x_41:bool = lt %x_40, 0.0f
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %x_43:i32 = load %loop_count
+        %14:bool = lt %x_43, 100i
+        if %14 [t: %b6, f: %b7] {  # if_2
+          %b6 = block {  # true
+            exit_if  # if_2
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        if %x_36 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        if %x_36 [t: %b9, f: %b10] {  # if_4
+          %b9 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f)
+            exit_if  # if_4
+          }
+          %b10 = block {  # false
+            if %x_41 [t: %b11] {  # if_5
+              %b11 = block {  # true
+                ret
+              }
+            }
+            exit_if  # if_4
+          }
+        }
+        if %x_36 [t: %b12, f: %b13] {  # if_6
+          %b12 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f)
+            exit_if  # if_6
+          }
+          %b13 = block {  # false
+            store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+            exit_if  # if_6
+          }
+        }
+        if %x_36 [t: %b14] {  # if_7
+          %b14 = block {  # true
+            ret
+          }
+        }
+        if %x_41 [t: %b15] {  # if_8
+          %b15 = block {  # true
+            loop [b: %b16, c: %b17] {  # loop_2
+              %b16 = block {  # body
+                %x_63:i32 = load %loop_count
+                %16:bool = lt %x_63, 100i
+                if %16 [t: %b18, f: %b19] {  # if_9
+                  %b18 = block {  # true
+                    exit_if  # if_9
+                  }
+                  %b19 = block {  # false
+                    exit_loop  # loop_2
+                  }
+                }
+                continue %b17
+              }
+              %b17 = block {  # continuing
+                %x_67:i32 = load %loop_count
+                %18:i32 = add %x_67, 1i
+                store %loop_count, %18
+                next_iteration %b16
+              }
+            }
+            exit_if  # if_8
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %x_69:i32 = load %loop_count
+        %20:i32 = add %x_69, 1i
+        store %loop_count, %20
+        next_iteration %b4
+      }
+    }
+    %x_71:i32 = load %loop_count
+    %22:bool = gte %x_71, 100i
+    if %22 [t: %b20, f: %b21] {  # if_10
+      %b20 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_10
+      }
+      %b21 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f)
+        exit_if  # if_10
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b22 {
+  %b22 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %25:void = call %main_1
+    %26:vec4<f32> = load %x_GLF_color
+    %27:main_out = construct %26
+    ret %27
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..9f99dd5
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,177 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_43:ptr<function, f32, read_write> = var
+    %x_44:ptr<function, f32, read_write> = var
+    %x_45:ptr<function, f32, read_write> = var
+    %x_46:ptr<function, i32, read_write> = var
+    %zero:ptr<function, i32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %temp:ptr<function, vec2<f32>, read_write> = var
+    %12:vec4<f32> = load %gl_FragCoord
+    %13:vec2<f32> = swizzle %12, xy
+    store %param, %13
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %14:f32 = load_vector_element %param, 1u
+        %15:bool = lt %14, 50.0f
+        if %15 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            %16:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+            %17:f32 = load_vector_element %16, 1u
+            store %x_44, %17
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            store %x_44, 0.0f
+            exit_if  # if_1
+          }
+        }
+        %x_61:f32 = load %x_44
+        %19:f32 = load %x_44
+        store %x_43, %19
+        %20:f32 = load_vector_element %gl_FragCoord, 1u
+        %21:bool = lt %20, 50.0f
+        %x_65:f32 = select 0.0f, 1.0f, %21
+        store %x_45, %x_65
+        %23:f32 = sub %x_61, %x_65
+        %24:bool = lt %23, 1.0f
+        if %24 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            store %x_46, 0i
+            exit_loop  # loop_1
+          }
+        }
+        store %x_46, 1i
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        break_if true %b3
+      }
+    }
+    %x_70:i32 = load %x_46
+    %26:i32 = load %x_46
+    store %zero, %26
+    %27:bool = eq %x_70, 1i
+    if %27 [t: %b8] {  # if_3
+      %b8 = block {  # true
+        ret
+      }
+    }
+    store %x_GLF_color, vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f)
+    %28:f32 = load_vector_element %gl_FragCoord, 0u
+    %29:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %30:f32 = load_vector_element %29, 0u
+    %31:bool = gte %28, %30
+    if %31 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        %32:f32 = load_vector_element %gl_FragCoord, 1u
+        %33:bool = gte %32, 0.0f
+        if %33 [t: %b10] {  # if_5
+          %b10 = block {  # true
+            %34:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+            %35:f32 = load_vector_element %34, 1u
+            store_vector_element %x_GLF_color, 0u, %35
+            exit_if  # if_5
+          }
+        }
+        exit_if  # if_4
+      }
+    }
+    %36:f32 = load_vector_element %gl_FragCoord, 1u
+    %37:bool = gte %36, 0.0f
+    if %37 [t: %b11] {  # if_6
+      %b11 = block {  # true
+        %38:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+        %39:f32 = load_vector_element %38, 0u
+        store_vector_element %x_GLF_color, 1u, %39
+        exit_if  # if_6
+      }
+    }
+    %40:vec4<f32> = load %gl_FragCoord
+    %x_98:vec2<f32> = swizzle %40, xy
+    %42:f32 = access %x_98, 0u
+    %43:f32 = access %x_98, 1u
+    %x_101:vec2<f32> = construct %42, %43
+    store %temp, %x_101
+    %45:f32 = access %x_101, 1u
+    %46:bool = gte %45, 0.0f
+    if %46 [t: %b12] {  # if_7
+      %b12 = block {  # true
+        %47:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+        %48:f32 = load_vector_element %47, 0u
+        store_vector_element %x_GLF_color, 2u, %48
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b13 {
+  %b13 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %51:void = call %main_1
+    %52:vec4<f32> = load %x_GLF_color
+    %53:main_out = construct %52
+    ret %53
+  }
+}
+%alwaysZero_vf2_ = func(%coord:ptr<function, vec2<f32>, read_write>):i32 -> %b14 {
+  %b14 = block {
+    %a:ptr<function, f32, read_write> = var
+    %x_110:ptr<function, f32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %59:f32 = load_vector_element %coord, 1u
+    %60:bool = lt %59, 50.0f
+    if %60 [t: %b15, f: %b16] {  # if_8
+      %b15 = block {  # true
+        %61:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+        %62:f32 = load_vector_element %61, 1u
+        store %x_110, %62
+        exit_if  # if_8
+      }
+      %b16 = block {  # false
+        store %x_110, 0.0f
+        exit_if  # if_8
+      }
+    }
+    %x_119:f32 = load %x_110
+    %64:f32 = load %x_110
+    store %a, %64
+    %65:f32 = load_vector_element %gl_FragCoord, 1u
+    %66:bool = lt %65, 50.0f
+    %x_123:f32 = select 0.0f, 1.0f, %66
+    store %b, %x_123
+    %68:f32 = sub %x_119, %x_123
+    %69:bool = lt %68, 1.0f
+    if %69 [t: %b17] {  # if_9
+      %b17 = block {  # true
+        ret 0i
+      }
+    }
+    ret 1i
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cc45298
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,178 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_43:ptr<function, f32, read_write> = var
+    %x_44:ptr<function, f32, read_write> = var
+    %x_45:ptr<function, f32, read_write> = var
+    %x_46:ptr<function, i32, read_write> = var
+    %zero:ptr<function, i32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %temp:ptr<function, vec2<f32>, read_write> = var
+    %x_47:vec4<f32> = load %gl_FragCoord
+    %13:f32 = access %x_47, 0u
+    %14:f32 = access %x_47, 1u
+    %15:vec2<f32> = construct %13, %14
+    store %param, %15
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_54:f32 = load_vector_element %param, 1u
+        %17:bool = lt %x_54, 50.0f
+        if %17 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            %18:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+            %x_60:f32 = load_vector_element %18, 1u
+            store %x_44, %x_60
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            store %x_44, 0.0f
+            exit_if  # if_1
+          }
+        }
+        %x_61:f32 = load %x_44
+        store %x_43, %x_61
+        %x_63:f32 = load_vector_element %gl_FragCoord, 1u
+        %22:bool = lt %x_63, 50.0f
+        %x_65:f32 = select 0.0f, 1.0f, %22
+        store %x_45, %x_65
+        %24:f32 = sub %x_61, %x_65
+        %25:bool = lt %24, 1.0f
+        if %25 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            store %x_46, 0i
+            exit_loop  # loop_1
+          }
+        }
+        store %x_46, 1i
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        break_if true %b3
+      }
+    }
+    %x_70:i32 = load %x_46
+    store %zero, %x_70
+    %27:bool = eq %x_70, 1i
+    if %27 [t: %b8] {  # if_3
+      %b8 = block {  # true
+        ret
+      }
+    }
+    store %x_GLF_color, vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f)
+    %x_75:f32 = load_vector_element %gl_FragCoord, 0u
+    %29:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %x_77:f32 = load_vector_element %29, 0u
+    %31:bool = gte %x_75, %x_77
+    if %31 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        %x_82:f32 = load_vector_element %gl_FragCoord, 1u
+        %33:bool = gte %x_82, 0.0f
+        if %33 [t: %b10] {  # if_5
+          %b10 = block {  # true
+            %34:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+            %x_87:f32 = load_vector_element %34, 1u
+            store_vector_element %x_GLF_color, 0u, %x_87
+            exit_if  # if_5
+          }
+        }
+        exit_if  # if_4
+      }
+    }
+    %x_90:f32 = load_vector_element %gl_FragCoord, 1u
+    %37:bool = gte %x_90, 0.0f
+    if %37 [t: %b11] {  # if_6
+      %b11 = block {  # true
+        %38:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+        %x_95:f32 = load_vector_element %38, 0u
+        store_vector_element %x_GLF_color, 1u, %x_95
+        exit_if  # if_6
+      }
+    }
+    %x_97:vec4<f32> = load %gl_FragCoord
+    %41:f32 = access %x_97, 0u
+    %42:f32 = access %x_97, 1u
+    %x_98:vec2<f32> = construct %41, %42
+    %44:f32 = access %x_98, 0u
+    %45:f32 = access %x_98, 1u
+    %x_101:vec2<f32> = construct %44, %45
+    store %temp, %x_101
+    %47:f32 = access %x_101, 1u
+    %48:bool = gte %47, 0.0f
+    if %48 [t: %b12] {  # if_7
+      %b12 = block {  # true
+        %49:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+        %x_107:f32 = load_vector_element %49, 0u
+        store_vector_element %x_GLF_color, 2u, %x_107
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b13 {
+  %b13 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %53:void = call %main_1
+    %54:vec4<f32> = load %x_GLF_color
+    %55:main_out = construct %54
+    ret %55
+  }
+}
+%alwaysZero_vf2_ = func(%coord:ptr<function, vec2<f32>, read_write>):i32 -> %b14 {
+  %b14 = block {
+    %a:ptr<function, f32, read_write> = var
+    %x_110:ptr<function, f32, read_write> = var
+    %b:ptr<function, f32, read_write> = var
+    %x_112:f32 = load_vector_element %coord, 1u
+    %62:bool = lt %x_112, 50.0f
+    if %62 [t: %b15, f: %b16] {  # if_8
+      %b15 = block {  # true
+        %63:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+        %x_118:f32 = load_vector_element %63, 1u
+        store %x_110, %x_118
+        exit_if  # if_8
+      }
+      %b16 = block {  # false
+        store %x_110, 0.0f
+        exit_if  # if_8
+      }
+    }
+    %x_119:f32 = load %x_110
+    store %a, %x_119
+    %x_121:f32 = load_vector_element %gl_FragCoord, 1u
+    %67:bool = lt %x_121, 50.0f
+    %x_123:f32 = select 0.0f, 1.0f, %67
+    store %b, %x_123
+    %69:f32 = sub %x_119, %x_123
+    %70:bool = lt %69, 1.0f
+    if %70 [t: %b17] {  # if_9
+      %b17 = block {  # true
+        ret 0i
+      }
+    }
+    ret 1i
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..c8c425a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,103 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%fx_ = func():f32 -> %b2 {
+  %b2 = block {
+    %5:f32 = load_vector_element %gl_FragCoord, 1u
+    %6:bool = gte %5, 0.0f
+    if %6 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %7:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+        %x_55:f32 = load_vector_element %7, 1u
+        ret %x_55
+      }
+    }
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        if true [t: %b6, f: %b7] {  # if_2
+          %b6 = block {  # true
+            exit_if  # if_2
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        store %x_GLF_color, vec4<f32>(1.0f)
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        next_iteration %b4
+      }
+    }
+    ret 0.0f
+  }
+}
+%main_1 = func():void -> %b8 {
+  %b8 = block {
+    %x2:ptr<function, f32, read_write> = var
+    %B:ptr<function, f32, read_write> = var
+    %k0:ptr<function, f32, read_write> = var
+    store %x2, 1.0f
+    store %B, 1.0f
+    %x_34:f32 = call %fx_
+    %14:vec4<f32> = construct %x_34, 0.0f, 0.0f, 1.0f
+    store %x_GLF_color, %14
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %15:f32 = load %x2
+        %16:bool = gt %15, 2.0f
+        if %16 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_43:f32 = call %fx_
+        %x_44:f32 = call %fx_
+        %19:f32 = sub %x_43, %x_44
+        store %k0, %19
+        %20:f32 = load %k0
+        store %B, %20
+        %21:f32 = load %B
+        store %x2, %21
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b13 {
+  %b13 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %24:void = call %main_1
+    %25:vec4<f32> = load %x_GLF_color
+    %26:main_out = construct %25
+    ret %26
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..134c58b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,103 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%fx_ = func():f32 -> %b2 {
+  %b2 = block {
+    %x_50:f32 = load_vector_element %gl_FragCoord, 1u
+    %6:bool = gte %x_50, 0.0f
+    if %6 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %7:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+        %x_55:f32 = load_vector_element %7, 1u
+        ret %x_55
+      }
+    }
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        if true [t: %b6, f: %b7] {  # if_2
+          %b6 = block {  # true
+            exit_if  # if_2
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        store %x_GLF_color, vec4<f32>(1.0f)
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        next_iteration %b4
+      }
+    }
+    ret 0.0f
+  }
+}
+%main_1 = func():void -> %b8 {
+  %b8 = block {
+    %x2:ptr<function, f32, read_write> = var
+    %B:ptr<function, f32, read_write> = var
+    %k0:ptr<function, f32, read_write> = var
+    store %x2, 1.0f
+    store %B, 1.0f
+    %x_34:f32 = call %fx_
+    %14:vec4<f32> = construct %x_34, 0.0f, 0.0f, 1.0f
+    store %x_GLF_color, %14
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %x_40:f32 = load %x2
+        %16:bool = gt %x_40, 2.0f
+        if %16 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_43:f32 = call %fx_
+        %x_44:f32 = call %fx_
+        %19:f32 = sub %x_43, %x_44
+        store %k0, %19
+        %x_46:f32 = load %k0
+        store %B, %x_46
+        %x_47:f32 = load %B
+        store %x2, %x_47
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b13 {
+  %b13 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %24:void = call %main_1
+    %25:vec4<f32> = load %x_GLF_color
+    %26:main_out = construct %25
+    ret %26
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..07862d1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,298 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_68:ptr<function, bool, read_write> = var, false
+    %x_29:ptr<function, i32, read_write> = var
+    %x_30:ptr<function, i32, read_write> = var
+    %x_31:ptr<function, i32, read_write> = var
+    %globalNumbers:ptr<function, array<i32, 10>, read_write> = var
+    %x_17:ptr<function, i32, read_write> = var
+    %acc:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %localNumbers:ptr<function, array<i32, 2>, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %x_24:ptr<function, i32, read_write> = var
+    %x_23:ptr<function, i32, read_write> = var
+    store %acc, 0i
+    store %i_1, 0i
+    store %x_24, 0i
+    store %x_23, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_76:ptr<function, bool, read_write> = var
+        %x_33:ptr<function, i32, read_write> = var
+        %x_92:ptr<function, i32, read_write> = var
+        %x_34:ptr<function, i32, read_write> = var
+        %x_25:ptr<function, i32, read_write> = var
+        %x_16:ptr<function, i32, read_write> = var
+        %22:i32 = load %x_23
+        %23:bool = lt %22, 4i
+        if %23 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        store %x_68, false
+        store %x_76, false
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %x_81:ptr<function, bool, read_write> = var
+            %x_32:ptr<function, i32, read_write> = var
+            %x_90:ptr<function, bool, read_write> = var
+            store %x_30, 0i
+            %27:bool = load %x_76
+            store %x_81, %27
+            store %x_32, 0i
+            loop [b: %b9, c: %b10] {  # loop_3
+              %b9 = block {  # body
+                %28:ptr<uniform, f32, read> = access %x_8, 0u
+                %x_86:f32 = load %28
+                store %x_33, 0i
+                %30:bool = load %x_81
+                store %x_90, %30
+                %31:i32 = load %x_32
+                %32:i32 = convert %x_86
+                %33:bool = lt %31, %32
+                if %33 [t: %b11, f: %b12] {  # if_2
+                  %b11 = block {  # true
+                    exit_if  # if_2
+                  }
+                  %b12 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                store %x_68, true
+                %34:i32 = load %x_32
+                store %x_29, %34
+                %35:i32 = load %x_32
+                store %x_33, %35
+                store %x_90, true
+                exit_loop  # loop_3
+              }
+              %b10 = block {  # continuing
+                store %x_81, false
+                store %x_32, 0i
+                next_iteration %b9
+              }
+            }
+            %36:i32 = load %x_33
+            store %x_34, %36
+            %37:bool = load %x_90
+            if %37 [t: %b13] {  # if_3
+              %b13 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            store %x_92, 0i
+            store %x_68, true
+            %38:i32 = load %x_92
+            store %x_29, %38
+            %39:i32 = load %x_92
+            store %x_34, %39
+            exit_loop  # loop_2
+          }
+          %b8 = block {  # continuing
+            store %x_76, false
+            next_iteration %b7
+          }
+        }
+        %40:i32 = load %x_34
+        store %x_31, %40
+        %x_93:i32 = load %x_31
+        %x_21:array<i32, 2> = load %localNumbers
+        %x_22_1:ptr<function, array<i32, 2>, read_write> = var, %x_21
+        %44:ptr<function, i32, read_write> = access %x_22_1, 1u
+        store %44, %x_93
+        %x_22:array<i32, 2> = load %x_22_1
+        %46:array<i32, 2> = load %x_22_1
+        store %localNumbers, %46
+        %47:ptr<function, i32, read_write> = access %globalNumbers, 0i
+        store %47, 0i
+        %x_13:i32 = access %x_22, 1u
+        store %param, %x_13
+        store %x_17, 0i
+        store %x_25, 0i
+        loop [b: %b14, c: %b15] {  # loop_4
+          %b14 = block {  # body
+            %x_19:ptr<function, i32, read_write> = var
+            %50:i32 = load %x_25
+            %51:bool = lte %50, %x_13
+            if %51 [t: %b16, f: %b17] {  # if_4
+              %b16 = block {  # true
+                exit_if  # if_4
+              }
+              %b17 = block {  # false
+                exit_loop  # loop_4
+              }
+            }
+            %x_102_save:i32 = let %x_13
+            %53:ptr<function, i32, read_write> = access %globalNumbers, %x_13
+            %54:i32 = load %53
+            %55:bool = lte %54, 1i
+            if %55 [t: %b18] {  # if_5
+              %b18 = block {  # true
+                %56:ptr<function, i32, read_write> = access %globalNumbers, %x_102_save
+                store %56, 1i
+                exit_if  # if_5
+              }
+            }
+            continue %b15
+          }
+          %b15 = block {  # continuing
+            %57:i32 = load %x_25
+            %58:i32 = add %57, 1i
+            store %x_19, %58
+            %59:i32 = load %x_19
+            store %x_17, %59
+            %60:i32 = load %x_19
+            store %x_25, %60
+            next_iteration %b14
+          }
+        }
+        %61:i32 = load %x_24
+        %62:ptr<uniform, f32, read> = access %x_8, 0u
+        %63:f32 = load %62
+        %64:i32 = convert %63
+        %65:i32 = sub %64, 1i
+        %66:ptr<function, i32, read_write> = access %globalNumbers, %65
+        %67:i32 = load %66
+        %x_15:i32 = add %61, %67
+        store %acc, %x_15
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %69:i32 = load %x_23
+        %70:i32 = add %69, 1i
+        store %x_16, %70
+        %71:i32 = load %x_16
+        store %i_1, %71
+        store %x_24, %x_15
+        %72:i32 = load %x_16
+        store %x_23, %72
+        next_iteration %b3
+      }
+    }
+    %73:i32 = load %x_24
+    %74:bool = eq %73, 4i
+    if %74 [t: %b19, f: %b20] {  # if_6
+      %b19 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_6
+      }
+      %b20 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_6
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b21 {
+  %b21 = block {
+    %76:void = call %main_1
+    %77:vec4<f32> = load %x_GLF_color
+    %78:main_out = construct %77
+    ret %78
+  }
+}
+%yieldsZero_ = func():i32 -> %b22 {
+  %b22 = block {
+    %x_116:ptr<function, bool, read_write> = var, false
+    %x_20:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %x_118:ptr<function, bool, read_write> = var
+    %x_26:ptr<function, i32, read_write> = var
+    %x_134:ptr<function, i32, read_write> = var
+    %x_27:ptr<function, i32, read_write> = var
+    store %x_118, false
+    loop [b: %b23, c: %b24] {  # loop_5
+      %b23 = block {  # body
+        %x_123:ptr<function, bool, read_write> = var
+        %x_28:ptr<function, i32, read_write> = var
+        %x_132:ptr<function, bool, read_write> = var
+        store %i, 0i
+        %90:bool = load %x_118
+        store %x_123, %90
+        store %x_28, 0i
+        loop [b: %b25, c: %b26] {  # loop_6
+          %b25 = block {  # body
+            %91:ptr<uniform, f32, read> = access %x_8, 0u
+            %x_128:f32 = load %91
+            store %x_26, 0i
+            %93:bool = load %x_123
+            store %x_132, %93
+            %94:i32 = load %x_28
+            %95:i32 = convert %x_128
+            %96:bool = lt %94, %95
+            if %96 [t: %b27, f: %b28] {  # if_7
+              %b27 = block {  # true
+                exit_if  # if_7
+              }
+              %b28 = block {  # false
+                exit_loop  # loop_6
+              }
+            }
+            store %x_116, true
+            %97:i32 = load %x_28
+            store %x_20, %97
+            %98:i32 = load %x_28
+            store %x_26, %98
+            store %x_132, true
+            exit_loop  # loop_6
+          }
+          %b26 = block {  # continuing
+            store %x_123, false
+            store %x_28, 0i
+            next_iteration %b25
+          }
+        }
+        %99:i32 = load %x_26
+        store %x_27, %99
+        %100:bool = load %x_132
+        if %100 [t: %b29] {  # if_8
+          %b29 = block {  # true
+            exit_loop  # loop_5
+          }
+        }
+        store %x_134, 0i
+        store %x_116, true
+        %101:i32 = load %x_134
+        store %x_20, %101
+        %102:i32 = load %x_134
+        store %x_27, %102
+        exit_loop  # loop_5
+      }
+      %b24 = block {  # continuing
+        store %x_118, false
+        next_iteration %b23
+      }
+    }
+    %103:i32 = load %x_27
+    ret %103
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..101a08d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,310 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_68:ptr<function, bool, read_write> = var, false
+    %x_29:ptr<function, i32, read_write> = var
+    %x_30:ptr<function, i32, read_write> = var
+    %x_31:ptr<function, i32, read_write> = var
+    %globalNumbers:ptr<function, array<i32, 10>, read_write> = var
+    %x_17:ptr<function, i32, read_write> = var
+    %acc:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %localNumbers:ptr<function, array<i32, 2>, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %x_24:ptr<function, i32, read_write> = var
+    %x_24_phi:ptr<function, i32, read_write> = var
+    %x_23_phi:ptr<function, i32, read_write> = var
+    store %acc, 0i
+    store %i_1, 0i
+    store %x_24_phi, 0i
+    store %x_23_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_33:ptr<function, i32, read_write> = var
+        %x_92:ptr<function, i32, read_write> = var
+        %x_76_phi:ptr<function, bool, read_write> = var
+        %x_34_phi:ptr<function, i32, read_write> = var
+        %x_25_phi:ptr<function, i32, read_write> = var
+        %22:i32 = load %x_24_phi
+        store %x_24, %22
+        %x_23:i32 = load %x_23_phi
+        %24:bool = lt %x_23, 4i
+        if %24 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        store %x_68, false
+        store %x_76_phi, false
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            %x_81:ptr<function, bool, read_write> = var
+            %x_32:ptr<function, i32, read_write> = var
+            %x_81_phi:ptr<function, bool, read_write> = var
+            %x_32_phi:ptr<function, i32, read_write> = var
+            %x_33_phi:ptr<function, i32, read_write> = var
+            %x_90_phi:ptr<function, bool, read_write> = var
+            %x_76:bool = load %x_76_phi
+            store %x_30, 0i
+            store %x_81_phi, %x_76
+            store %x_32_phi, 0i
+            loop [b: %b9, c: %b10] {  # loop_3
+              %b9 = block {  # body
+                %32:bool = load %x_81_phi
+                store %x_81, %32
+                %33:i32 = load %x_32_phi
+                store %x_32, %33
+                %34:ptr<uniform, f32, read> = access %x_8, 0u
+                %x_86:f32 = load %34
+                store %x_33_phi, 0i
+                %36:bool = load %x_81
+                store %x_90_phi, %36
+                %37:i32 = load %x_32
+                %38:i32 = convert %x_86
+                %39:bool = lt %37, %38
+                if %39 [t: %b11, f: %b12] {  # if_2
+                  %b11 = block {  # true
+                    exit_if  # if_2
+                  }
+                  %b12 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                store %x_68, true
+                %40:i32 = load %x_32
+                store %x_29, %40
+                %41:i32 = load %x_32
+                store %x_33_phi, %41
+                store %x_90_phi, true
+                exit_loop  # loop_3
+              }
+              %b10 = block {  # continuing
+                store %x_81_phi, false
+                store %x_32_phi, 0i
+                next_iteration %b9
+              }
+            }
+            %42:i32 = load %x_33_phi
+            store %x_33, %42
+            %x_90:bool = load %x_90_phi
+            %44:i32 = load %x_33
+            store %x_34_phi, %44
+            if %x_90 [t: %b13] {  # if_3
+              %b13 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            store %x_92, 0i
+            store %x_68, true
+            %45:i32 = load %x_92
+            store %x_29, %45
+            %46:i32 = load %x_92
+            store %x_34_phi, %46
+            exit_loop  # loop_2
+          }
+          %b8 = block {  # continuing
+            store %x_76_phi, false
+            next_iteration %b7
+          }
+        }
+        %x_34:i32 = load %x_34_phi
+        store %x_31, %x_34
+        %x_93:i32 = load %x_31
+        %x_21:array<i32, 2> = load %localNumbers
+        %x_22_1:ptr<function, array<i32, 2>, read_write> = var, %x_21
+        %51:ptr<function, i32, read_write> = access %x_22_1, 1u
+        store %51, %x_93
+        %x_22:array<i32, 2> = load %x_22_1
+        store %localNumbers, %x_22
+        %53:ptr<function, i32, read_write> = access %globalNumbers, 0i
+        store %53, 0i
+        %x_13:i32 = access %x_22, 1u
+        store %param, %x_13
+        store %x_17, 0i
+        store %x_25_phi, 0i
+        loop [b: %b14, c: %b15] {  # loop_4
+          %b14 = block {  # body
+            %x_25:i32 = load %x_25_phi
+            %56:bool = lte %x_25, %x_13
+            if %56 [t: %b16, f: %b17] {  # if_4
+              %b16 = block {  # true
+                exit_if  # if_4
+              }
+              %b17 = block {  # false
+                exit_loop  # loop_4
+              }
+            }
+            %x_102_save:i32 = let %x_13
+            %58:ptr<function, i32, read_write> = access %globalNumbers, %x_102_save
+            %x_18:i32 = load %58
+            %60:bool = lte %x_18, 1i
+            if %60 [t: %b18] {  # if_5
+              %b18 = block {  # true
+                %61:ptr<function, i32, read_write> = access %globalNumbers, %x_102_save
+                store %61, 1i
+                exit_if  # if_5
+              }
+            }
+            continue %b15
+          }
+          %b15 = block {  # continuing
+            %x_19:i32 = add %x_25, 1i
+            store %x_17, %x_19
+            store %x_25_phi, %x_19
+            next_iteration %b14
+          }
+        }
+        %63:ptr<uniform, f32, read> = access %x_8, 0u
+        %x_107:f32 = load %63
+        %65:i32 = convert %x_107
+        %66:i32 = sub %65, 1i
+        %67:ptr<function, i32, read_write> = access %globalNumbers, %66
+        %x_14:i32 = load %67
+        %69:i32 = load %x_24
+        %70:i32 = bitcast %x_14
+        %71:i32 = add %69, %70
+        %x_15:i32 = bitcast %71
+        store %acc, %x_15
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_16:i32 = add %x_23, 1i
+        store %i_1, %x_16
+        store %x_24_phi, %x_15
+        store %x_23_phi, %x_16
+        next_iteration %b3
+      }
+    }
+    %74:i32 = load %x_24
+    %75:bool = eq %74, 4i
+    if %75 [t: %b19, f: %b20] {  # if_6
+      %b19 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_6
+      }
+      %b20 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_6
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b21 {
+  %b21 = block {
+    %77:void = call %main_1
+    %78:vec4<f32> = load %x_GLF_color
+    %79:main_out = construct %78
+    ret %79
+  }
+}
+%yieldsZero_ = func():i32 -> %b22 {
+  %b22 = block {
+    %x_116:ptr<function, bool, read_write> = var, false
+    %x_20:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %x_26:ptr<function, i32, read_write> = var
+    %x_134:ptr<function, i32, read_write> = var
+    %x_118_phi:ptr<function, bool, read_write> = var
+    %x_27_phi:ptr<function, i32, read_write> = var
+    store %x_118_phi, false
+    loop [b: %b23, c: %b24] {  # loop_5
+      %b23 = block {  # body
+        %x_123:ptr<function, bool, read_write> = var
+        %x_28:ptr<function, i32, read_write> = var
+        %x_123_phi:ptr<function, bool, read_write> = var
+        %x_28_phi:ptr<function, i32, read_write> = var
+        %x_26_phi:ptr<function, i32, read_write> = var
+        %x_132_phi:ptr<function, bool, read_write> = var
+        %x_118:bool = load %x_118_phi
+        store %i, 0i
+        store %x_123_phi, %x_118
+        store %x_28_phi, 0i
+        loop [b: %b25, c: %b26] {  # loop_6
+          %b25 = block {  # body
+            %95:bool = load %x_123_phi
+            store %x_123, %95
+            %96:i32 = load %x_28_phi
+            store %x_28, %96
+            %97:ptr<uniform, f32, read> = access %x_8, 0u
+            %x_128:f32 = load %97
+            store %x_26_phi, 0i
+            %99:bool = load %x_123
+            store %x_132_phi, %99
+            %100:i32 = load %x_28
+            %101:i32 = convert %x_128
+            %102:bool = lt %100, %101
+            if %102 [t: %b27, f: %b28] {  # if_7
+              %b27 = block {  # true
+                exit_if  # if_7
+              }
+              %b28 = block {  # false
+                exit_loop  # loop_6
+              }
+            }
+            store %x_116, true
+            %103:i32 = load %x_28
+            store %x_20, %103
+            %104:i32 = load %x_28
+            store %x_26_phi, %104
+            store %x_132_phi, true
+            exit_loop  # loop_6
+          }
+          %b26 = block {  # continuing
+            store %x_123_phi, false
+            store %x_28_phi, 0i
+            next_iteration %b25
+          }
+        }
+        %105:i32 = load %x_26_phi
+        store %x_26, %105
+        %x_132:bool = load %x_132_phi
+        %107:i32 = load %x_26
+        store %x_27_phi, %107
+        if %x_132 [t: %b29] {  # if_8
+          %b29 = block {  # true
+            exit_loop  # loop_5
+          }
+        }
+        store %x_134, 0i
+        store %x_116, true
+        %108:i32 = load %x_134
+        store %x_20, %108
+        %109:i32 = load %x_134
+        store %x_27_phi, %109
+        exit_loop  # loop_5
+      }
+      %b24 = block {  # continuing
+        store %x_118_phi, false
+        next_iteration %b23
+      }
+    }
+    %x_27:i32 = load %x_27_phi
+    ret %x_27
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..3617ec2
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm.expected.ir.msl
@@ -0,0 +1,434 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_45:ptr<function, bool, read_write> = var
+        %x_48:ptr<function, i32, read_write> = var
+        %x_50:ptr<function, i32, read_write> = var
+        %x_52:ptr<function, i32, read_write> = var
+        %x_49:ptr<function, i32, read_write> = var
+        %x_46:ptr<function, bool, read_write> = var
+        %x_111:ptr<function, i32, read_write> = var
+        %x_112:ptr<function, bool, read_write> = var
+        %x_115:ptr<function, i32, read_write> = var
+        %x_118:ptr<function, i32, read_write> = var
+        %x_120:ptr<function, i32, read_write> = var
+        %x_116:ptr<function, i32, read_write> = var
+        %x_161:ptr<function, i32, read_write> = var
+        %18:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %x_40:f32 = load_vector_element %18, 0u
+        %x_41:bool = lt %x_40, -1.0f
+        store %x_45, false
+        store %x_48, 0i
+        store %x_50, 0i
+        store %x_52, 0i
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %x_62:ptr<function, i32, read_write> = var
+            %x_65:ptr<function, i32, read_write> = var
+            %x_67:ptr<function, i32, read_write> = var
+            %x_66:ptr<function, i32, read_write> = var
+            %x_63:ptr<function, i32, read_write> = var
+            %x_51:ptr<function, i32, read_write> = var
+            %x_53:ptr<function, i32, read_write> = var
+            %x_55:f32 = load_vector_element %gl_FragCoord, 1u
+            %29:i32 = load %x_48
+            store %x_111, %29
+            %30:bool = load %x_45
+            store %x_112, %30
+            %31:i32 = load %x_52
+            %32:bool = gt %x_55, -1.0f
+            %33:i32 = select 100i, 10i, %32
+            %34:bool = lt %31, %33
+            if %34 [t: %b7, f: %b8] {  # if_1
+              %b7 = block {  # true
+                exit_if  # if_1
+              }
+              %b8 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %35:i32 = load %x_48
+            store %x_62, %35
+            %36:i32 = load %x_50
+            store %x_65, %36
+            store %x_67, 0i
+            loop [b: %b9, c: %b10] {  # loop_3
+              %b9 = block {  # body
+                %x_97:ptr<function, i32, read_write> = var
+                %x_68:ptr<function, i32, read_write> = var
+                %39:i32 = load %x_65
+                store %x_51, %39
+                %40:i32 = load %x_62
+                store %x_49, %40
+                %41:bool = load %x_45
+                store %x_46, %41
+                %42:i32 = load %x_67
+                %43:bool = lt %42, 2i
+                if %43 [t: %b11, f: %b12] {  # if_2
+                  %b11 = block {  # true
+                    exit_if  # if_2
+                  }
+                  %b12 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                loop [b: %b13, c: %b14] {  # loop_4
+                  %b13 = block {  # body
+                    %x_78:ptr<function, bool, read_write> = var
+                    %x_86:ptr<function, i32, read_write> = var
+                    %x_98:ptr<function, bool, read_write> = var
+                    %47:f32 = load_vector_element %gl_FragCoord, 0u
+                    %48:bool = lt %47, -1.0f
+                    store %x_78, %48
+                    %49:bool = lt %x_40, 0.0f
+                    %50:bool = eq %49, false
+                    if %50 [t: %b15] {  # if_3
+                      %b15 = block {  # true
+                        %51:bool = load %x_78
+                        if %51 [t: %b16] {  # if_4
+                          %b16 = block {  # true
+                            store %x_66, 0i
+                            exit_loop  # loop_4
+                          }
+                        }
+                        store %x_86, 1i
+                        loop [b: %b17, c: %b18] {  # loop_5
+                          %b17 = block {  # body
+                            %x_87:ptr<function, i32, read_write> = var
+                            %53:i32 = load %x_65
+                            store %x_97, %53
+                            store %x_98, false
+                            %54:i32 = load %x_86
+                            %55:bool = lt %54, 3i
+                            if %55 [t: %b19, f: %b20] {  # if_5
+                              %b19 = block {  # true
+                                exit_if  # if_5
+                              }
+                              %b20 = block {  # false
+                                exit_loop  # loop_5
+                              }
+                            }
+                            %56:bool = load %x_78
+                            if %56 [t: %b21] {  # if_6
+                              %b21 = block {  # true
+                                continue %b18
+                              }
+                            }
+                            %57:i32 = load %x_86
+                            %58:bool = gt %57, 0i
+                            if %58 [t: %b22] {  # if_7
+                              %b22 = block {  # true
+                                store %x_97, 1i
+                                store %x_98, true
+                                exit_loop  # loop_5
+                              }
+                            }
+                            continue %b18
+                          }
+                          %b18 = block {  # continuing
+                            %59:i32 = load %x_86
+                            %60:i32 = add %59, 1i
+                            store %x_87, %60
+                            %61:i32 = load %x_87
+                            store %x_86, %61
+                            next_iteration %b17
+                          }
+                        }
+                        %62:i32 = load %x_97
+                        store %x_66, %62
+                        %63:bool = load %x_98
+                        if %63 [t: %b23] {  # if_8
+                          %b23 = block {  # true
+                            exit_loop  # loop_4
+                          }
+                        }
+                        exit_if  # if_3
+                      }
+                    }
+                    store %x_66, 0i
+                    exit_loop  # loop_4
+                  }
+                  %b14 = block {  # continuing
+                    next_iteration %b13
+                  }
+                }
+                %64:i32 = load %x_62
+                %65:i32 = load %x_66
+                %66:i32 = add %64, %65
+                store %x_63, %66
+                if %x_41 [t: %b24] {  # if_9
+                  %b24 = block {  # true
+                    loop [b: %b25, c: %b26] {  # loop_6
+                      %b25 = block {  # body
+                        if %x_41 [t: %b27, f: %b28] {  # if_10
+                          %b27 = block {  # true
+                            exit_if  # if_10
+                          }
+                          %b28 = block {  # false
+                            exit_loop  # loop_6
+                          }
+                        }
+                        continue %b26
+                      }
+                      %b26 = block {  # continuing
+                        %67:i32 = load %x_52
+                        %68:f32 = convert %67
+                        %69:vec4<f32> = construct %68
+                        store %x_GLF_color, %69
+                        next_iteration %b25
+                      }
+                    }
+                    %70:i32 = load %x_66
+                    store %x_51, %70
+                    %71:i32 = load %x_63
+                    store %x_49, %71
+                    store %x_46, true
+                    exit_loop  # loop_3
+                  }
+                }
+                continue %b10
+              }
+              %b10 = block {  # continuing
+                %72:i32 = load %x_67
+                %73:i32 = add %72, 1i
+                store %x_68, %73
+                %74:i32 = load %x_63
+                store %x_62, %74
+                %75:i32 = load %x_66
+                store %x_65, %75
+                %76:i32 = load %x_68
+                store %x_67, %76
+                next_iteration %b9
+              }
+            }
+            %77:i32 = load %x_49
+            store %x_111, %77
+            %78:bool = load %x_46
+            store %x_112, %78
+            %79:bool = load %x_46
+            if %79 [t: %b29] {  # if_11
+              %b29 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            %80:bool = eq %x_41, false
+            if %80 [t: %b30] {  # if_12
+              %b30 = block {  # true
+                %81:i32 = load %x_49
+                store %x_111, %81
+                %82:bool = load %x_46
+                store %x_112, %82
+                exit_loop  # loop_2
+              }
+            }
+            continue %b6
+          }
+          %b6 = block {  # continuing
+            %83:i32 = load %x_52
+            %84:i32 = add %83, 1i
+            store %x_53, %84
+            %85:bool = load %x_46
+            store %x_45, %85
+            %86:i32 = load %x_49
+            store %x_48, %86
+            %87:i32 = load %x_51
+            store %x_50, %87
+            %88:i32 = load %x_53
+            store %x_52, %88
+            next_iteration %b5
+          }
+        }
+        %89:bool = load %x_112
+        if %89 [t: %b31] {  # if_13
+          %b31 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %90:i32 = load %x_111
+        store %x_115, %90
+        store %x_118, 0i
+        store %x_120, 0i
+        loop [b: %b32, c: %b33] {  # loop_7
+          %b32 = block {  # body
+            %x_154:ptr<function, i32, read_write> = var
+            %x_119:ptr<function, i32, read_write> = var
+            %x_121:ptr<function, i32, read_write> = var
+            %94:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+            %x_123:f32 = load_vector_element %94, 1u
+            %96:i32 = load %x_115
+            store %x_161, %96
+            %97:i32 = load %x_120
+            %98:f32 = add %x_123, 1.0f
+            %99:i32 = convert %98
+            %100:bool = lt %97, %99
+            if %100 [t: %b34, f: %b35] {  # if_14
+              %b34 = block {  # true
+                exit_if  # if_14
+              }
+              %b35 = block {  # false
+                exit_loop  # loop_7
+              }
+            }
+            loop [b: %b36, c: %b37] {  # loop_8
+              %b36 = block {  # body
+                %x_135:ptr<function, bool, read_write> = var
+                %x_143:ptr<function, i32, read_write> = var
+                %x_155:ptr<function, bool, read_write> = var
+                %104:f32 = load_vector_element %gl_FragCoord, 0u
+                %105:bool = lt %104, -1.0f
+                store %x_135, %105
+                %106:bool = lt %x_40, 0.0f
+                %107:bool = eq %106, false
+                if %107 [t: %b38] {  # if_15
+                  %b38 = block {  # true
+                    %108:bool = load %x_135
+                    if %108 [t: %b39] {  # if_16
+                      %b39 = block {  # true
+                        store %x_119, 0i
+                        exit_loop  # loop_8
+                      }
+                    }
+                    store %x_143, 1i
+                    loop [b: %b40, c: %b41] {  # loop_9
+                      %b40 = block {  # body
+                        %x_144:ptr<function, i32, read_write> = var
+                        %110:i32 = load %x_118
+                        store %x_154, %110
+                        store %x_155, false
+                        %111:i32 = load %x_143
+                        %112:bool = lt %111, 3i
+                        if %112 [t: %b42, f: %b43] {  # if_17
+                          %b42 = block {  # true
+                            exit_if  # if_17
+                          }
+                          %b43 = block {  # false
+                            exit_loop  # loop_9
+                          }
+                        }
+                        %113:bool = load %x_135
+                        if %113 [t: %b44] {  # if_18
+                          %b44 = block {  # true
+                            continue %b41
+                          }
+                        }
+                        %114:i32 = load %x_143
+                        %115:bool = gt %114, 0i
+                        if %115 [t: %b45] {  # if_19
+                          %b45 = block {  # true
+                            store %x_154, 1i
+                            store %x_155, true
+                            exit_loop  # loop_9
+                          }
+                        }
+                        continue %b41
+                      }
+                      %b41 = block {  # continuing
+                        %116:i32 = load %x_143
+                        %117:i32 = add %116, 1i
+                        store %x_144, %117
+                        %118:i32 = load %x_144
+                        store %x_143, %118
+                        next_iteration %b40
+                      }
+                    }
+                    %119:i32 = load %x_154
+                    store %x_119, %119
+                    %120:bool = load %x_155
+                    if %120 [t: %b46] {  # if_20
+                      %b46 = block {  # true
+                        exit_loop  # loop_8
+                      }
+                    }
+                    exit_if  # if_15
+                  }
+                }
+                store %x_119, 0i
+                exit_loop  # loop_8
+              }
+              %b37 = block {  # continuing
+                next_iteration %b36
+              }
+            }
+            %121:i32 = load %x_115
+            %122:i32 = load %x_119
+            %123:i32 = add %121, %122
+            store %x_116, %123
+            %124:bool = eq %x_41, false
+            %125:bool = select %x_41, false, %124
+            if %125 [t: %b47] {  # if_21
+              %b47 = block {  # true
+                %126:i32 = load %x_116
+                store %x_161, %126
+                exit_loop  # loop_7
+              }
+            }
+            continue %b33
+          }
+          %b33 = block {  # continuing
+            %127:i32 = load %x_120
+            %128:i32 = add %127, 1i
+            store %x_121, %128
+            %129:i32 = load %x_116
+            store %x_115, %129
+            %130:i32 = load %x_119
+            store %x_118, %130
+            %131:i32 = load %x_121
+            store %x_120, %131
+            next_iteration %b32
+          }
+        }
+        %132:i32 = load %x_161
+        %133:bool = eq %132, 4i
+        if %133 [t: %b48, f: %b49] {  # if_22
+          %b48 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+            exit_if  # if_22
+          }
+          %b49 = block {  # false
+            store %x_GLF_color, vec4<f32>(0.0f)
+            exit_if  # if_22
+          }
+        }
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b50 {
+  %b50 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %136:void = call %main_1
+    %137:vec4<f32> = load %x_GLF_color
+    %138:main_out = construct %137
+    ret %138
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0837621
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl.expected.ir.msl
@@ -0,0 +1,461 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_45:ptr<function, bool, read_write> = var
+        %x_48:ptr<function, i32, read_write> = var
+        %x_49:ptr<function, i32, read_write> = var
+        %x_46:ptr<function, bool, read_write> = var
+        %x_115:ptr<function, i32, read_write> = var
+        %x_116:ptr<function, i32, read_write> = var
+        %x_45_phi:ptr<function, bool, read_write> = var
+        %x_48_phi:ptr<function, i32, read_write> = var
+        %x_50_phi:ptr<function, i32, read_write> = var
+        %x_52_phi:ptr<function, i32, read_write> = var
+        %x_111_phi:ptr<function, i32, read_write> = var
+        %x_112_phi:ptr<function, bool, read_write> = var
+        %x_115_phi:ptr<function, i32, read_write> = var
+        %x_118_phi:ptr<function, i32, read_write> = var
+        %x_120_phi:ptr<function, i32, read_write> = var
+        %x_161_phi:ptr<function, i32, read_write> = var
+        %21:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %x_40:f32 = load_vector_element %21, 0u
+        %x_41:bool = lt %x_40, -1.0f
+        store %x_45_phi, false
+        store %x_48_phi, 0i
+        store %x_50_phi, 0i
+        store %x_52_phi, 0i
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %x_62:ptr<function, i32, read_write> = var
+            %x_65:ptr<function, i32, read_write> = var
+            %x_66:ptr<function, i32, read_write> = var
+            %x_63:ptr<function, i32, read_write> = var
+            %x_53:ptr<function, i32, read_write> = var
+            %x_62_phi:ptr<function, i32, read_write> = var
+            %x_65_phi:ptr<function, i32, read_write> = var
+            %x_67_phi:ptr<function, i32, read_write> = var
+            %x_51_phi:ptr<function, i32, read_write> = var
+            %x_49_phi:ptr<function, i32, read_write> = var
+            %x_46_phi:ptr<function, bool, read_write> = var
+            %35:bool = load %x_45_phi
+            store %x_45, %35
+            %36:i32 = load %x_48_phi
+            store %x_48, %36
+            %x_50:i32 = load %x_50_phi
+            %x_52:i32 = load %x_52_phi
+            %x_55:f32 = load_vector_element %gl_FragCoord, 1u
+            %40:i32 = load %x_48
+            store %x_111_phi, %40
+            %41:bool = load %x_45
+            store %x_112_phi, %41
+            %42:bool = gt %x_55, -1.0f
+            %43:i32 = select 100i, 10i, %42
+            %44:bool = lt %x_52, %43
+            if %44 [t: %b7, f: %b8] {  # if_1
+              %b7 = block {  # true
+                exit_if  # if_1
+              }
+              %b8 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %45:i32 = load %x_48
+            store %x_62_phi, %45
+            store %x_65_phi, %x_50
+            store %x_67_phi, 0i
+            loop [b: %b9, c: %b10] {  # loop_3
+              %b9 = block {  # body
+                %x_97:ptr<function, i32, read_write> = var
+                %x_68:ptr<function, i32, read_write> = var
+                %x_66_phi:ptr<function, i32, read_write> = var
+                %49:i32 = load %x_62_phi
+                store %x_62, %49
+                %50:i32 = load %x_65_phi
+                store %x_65, %50
+                %x_67:i32 = load %x_67_phi
+                %52:i32 = load %x_65
+                store %x_51_phi, %52
+                %53:i32 = load %x_62
+                store %x_49_phi, %53
+                %54:bool = load %x_45
+                store %x_46_phi, %54
+                %55:bool = lt %x_67, 2i
+                if %55 [t: %b11, f: %b12] {  # if_2
+                  %b11 = block {  # true
+                    exit_if  # if_2
+                  }
+                  %b12 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                loop [b: %b13, c: %b14] {  # loop_4
+                  %b13 = block {  # body
+                    %x_78:ptr<function, bool, read_write> = var
+                    %x_86_phi:ptr<function, i32, read_write> = var
+                    %x_97_phi:ptr<function, i32, read_write> = var
+                    %x_98_phi:ptr<function, bool, read_write> = var
+                    %x_77:f32 = load_vector_element %gl_FragCoord, 0u
+                    %61:bool = lt %x_77, -1.0f
+                    store %x_78, %61
+                    %62:bool = lt %x_40, 0.0f
+                    %63:bool = eq %62, false
+                    if %63 [t: %b15] {  # if_3
+                      %b15 = block {  # true
+                        %64:bool = load %x_78
+                        if %64 [t: %b16] {  # if_4
+                          %b16 = block {  # true
+                            store %x_66_phi, 0i
+                            exit_loop  # loop_4
+                          }
+                        }
+                        store %x_86_phi, 1i
+                        loop [b: %b17, c: %b18] {  # loop_5
+                          %b17 = block {  # body
+                            %x_87:ptr<function, i32, read_write> = var
+                            %x_86:i32 = load %x_86_phi
+                            %67:i32 = load %x_65
+                            store %x_97_phi, %67
+                            store %x_98_phi, false
+                            %68:bool = lt %x_86, 3i
+                            if %68 [t: %b19, f: %b20] {  # if_5
+                              %b19 = block {  # true
+                                exit_if  # if_5
+                              }
+                              %b20 = block {  # false
+                                exit_loop  # loop_5
+                              }
+                            }
+                            %69:bool = load %x_78
+                            if %69 [t: %b21] {  # if_6
+                              %b21 = block {  # true
+                                continue %b18
+                              }
+                            }
+                            %70:bool = gt %x_86, 0i
+                            if %70 [t: %b22] {  # if_7
+                              %b22 = block {  # true
+                                store %x_97_phi, 1i
+                                store %x_98_phi, true
+                                exit_loop  # loop_5
+                              }
+                            }
+                            continue %b18
+                          }
+                          %b18 = block {  # continuing
+                            %71:i32 = add %x_86, 1i
+                            store %x_87, %71
+                            %72:i32 = load %x_87
+                            store %x_86_phi, %72
+                            next_iteration %b17
+                          }
+                        }
+                        %73:i32 = load %x_97_phi
+                        store %x_97, %73
+                        %x_98:bool = load %x_98_phi
+                        %75:i32 = load %x_97
+                        store %x_66_phi, %75
+                        if %x_98 [t: %b23] {  # if_8
+                          %b23 = block {  # true
+                            exit_loop  # loop_4
+                          }
+                        }
+                        exit_if  # if_3
+                      }
+                    }
+                    store %x_66_phi, 0i
+                    exit_loop  # loop_4
+                  }
+                  %b14 = block {  # continuing
+                    next_iteration %b13
+                  }
+                }
+                %76:i32 = load %x_66_phi
+                store %x_66, %76
+                %77:i32 = load %x_62
+                %78:i32 = load %x_66
+                %79:i32 = add %77, %78
+                %80:i32 = bitcast %79
+                store %x_63, %80
+                if %x_41 [t: %b24] {  # if_9
+                  %b24 = block {  # true
+                    loop [b: %b25, c: %b26] {  # loop_6
+                      %b25 = block {  # body
+                        if %x_41 [t: %b27, f: %b28] {  # if_10
+                          %b27 = block {  # true
+                            exit_if  # if_10
+                          }
+                          %b28 = block {  # false
+                            exit_loop  # loop_6
+                          }
+                        }
+                        continue %b26
+                      }
+                      %b26 = block {  # continuing
+                        %x_105:f32 = convert %x_52
+                        %82:vec4<f32> = construct %x_105, %x_105, %x_105, %x_105
+                        store %x_GLF_color, %82
+                        next_iteration %b25
+                      }
+                    }
+                    %83:i32 = load %x_66
+                    store %x_51_phi, %83
+                    %84:i32 = load %x_63
+                    store %x_49_phi, %84
+                    store %x_46_phi, true
+                    exit_loop  # loop_3
+                  }
+                }
+                continue %b10
+              }
+              %b10 = block {  # continuing
+                %85:i32 = add %x_67, 1i
+                store %x_68, %85
+                %86:i32 = load %x_63
+                store %x_62_phi, %86
+                %87:i32 = load %x_66
+                store %x_65_phi, %87
+                %88:i32 = load %x_68
+                store %x_67_phi, %88
+                next_iteration %b9
+              }
+            }
+            %x_51:i32 = load %x_51_phi
+            %90:i32 = load %x_49_phi
+            store %x_49, %90
+            %91:bool = load %x_46_phi
+            store %x_46, %91
+            %92:i32 = load %x_49
+            store %x_111_phi, %92
+            %93:bool = load %x_46
+            store %x_112_phi, %93
+            %94:bool = load %x_46
+            if %94 [t: %b29] {  # if_11
+              %b29 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            %95:bool = eq %x_41, false
+            if %95 [t: %b30] {  # if_12
+              %b30 = block {  # true
+                %96:i32 = load %x_49
+                store %x_111_phi, %96
+                %97:bool = load %x_46
+                store %x_112_phi, %97
+                exit_loop  # loop_2
+              }
+            }
+            continue %b6
+          }
+          %b6 = block {  # continuing
+            %98:i32 = add %x_52, 1i
+            store %x_53, %98
+            %99:bool = load %x_46
+            store %x_45_phi, %99
+            %100:i32 = load %x_49
+            store %x_48_phi, %100
+            store %x_50_phi, %x_51
+            %101:i32 = load %x_53
+            store %x_52_phi, %101
+            next_iteration %b5
+          }
+        }
+        %x_111:i32 = load %x_111_phi
+        %x_112:bool = load %x_112_phi
+        if %x_112 [t: %b31] {  # if_13
+          %b31 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        store %x_115_phi, %x_111
+        store %x_118_phi, 0i
+        store %x_120_phi, 0i
+        loop [b: %b32, c: %b33] {  # loop_7
+          %b32 = block {  # body
+            %x_154:ptr<function, i32, read_write> = var
+            %x_121:ptr<function, i32, read_write> = var
+            %x_119_phi:ptr<function, i32, read_write> = var
+            %107:i32 = load %x_115_phi
+            store %x_115, %107
+            %x_118:i32 = load %x_118_phi
+            %x_120:i32 = load %x_120_phi
+            %110:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+            %x_123:f32 = load_vector_element %110, 1u
+            %112:i32 = load %x_115
+            store %x_161_phi, %112
+            %113:f32 = add %x_123, 1.0f
+            %114:i32 = convert %113
+            %115:bool = lt %x_120, %114
+            if %115 [t: %b34, f: %b35] {  # if_14
+              %b34 = block {  # true
+                exit_if  # if_14
+              }
+              %b35 = block {  # false
+                exit_loop  # loop_7
+              }
+            }
+            loop [b: %b36, c: %b37] {  # loop_8
+              %b36 = block {  # body
+                %x_135:ptr<function, bool, read_write> = var
+                %x_143_phi:ptr<function, i32, read_write> = var
+                %x_154_phi:ptr<function, i32, read_write> = var
+                %x_155_phi:ptr<function, bool, read_write> = var
+                %x_134:f32 = load_vector_element %gl_FragCoord, 0u
+                %121:bool = lt %x_134, -1.0f
+                store %x_135, %121
+                %122:bool = lt %x_40, 0.0f
+                %123:bool = eq %122, false
+                if %123 [t: %b38] {  # if_15
+                  %b38 = block {  # true
+                    %124:bool = load %x_135
+                    if %124 [t: %b39] {  # if_16
+                      %b39 = block {  # true
+                        store %x_119_phi, 0i
+                        exit_loop  # loop_8
+                      }
+                    }
+                    store %x_143_phi, 1i
+                    loop [b: %b40, c: %b41] {  # loop_9
+                      %b40 = block {  # body
+                        %x_144:ptr<function, i32, read_write> = var
+                        %x_143:i32 = load %x_143_phi
+                        store %x_154_phi, %x_118
+                        store %x_155_phi, false
+                        %127:bool = lt %x_143, 3i
+                        if %127 [t: %b42, f: %b43] {  # if_17
+                          %b42 = block {  # true
+                            exit_if  # if_17
+                          }
+                          %b43 = block {  # false
+                            exit_loop  # loop_9
+                          }
+                        }
+                        %128:bool = load %x_135
+                        if %128 [t: %b44] {  # if_18
+                          %b44 = block {  # true
+                            continue %b41
+                          }
+                        }
+                        %129:bool = gt %x_143, 0i
+                        if %129 [t: %b45] {  # if_19
+                          %b45 = block {  # true
+                            store %x_154_phi, 1i
+                            store %x_155_phi, true
+                            exit_loop  # loop_9
+                          }
+                        }
+                        continue %b41
+                      }
+                      %b41 = block {  # continuing
+                        %130:i32 = add %x_143, 1i
+                        store %x_144, %130
+                        %131:i32 = load %x_144
+                        store %x_143_phi, %131
+                        next_iteration %b40
+                      }
+                    }
+                    %132:i32 = load %x_154_phi
+                    store %x_154, %132
+                    %x_155:bool = load %x_155_phi
+                    %134:i32 = load %x_154
+                    store %x_119_phi, %134
+                    if %x_155 [t: %b46] {  # if_20
+                      %b46 = block {  # true
+                        exit_loop  # loop_8
+                      }
+                    }
+                    exit_if  # if_15
+                  }
+                }
+                store %x_119_phi, 0i
+                exit_loop  # loop_8
+              }
+              %b37 = block {  # continuing
+                next_iteration %b36
+              }
+            }
+            %x_119:ptr<function, i32, read_write> = var
+            %136:i32 = load %x_119_phi
+            store %x_119, %136
+            %137:i32 = load %x_115
+            %138:i32 = load %x_119
+            %139:i32 = add %137, %138
+            %140:i32 = bitcast %139
+            store %x_116, %140
+            %141:bool = eq %x_41, false
+            %142:bool = select %x_41, false, %141
+            if %142 [t: %b47] {  # if_21
+              %b47 = block {  # true
+                %143:i32 = load %x_116
+                store %x_161_phi, %143
+                exit_loop  # loop_7
+              }
+            }
+            continue %b33
+          }
+          %b33 = block {  # continuing
+            %144:i32 = add %x_120, 1i
+            store %x_121, %144
+            %145:i32 = load %x_116
+            store %x_115_phi, %145
+            %146:i32 = load %x_119
+            store %x_118_phi, %146
+            %147:i32 = load %x_121
+            store %x_120_phi, %147
+            next_iteration %b32
+          }
+        }
+        %x_161:i32 = load %x_161_phi
+        %149:bool = eq %x_161, 4i
+        if %149 [t: %b48, f: %b49] {  # if_22
+          %b48 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+            exit_if  # if_22
+          }
+          %b49 = block {  # false
+            store %x_GLF_color, vec4<f32>(0.0f)
+            exit_if  # if_22
+          }
+        }
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b50 {
+  %b50 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %152:void = call %main_1
+    %153:vec4<f32> = load %x_GLF_color
+    %154:main_out = construct %153
+    ret %154
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..29dafa7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.spvasm.expected.ir.msl
@@ -0,0 +1,152 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%makeFrame_ = func():f32 -> %b2 {
+  %b2 = block {
+    %x_60:ptr<function, f32, read_write> = var
+    %x_63:ptr<function, f32, read_write> = var
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_41:ptr<function, bool, read_write> = var
+        %x_8:ptr<function, i32, read_write> = var
+        %x_44:ptr<function, f32, read_write> = var
+        %x_45:ptr<function, f32, read_write> = var
+        %x_42:ptr<function, bool, read_write> = var
+        %x_61:ptr<function, bool, read_write> = var
+        store %x_41, false
+        store %x_8, 0i
+        store %x_44, 0.0f
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %x_50:ptr<function, f32, read_write> = var
+            %x_9:ptr<function, i32, read_write> = var
+            %x_52:ptr<function, bool, read_write> = var
+            %x_7:ptr<function, i32, read_write> = var
+            %16:f32 = load %x_44
+            store %x_60, %16
+            %17:bool = load %x_41
+            store %x_61, %17
+            %18:i32 = load %x_8
+            %19:bool = lt %18, 1i
+            if %19 [t: %b7, f: %b8] {  # if_1
+              %b7 = block {  # true
+                exit_if  # if_1
+              }
+              %b8 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %20:f32 = load %x_44
+            store %x_50, %20
+            %21:i32 = load %x_8
+            store %x_9, %21
+            %22:bool = load %x_41
+            store %x_52, %22
+            loop [b: %b9, c: %b10] {  # loop_3
+              %b9 = block {  # body
+                %23:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+                %x_54:f32 = load_vector_element %23, 1u
+                %25:f32 = load %x_50
+                store %x_45, %25
+                %26:bool = load %x_52
+                store %x_42, %26
+                %27:i32 = convert %x_54
+                %28:bool = lt 1i, %27
+                if %28 [t: %b11, f: %b12] {  # if_2
+                  %b11 = block {  # true
+                    exit_if  # if_2
+                  }
+                  %b12 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                store %x_45, 1.0f
+                store %x_42, true
+                exit_loop  # loop_3
+              }
+              %b10 = block {  # continuing
+                store %x_50, 0.0f
+                store %x_9, 0i
+                store %x_52, false
+                next_iteration %b9
+              }
+            }
+            %29:f32 = load %x_45
+            store %x_60, %29
+            %30:bool = load %x_42
+            store %x_61, %30
+            %31:bool = load %x_42
+            if %31 [t: %b13] {  # if_3
+              %b13 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            continue %b6
+          }
+          %b6 = block {  # continuing
+            %32:i32 = load %x_9
+            %33:i32 = add %32, 1i
+            store %x_7, %33
+            %34:bool = load %x_42
+            store %x_41, %34
+            %35:i32 = load %x_7
+            store %x_8, %35
+            %36:f32 = load %x_45
+            store %x_44, %36
+            next_iteration %b5
+          }
+        }
+        %37:f32 = load %x_60
+        store %x_63, %37
+        %38:bool = load %x_61
+        if %38 [t: %b14] {  # if_4
+          %b14 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        store %x_63, 1.0f
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %39:f32 = load %x_63
+    ret %39
+  }
+}
+%main_1 = func():void -> %b15 {
+  %b15 = block {
+    %x_34:f32 = call %makeFrame_
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b16 {
+  %b16 = block {
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..37f08f4
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl.expected.ir.msl
@@ -0,0 +1,176 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%makeFrame_ = func():f32 -> %b2 {
+  %b2 = block {
+    %x_60:ptr<function, f32, read_write> = var
+    %x_63_phi:ptr<function, f32, read_write> = var
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_41:ptr<function, bool, read_write> = var
+        %x_44:ptr<function, f32, read_write> = var
+        %x_45:ptr<function, f32, read_write> = var
+        %x_42:ptr<function, bool, read_write> = var
+        %x_41_phi:ptr<function, bool, read_write> = var
+        %x_8_phi:ptr<function, i32, read_write> = var
+        %x_44_phi:ptr<function, f32, read_write> = var
+        %x_60_phi:ptr<function, f32, read_write> = var
+        %x_61_phi:ptr<function, bool, read_write> = var
+        store %x_41_phi, false
+        store %x_8_phi, 0i
+        store %x_44_phi, 0.0f
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %x_50:ptr<function, f32, read_write> = var
+            %x_9:ptr<function, i32, read_write> = var
+            %x_52:ptr<function, bool, read_write> = var
+            %x_7:ptr<function, i32, read_write> = var
+            %x_50_phi:ptr<function, f32, read_write> = var
+            %x_9_phi:ptr<function, i32, read_write> = var
+            %x_52_phi:ptr<function, bool, read_write> = var
+            %x_45_phi:ptr<function, f32, read_write> = var
+            %x_42_phi:ptr<function, bool, read_write> = var
+            %24:bool = load %x_41_phi
+            store %x_41, %24
+            %x_8:i32 = load %x_8_phi
+            %26:f32 = load %x_44_phi
+            store %x_44, %26
+            %27:f32 = load %x_44
+            store %x_60_phi, %27
+            %28:bool = load %x_41
+            store %x_61_phi, %28
+            %29:bool = lt %x_8, 1i
+            if %29 [t: %b7, f: %b8] {  # if_1
+              %b7 = block {  # true
+                exit_if  # if_1
+              }
+              %b8 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %30:f32 = load %x_44
+            store %x_50_phi, %30
+            store %x_9_phi, %x_8
+            %31:bool = load %x_41
+            store %x_52_phi, %31
+            loop [b: %b9, c: %b10] {  # loop_3
+              %b9 = block {  # body
+                %32:f32 = load %x_50_phi
+                store %x_50, %32
+                %33:i32 = load %x_9_phi
+                store %x_9, %33
+                %34:bool = load %x_52_phi
+                store %x_52, %34
+                %35:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+                %x_54:f32 = load_vector_element %35, 1u
+                %37:f32 = load %x_50
+                store %x_45_phi, %37
+                %38:bool = load %x_52
+                store %x_42_phi, %38
+                %39:i32 = convert %x_54
+                %40:bool = lt 1i, %39
+                if %40 [t: %b11, f: %b12] {  # if_2
+                  %b11 = block {  # true
+                    exit_if  # if_2
+                  }
+                  %b12 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                store %x_45_phi, 1.0f
+                store %x_42_phi, true
+                exit_loop  # loop_3
+              }
+              %b10 = block {  # continuing
+                store %x_50_phi, 0.0f
+                store %x_9_phi, 0i
+                store %x_52_phi, false
+                next_iteration %b9
+              }
+            }
+            %41:f32 = load %x_45_phi
+            store %x_45, %41
+            %42:bool = load %x_42_phi
+            store %x_42, %42
+            %43:f32 = load %x_45
+            store %x_60_phi, %43
+            %44:bool = load %x_42
+            store %x_61_phi, %44
+            %45:bool = load %x_42
+            if %45 [t: %b13] {  # if_3
+              %b13 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            continue %b6
+          }
+          %b6 = block {  # continuing
+            %46:i32 = load %x_9
+            %47:i32 = add %46, 1i
+            %48:i32 = bitcast %47
+            store %x_7, %48
+            %49:bool = load %x_42
+            store %x_41_phi, %49
+            %50:i32 = load %x_7
+            store %x_8_phi, %50
+            %51:f32 = load %x_45
+            store %x_44_phi, %51
+            next_iteration %b5
+          }
+        }
+        %52:f32 = load %x_60_phi
+        store %x_60, %52
+        %x_61:bool = load %x_61_phi
+        %54:f32 = load %x_60
+        store %x_63_phi, %54
+        if %x_61 [t: %b14] {  # if_4
+          %b14 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        store %x_63_phi, 1.0f
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %x_63:f32 = load %x_63_phi
+    ret %x_63
+  }
+}
+%main_1 = func():void -> %b15 {
+  %b15 = block {
+    %x_34:f32 = call %makeFrame_
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b16 {
+  %b16 = block {
+    %59:void = call %main_1
+    %60:vec4<f32> = load %x_GLF_color
+    %61:main_out = construct %60
+    ret %61
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..59899f2
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,143 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %GLF_dead0j:ptr<function, i32, read_write> = var
+    %donor_replacementGLF_dead0stack:ptr<function, array<i32, 10>, read_write> = var
+    %donor_replacementGLF_dead0top:ptr<function, i32, read_write> = var
+    %x_54:ptr<function, i32, read_write> = var
+    %matrix_b:ptr<function, vec4<f32>, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    store %k, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %11:i32 = load %k
+        %12:bool = lt %11, 4i
+        if %12 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %13:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %14:f32 = load_vector_element %13, 1u
+        %15:bool = gt 0.0f, %14
+        if %15 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            store %GLF_dead0j, 1i
+            loop [b: %b8, c: %b9] {  # loop_2
+              %b8 = block {  # body
+                %16:ptr<function, i32, read_write> = access %donor_replacementGLF_dead0stack, 0i
+                %17:i32 = load %16
+                %18:bool = lte 1i, %17
+                if %18 [t: %b10, f: %b11] {  # if_3
+                  %b10 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b11 = block {  # false
+                    exit_loop  # loop_2
+                  }
+                }
+                continue %b9
+              }
+              %b9 = block {  # continuing
+                next_iteration %b8
+              }
+            }
+            %19:i32 = load %donor_replacementGLF_dead0top
+            %20:bool = gte %19, 0i
+            %21:i32 = load %donor_replacementGLF_dead0top
+            %22:bool = lt %21, 9i
+            %23:bool = and %20, %22
+            if %23 [t: %b12, f: %b13] {  # if_4
+              %b12 = block {  # true
+                %24:i32 = load %donor_replacementGLF_dead0top
+                %x_17:i32 = add %24, 1i
+                store %donor_replacementGLF_dead0top, %x_17
+                store %x_54, %x_17
+                exit_if  # if_4
+              }
+              %b13 = block {  # false
+                store %x_54, 0i
+                exit_if  # if_4
+              }
+            }
+            %x_18:i32 = load %x_54
+            %27:ptr<function, i32, read_write> = access %donor_replacementGLF_dead0stack, %x_18
+            store %27, 1i
+            exit_if  # if_2
+          }
+        }
+        store %matrix_b, vec4<f32>(0.0f)
+        store %b, 3i
+        loop [b: %b14, c: %b15] {  # loop_3
+          %b14 = block {  # body
+            %28:i32 = load %b
+            %29:bool = gte %28, 0i
+            if %29 [t: %b16, f: %b17] {  # if_5
+              %b16 = block {  # true
+                exit_if  # if_5
+              }
+              %b17 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %x_20:i32 = load %b
+            %31:i32 = load %b
+            %32:f32 = load_vector_element %matrix_b, %31
+            %33:f32 = sub %32, 1.0f
+            store_vector_element %matrix_b, %x_20, %33
+            continue %b15
+          }
+          %b15 = block {  # continuing
+            %34:i32 = load %b
+            %35:i32 = sub %34, 1i
+            store %b, %35
+            next_iteration %b14
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %36:i32 = load %k
+        %37:i32 = add %36, 1i
+        store %k, %37
+        next_iteration %b3
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b18 {
+  %b18 = block {
+    %39:void = call %main_1
+    %40:vec4<f32> = load %x_GLF_color
+    %41:main_out = construct %40
+    ret %41
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d43c441
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,143 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %GLF_dead0j:ptr<function, i32, read_write> = var
+    %donor_replacementGLF_dead0stack:ptr<function, array<i32, 10>, read_write> = var
+    %donor_replacementGLF_dead0top:ptr<function, i32, read_write> = var
+    %x_54:ptr<function, i32, read_write> = var
+    %matrix_b:ptr<function, vec4<f32>, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    store %k, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_12:i32 = load %k
+        %12:bool = lt %x_12, 4i
+        if %12 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %13:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %x_62:f32 = load_vector_element %13, 1u
+        %15:bool = gt 0.0f, %x_62
+        if %15 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            store %GLF_dead0j, 1i
+            loop [b: %b8, c: %b9] {  # loop_2
+              %b8 = block {  # body
+                %16:ptr<function, i32, read_write> = access %donor_replacementGLF_dead0stack, 0i
+                %x_13:i32 = load %16
+                %18:bool = lte 1i, %x_13
+                if %18 [t: %b10, f: %b11] {  # if_3
+                  %b10 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b11 = block {  # false
+                    exit_loop  # loop_2
+                  }
+                }
+                continue %b9
+              }
+              %b9 = block {  # continuing
+                next_iteration %b8
+              }
+            }
+            %x_14:i32 = load %donor_replacementGLF_dead0top
+            %x_15:i32 = load %donor_replacementGLF_dead0top
+            %21:bool = gte %x_14, 0i
+            %22:bool = lt %x_15, 9i
+            %23:bool = and %21, %22
+            if %23 [t: %b12, f: %b13] {  # if_4
+              %b12 = block {  # true
+                %x_16:i32 = load %donor_replacementGLF_dead0top
+                %x_17:i32 = add %x_16, 1i
+                store %donor_replacementGLF_dead0top, %x_17
+                store %x_54, %x_17
+                exit_if  # if_4
+              }
+              %b13 = block {  # false
+                store %x_54, 0i
+                exit_if  # if_4
+              }
+            }
+            %x_18:i32 = load %x_54
+            %27:ptr<function, i32, read_write> = access %donor_replacementGLF_dead0stack, %x_18
+            store %27, 1i
+            exit_if  # if_2
+          }
+        }
+        store %matrix_b, vec4<f32>(0.0f)
+        store %b, 3i
+        loop [b: %b14, c: %b15] {  # loop_3
+          %b14 = block {  # body
+            %x_19:i32 = load %b
+            %29:bool = gte %x_19, 0i
+            if %29 [t: %b16, f: %b17] {  # if_5
+              %b16 = block {  # true
+                exit_if  # if_5
+              }
+              %b17 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %x_20:i32 = load %b
+            %x_21:i32 = load %b
+            %x_87:f32 = load_vector_element %matrix_b, %x_21
+            %33:f32 = sub %x_87, 1.0f
+            store_vector_element %matrix_b, %x_20, %33
+            continue %b15
+          }
+          %b15 = block {  # continuing
+            %x_22:i32 = load %b
+            %35:i32 = sub %x_22, 1i
+            store %b, %35
+            next_iteration %b14
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_24:i32 = load %k
+        %37:i32 = add %x_24, 1i
+        store %k, %37
+        next_iteration %b3
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b18 {
+  %b18 = block {
+    %39:void = call %main_1
+    %40:vec4<f32> = load %x_GLF_color
+    %41:main_out = construct %40
+    ret %41
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..9074c79
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm.expected.ir.msl
@@ -0,0 +1,153 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+BinarySearchObject = struct @align(4) {
+  prime_numbers:array<i32, 10> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%binarySearch_struct_BinarySearchObject_i1_10_1_ = func(%obj:ptr<function, BinarySearchObject, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %m:ptr<function, i32, read_write> = var
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %6:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %7:f32 = load_vector_element %6, 0u
+        %8:bool = gt %7, 1.0f
+        if %8 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %9:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %10:f32 = load_vector_element %9, 0u
+        %11:i32 = convert %10
+        store %m, %11
+        %12:i32 = load %m
+        %13:ptr<function, i32, read_write> = access %obj, 0u, %12
+        %14:i32 = load %13
+        %15:bool = eq %14, 1i
+        if %15 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            ret 1i
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret 1i
+  }
+}
+%main_1 = func():void -> %b8 {
+  %b8 = block {
+    %i:ptr<function, i32, read_write> = var
+    %obj_1:ptr<function, BinarySearchObject, read_write> = var
+    %param:ptr<function, BinarySearchObject, read_write> = var
+    store %i, 0i
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %20:i32 = load %i
+        %21:bool = lt %20, 10i
+        if %21 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %22:i32 = load %i
+        %23:bool = neq %22, 3i
+        if %23 [t: %b13] {  # if_4
+          %b13 = block {  # true
+            %24:i32 = load %i
+            %25:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+            %26:f32 = load_vector_element %25, 0u
+            %27:i32 = convert %26
+            %28:i32 = sub %24, %27
+            %29:bool = eq %28, 4i
+            if %29 [t: %b14, f: %b15] {  # if_5
+              %b14 = block {  # true
+                %x_21:i32 = load %i
+                %31:ptr<function, i32, read_write> = access %obj_1, 0u, %x_21
+                store %31, 11i
+                exit_if  # if_5
+              }
+              %b15 = block {  # false
+                %32:i32 = load %i
+                %33:bool = eq %32, 6i
+                if %33 [t: %b16] {  # if_6
+                  %b16 = block {  # true
+                    %x_23:i32 = load %i
+                    %35:ptr<function, i32, read_write> = access %obj_1, 0u, %x_23
+                    store %35, 17i
+                    exit_if  # if_6
+                  }
+                }
+                continue %b10
+              }
+            }
+            exit_if  # if_4
+          }
+        }
+        loop [b: %b17, c: %b18] {  # loop_3
+          %b17 = block {  # body
+            continue %b18
+          }
+          %b18 = block {  # continuing
+            %36:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+            %x_82:f32 = load_vector_element %36, 1u
+            %38:bool = gt 0.0f, %x_82
+            %39:bool = eq %38, false
+            break_if %39 %b17
+          }
+        }
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        %40:i32 = load %i
+        %41:i32 = add %40, 1i
+        store %i, %41
+        next_iteration %b9
+      }
+    }
+    %42:BinarySearchObject = load %obj_1
+    store %param, %42
+    %x_26:i32 = call %binarySearch_struct_BinarySearchObject_i1_10_1_, %param
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b19 {
+  %b19 = block {
+    %45:void = call %main_1
+    %46:vec4<f32> = load %x_GLF_color
+    %47:main_out = construct %46
+    ret %47
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d4d695e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl.expected.ir.msl
@@ -0,0 +1,153 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+BinarySearchObject = struct @align(4) {
+  prime_numbers:array<i32, 10> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%binarySearch_struct_BinarySearchObject_i1_10_1_ = func(%obj:ptr<function, BinarySearchObject, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %m:ptr<function, i32, read_write> = var
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %6:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %x_91:f32 = load_vector_element %6, 0u
+        %8:bool = gt %x_91, 1.0f
+        if %8 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %9:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %x_95:f32 = load_vector_element %9, 0u
+        %11:i32 = convert %x_95
+        store %m, %11
+        %x_14:i32 = load %m
+        %13:ptr<function, i32, read_write> = access %obj, 0u, %x_14
+        %x_15:i32 = load %13
+        %15:bool = eq %x_15, 1i
+        if %15 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            ret 1i
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret 1i
+  }
+}
+%main_1 = func():void -> %b8 {
+  %b8 = block {
+    %i:ptr<function, i32, read_write> = var
+    %obj_1:ptr<function, BinarySearchObject, read_write> = var
+    %param:ptr<function, BinarySearchObject, read_write> = var
+    store %i, 0i
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %x_16:i32 = load %i
+        %21:bool = lt %x_16, 10i
+        if %21 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_17:i32 = load %i
+        %23:bool = neq %x_17, 3i
+        if %23 [t: %b13] {  # if_4
+          %b13 = block {  # true
+            %x_18:i32 = load %i
+            %25:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+            %x_67:f32 = load_vector_element %25, 0u
+            %27:i32 = convert %x_67
+            %28:i32 = sub %x_18, %27
+            %29:bool = eq %28, 4i
+            if %29 [t: %b14, f: %b15] {  # if_5
+              %b14 = block {  # true
+                %x_21:i32 = load %i
+                %31:ptr<function, i32, read_write> = access %obj_1, 0u, %x_21
+                store %31, 11i
+                exit_if  # if_5
+              }
+              %b15 = block {  # false
+                %x_22:i32 = load %i
+                %33:bool = eq %x_22, 6i
+                if %33 [t: %b16] {  # if_6
+                  %b16 = block {  # true
+                    %x_23:i32 = load %i
+                    %35:ptr<function, i32, read_write> = access %obj_1, 0u, %x_23
+                    store %35, 17i
+                    exit_if  # if_6
+                  }
+                }
+                continue %b10
+              }
+            }
+            exit_if  # if_4
+          }
+        }
+        loop [b: %b17, c: %b18] {  # loop_3
+          %b17 = block {  # body
+            continue %b18
+          }
+          %b18 = block {  # continuing
+            %36:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+            %x_82:f32 = load_vector_element %36, 1u
+            %38:bool = gt 0.0f, %x_82
+            %39:bool = eq %38, false
+            break_if %39 %b17
+          }
+        }
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        %x_24:i32 = load %i
+        %41:i32 = add %x_24, 1i
+        store %i, %41
+        next_iteration %b9
+      }
+    }
+    %x_84:BinarySearchObject = load %obj_1
+    store %param, %x_84
+    %x_26:i32 = call %binarySearch_struct_BinarySearchObject_i1_10_1_, %param
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b19 {
+  %b19 = block {
+    %45:void = call %main_1
+    %46:vec4<f32> = load %x_GLF_color
+    %47:main_out = construct %46
+    ret %47
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b283127
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,69 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gv:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+    %7:f32 = load_vector_element %6, 0u
+    %8:bool = gt %7, 2.0f
+    if %8 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %9:vec4<f32> = load %gv
+        %10:vec4<f32> = mix vec4<f32>(1.0f), vec4<f32>(1.0f), %9
+        %11:vec4<f32> = max %10, vec4<f32>(8.6000003814697265625f)
+        %12:f32 = access %11, 1u
+        %13:i32 = convert %12
+        store %temp, %13
+        %14:i32 = load %temp
+        %15:bool = lt %14, 150i
+        if %15 [t: %b4] {  # if_2
+          %b4 = block {  # true
+            discard
+            exit_if  # if_2
+          }
+        }
+        %16:i32 = load %temp
+        %17:bool = lt %16, 180i
+        if %17 [t: %b5] {  # if_3
+          %b5 = block {  # true
+            discard
+            exit_if  # if_3
+          }
+        }
+        exit_if  # if_1
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d06e1fe
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,69 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gv:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %6:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+    %x_39:f32 = load_vector_element %6, 0u
+    %8:bool = gt %x_39, 2.0f
+    if %8 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_8:vec4<f32> = load %gv
+        %10:vec4<f32> = mix vec4<f32>(1.0f), vec4<f32>(1.0f), %x_8
+        %11:vec4<f32> = max %10, vec4<f32>(8.6000003814697265625f)
+        %12:f32 = access %11, 1u
+        %13:i32 = convert %12
+        store %temp, %13
+        %x_44:i32 = load %temp
+        %15:bool = lt %x_44, 150i
+        if %15 [t: %b4] {  # if_2
+          %b4 = block {  # true
+            discard
+            exit_if  # if_2
+          }
+        }
+        %x_48:i32 = load %temp
+        %17:bool = lt %x_48, 180i
+        if %17 [t: %b5] {  # if_3
+          %b5 = block {  # true
+            discard
+            exit_if  # if_3
+          }
+        }
+        exit_if  # if_1
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..792ab03
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::UserCall
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f8d5fdd
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm.expected.ir.msl
@@ -0,0 +1,123 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m44:ptr<function, mat4x4<f32>, read_write> = var
+    %x_10:ptr<function, i32, read_write> = var
+    store %m44, mat4x4<f32>(vec4<f32>(1.0f, 2.0f, 3.0f, 4.0f), vec4<f32>(5.0f, 6.0f, 7.0f, 8.0f), vec4<f32>(9.0f, 10.0f, 11.0f, 12.0f), vec4<f32>(13.0f, 14.0f, 15.0f, 16.0f))
+    store %x_10, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_11:ptr<function, i32, read_write> = var
+        %x_9:ptr<function, i32, read_write> = var
+        %9:i32 = load %x_10
+        %10:bool = lt %9, 4i
+        if %10 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %11:f32 = load_vector_element %gl_FragCoord, 1u
+        %12:bool = lt %11, 0.0f
+        if %12 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        store %x_11, 0i
+        loop [b: %b8, c: %b9] {  # loop_2
+          %b8 = block {  # body
+            %x_8:ptr<function, i32, read_write> = var
+            %14:i32 = load %x_11
+            %15:bool = lt %14, 4i
+            if %15 [t: %b10, f: %b11] {  # if_3
+              %b10 = block {  # true
+                exit_if  # if_3
+              }
+              %b11 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            continue %b9
+          }
+          %b9 = block {  # continuing
+            %16:i32 = load %x_10
+            %17:ptr<function, vec4<f32>, read_write> = access %m44, %16
+            %18:i32 = load %x_11
+            %19:i32 = load %x_10
+            %20:ptr<function, vec4<f32>, read_write> = access %m44, %19
+            %21:i32 = load %x_11
+            %22:f32 = load_vector_element %20, %21
+            %23:ptr<uniform, f32, read> = access %x_7, 0u
+            %24:f32 = load %23
+            %25:f32 = add %22, %24
+            store_vector_element %17, %18, %25
+            %26:i32 = load %x_11
+            %27:i32 = add %26, 1i
+            store %x_8, %27
+            %28:i32 = load %x_8
+            store %x_11, %28
+            next_iteration %b8
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %29:i32 = load %x_10
+        %30:i32 = add %29, 1i
+        store %x_9, %30
+        %31:i32 = load %x_9
+        store %x_10, %31
+        next_iteration %b3
+      }
+    }
+    %32:ptr<function, vec4<f32>, read_write> = access %m44, 1i
+    %x_77:f32 = load_vector_element %32, 1u
+    %x_79_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.0f)
+    %35:f32 = sub %x_77, 6.0f
+    store_vector_element %x_79_1, 0u, %35
+    %x_79:vec4<f32> = load %x_79_1
+    %37:ptr<function, vec4<f32>, read_write> = access %m44, 2i
+    %x_81:f32 = load_vector_element %37, 2u
+    %x_83_1:ptr<function, vec4<f32>, read_write> = var, %x_79
+    %40:f32 = sub %x_81, 11.0f
+    store_vector_element %x_83_1, 3u, %40
+    %41:vec4<f32> = load %x_83_1
+    store %x_GLF_color, %41
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b12 {
+  %b12 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %44:void = call %main_1
+    %45:vec4<f32> = load %x_GLF_color
+    %46:main_out = construct %45
+    ret %46
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cbec366
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl.expected.ir.msl
@@ -0,0 +1,117 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  one:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m44:ptr<function, mat4x4<f32>, read_write> = var
+    %x_10_phi:ptr<function, i32, read_write> = var
+    store %m44, mat4x4<f32>(vec4<f32>(1.0f, 2.0f, 3.0f, 4.0f), vec4<f32>(5.0f, 6.0f, 7.0f, 8.0f), vec4<f32>(9.0f, 10.0f, 11.0f, 12.0f), vec4<f32>(13.0f, 14.0f, 15.0f, 16.0f))
+    store %x_10_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_9:ptr<function, i32, read_write> = var
+        %x_11_phi:ptr<function, i32, read_write> = var
+        %x_10:i32 = load %x_10_phi
+        %10:bool = lt %x_10, 4i
+        if %10 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_63:f32 = load_vector_element %gl_FragCoord, 1u
+        %12:bool = lt %x_63, 0.0f
+        if %12 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        store %x_11_phi, 0i
+        loop [b: %b8, c: %b9] {  # loop_2
+          %b8 = block {  # body
+            %x_8:ptr<function, i32, read_write> = var
+            %x_11:i32 = load %x_11_phi
+            %15:bool = lt %x_11, 4i
+            if %15 [t: %b10, f: %b11] {  # if_3
+              %b10 = block {  # true
+                exit_if  # if_3
+              }
+              %b11 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            continue %b9
+          }
+          %b9 = block {  # continuing
+            %16:ptr<uniform, f32, read> = access %x_7, 0u
+            %x_72:f32 = load %16
+            %18:ptr<function, vec4<f32>, read_write> = access %m44, %x_10
+            %x_74:f32 = load_vector_element %18, %x_11
+            %20:ptr<function, vec4<f32>, read_write> = access %m44, %x_10
+            %21:f32 = add %x_74, %x_72
+            store_vector_element %20, %x_11, %21
+            %22:i32 = add %x_11, 1i
+            store %x_8, %22
+            %23:i32 = load %x_8
+            store %x_11_phi, %23
+            next_iteration %b8
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %24:i32 = add %x_10, 1i
+        store %x_9, %24
+        %25:i32 = load %x_9
+        store %x_10_phi, %25
+        next_iteration %b3
+      }
+    }
+    %26:ptr<function, vec4<f32>, read_write> = access %m44, 1i
+    %x_77:f32 = load_vector_element %26, 1u
+    %x_79_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.0f)
+    %29:f32 = sub %x_77, 6.0f
+    store_vector_element %x_79_1, 0u, %29
+    %x_79:vec4<f32> = load %x_79_1
+    %31:ptr<function, vec4<f32>, read_write> = access %m44, 2i
+    %x_81:f32 = load_vector_element %31, 2u
+    %x_83_1:ptr<function, vec4<f32>, read_write> = var, %x_79
+    %34:f32 = sub %x_81, 11.0f
+    store_vector_element %x_83_1, 3u, %34
+    %x_83:vec4<f32> = load %x_83_1
+    store %x_GLF_color, %x_83
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b12 {
+  %b12 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %38:void = call %main_1
+    %39:vec4<f32> = load %x_GLF_color
+    %40:main_out = construct %39
+    ret %40
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cd79cb1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %5:i32 = load %i
+        %6:bool = lt %5, 10i
+        if %6 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        store %x_GLF_color, vec4<f32>(1.0f)
+        %7:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %8:f32 = load_vector_element %7, 1u
+        %9:bool = gt 1.0f, %8
+        if %9 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+            if true [t: %b8] {  # if_3
+              %b8 = block {  # true
+                ret
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %10:i32 = load %i
+        %11:i32 = add %10, 1i
+        store %i, %11
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %13:void = call %main_1
+    %14:vec4<f32> = load %x_GLF_color
+    %15:main_out = construct %14
+    ret %15
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b5e5a7a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_7:i32 = load %i
+        %6:bool = lt %x_7, 10i
+        if %6 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        store %x_GLF_color, vec4<f32>(1.0f)
+        %7:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %x_39:f32 = load_vector_element %7, 1u
+        %9:bool = gt 1.0f, %x_39
+        if %9 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+            if true [t: %b8] {  # if_3
+              %b8 = block {  # true
+                ret
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_8:i32 = load %i
+        %11:i32 = add %x_8, 1i
+        store %i, %11
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %13:void = call %main_1
+    %14:vec4<f32> = load %x_GLF_color
+    %15:main_out = construct %14
+    ret %15
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f585fda
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.spvasm.expected.ir.msl
@@ -0,0 +1,191 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %GLF_dead5cols:ptr<function, i32, read_write> = var
+    %GLF_dead5rows:ptr<function, i32, read_write> = var
+    %GLF_dead5c:ptr<function, i32, read_write> = var
+    %GLF_dead5r:ptr<function, i32, read_write> = var
+    %msb10:ptr<function, i32, read_write> = var
+    %donor_replacementGLF_dead5sums:ptr<function, array<f32, 9>, read_write> = var
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %11:i32 = load %i
+        %12:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %13:f32 = load_vector_element %12, 0u
+        %14:i32 = convert %13
+        %15:bool = gte %11, %14
+        if %15 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %16:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %17:f32 = load_vector_element %16, 1u
+        %18:bool = gt 0.0f, %17
+        if %18 [t: %b6] {  # if_2
+          %b6 = block {  # true
+            store %GLF_dead5cols, 2i
+            loop [b: %b7, c: %b8] {  # loop_2
+              %b7 = block {  # body
+                %19:i32 = load %GLF_dead5cols
+                %20:bool = lte %19, 4i
+                if %20 [t: %b9, f: %b10] {  # if_3
+                  %b9 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b10 = block {  # false
+                    exit_loop  # loop_2
+                  }
+                }
+                store %GLF_dead5rows, 2i
+                loop [b: %b11, c: %b12] {  # loop_3
+                  %b11 = block {  # body
+                    %21:i32 = load %GLF_dead5rows
+                    %22:bool = lte %21, 4i
+                    if %22 [t: %b13, f: %b14] {  # if_4
+                      %b13 = block {  # true
+                        exit_if  # if_4
+                      }
+                      %b14 = block {  # false
+                        exit_loop  # loop_3
+                      }
+                    }
+                    store %GLF_dead5c, 0i
+                    loop [b: %b15, c: %b16] {  # loop_4
+                      %b15 = block {  # body
+                        %23:i32 = load %GLF_dead5c
+                        %24:i32 = load %GLF_dead5cols
+                        %25:bool = lt %23, %24
+                        if %25 [t: %b17, f: %b18] {  # if_5
+                          %b17 = block {  # true
+                            exit_if  # if_5
+                          }
+                          %b18 = block {  # false
+                            exit_loop  # loop_4
+                          }
+                        }
+                        store %GLF_dead5r, 0i
+                        loop [b: %b19, c: %b20] {  # loop_5
+                          %b19 = block {  # body
+                            %26:i32 = load %GLF_dead5r
+                            %27:i32 = load %GLF_dead5rows
+                            %28:bool = lt %26, %27
+                            if %28 [t: %b21, f: %b22] {  # if_6
+                              %b21 = block {  # true
+                                exit_if  # if_6
+                              }
+                              %b22 = block {  # false
+                                exit_loop  # loop_5
+                              }
+                            }
+                            %x_87:i32 = load %msb10
+                            switch %x_87 [c: (1i 8i, %b23), c: (default, %b24)] {  # switch_1
+                              %b23 = block {  # case
+                                %30:i32 = load %msb10
+                                %31:i32 = load %msb10
+                                %32:bool = gte %31, 0i
+                                %33:i32 = load %msb10
+                                %34:bool = lt %33, 9i
+                                %35:bool = and %32, %34
+                                %x_96:i32 = select 0i, %30, %35
+                                %37:ptr<function, f32, read_write> = access %donor_replacementGLF_dead5sums, %x_96
+                                %38:ptr<function, f32, read_write> = access %donor_replacementGLF_dead5sums, %x_96
+                                %39:f32 = load %38
+                                %40:f32 = add %39, 1.0f
+                                store %37, %40
+                                exit_switch  # switch_1
+                              }
+                              %b24 = block {  # case
+                                exit_switch  # switch_1
+                              }
+                            }
+                            continue %b20
+                          }
+                          %b20 = block {  # continuing
+                            %41:i32 = load %GLF_dead5r
+                            %42:i32 = add %41, 1i
+                            store %GLF_dead5r, %42
+                            next_iteration %b19
+                          }
+                        }
+                        continue %b16
+                      }
+                      %b16 = block {  # continuing
+                        %43:i32 = load %GLF_dead5c
+                        %44:i32 = add %43, 1i
+                        store %GLF_dead5c, %44
+                        next_iteration %b15
+                      }
+                    }
+                    %45:i32 = load %msb10
+                    %46:i32 = add %45, 1i
+                    store %msb10, %46
+                    continue %b12
+                  }
+                  %b12 = block {  # continuing
+                    %47:i32 = load %GLF_dead5rows
+                    %48:i32 = add %47, 1i
+                    store %GLF_dead5rows, %48
+                    next_iteration %b11
+                  }
+                }
+                continue %b8
+              }
+              %b8 = block {  # continuing
+                %49:i32 = load %GLF_dead5cols
+                %50:i32 = add %49, 1i
+                store %GLF_dead5cols, %50
+                next_iteration %b7
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        %51:i32 = load %i
+        %52:i32 = add %51, 1i
+        store %i, %52
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_113:i32 = load %i
+        %54:bool = lt %x_113, 200i
+        %55:bool = eq %54, false
+        break_if %55 %b3
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b25 {
+  %b25 = block {
+    %57:void = call %main_1
+    %58:vec4<f32> = load %x_GLF_color
+    %59:main_out = construct %58
+    ret %59
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d85a84a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl.expected.ir.msl
@@ -0,0 +1,191 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %GLF_dead5cols:ptr<function, i32, read_write> = var
+    %GLF_dead5rows:ptr<function, i32, read_write> = var
+    %GLF_dead5c:ptr<function, i32, read_write> = var
+    %GLF_dead5r:ptr<function, i32, read_write> = var
+    %msb10:ptr<function, i32, read_write> = var
+    %donor_replacementGLF_dead5sums:ptr<function, array<f32, 9>, read_write> = var
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_45:i32 = load %i
+        %12:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %x_47:f32 = load_vector_element %12, 0u
+        %14:i32 = convert %x_47
+        %15:bool = gte %x_45, %14
+        if %15 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %16:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %x_53:f32 = load_vector_element %16, 1u
+        %18:bool = gt 0.0f, %x_53
+        if %18 [t: %b6] {  # if_2
+          %b6 = block {  # true
+            store %GLF_dead5cols, 2i
+            loop [b: %b7, c: %b8] {  # loop_2
+              %b7 = block {  # body
+                %x_61:i32 = load %GLF_dead5cols
+                %20:bool = lte %x_61, 4i
+                if %20 [t: %b9, f: %b10] {  # if_3
+                  %b9 = block {  # true
+                    exit_if  # if_3
+                  }
+                  %b10 = block {  # false
+                    exit_loop  # loop_2
+                  }
+                }
+                store %GLF_dead5rows, 2i
+                loop [b: %b11, c: %b12] {  # loop_3
+                  %b11 = block {  # body
+                    %x_68:i32 = load %GLF_dead5rows
+                    %22:bool = lte %x_68, 4i
+                    if %22 [t: %b13, f: %b14] {  # if_4
+                      %b13 = block {  # true
+                        exit_if  # if_4
+                      }
+                      %b14 = block {  # false
+                        exit_loop  # loop_3
+                      }
+                    }
+                    store %GLF_dead5c, 0i
+                    loop [b: %b15, c: %b16] {  # loop_4
+                      %b15 = block {  # body
+                        %x_75:i32 = load %GLF_dead5c
+                        %x_76:i32 = load %GLF_dead5cols
+                        %25:bool = lt %x_75, %x_76
+                        if %25 [t: %b17, f: %b18] {  # if_5
+                          %b17 = block {  # true
+                            exit_if  # if_5
+                          }
+                          %b18 = block {  # false
+                            exit_loop  # loop_4
+                          }
+                        }
+                        store %GLF_dead5r, 0i
+                        loop [b: %b19, c: %b20] {  # loop_5
+                          %b19 = block {  # body
+                            %x_83:i32 = load %GLF_dead5r
+                            %x_84:i32 = load %GLF_dead5rows
+                            %28:bool = lt %x_83, %x_84
+                            if %28 [t: %b21, f: %b22] {  # if_6
+                              %b21 = block {  # true
+                                exit_if  # if_6
+                              }
+                              %b22 = block {  # false
+                                exit_loop  # loop_5
+                              }
+                            }
+                            %x_87:i32 = load %msb10
+                            switch %x_87 [c: (1i 8i, %b23), c: (default, %b24)] {  # switch_1
+                              %b23 = block {  # case
+                                %x_90:i32 = load %msb10
+                                %x_92:i32 = load %msb10
+                                %x_95:i32 = load %msb10
+                                %33:bool = gte %x_90, 0i
+                                %34:bool = lt %x_92, 9i
+                                %35:bool = and %33, %34
+                                %x_96:i32 = select 0i, %x_95, %35
+                                %37:ptr<function, f32, read_write> = access %donor_replacementGLF_dead5sums, %x_96
+                                %x_98:f32 = load %37
+                                %39:ptr<function, f32, read_write> = access %donor_replacementGLF_dead5sums, %x_96
+                                %40:f32 = add %x_98, 1.0f
+                                store %39, %40
+                                exit_switch  # switch_1
+                              }
+                              %b24 = block {  # case
+                                exit_switch  # switch_1
+                              }
+                            }
+                            continue %b20
+                          }
+                          %b20 = block {  # continuing
+                            %x_101:i32 = load %GLF_dead5r
+                            %42:i32 = add %x_101, 1i
+                            store %GLF_dead5r, %42
+                            next_iteration %b19
+                          }
+                        }
+                        continue %b16
+                      }
+                      %b16 = block {  # continuing
+                        %x_103:i32 = load %GLF_dead5c
+                        %44:i32 = add %x_103, 1i
+                        store %GLF_dead5c, %44
+                        next_iteration %b15
+                      }
+                    }
+                    %x_105:i32 = load %msb10
+                    %46:i32 = add %x_105, 1i
+                    store %msb10, %46
+                    continue %b12
+                  }
+                  %b12 = block {  # continuing
+                    %x_107:i32 = load %GLF_dead5rows
+                    %48:i32 = add %x_107, 1i
+                    store %GLF_dead5rows, %48
+                    next_iteration %b11
+                  }
+                }
+                continue %b8
+              }
+              %b8 = block {  # continuing
+                %x_109:i32 = load %GLF_dead5cols
+                %50:i32 = add %x_109, 1i
+                store %GLF_dead5cols, %50
+                next_iteration %b7
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        %x_111:i32 = load %i
+        %52:i32 = add %x_111, 1i
+        store %i, %52
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_113:i32 = load %i
+        %54:bool = lt %x_113, 200i
+        %55:bool = eq %54, false
+        break_if %55 %b3
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b25 {
+  %b25 = block {
+    %57:void = call %main_1
+    %58:vec4<f32> = load %x_GLF_color
+    %59:main_out = construct %58
+    ret %59
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..e61c68e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,78 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_10:ptr<function, array<i32, 1>, read_write> = var
+    %x_9:ptr<function, array<i32, 1>, read_write> = var
+    %x_7:ptr<function, i32, read_write> = var
+    %x_11:ptr<function, i32, read_write> = var
+    %8:ptr<function, i32, read_write> = access %x_9, 0i
+    %9:ptr<uniform, i32, read> = access %x_5, 0u
+    %10:i32 = load %9
+    store %8, %10
+    %11:array<i32, 1> = load %x_9
+    store %x_10, %11
+    %12:ptr<function, i32, read_write> = access %x_9, 0i
+    %13:i32 = load %12
+    store %x_7, %13
+    switch 0u [c: (default, %b3)] {  # switch_1
+      %b3 = block {  # case
+        store %x_GLF_color, vec4<f32>(0.0f)
+        %14:ptr<function, i32, read_write> = access %x_10, 0i
+        %15:i32 = load %14
+        %16:i32 = load %x_7
+        %17:bool = eq %15, %16
+        if %17 [t: %b4] {  # if_1
+          %b4 = block {  # true
+            store %x_11, 1i
+            exit_switch  # switch_1
+          }
+        }
+        store %x_11, 2i
+        exit_switch  # switch_1
+      }
+    }
+    %18:i32 = load %x_11
+    %19:bool = eq %18, 1i
+    if %19 [t: %b5, f: %b6] {  # if_2
+      %b5 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b6 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %21:void = call %main_1
+    %22:vec4<f32> = load %x_GLF_color
+    %23:main_out = construct %22
+    ret %23
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8589cb0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,79 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_10:ptr<function, array<i32, 1>, read_write> = var
+    %x_9:ptr<function, array<i32, 1>, read_write> = var
+    %x_7:ptr<function, i32, read_write> = var
+    %x_11_phi:ptr<function, i32, read_write> = var
+    %8:ptr<uniform, i32, read> = access %x_5, 0u
+    %x_6:i32 = load %8
+    %10:ptr<function, i32, read_write> = access %x_9, 0i
+    store %10, %x_6
+    %x_37:array<i32, 1> = load %x_9
+    store %x_10, %x_37
+    %12:ptr<function, i32, read_write> = access %x_9, 0i
+    %13:i32 = load %12
+    store %x_7, %13
+    switch 0u [c: (default, %b3)] {  # switch_1
+      %b3 = block {  # case
+        store %x_GLF_color, vec4<f32>(0.0f)
+        %14:ptr<function, i32, read_write> = access %x_10, 0i
+        %x_8:i32 = load %14
+        %16:i32 = load %x_7
+        %17:i32 = bitcast %16
+        %18:bool = eq %x_8, %17
+        if %18 [t: %b4] {  # if_1
+          %b4 = block {  # true
+            store %x_11_phi, 1i
+            exit_switch  # switch_1
+          }
+        }
+        store %x_11_phi, 2i
+        exit_switch  # switch_1
+      }
+    }
+    %x_11:i32 = load %x_11_phi
+    %20:bool = eq %x_11, 1i
+    if %20 [t: %b5, f: %b6] {  # if_2
+      %b5 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b6 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %22:void = call %main_1
+    %23:vec4<f32> = load %x_GLF_color
+    %24:main_out = construct %23
+    ret %24
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1a1c2a3
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,90 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_30:ptr<function, bool, read_write> = var
+    %x_47:ptr<function, f32, read_write> = var
+    %7:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %8:f32 = load_vector_element %7, 0u
+    %9:bool = gt %8, 1.0f
+    store %x_30, %9
+    %10:bool = load %x_30
+    if %10 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            loop [b: %b6, c: %b7] {  # loop_2
+              %b6 = block {  # body
+                %11:f32 = load_vector_element %gl_FragCoord, 0u
+                %12:bool = lt %11, 0.0f
+                if %12 [t: %b8] {  # if_2
+                  %b8 = block {  # true
+                    %13:bool = load %x_30
+                    if %13 [t: %b9, f: %b10] {  # if_3
+                      %b9 = block {  # true
+                        store %x_47, 1.0f
+                        exit_loop  # loop_2
+                      }
+                      %b10 = block {  # false
+                        continue %b7
+                      }
+                    }
+                    exit_if  # if_2
+                  }
+                }
+                store %x_47, 0.0f
+                exit_loop  # loop_2
+              }
+              %b7 = block {  # continuing
+                next_iteration %b6
+              }
+            }
+            exit_loop  # loop_1
+          }
+          %b5 = block {  # continuing
+            next_iteration %b4
+          }
+        }
+        %x_48_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.0f)
+        %15:f32 = load %x_47
+        store_vector_element %x_48_1, 1u, %15
+        %16:vec4<f32> = load %x_48_1
+        store %x_GLF_color, %16
+        exit_if  # if_1
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b11 {
+  %b11 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b4cb2e1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,93 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_30:ptr<function, bool, read_write> = var
+    %x_47:ptr<function, f32, read_write> = var
+    %7:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_29:f32 = load_vector_element %7, 0u
+    %9:bool = gt %x_29, 1.0f
+    store %x_30, %9
+    %10:bool = load %x_30
+    if %10 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %x_47_phi:ptr<function, f32, read_write> = var
+            loop [b: %b6, c: %b7] {  # loop_2
+              %b6 = block {  # body
+                %x_41:f32 = load_vector_element %gl_FragCoord, 0u
+                %13:bool = lt %x_41, 0.0f
+                if %13 [t: %b8] {  # if_2
+                  %b8 = block {  # true
+                    %14:bool = load %x_30
+                    if %14 [t: %b9, f: %b10] {  # if_3
+                      %b9 = block {  # true
+                        store %x_47_phi, 1.0f
+                        exit_loop  # loop_2
+                      }
+                      %b10 = block {  # false
+                        continue %b7
+                      }
+                    }
+                    exit_if  # if_2
+                  }
+                }
+                store %x_47_phi, 0.0f
+                exit_loop  # loop_2
+              }
+              %b7 = block {  # continuing
+                next_iteration %b6
+              }
+            }
+            %15:f32 = load %x_47_phi
+            store %x_47, %15
+            exit_loop  # loop_1
+          }
+          %b5 = block {  # continuing
+            next_iteration %b4
+          }
+        }
+        %x_48_1:ptr<function, vec4<f32>, read_write> = var, vec4<f32>(0.0f)
+        %17:f32 = load %x_47
+        store_vector_element %x_48_1, 1u, %17
+        %x_48:vec4<f32> = load %x_48_1
+        store %x_GLF_color, %x_48
+        exit_if  # if_1
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b11 {
+  %b11 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %21:void = call %main_1
+    %22:vec4<f32> = load %x_GLF_color
+    %23:main_out = construct %22
+    ret %23
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..ad0b846
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,121 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_36:ptr<function, bool, read_write> = var, false
+    %x_37:ptr<function, bool, read_write> = var
+    %x_7:ptr<function, i32, read_write> = var
+    %x_38:ptr<function, bool, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    %x_40:ptr<function, bool, read_write> = var
+    %x_42:ptr<function, vec3<f32>, read_write> = var
+    %x_43:ptr<function, vec3<f32>, read_write> = var
+    %x_56:ptr<function, bool, read_write> = var
+    store %x_40, false
+    store %x_42, vec3<f32>(0.0f)
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %13:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+        %x_47:f32 = load_vector_element %13, 1u
+        %15:vec3<f32> = load %x_42
+        store %x_43, %15
+        %16:bool = lt %x_47, 0.0f
+        if %16 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            store %color, vec3<f32>(1.0f)
+            store %x_43, vec3<f32>(1.0f)
+            exit_if  # if_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %17:bool = load %x_40
+        store %x_40, %17
+        %18:vec3<f32> = load %x_43
+        store %x_42, %18
+        break_if true %b3
+      }
+    }
+    store %x_36, false
+    %19:bool = load %x_40
+    store %x_56, %19
+    loop [b: %b6, c: %b7] {  # loop_2
+      %b6 = block {  # body
+        %x_62:ptr<function, bool, read_write> = var
+        store %x_7, 0i
+        %21:bool = load %x_56
+        store %x_62, %21
+        loop [b: %b8, c: %b9] {  # loop_3
+          %b8 = block {  # body
+            %x_68:bool = let true
+            if true [t: %b10, f: %b11] {  # if_2
+              %b10 = block {  # true
+                exit_if  # if_2
+              }
+              %b11 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            store %x_36, true
+            store %x_37, true
+            exit_loop  # loop_3
+          }
+          %b9 = block {  # continuing
+            store %x_62, false
+            next_iteration %b8
+          }
+        }
+        if true [t: %b12] {  # if_3
+          %b12 = block {  # true
+            exit_loop  # loop_2
+          }
+        }
+        store %x_36, true
+        exit_loop  # loop_2
+      }
+      %b7 = block {  # continuing
+        store %x_56, false
+        next_iteration %b6
+      }
+    }
+    store %x_38, true
+    %23:f32 = load_vector_element %x_43, 0u
+    %24:f32 = load_vector_element %x_43, 1u
+    %25:f32 = load_vector_element %x_43, 2u
+    %26:vec4<f32> = construct %23, %24, %25, 1.0f
+    %27:vec4<f32> = add %26, vec4<f32>(1.0f)
+    store %x_GLF_color, %27
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %29:void = call %main_1
+    %30:vec4<f32> = load %x_GLF_color
+    %31:main_out = construct %30
+    ret %31
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..032ef39
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,153 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_36:ptr<function, bool, read_write> = var, false
+    %x_37:ptr<function, bool, read_write> = var
+    %x_7:ptr<function, i32, read_write> = var
+    %x_38:ptr<function, bool, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    %x_40:ptr<function, bool, read_write> = var
+    %x_43:ptr<function, vec3<f32>, read_write> = var
+    %x_40_phi:ptr<function, bool, read_write> = var
+    %x_42_phi:ptr<function, vec3<f32>, read_write> = var
+    %x_56_phi:ptr<function, bool, read_write> = var
+    %x_58_phi:ptr<function, bool, read_write> = var
+    store %x_40_phi, false
+    store %x_42_phi, vec3<f32>(0.0f)
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_43_phi:ptr<function, vec3<f32>, read_write> = var
+        %16:bool = load %x_40_phi
+        store %x_40, %16
+        %x_42:vec3<f32> = load %x_42_phi
+        %18:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+        %x_47:f32 = load_vector_element %18, 1u
+        store %x_43_phi, %x_42
+        %20:bool = lt %x_47, 0.0f
+        if %20 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            store %color, vec3<f32>(1.0f)
+            store %x_43_phi, vec3<f32>(1.0f)
+            exit_if  # if_1
+          }
+        }
+        %21:vec3<f32> = load %x_43_phi
+        store %x_43, %21
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %22:bool = load %x_40
+        store %x_40_phi, %22
+        %23:vec3<f32> = load %x_43
+        store %x_42_phi, %23
+        break_if true %b3
+      }
+    }
+    store %x_36, false
+    %24:bool = load %x_40
+    store %x_56_phi, %24
+    store %x_58_phi, false
+    loop [b: %b6, c: %b7] {  # loop_2
+      %b6 = block {  # body
+        %x_62:ptr<function, bool, read_write> = var
+        %x_62_phi:ptr<function, bool, read_write> = var
+        %x_64_phi:ptr<function, bool, read_write> = var
+        %x_65_phi:ptr<function, i32, read_write> = var
+        %x_70_phi:ptr<function, bool, read_write> = var
+        %x_71_phi:ptr<function, bool, read_write> = var
+        %x_56:bool = load %x_56_phi
+        %x_58:bool = load %x_58_phi
+        store %x_7, 0i
+        store %x_62_phi, %x_56
+        store %x_64_phi, false
+        store %x_65_phi, 0i
+        loop [b: %b8, c: %b9] {  # loop_3
+          %b8 = block {  # body
+            %33:bool = load %x_62_phi
+            store %x_62, %33
+            %x_64:bool = load %x_64_phi
+            %x_65:i32 = load %x_65_phi
+            %x_68:bool = let true
+            %37:bool = load %x_62
+            store %x_70_phi, %37
+            store %x_71_phi, false
+            if true [t: %b10, f: %b11] {  # if_2
+              %b10 = block {  # true
+                exit_if  # if_2
+              }
+              %b11 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            store %x_36, true
+            store %x_37, true
+            store %x_70_phi, true
+            store %x_71_phi, true
+            exit_loop  # loop_3
+          }
+          %b9 = block {  # continuing
+            store %x_62_phi, false
+            store %x_64_phi, false
+            store %x_65_phi, 0i
+            next_iteration %b8
+          }
+        }
+        %x_70:bool = load %x_70_phi
+        %x_71:bool = load %x_71_phi
+        if true [t: %b12] {  # if_3
+          %b12 = block {  # true
+            exit_loop  # loop_2
+          }
+        }
+        store %x_36, true
+        exit_loop  # loop_2
+      }
+      %b7 = block {  # continuing
+        store %x_56_phi, false
+        store %x_58_phi, false
+        next_iteration %b6
+      }
+    }
+    store %x_38, true
+    %x_73:f32 = let 1.0f
+    %41:f32 = load_vector_element %x_43, 0u
+    %42:f32 = load_vector_element %x_43, 1u
+    %43:f32 = load_vector_element %x_43, 2u
+    %44:vec4<f32> = construct %41, %42, %43, 1.0f
+    %45:vec4<f32> = construct %x_73, %x_73, %x_73, %x_73
+    %46:vec4<f32> = add %44, %45
+    store %x_GLF_color, %46
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %48:void = call %main_1
+    %49:vec4<f32> = load %x_GLF_color
+    %50:main_out = construct %49
+    ret %50
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..92e2acf
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.spvasm.expected.ir.msl
@@ -0,0 +1,163 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_38:ptr<function, bool, read_write> = var
+        %x_41:ptr<function, vec4<f32>, read_write> = var
+        %x_42:ptr<function, vec4<f32>, read_write> = var
+        %x_39:ptr<function, bool, read_write> = var
+        %9:f32 = load_vector_element %gl_FragCoord, 0u
+        %10:f32 = clamp %9, 0.0f, 1.0f
+        %x_34:i32 = convert %10
+        store %x_GLF_color, vec4<f32>(0.0f)
+        store %x_38, false
+        store %x_41, vec4<f32>(0.0f)
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %x_47:ptr<function, i32, read_write> = var
+            %13:vec4<f32> = load %x_41
+            store %x_42, %13
+            store %x_47, 0i
+            loop [b: %b7, c: %b8] {  # loop_3
+              %b7 = block {  # body
+                %x_45:ptr<function, vec4<f32>, read_write> = var
+                %x_48:ptr<function, i32, read_write> = var
+                %16:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+                %x_50:f32 = load_vector_element %16, 1u
+                %18:bool = load %x_38
+                store %x_39, %18
+                %19:i32 = load %x_47
+                %20:i32 = convert %x_50
+                %21:i32 = add %x_34, %20
+                %22:bool = lt %19, %21
+                if %22 [t: %b9, f: %b10] {  # if_1
+                  %b9 = block {  # true
+                    exit_if  # if_1
+                  }
+                  %b10 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %x_66:ptr<function, vec4<f32>, read_write> = var
+                %x_70:ptr<function, vec4<f32>, read_write> = var
+                %25:bool = lt %x_34, 0i
+                if %25 [t: %b11, f: %b12] {  # if_2
+                  %b11 = block {  # true
+                    store %x_39, true
+                    exit_loop  # loop_3
+                  }
+                  %b12 = block {  # false
+                    %26:bool = eq %x_34, 1i
+                    if %26 [t: %b13, f: %b14] {  # if_3
+                      %b13 = block {  # true
+                        %27:f32 = convert %x_34
+                        %x_65:vec2<f32> = construct %27
+                        %29:f32 = access %x_65, 0u
+                        %30:vec4<f32> = load %x_42
+                        %31:vec2<f32> = swizzle %30, yz
+                        %32:f32 = access %x_65, 1u
+                        %33:vec4<f32> = construct %29, %31, %32
+                        store %x_66, %33
+                        %34:vec4<f32> = load %x_66
+                        store %x_45, %34
+                        exit_if  # if_3
+                      }
+                      %b14 = block {  # false
+                        %35:i32 = add %x_34, 1i
+                        %36:f32 = convert %35
+                        %x_69:vec2<f32> = construct %36
+                        %38:f32 = access %x_69, 0u
+                        %39:vec4<f32> = load %x_42
+                        %40:vec2<f32> = swizzle %39, yz
+                        %41:f32 = access %x_69, 1u
+                        %42:vec4<f32> = construct %38, %40, %41
+                        store %x_70, %42
+                        %43:vec4<f32> = load %x_70
+                        store %x_45, %43
+                        exit_if  # if_3
+                      }
+                    }
+                    exit_if  # if_2
+                  }
+                }
+                continue %b8
+              }
+              %b8 = block {  # continuing
+                %44:i32 = load %x_47
+                %45:i32 = add %44, 1i
+                store %x_48, %45
+                %46:vec4<f32> = load %x_45
+                store %x_42, %46
+                %47:i32 = load %x_48
+                store %x_47, %47
+                next_iteration %b7
+              }
+            }
+            %48:bool = load %x_39
+            if %48 [t: %b15] {  # if_4
+              %b15 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            continue %b6
+          }
+          %b6 = block {  # continuing
+            %49:bool = load %x_39
+            store %x_38, %49
+            %50:vec4<f32> = load %x_42
+            store %x_41, %50
+            %51:bool = lt %x_34, 0i
+            %52:bool = eq %51, false
+            break_if %52 %b5
+          }
+        }
+        %53:bool = load %x_39
+        if %53 [t: %b16] {  # if_5
+          %b16 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %54:vec4<f32> = load %x_42
+        store %x_GLF_color, %54
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b17 {
+  %b17 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %57:void = call %main_1
+    %58:vec4<f32> = load %x_GLF_color
+    %59:main_out = construct %58
+    ret %59
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4517f97
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl.expected.ir.msl
@@ -0,0 +1,171 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_42:ptr<function, vec4<f32>, read_write> = var
+        %x_39:ptr<function, bool, read_write> = var
+        %x_38_phi:ptr<function, bool, read_write> = var
+        %x_41_phi:ptr<function, vec4<f32>, read_write> = var
+        %x_32:f32 = load_vector_element %gl_FragCoord, 0u
+        %10:f32 = clamp %x_32, 0.0f, 1.0f
+        %x_34:i32 = convert %10
+        store %x_GLF_color, vec4<f32>(0.0f)
+        store %x_38_phi, false
+        store %x_41_phi, vec4<f32>(0.0f)
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %x_42_phi:ptr<function, vec4<f32>, read_write> = var
+            %x_47_phi:ptr<function, i32, read_write> = var
+            %x_39_phi:ptr<function, bool, read_write> = var
+            %x_38:bool = load %x_38_phi
+            %x_41:vec4<f32> = load %x_41_phi
+            store %x_42_phi, %x_41
+            store %x_47_phi, 0i
+            loop [b: %b7, c: %b8] {  # loop_3
+              %b7 = block {  # body
+                %x_45:ptr<function, vec4<f32>, read_write> = var
+                %x_48:ptr<function, i32, read_write> = var
+                %19:vec4<f32> = load %x_42_phi
+                store %x_42, %19
+                %x_47:i32 = load %x_47_phi
+                %21:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+                %x_50:f32 = load_vector_element %21, 1u
+                store %x_39_phi, %x_38
+                %23:i32 = convert %x_50
+                %24:i32 = add %x_34, %23
+                %25:bool = lt %x_47, %24
+                if %25 [t: %b9, f: %b10] {  # if_1
+                  %b9 = block {  # true
+                    exit_if  # if_1
+                  }
+                  %b10 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                %x_66:ptr<function, vec4<f32>, read_write> = var
+                %x_70:ptr<function, vec4<f32>, read_write> = var
+                %x_45_phi:ptr<function, vec4<f32>, read_write> = var
+                %29:bool = lt %x_34, 0i
+                if %29 [t: %b11, f: %b12] {  # if_2
+                  %b11 = block {  # true
+                    store %x_39_phi, true
+                    exit_loop  # loop_3
+                  }
+                  %b12 = block {  # false
+                    %30:bool = eq %x_34, 1i
+                    if %30 [t: %b13, f: %b14] {  # if_3
+                      %b13 = block {  # true
+                        %x_64:f32 = convert %x_34
+                        %x_65:vec2<f32> = construct %x_64, %x_64
+                        %33:f32 = access %x_65, 0u
+                        %34:f32 = load_vector_element %x_42, 1u
+                        %35:f32 = load_vector_element %x_42, 2u
+                        %36:f32 = access %x_65, 1u
+                        %37:vec4<f32> = construct %33, %34, %35, %36
+                        store %x_66, %37
+                        %38:vec4<f32> = load %x_66
+                        store %x_45_phi, %38
+                        exit_if  # if_3
+                      }
+                      %b14 = block {  # false
+                        %39:i32 = add %x_34, 1i
+                        %x_68:f32 = convert %39
+                        %x_69:vec2<f32> = construct %x_68, %x_68
+                        %42:f32 = access %x_69, 0u
+                        %43:f32 = load_vector_element %x_42, 1u
+                        %44:f32 = load_vector_element %x_42, 2u
+                        %45:f32 = access %x_69, 1u
+                        %46:vec4<f32> = construct %42, %43, %44, %45
+                        store %x_70, %46
+                        %47:vec4<f32> = load %x_70
+                        store %x_45_phi, %47
+                        exit_if  # if_3
+                      }
+                    }
+                    %48:vec4<f32> = load %x_45_phi
+                    store %x_45, %48
+                    exit_if  # if_2
+                  }
+                }
+                continue %b8
+              }
+              %b8 = block {  # continuing
+                %49:i32 = add %x_47, 1i
+                store %x_48, %49
+                %50:vec4<f32> = load %x_45
+                store %x_42_phi, %50
+                %51:i32 = load %x_48
+                store %x_47_phi, %51
+                next_iteration %b7
+              }
+            }
+            %52:bool = load %x_39_phi
+            store %x_39, %52
+            %53:bool = load %x_39
+            if %53 [t: %b15] {  # if_4
+              %b15 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            continue %b6
+          }
+          %b6 = block {  # continuing
+            %54:bool = load %x_39
+            store %x_38_phi, %54
+            %55:vec4<f32> = load %x_42
+            store %x_41_phi, %55
+            %56:bool = lt %x_34, 0i
+            %57:bool = eq %56, false
+            break_if %57 %b5
+          }
+        }
+        %58:bool = load %x_39
+        if %58 [t: %b16] {  # if_5
+          %b16 = block {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %59:vec4<f32> = load %x_42
+        store %x_GLF_color, %59
+        exit_loop  # loop_1
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b17 {
+  %b17 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %62:void = call %main_1
+    %63:vec4<f32> = load %x_GLF_color
+    %64:main_out = construct %63
+    ret %64
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..85c6810
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,132 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gv:ptr<private, f32, read_write> = var
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %lv:ptr<function, f32, read_write> = var
+    %x_43:ptr<function, f32, read_write> = var
+    %GLF_live5r:ptr<function, i32, read_write> = var
+    %GLF_live5_looplimiter6:ptr<function, i32, read_write> = var
+    %10:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %11:f32 = load_vector_element %10, 1u
+    %12:bool = gt 1.0f, %11
+    if %12 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %13:f32 = load %gv
+        %14:f32 = abs %13
+        store %x_43, %14
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_43, 260.0f
+        exit_if  # if_1
+      }
+    }
+    %15:f32 = load %x_43
+    store %lv, %15
+    %16:f32 = load %lv
+    %17:i32 = convert %16
+    %18:bool = lt %17, 250i
+    if %18 [t: %b5] {  # if_2
+      %b5 = block {  # true
+        %19:f32 = load %lv
+        %20:i32 = convert %19
+        %21:bool = lt %20, 180i
+        if %21 [t: %b6, f: %b7] {  # if_3
+          %b6 = block {  # true
+            %22:f32 = load %lv
+            %x_65:f32 = clamp %22, 1.0f, 1.0f
+            exit_if  # if_3
+          }
+          %b7 = block {  # false
+            %24:f32 = load_vector_element %gl_FragCoord, 1u
+            %25:bool = lt %24, 0.0f
+            if %25 [t: %b8] {  # if_4
+              %b8 = block {  # true
+                %26:f32 = load %lv
+                %27:i32 = convert %26
+                %28:bool = lt %27, 210i
+                if %28 [t: %b9] {  # if_5
+                  %b9 = block {  # true
+                    loop [b: %b10, c: %b11] {  # loop_1
+                      %b10 = block {  # body
+                        continue %b11
+                      }
+                      %b11 = block {  # continuing
+                        break_if false %b10
+                      }
+                    }
+                    exit_if  # if_5
+                  }
+                }
+                store %GLF_live5r, 0i
+                loop [b: %b12, c: %b13] {  # loop_2
+                  %b12 = block {  # body
+                    if true [t: %b14, f: %b15] {  # if_6
+                      %b14 = block {  # true
+                        exit_if  # if_6
+                      }
+                      %b15 = block {  # false
+                        exit_loop  # loop_2
+                      }
+                    }
+                    %29:i32 = load %GLF_live5_looplimiter6
+                    %30:bool = gte %29, 6i
+                    if %30 [t: %b16] {  # if_7
+                      %b16 = block {  # true
+                        exit_loop  # loop_2
+                      }
+                    }
+                    %31:i32 = load %GLF_live5_looplimiter6
+                    %32:i32 = add %31, 1i
+                    store %GLF_live5_looplimiter6, %32
+                    continue %b13
+                  }
+                  %b13 = block {  # continuing
+                    next_iteration %b12
+                  }
+                }
+                exit_if  # if_4
+              }
+            }
+            exit_if  # if_3
+          }
+        }
+        exit_if  # if_2
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b17 {
+  %b17 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %35:void = call %main_1
+    %36:vec4<f32> = load %x_GLF_color
+    %37:main_out = construct %36
+    ret %37
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..ac4ff0d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,132 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gv:ptr<private, f32, read_write> = var
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %lv:ptr<function, f32, read_write> = var
+    %x_43:ptr<function, f32, read_write> = var
+    %GLF_live5r:ptr<function, i32, read_write> = var
+    %GLF_live5_looplimiter6:ptr<function, i32, read_write> = var
+    %10:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %x_45:f32 = load_vector_element %10, 1u
+    %12:bool = gt 1.0f, %x_45
+    if %12 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %x_50:f32 = load %gv
+        %14:f32 = abs %x_50
+        store %x_43, %14
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_43, 260.0f
+        exit_if  # if_1
+      }
+    }
+    %x_52:f32 = load %x_43
+    store %lv, %x_52
+    %x_53:f32 = load %lv
+    %17:i32 = convert %x_53
+    %18:bool = lt %17, 250i
+    if %18 [t: %b5] {  # if_2
+      %b5 = block {  # true
+        %x_58:f32 = load %lv
+        %20:i32 = convert %x_58
+        %21:bool = lt %20, 180i
+        if %21 [t: %b6, f: %b7] {  # if_3
+          %b6 = block {  # true
+            %x_64:f32 = load %lv
+            %x_65:f32 = clamp %x_64, 1.0f, 1.0f
+            exit_if  # if_3
+          }
+          %b7 = block {  # false
+            %x_67:f32 = load_vector_element %gl_FragCoord, 1u
+            %25:bool = lt %x_67, 0.0f
+            if %25 [t: %b8] {  # if_4
+              %b8 = block {  # true
+                %x_71:f32 = load %lv
+                %27:i32 = convert %x_71
+                %28:bool = lt %27, 210i
+                if %28 [t: %b9] {  # if_5
+                  %b9 = block {  # true
+                    loop [b: %b10, c: %b11] {  # loop_1
+                      %b10 = block {  # body
+                        continue %b11
+                      }
+                      %b11 = block {  # continuing
+                        break_if false %b10
+                      }
+                    }
+                    exit_if  # if_5
+                  }
+                }
+                store %GLF_live5r, 0i
+                loop [b: %b12, c: %b13] {  # loop_2
+                  %b12 = block {  # body
+                    if true [t: %b14, f: %b15] {  # if_6
+                      %b14 = block {  # true
+                        exit_if  # if_6
+                      }
+                      %b15 = block {  # false
+                        exit_loop  # loop_2
+                      }
+                    }
+                    %x_11:i32 = load %GLF_live5_looplimiter6
+                    %30:bool = gte %x_11, 6i
+                    if %30 [t: %b16] {  # if_7
+                      %b16 = block {  # true
+                        exit_loop  # loop_2
+                      }
+                    }
+                    %x_12:i32 = load %GLF_live5_looplimiter6
+                    %32:i32 = add %x_12, 1i
+                    store %GLF_live5_looplimiter6, %32
+                    continue %b13
+                  }
+                  %b13 = block {  # continuing
+                    next_iteration %b12
+                  }
+                }
+                exit_if  # if_4
+              }
+            }
+            exit_if  # if_3
+          }
+        }
+        exit_if  # if_2
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b17 {
+  %b17 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %35:void = call %main_1
+    %36:vec4<f32> = load %x_GLF_color
+    %37:main_out = construct %36
+    ret %37
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cdbf128
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..793f5ff
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,600 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %map:ptr<private, array<i32, 256>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %pos:ptr<function, vec2<f32>, read_write> = var
+    %ipos:ptr<function, vec2<i32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %p:ptr<function, vec2<i32>, read_write> = var
+    %canwalk:ptr<function, bool, read_write> = var
+    %v:ptr<function, i32, read_write> = var
+    %directions:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %d:ptr<function, i32, read_write> = var
+    %15:vec4<f32> = load %gl_FragCoord
+    %16:vec2<f32> = swizzle %15, xy
+    %17:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %18:vec2<f32> = load %17
+    %19:vec2<f32> = div %16, %18
+    store %pos, %19
+    %20:f32 = load_vector_element %pos, 0u
+    %21:f32 = mul %20, 16.0f
+    %22:i32 = convert %21
+    %23:f32 = load_vector_element %pos, 1u
+    %24:f32 = mul %23, 16.0f
+    %25:i32 = convert %24
+    %26:vec2<i32> = construct %22, %25
+    store %ipos, %26
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %27:i32 = load %i
+        %28:bool = lt %27, 256i
+        if %28 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_78:i32 = load %i
+        %30:ptr<private, i32, read_write> = access %map, %x_78
+        store %30, 0i
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %31:i32 = load %i
+        %32:i32 = add %31, 1i
+        store %i, %32
+        next_iteration %b3
+      }
+    }
+    store %p, vec2<i32>(0i)
+    store %canwalk, true
+    store %v, 0i
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_102:ptr<function, bool, read_write> = var
+        %x_103:ptr<function, bool, read_write> = var
+        %x_122:ptr<function, bool, read_write> = var
+        %x_123:ptr<function, bool, read_write> = var
+        %x_142:ptr<function, bool, read_write> = var
+        %x_143:ptr<function, bool, read_write> = var
+        %x_162:ptr<function, bool, read_write> = var
+        %x_163:ptr<function, bool, read_write> = var
+        %41:i32 = load %v
+        %42:i32 = add %41, 1i
+        store %v, %42
+        store %directions, 0i
+        %43:i32 = load_vector_element %p, 0u
+        %x_90:bool = gt %43, 0i
+        store %x_103, %x_90
+        if %x_90 [t: %b9] {  # if_2
+          %b9 = block {  # true
+            %45:i32 = load_vector_element %p, 0u
+            %46:i32 = sub %45, 2i
+            %47:i32 = load_vector_element %p, 1u
+            %48:i32 = mul %47, 16i
+            %49:i32 = add %46, %48
+            %50:ptr<private, i32, read_write> = access %map, %49
+            %51:i32 = load %50
+            %52:bool = eq %51, 0i
+            store %x_102, %52
+            %53:bool = load %x_102
+            store %x_103, %53
+            exit_if  # if_2
+          }
+        }
+        %54:bool = load %x_103
+        if %54 [t: %b10] {  # if_3
+          %b10 = block {  # true
+            %55:i32 = load %directions
+            %56:i32 = add %55, 1i
+            store %directions, %56
+            exit_if  # if_3
+          }
+        }
+        %57:i32 = load_vector_element %p, 1u
+        %x_110:bool = gt %57, 0i
+        store %x_123, %x_110
+        if %x_110 [t: %b11] {  # if_4
+          %b11 = block {  # true
+            %59:i32 = load_vector_element %p, 0u
+            %60:i32 = load_vector_element %p, 1u
+            %61:i32 = sub %60, 2i
+            %62:i32 = mul %61, 16i
+            %63:i32 = add %59, %62
+            %64:ptr<private, i32, read_write> = access %map, %63
+            %65:i32 = load %64
+            %66:bool = eq %65, 0i
+            store %x_122, %66
+            %67:bool = load %x_122
+            store %x_123, %67
+            exit_if  # if_4
+          }
+        }
+        %68:bool = load %x_123
+        if %68 [t: %b12] {  # if_5
+          %b12 = block {  # true
+            %69:i32 = load %directions
+            %70:i32 = add %69, 1i
+            store %directions, %70
+            exit_if  # if_5
+          }
+        }
+        %71:i32 = load_vector_element %p, 0u
+        %x_130:bool = lt %71, 14i
+        store %x_143, %x_130
+        if %x_130 [t: %b13] {  # if_6
+          %b13 = block {  # true
+            %73:i32 = load_vector_element %p, 0u
+            %74:i32 = add %73, 2i
+            %75:i32 = load_vector_element %p, 1u
+            %76:i32 = mul %75, 16i
+            %77:i32 = add %74, %76
+            %78:ptr<private, i32, read_write> = access %map, %77
+            %79:i32 = load %78
+            %80:bool = eq %79, 0i
+            store %x_142, %80
+            %81:bool = load %x_142
+            store %x_143, %81
+            exit_if  # if_6
+          }
+        }
+        %82:bool = load %x_143
+        if %82 [t: %b14] {  # if_7
+          %b14 = block {  # true
+            %83:i32 = load %directions
+            %84:i32 = add %83, 1i
+            store %directions, %84
+            exit_if  # if_7
+          }
+        }
+        %85:i32 = load_vector_element %p, 1u
+        %x_150:bool = lt %85, 14i
+        store %x_163, %x_150
+        if %x_150 [t: %b15] {  # if_8
+          %b15 = block {  # true
+            %87:i32 = load_vector_element %p, 0u
+            %88:i32 = load_vector_element %p, 1u
+            %89:i32 = add %88, 2i
+            %90:i32 = mul %89, 16i
+            %91:i32 = add %87, %90
+            %92:ptr<private, i32, read_write> = access %map, %91
+            %93:i32 = load %92
+            %94:bool = eq %93, 0i
+            store %x_162, %94
+            %95:bool = load %x_162
+            store %x_163, %95
+            exit_if  # if_8
+          }
+        }
+        %96:bool = load %x_163
+        if %96 [t: %b16] {  # if_9
+          %b16 = block {  # true
+            %97:i32 = load %directions
+            %98:i32 = add %97, 1i
+            store %directions, %98
+            exit_if  # if_9
+          }
+        }
+        %x_227:ptr<function, bool, read_write> = var
+        %x_228:ptr<function, bool, read_write> = var
+        %x_240:ptr<function, bool, read_write> = var
+        %x_241:ptr<function, bool, read_write> = var
+        %x_279:ptr<function, bool, read_write> = var
+        %x_280:ptr<function, bool, read_write> = var
+        %x_292:ptr<function, bool, read_write> = var
+        %x_293:ptr<function, bool, read_write> = var
+        %x_331:ptr<function, bool, read_write> = var
+        %x_332:ptr<function, bool, read_write> = var
+        %x_344:ptr<function, bool, read_write> = var
+        %x_345:ptr<function, bool, read_write> = var
+        %x_383:ptr<function, bool, read_write> = var
+        %x_384:ptr<function, bool, read_write> = var
+        %x_396:ptr<function, bool, read_write> = var
+        %x_397:ptr<function, bool, read_write> = var
+        %115:i32 = load %directions
+        %116:bool = eq %115, 0i
+        if %116 [t: %b17, f: %b18] {  # if_10
+          %b17 = block {  # true
+            store %canwalk, false
+            store %i, 0i
+            loop [b: %b19, c: %b20] {  # loop_3
+              %b19 = block {  # body
+                %117:i32 = load %i
+                %118:bool = lt %117, 8i
+                if %118 [t: %b21, f: %b22] {  # if_11
+                  %b21 = block {  # true
+                    exit_if  # if_11
+                  }
+                  %b22 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                store %j, 0i
+                loop [b: %b23, c: %b24] {  # loop_4
+                  %b23 = block {  # body
+                    %119:i32 = load %j
+                    %120:bool = lt %119, 8i
+                    if %120 [t: %b25, f: %b26] {  # if_12
+                      %b25 = block {  # true
+                        exit_if  # if_12
+                      }
+                      %b26 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %121:i32 = load %j
+                    %122:i32 = mul %121, 2i
+                    %123:i32 = load %i
+                    %124:i32 = mul %123, 2i
+                    %125:i32 = mul %124, 16i
+                    %126:i32 = add %122, %125
+                    %127:ptr<private, i32, read_write> = access %map, %126
+                    %128:i32 = load %127
+                    %129:bool = eq %128, 0i
+                    if %129 [t: %b27] {  # if_13
+                      %b27 = block {  # true
+                        %130:i32 = load %j
+                        %131:i32 = mul %130, 2i
+                        store_vector_element %p, 0u, %131
+                        %132:i32 = load %i
+                        %133:i32 = mul %132, 2i
+                        store_vector_element %p, 1u, %133
+                        store %canwalk, true
+                        exit_if  # if_13
+                      }
+                    }
+                    continue %b24
+                  }
+                  %b24 = block {  # continuing
+                    %134:i32 = load %j
+                    %135:i32 = add %134, 1i
+                    store %j, %135
+                    next_iteration %b23
+                  }
+                }
+                continue %b20
+              }
+              %b20 = block {  # continuing
+                %136:i32 = load %i
+                %137:i32 = add %136, 1i
+                store %i, %137
+                next_iteration %b19
+              }
+            }
+            %x_209:i32 = load_vector_element %p, 0u
+            %x_211:i32 = load_vector_element %p, 1u
+            %140:i32 = mul %x_211, 16i
+            %141:i32 = add %x_209, %140
+            %142:ptr<private, i32, read_write> = access %map, %141
+            store %142, 1i
+            exit_if  # if_10
+          }
+          %b18 = block {  # false
+            %143:i32 = load %v
+            %144:i32 = load %directions
+            %145:i32 = mod %143, %144
+            store %d, %145
+            %146:i32 = load %v
+            %147:i32 = load %directions
+            %148:i32 = add %146, %147
+            store %v, %148
+            %149:i32 = load %d
+            %x_222:bool = gte %149, 0i
+            store %x_228, %x_222
+            if %x_222 [t: %b28] {  # if_14
+              %b28 = block {  # true
+                %151:i32 = load_vector_element %p, 0u
+                %152:bool = gt %151, 0i
+                store %x_227, %152
+                %153:bool = load %x_227
+                store %x_228, %153
+                exit_if  # if_14
+              }
+            }
+            %154:bool = load %x_228
+            store %x_241, %154
+            %155:bool = load %x_228
+            if %155 [t: %b29] {  # if_15
+              %b29 = block {  # true
+                %156:i32 = load_vector_element %p, 0u
+                %157:i32 = sub %156, 2i
+                %158:i32 = load_vector_element %p, 1u
+                %159:i32 = mul %158, 16i
+                %160:i32 = add %157, %159
+                %161:ptr<private, i32, read_write> = access %map, %160
+                %162:i32 = load %161
+                %163:bool = eq %162, 0i
+                store %x_240, %163
+                %164:bool = load %x_240
+                store %x_241, %164
+                exit_if  # if_15
+              }
+            }
+            %165:bool = load %x_241
+            if %165 [t: %b30] {  # if_16
+              %b30 = block {  # true
+                %166:i32 = load %d
+                %167:i32 = sub %166, 1i
+                store %d, %167
+                %x_247:i32 = load_vector_element %p, 0u
+                %x_249:i32 = load_vector_element %p, 1u
+                %170:i32 = mul %x_249, 16i
+                %171:i32 = add %x_247, %170
+                %172:ptr<private, i32, read_write> = access %map, %171
+                store %172, 1i
+                %x_254:i32 = load_vector_element %p, 0u
+                %x_257:i32 = load_vector_element %p, 1u
+                %175:i32 = sub %x_254, 1i
+                %176:i32 = mul %x_257, 16i
+                %177:i32 = add %175, %176
+                %178:ptr<private, i32, read_write> = access %map, %177
+                store %178, 1i
+                %x_262:i32 = load_vector_element %p, 0u
+                %x_265:i32 = load_vector_element %p, 1u
+                %181:i32 = sub %x_262, 2i
+                %182:i32 = mul %x_265, 16i
+                %183:i32 = add %181, %182
+                %184:ptr<private, i32, read_write> = access %map, %183
+                store %184, 1i
+                %185:i32 = load_vector_element %p, 0u
+                %186:i32 = sub %185, 2i
+                store_vector_element %p, 0u, %186
+                exit_if  # if_16
+              }
+            }
+            %187:i32 = load %d
+            %x_274:bool = gte %187, 0i
+            store %x_280, %x_274
+            if %x_274 [t: %b31] {  # if_17
+              %b31 = block {  # true
+                %189:i32 = load_vector_element %p, 1u
+                %190:bool = gt %189, 0i
+                store %x_279, %190
+                %191:bool = load %x_279
+                store %x_280, %191
+                exit_if  # if_17
+              }
+            }
+            %192:bool = load %x_280
+            store %x_293, %192
+            %193:bool = load %x_280
+            if %193 [t: %b32] {  # if_18
+              %b32 = block {  # true
+                %194:i32 = load_vector_element %p, 0u
+                %195:i32 = load_vector_element %p, 1u
+                %196:i32 = sub %195, 2i
+                %197:i32 = mul %196, 16i
+                %198:i32 = add %194, %197
+                %199:ptr<private, i32, read_write> = access %map, %198
+                %200:i32 = load %199
+                %201:bool = eq %200, 0i
+                store %x_292, %201
+                %202:bool = load %x_292
+                store %x_293, %202
+                exit_if  # if_18
+              }
+            }
+            %203:bool = load %x_293
+            if %203 [t: %b33] {  # if_19
+              %b33 = block {  # true
+                %204:i32 = load %d
+                %205:i32 = sub %204, 1i
+                store %d, %205
+                %x_299:i32 = load_vector_element %p, 0u
+                %x_301:i32 = load_vector_element %p, 1u
+                %208:i32 = mul %x_301, 16i
+                %209:i32 = add %x_299, %208
+                %210:ptr<private, i32, read_write> = access %map, %209
+                store %210, 1i
+                %x_306:i32 = load_vector_element %p, 0u
+                %x_308:i32 = load_vector_element %p, 1u
+                %213:i32 = sub %x_308, 1i
+                %214:i32 = mul %213, 16i
+                %215:i32 = add %x_306, %214
+                %216:ptr<private, i32, read_write> = access %map, %215
+                store %216, 1i
+                %x_314:i32 = load_vector_element %p, 0u
+                %x_316:i32 = load_vector_element %p, 1u
+                %219:i32 = sub %x_316, 2i
+                %220:i32 = mul %219, 16i
+                %221:i32 = add %x_314, %220
+                %222:ptr<private, i32, read_write> = access %map, %221
+                store %222, 1i
+                %223:i32 = load_vector_element %p, 1u
+                %224:i32 = sub %223, 2i
+                store_vector_element %p, 1u, %224
+                exit_if  # if_19
+              }
+            }
+            %225:i32 = load %d
+            %x_326:bool = gte %225, 0i
+            store %x_332, %x_326
+            if %x_326 [t: %b34] {  # if_20
+              %b34 = block {  # true
+                %227:i32 = load_vector_element %p, 0u
+                %228:bool = lt %227, 14i
+                store %x_331, %228
+                %229:bool = load %x_331
+                store %x_332, %229
+                exit_if  # if_20
+              }
+            }
+            %230:bool = load %x_332
+            store %x_345, %230
+            %231:bool = load %x_332
+            if %231 [t: %b35] {  # if_21
+              %b35 = block {  # true
+                %232:i32 = load_vector_element %p, 0u
+                %233:i32 = add %232, 2i
+                %234:i32 = load_vector_element %p, 1u
+                %235:i32 = mul %234, 16i
+                %236:i32 = add %233, %235
+                %237:ptr<private, i32, read_write> = access %map, %236
+                %238:i32 = load %237
+                %239:bool = eq %238, 0i
+                store %x_344, %239
+                %240:bool = load %x_344
+                store %x_345, %240
+                exit_if  # if_21
+              }
+            }
+            %241:bool = load %x_345
+            if %241 [t: %b36] {  # if_22
+              %b36 = block {  # true
+                %242:i32 = load %d
+                %243:i32 = sub %242, 1i
+                store %d, %243
+                %x_351:i32 = load_vector_element %p, 0u
+                %x_353:i32 = load_vector_element %p, 1u
+                %246:i32 = mul %x_353, 16i
+                %247:i32 = add %x_351, %246
+                %248:ptr<private, i32, read_write> = access %map, %247
+                store %248, 1i
+                %x_358:i32 = load_vector_element %p, 0u
+                %x_361:i32 = load_vector_element %p, 1u
+                %251:i32 = add %x_358, 1i
+                %252:i32 = mul %x_361, 16i
+                %253:i32 = add %251, %252
+                %254:ptr<private, i32, read_write> = access %map, %253
+                store %254, 1i
+                %x_366:i32 = load_vector_element %p, 0u
+                %x_369:i32 = load_vector_element %p, 1u
+                %257:i32 = add %x_366, 2i
+                %258:i32 = mul %x_369, 16i
+                %259:i32 = add %257, %258
+                %260:ptr<private, i32, read_write> = access %map, %259
+                store %260, 1i
+                %261:i32 = load_vector_element %p, 0u
+                %262:i32 = add %261, 2i
+                store_vector_element %p, 0u, %262
+                exit_if  # if_22
+              }
+            }
+            %263:i32 = load %d
+            %x_378:bool = gte %263, 0i
+            store %x_384, %x_378
+            if %x_378 [t: %b37] {  # if_23
+              %b37 = block {  # true
+                %265:i32 = load_vector_element %p, 1u
+                %266:bool = lt %265, 14i
+                store %x_383, %266
+                %267:bool = load %x_383
+                store %x_384, %267
+                exit_if  # if_23
+              }
+            }
+            %268:bool = load %x_384
+            store %x_397, %268
+            %269:bool = load %x_384
+            if %269 [t: %b38] {  # if_24
+              %b38 = block {  # true
+                %270:i32 = load_vector_element %p, 0u
+                %271:i32 = load_vector_element %p, 1u
+                %272:i32 = add %271, 2i
+                %273:i32 = mul %272, 16i
+                %274:i32 = add %270, %273
+                %275:ptr<private, i32, read_write> = access %map, %274
+                %276:i32 = load %275
+                %277:bool = eq %276, 0i
+                store %x_396, %277
+                %278:bool = load %x_396
+                store %x_397, %278
+                exit_if  # if_24
+              }
+            }
+            %279:bool = load %x_397
+            if %279 [t: %b39] {  # if_25
+              %b39 = block {  # true
+                %280:i32 = load %d
+                %281:i32 = sub %280, 1i
+                store %d, %281
+                %x_403:i32 = load_vector_element %p, 0u
+                %x_405:i32 = load_vector_element %p, 1u
+                %284:i32 = mul %x_405, 16i
+                %285:i32 = add %x_403, %284
+                %286:ptr<private, i32, read_write> = access %map, %285
+                store %286, 1i
+                %x_410:i32 = load_vector_element %p, 0u
+                %x_412:i32 = load_vector_element %p, 1u
+                %289:i32 = add %x_412, 1i
+                %290:i32 = mul %289, 16i
+                %291:i32 = add %x_410, %290
+                %292:ptr<private, i32, read_write> = access %map, %291
+                store %292, 1i
+                %x_418:i32 = load_vector_element %p, 0u
+                %x_420:i32 = load_vector_element %p, 1u
+                %295:i32 = add %x_420, 2i
+                %296:i32 = mul %295, 16i
+                %297:i32 = add %x_418, %296
+                %298:ptr<private, i32, read_write> = access %map, %297
+                store %298, 1i
+                %299:i32 = load_vector_element %p, 1u
+                %300:i32 = add %299, 2i
+                store_vector_element %p, 1u, %300
+                exit_if  # if_25
+              }
+            }
+            exit_if  # if_10
+          }
+        }
+        %301:i32 = load_vector_element %ipos, 1u
+        %302:i32 = mul %301, 16i
+        %303:i32 = load_vector_element %ipos, 0u
+        %304:i32 = add %302, %303
+        %305:ptr<private, i32, read_write> = access %map, %304
+        %306:i32 = load %305
+        %307:bool = eq %306, 1i
+        if %307 [t: %b40] {  # if_26
+          %b40 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f)
+            ret
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %x_440:bool = load %canwalk
+        %309:bool = eq %x_440, false
+        break_if %309 %b7
+      }
+    }
+    store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b41 {
+  %b41 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %312:void = call %main_1
+    %313:vec4<f32> = load %x_GLF_color
+    %314:main_out = construct %313
+    ret %314
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..44aa392
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,598 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %map:ptr<private, array<i32, 256>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %pos:ptr<function, vec2<f32>, read_write> = var
+    %ipos:ptr<function, vec2<i32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %p:ptr<function, vec2<i32>, read_write> = var
+    %canwalk:ptr<function, bool, read_write> = var
+    %v:ptr<function, i32, read_write> = var
+    %directions:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %d:ptr<function, i32, read_write> = var
+    %x_57:vec4<f32> = load %gl_FragCoord
+    %16:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %x_60:vec2<f32> = load %16
+    %18:f32 = access %x_57, 0u
+    %19:f32 = access %x_57, 1u
+    %20:vec2<f32> = construct %18, %19
+    %21:vec2<f32> = div %20, %x_60
+    store %pos, %21
+    %x_63:f32 = load_vector_element %pos, 0u
+    %x_67:f32 = load_vector_element %pos, 1u
+    %24:f32 = mul %x_63, 16.0f
+    %25:i32 = convert %24
+    %26:f32 = mul %x_67, 16.0f
+    %27:i32 = convert %26
+    %28:vec2<i32> = construct %25, %27
+    store %ipos, %28
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_75:i32 = load %i
+        %30:bool = lt %x_75, 256i
+        if %30 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_78:i32 = load %i
+        %32:ptr<private, i32, read_write> = access %map, %x_78
+        store %32, 0i
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_80:i32 = load %i
+        %34:i32 = add %x_80, 1i
+        store %i, %34
+        next_iteration %b3
+      }
+    }
+    store %p, vec2<i32>(0i)
+    store %canwalk, true
+    store %v, 0i
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_102:ptr<function, bool, read_write> = var
+        %x_122:ptr<function, bool, read_write> = var
+        %x_142:ptr<function, bool, read_write> = var
+        %x_162:ptr<function, bool, read_write> = var
+        %x_103_phi:ptr<function, bool, read_write> = var
+        %x_123_phi:ptr<function, bool, read_write> = var
+        %x_143_phi:ptr<function, bool, read_write> = var
+        %x_163_phi:ptr<function, bool, read_write> = var
+        %x_86:i32 = load %v
+        %44:i32 = add %x_86, 1i
+        store %v, %44
+        store %directions, 0i
+        %x_89:i32 = load_vector_element %p, 0u
+        %x_90:bool = gt %x_89, 0i
+        store %x_103_phi, %x_90
+        if %x_90 [t: %b9] {  # if_2
+          %b9 = block {  # true
+            %x_94:i32 = load_vector_element %p, 0u
+            %x_97:i32 = load_vector_element %p, 1u
+            %49:i32 = sub %x_94, 2i
+            %50:i32 = mul %x_97, 16i
+            %51:i32 = add %49, %50
+            %52:ptr<private, i32, read_write> = access %map, %51
+            %x_101:i32 = load %52
+            %54:bool = eq %x_101, 0i
+            store %x_102, %54
+            %55:bool = load %x_102
+            store %x_103_phi, %55
+            exit_if  # if_2
+          }
+        }
+        %x_103:bool = load %x_103_phi
+        if %x_103 [t: %b10] {  # if_3
+          %b10 = block {  # true
+            %x_106:i32 = load %directions
+            %58:i32 = add %x_106, 1i
+            store %directions, %58
+            exit_if  # if_3
+          }
+        }
+        %x_109:i32 = load_vector_element %p, 1u
+        %x_110:bool = gt %x_109, 0i
+        store %x_123_phi, %x_110
+        if %x_110 [t: %b11] {  # if_4
+          %b11 = block {  # true
+            %x_114:i32 = load_vector_element %p, 0u
+            %x_116:i32 = load_vector_element %p, 1u
+            %63:i32 = sub %x_116, 2i
+            %64:i32 = mul %63, 16i
+            %65:i32 = add %x_114, %64
+            %66:ptr<private, i32, read_write> = access %map, %65
+            %x_121:i32 = load %66
+            %68:bool = eq %x_121, 0i
+            store %x_122, %68
+            %69:bool = load %x_122
+            store %x_123_phi, %69
+            exit_if  # if_4
+          }
+        }
+        %x_123:bool = load %x_123_phi
+        if %x_123 [t: %b12] {  # if_5
+          %b12 = block {  # true
+            %x_126:i32 = load %directions
+            %72:i32 = add %x_126, 1i
+            store %directions, %72
+            exit_if  # if_5
+          }
+        }
+        %x_129:i32 = load_vector_element %p, 0u
+        %x_130:bool = lt %x_129, 14i
+        store %x_143_phi, %x_130
+        if %x_130 [t: %b13] {  # if_6
+          %b13 = block {  # true
+            %x_134:i32 = load_vector_element %p, 0u
+            %x_137:i32 = load_vector_element %p, 1u
+            %77:i32 = add %x_134, 2i
+            %78:i32 = mul %x_137, 16i
+            %79:i32 = add %77, %78
+            %80:ptr<private, i32, read_write> = access %map, %79
+            %x_141:i32 = load %80
+            %82:bool = eq %x_141, 0i
+            store %x_142, %82
+            %83:bool = load %x_142
+            store %x_143_phi, %83
+            exit_if  # if_6
+          }
+        }
+        %x_143:bool = load %x_143_phi
+        if %x_143 [t: %b14] {  # if_7
+          %b14 = block {  # true
+            %x_146:i32 = load %directions
+            %86:i32 = add %x_146, 1i
+            store %directions, %86
+            exit_if  # if_7
+          }
+        }
+        %x_149:i32 = load_vector_element %p, 1u
+        %x_150:bool = lt %x_149, 14i
+        store %x_163_phi, %x_150
+        if %x_150 [t: %b15] {  # if_8
+          %b15 = block {  # true
+            %x_154:i32 = load_vector_element %p, 0u
+            %x_156:i32 = load_vector_element %p, 1u
+            %91:i32 = add %x_156, 2i
+            %92:i32 = mul %91, 16i
+            %93:i32 = add %x_154, %92
+            %94:ptr<private, i32, read_write> = access %map, %93
+            %x_161:i32 = load %94
+            %96:bool = eq %x_161, 0i
+            store %x_162, %96
+            %97:bool = load %x_162
+            store %x_163_phi, %97
+            exit_if  # if_8
+          }
+        }
+        %x_163:bool = load %x_163_phi
+        if %x_163 [t: %b16] {  # if_9
+          %b16 = block {  # true
+            %x_166:i32 = load %directions
+            %100:i32 = add %x_166, 1i
+            store %directions, %100
+            exit_if  # if_9
+          }
+        }
+        %x_227:ptr<function, bool, read_write> = var
+        %x_240:ptr<function, bool, read_write> = var
+        %x_279:ptr<function, bool, read_write> = var
+        %x_292:ptr<function, bool, read_write> = var
+        %x_331:ptr<function, bool, read_write> = var
+        %x_344:ptr<function, bool, read_write> = var
+        %x_383:ptr<function, bool, read_write> = var
+        %x_396:ptr<function, bool, read_write> = var
+        %x_228_phi:ptr<function, bool, read_write> = var
+        %x_241_phi:ptr<function, bool, read_write> = var
+        %x_280_phi:ptr<function, bool, read_write> = var
+        %x_293_phi:ptr<function, bool, read_write> = var
+        %x_332_phi:ptr<function, bool, read_write> = var
+        %x_345_phi:ptr<function, bool, read_write> = var
+        %x_384_phi:ptr<function, bool, read_write> = var
+        %x_397_phi:ptr<function, bool, read_write> = var
+        %x_168:i32 = load %directions
+        %118:bool = eq %x_168, 0i
+        if %118 [t: %b17, f: %b18] {  # if_10
+          %b17 = block {  # true
+            store %canwalk, false
+            store %i, 0i
+            loop [b: %b19, c: %b20] {  # loop_3
+              %b19 = block {  # body
+                %x_177:i32 = load %i
+                %120:bool = lt %x_177, 8i
+                if %120 [t: %b21, f: %b22] {  # if_11
+                  %b21 = block {  # true
+                    exit_if  # if_11
+                  }
+                  %b22 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                store %j, 0i
+                loop [b: %b23, c: %b24] {  # loop_4
+                  %b23 = block {  # body
+                    %x_184:i32 = load %j
+                    %122:bool = lt %x_184, 8i
+                    if %122 [t: %b25, f: %b26] {  # if_12
+                      %b25 = block {  # true
+                        exit_if  # if_12
+                      }
+                      %b26 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %x_187:i32 = load %j
+                    %x_189:i32 = load %i
+                    %125:i32 = mul %x_187, 2i
+                    %126:i32 = mul %x_189, 2i
+                    %127:i32 = mul %126, 16i
+                    %128:i32 = add %125, %127
+                    %129:ptr<private, i32, read_write> = access %map, %128
+                    %x_194:i32 = load %129
+                    %131:bool = eq %x_194, 0i
+                    if %131 [t: %b27] {  # if_13
+                      %b27 = block {  # true
+                        %x_198:i32 = load %j
+                        %133:i32 = mul %x_198, 2i
+                        store_vector_element %p, 0u, %133
+                        %x_201:i32 = load %i
+                        %135:i32 = mul %x_201, 2i
+                        store_vector_element %p, 1u, %135
+                        store %canwalk, true
+                        exit_if  # if_13
+                      }
+                    }
+                    continue %b24
+                  }
+                  %b24 = block {  # continuing
+                    %x_204:i32 = load %j
+                    %137:i32 = add %x_204, 1i
+                    store %j, %137
+                    next_iteration %b23
+                  }
+                }
+                continue %b20
+              }
+              %b20 = block {  # continuing
+                %x_206:i32 = load %i
+                %139:i32 = add %x_206, 1i
+                store %i, %139
+                next_iteration %b19
+              }
+            }
+            %x_209:i32 = load_vector_element %p, 0u
+            %x_211:i32 = load_vector_element %p, 1u
+            %142:i32 = mul %x_211, 16i
+            %143:i32 = add %x_209, %142
+            %144:ptr<private, i32, read_write> = access %map, %143
+            store %144, 1i
+            exit_if  # if_10
+          }
+          %b18 = block {  # false
+            %x_215:i32 = load %v
+            %x_216:i32 = load %directions
+            %147:i32 = mod %x_215, %x_216
+            store %d, %147
+            %x_218:i32 = load %directions
+            %x_219:i32 = load %v
+            %150:i32 = add %x_219, %x_218
+            store %v, %150
+            %x_221:i32 = load %d
+            %x_222:bool = gte %x_221, 0i
+            store %x_228_phi, %x_222
+            if %x_222 [t: %b28] {  # if_14
+              %b28 = block {  # true
+                %x_226:i32 = load_vector_element %p, 0u
+                %154:bool = gt %x_226, 0i
+                store %x_227, %154
+                %155:bool = load %x_227
+                store %x_228_phi, %155
+                exit_if  # if_14
+              }
+            }
+            %x_228:bool = load %x_228_phi
+            store %x_241_phi, %x_228
+            if %x_228 [t: %b29] {  # if_15
+              %b29 = block {  # true
+                %x_232:i32 = load_vector_element %p, 0u
+                %x_235:i32 = load_vector_element %p, 1u
+                %159:i32 = sub %x_232, 2i
+                %160:i32 = mul %x_235, 16i
+                %161:i32 = add %159, %160
+                %162:ptr<private, i32, read_write> = access %map, %161
+                %x_239:i32 = load %162
+                %164:bool = eq %x_239, 0i
+                store %x_240, %164
+                %165:bool = load %x_240
+                store %x_241_phi, %165
+                exit_if  # if_15
+              }
+            }
+            %x_241:bool = load %x_241_phi
+            if %x_241 [t: %b30] {  # if_16
+              %b30 = block {  # true
+                %x_244:i32 = load %d
+                %168:i32 = sub %x_244, 1i
+                store %d, %168
+                %x_247:i32 = load_vector_element %p, 0u
+                %x_249:i32 = load_vector_element %p, 1u
+                %171:i32 = mul %x_249, 16i
+                %172:i32 = add %x_247, %171
+                %173:ptr<private, i32, read_write> = access %map, %172
+                store %173, 1i
+                %x_254:i32 = load_vector_element %p, 0u
+                %x_257:i32 = load_vector_element %p, 1u
+                %176:i32 = sub %x_254, 1i
+                %177:i32 = mul %x_257, 16i
+                %178:i32 = add %176, %177
+                %179:ptr<private, i32, read_write> = access %map, %178
+                store %179, 1i
+                %x_262:i32 = load_vector_element %p, 0u
+                %x_265:i32 = load_vector_element %p, 1u
+                %182:i32 = sub %x_262, 2i
+                %183:i32 = mul %x_265, 16i
+                %184:i32 = add %182, %183
+                %185:ptr<private, i32, read_write> = access %map, %184
+                store %185, 1i
+                %x_270:i32 = load_vector_element %p, 0u
+                %187:i32 = sub %x_270, 2i
+                store_vector_element %p, 0u, %187
+                exit_if  # if_16
+              }
+            }
+            %x_273:i32 = load %d
+            %x_274:bool = gte %x_273, 0i
+            store %x_280_phi, %x_274
+            if %x_274 [t: %b31] {  # if_17
+              %b31 = block {  # true
+                %x_278:i32 = load_vector_element %p, 1u
+                %191:bool = gt %x_278, 0i
+                store %x_279, %191
+                %192:bool = load %x_279
+                store %x_280_phi, %192
+                exit_if  # if_17
+              }
+            }
+            %x_280:bool = load %x_280_phi
+            store %x_293_phi, %x_280
+            if %x_280 [t: %b32] {  # if_18
+              %b32 = block {  # true
+                %x_284:i32 = load_vector_element %p, 0u
+                %x_286:i32 = load_vector_element %p, 1u
+                %196:i32 = sub %x_286, 2i
+                %197:i32 = mul %196, 16i
+                %198:i32 = add %x_284, %197
+                %199:ptr<private, i32, read_write> = access %map, %198
+                %x_291:i32 = load %199
+                %201:bool = eq %x_291, 0i
+                store %x_292, %201
+                %202:bool = load %x_292
+                store %x_293_phi, %202
+                exit_if  # if_18
+              }
+            }
+            %x_293:bool = load %x_293_phi
+            if %x_293 [t: %b33] {  # if_19
+              %b33 = block {  # true
+                %x_296:i32 = load %d
+                %205:i32 = sub %x_296, 1i
+                store %d, %205
+                %x_299:i32 = load_vector_element %p, 0u
+                %x_301:i32 = load_vector_element %p, 1u
+                %208:i32 = mul %x_301, 16i
+                %209:i32 = add %x_299, %208
+                %210:ptr<private, i32, read_write> = access %map, %209
+                store %210, 1i
+                %x_306:i32 = load_vector_element %p, 0u
+                %x_308:i32 = load_vector_element %p, 1u
+                %213:i32 = sub %x_308, 1i
+                %214:i32 = mul %213, 16i
+                %215:i32 = add %x_306, %214
+                %216:ptr<private, i32, read_write> = access %map, %215
+                store %216, 1i
+                %x_314:i32 = load_vector_element %p, 0u
+                %x_316:i32 = load_vector_element %p, 1u
+                %219:i32 = sub %x_316, 2i
+                %220:i32 = mul %219, 16i
+                %221:i32 = add %x_314, %220
+                %222:ptr<private, i32, read_write> = access %map, %221
+                store %222, 1i
+                %x_322:i32 = load_vector_element %p, 1u
+                %224:i32 = sub %x_322, 2i
+                store_vector_element %p, 1u, %224
+                exit_if  # if_19
+              }
+            }
+            %x_325:i32 = load %d
+            %x_326:bool = gte %x_325, 0i
+            store %x_332_phi, %x_326
+            if %x_326 [t: %b34] {  # if_20
+              %b34 = block {  # true
+                %x_330:i32 = load_vector_element %p, 0u
+                %228:bool = lt %x_330, 14i
+                store %x_331, %228
+                %229:bool = load %x_331
+                store %x_332_phi, %229
+                exit_if  # if_20
+              }
+            }
+            %x_332:bool = load %x_332_phi
+            store %x_345_phi, %x_332
+            if %x_332 [t: %b35] {  # if_21
+              %b35 = block {  # true
+                %x_336:i32 = load_vector_element %p, 0u
+                %x_339:i32 = load_vector_element %p, 1u
+                %233:i32 = add %x_336, 2i
+                %234:i32 = mul %x_339, 16i
+                %235:i32 = add %233, %234
+                %236:ptr<private, i32, read_write> = access %map, %235
+                %x_343:i32 = load %236
+                %238:bool = eq %x_343, 0i
+                store %x_344, %238
+                %239:bool = load %x_344
+                store %x_345_phi, %239
+                exit_if  # if_21
+              }
+            }
+            %x_345:bool = load %x_345_phi
+            if %x_345 [t: %b36] {  # if_22
+              %b36 = block {  # true
+                %x_348:i32 = load %d
+                %242:i32 = sub %x_348, 1i
+                store %d, %242
+                %x_351:i32 = load_vector_element %p, 0u
+                %x_353:i32 = load_vector_element %p, 1u
+                %245:i32 = mul %x_353, 16i
+                %246:i32 = add %x_351, %245
+                %247:ptr<private, i32, read_write> = access %map, %246
+                store %247, 1i
+                %x_358:i32 = load_vector_element %p, 0u
+                %x_361:i32 = load_vector_element %p, 1u
+                %250:i32 = add %x_358, 1i
+                %251:i32 = mul %x_361, 16i
+                %252:i32 = add %250, %251
+                %253:ptr<private, i32, read_write> = access %map, %252
+                store %253, 1i
+                %x_366:i32 = load_vector_element %p, 0u
+                %x_369:i32 = load_vector_element %p, 1u
+                %256:i32 = add %x_366, 2i
+                %257:i32 = mul %x_369, 16i
+                %258:i32 = add %256, %257
+                %259:ptr<private, i32, read_write> = access %map, %258
+                store %259, 1i
+                %x_374:i32 = load_vector_element %p, 0u
+                %261:i32 = add %x_374, 2i
+                store_vector_element %p, 0u, %261
+                exit_if  # if_22
+              }
+            }
+            %x_377:i32 = load %d
+            %x_378:bool = gte %x_377, 0i
+            store %x_384_phi, %x_378
+            if %x_378 [t: %b37] {  # if_23
+              %b37 = block {  # true
+                %x_382:i32 = load_vector_element %p, 1u
+                %265:bool = lt %x_382, 14i
+                store %x_383, %265
+                %266:bool = load %x_383
+                store %x_384_phi, %266
+                exit_if  # if_23
+              }
+            }
+            %x_384:bool = load %x_384_phi
+            store %x_397_phi, %x_384
+            if %x_384 [t: %b38] {  # if_24
+              %b38 = block {  # true
+                %x_388:i32 = load_vector_element %p, 0u
+                %x_390:i32 = load_vector_element %p, 1u
+                %270:i32 = add %x_390, 2i
+                %271:i32 = mul %270, 16i
+                %272:i32 = add %x_388, %271
+                %273:ptr<private, i32, read_write> = access %map, %272
+                %x_395:i32 = load %273
+                %275:bool = eq %x_395, 0i
+                store %x_396, %275
+                %276:bool = load %x_396
+                store %x_397_phi, %276
+                exit_if  # if_24
+              }
+            }
+            %x_397:bool = load %x_397_phi
+            if %x_397 [t: %b39] {  # if_25
+              %b39 = block {  # true
+                %x_400:i32 = load %d
+                %279:i32 = sub %x_400, 1i
+                store %d, %279
+                %x_403:i32 = load_vector_element %p, 0u
+                %x_405:i32 = load_vector_element %p, 1u
+                %282:i32 = mul %x_405, 16i
+                %283:i32 = add %x_403, %282
+                %284:ptr<private, i32, read_write> = access %map, %283
+                store %284, 1i
+                %x_410:i32 = load_vector_element %p, 0u
+                %x_412:i32 = load_vector_element %p, 1u
+                %287:i32 = add %x_412, 1i
+                %288:i32 = mul %287, 16i
+                %289:i32 = add %x_410, %288
+                %290:ptr<private, i32, read_write> = access %map, %289
+                store %290, 1i
+                %x_418:i32 = load_vector_element %p, 0u
+                %x_420:i32 = load_vector_element %p, 1u
+                %293:i32 = add %x_420, 2i
+                %294:i32 = mul %293, 16i
+                %295:i32 = add %x_418, %294
+                %296:ptr<private, i32, read_write> = access %map, %295
+                store %296, 1i
+                %x_426:i32 = load_vector_element %p, 1u
+                %298:i32 = add %x_426, 2i
+                store_vector_element %p, 1u, %298
+                exit_if  # if_25
+              }
+            }
+            exit_if  # if_10
+          }
+        }
+        %x_430:i32 = load_vector_element %ipos, 1u
+        %x_433:i32 = load_vector_element %ipos, 0u
+        %301:i32 = mul %x_430, 16i
+        %302:i32 = add %301, %x_433
+        %303:ptr<private, i32, read_write> = access %map, %302
+        %x_436:i32 = load %303
+        %305:bool = eq %x_436, 1i
+        if %305 [t: %b40] {  # if_26
+          %b40 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f)
+            ret
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %x_440:bool = load %canwalk
+        %307:bool = eq %x_440, false
+        break_if %307 %b7
+      }
+    }
+    store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b41 {
+  %b41 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %310:void = call %main_1
+    %311:vec4<f32> = load %x_GLF_color
+    %312:main_out = construct %311
+    ret %312
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..753e982
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.spvasm.expected.ir.msl
@@ -0,0 +1,331 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %x_51:ptr<function, f32, read_write> = var
+    %x_55:ptr<function, f32, read_write> = var
+    %x_58:ptr<function, i32, read_write> = var
+    %x_56:ptr<function, f32, read_write> = var
+    %x_81:ptr<function, f32, read_write> = var
+    %x_82:ptr<function, f32, read_write> = var
+    %x_83:ptr<function, bool, read_write> = var
+    %x_85:ptr<function, f32, read_write> = var
+    %x_118:ptr<function, f32, read_write> = var
+    %x_119:ptr<function, f32, read_write> = var
+    %x_122:ptr<function, f32, read_write> = var
+    %x_129:ptr<function, i32, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %18:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %19:f32 = load_vector_element %18, 0u
+    %20:f32 = mul %19, 0.125f
+    %x_49:f32 = round %20
+    %22:f32 = load_vector_element %gl_FragCoord, 0u
+    store %x_51, %22
+    switch 0u [c: (default, %b3)] {  # switch_1
+      %b3 = block {  # case
+        store %x_55, -0.5f
+        store %x_58, 1i
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %x_68:ptr<function, f32, read_write> = var
+            %x_76:ptr<function, f32, read_write> = var
+            %x_59:ptr<function, i32, read_write> = var
+            store %x_81, 0.0f
+            %26:f32 = load %x_55
+            store %x_82, %26
+            store %x_83, false
+            %27:i32 = load %x_58
+            %28:bool = lt %27, 800i
+            if %28 [t: %b6, f: %b7] {  # if_1
+              %b6 = block {  # true
+                exit_if  # if_1
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            %x_75:ptr<function, f32, read_write> = var
+            %30:i32 = load %x_58
+            %31:i32 = mod %30, 32i
+            %32:bool = eq %31, 0i
+            if %32 [t: %b8, f: %b9] {  # if_2
+              %b8 = block {  # true
+                %33:f32 = load %x_55
+                %34:f32 = add %33, 0.40000000596046447754f
+                store %x_68, %34
+                %35:f32 = load %x_68
+                store %x_56, %35
+                exit_if  # if_2
+              }
+              %b9 = block {  # false
+                %36:f32 = load %x_55
+                store %x_76, %36
+                %37:i32 = load %x_58
+                %38:f32 = convert %37
+                %39:f32 = round %x_49
+                %40:i32 = load %x_58
+                %41:f32 = convert %40
+                %42:f32 = round %x_49
+                %43:f32 = div %41, %42
+                %44:f32 = floor %43
+                %45:f32 = mul %39, %44
+                %46:f32 = sub %38, %45
+                %47:bool = lte %46, 0.00999999977648258209f
+                if %47 [t: %b10] {  # if_3
+                  %b10 = block {  # true
+                    %48:f32 = load %x_55
+                    %49:f32 = add %48, 100.0f
+                    store %x_75, %49
+                    %50:f32 = load %x_75
+                    store %x_76, %50
+                    exit_if  # if_3
+                  }
+                }
+                %51:f32 = load %x_76
+                store %x_56, %51
+                exit_if  # if_2
+              }
+            }
+            %52:i32 = load %x_58
+            %53:f32 = convert %52
+            %54:f32 = load %x_51
+            %55:bool = gte %53, %54
+            if %55 [t: %b11] {  # if_4
+              %b11 = block {  # true
+                %56:f32 = load %x_56
+                store %x_81, %56
+                %57:f32 = load %x_56
+                store %x_82, %57
+                store %x_83, true
+                exit_loop  # loop_1
+              }
+            }
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            %58:i32 = load %x_58
+            %59:i32 = add %58, 1i
+            store %x_59, %59
+            %60:f32 = load %x_56
+            store %x_55, %60
+            %61:i32 = load %x_59
+            store %x_58, %61
+            next_iteration %b4
+          }
+        }
+        %62:f32 = load %x_81
+        store %x_85, %62
+        %63:bool = load %x_83
+        if %63 [t: %b12] {  # if_5
+          %b12 = block {  # true
+            exit_switch  # switch_1
+          }
+        }
+        %64:f32 = load %x_82
+        store %x_85, %64
+        exit_switch  # switch_1
+      }
+    }
+    %x_88:ptr<function, f32, read_write> = var
+    %x_92:ptr<function, f32, read_write> = var
+    %x_95:ptr<function, i32, read_write> = var
+    %x_93:ptr<function, f32, read_write> = var
+    %x_120:ptr<function, bool, read_write> = var
+    %70:f32 = load %x_85
+    store_vector_element %c, 0u, %70
+    %71:f32 = load_vector_element %gl_FragCoord, 1u
+    store %x_88, %71
+    switch 0u [c: (default, %b13)] {  # switch_2
+      %b13 = block {  # case
+        store %x_92, -0.5f
+        store %x_95, 1i
+        loop [b: %b14, c: %b15] {  # loop_2
+          %b14 = block {  # body
+            %x_105:ptr<function, f32, read_write> = var
+            %x_113:ptr<function, f32, read_write> = var
+            %x_96:ptr<function, i32, read_write> = var
+            store %x_118, 0.0f
+            %75:f32 = load %x_92
+            store %x_119, %75
+            store %x_120, false
+            %76:i32 = load %x_95
+            %77:bool = lt %76, 800i
+            if %77 [t: %b16, f: %b17] {  # if_6
+              %b16 = block {  # true
+                exit_if  # if_6
+              }
+              %b17 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_112:ptr<function, f32, read_write> = var
+            %79:i32 = load %x_95
+            %80:i32 = mod %79, 32i
+            %81:bool = eq %80, 0i
+            if %81 [t: %b18, f: %b19] {  # if_7
+              %b18 = block {  # true
+                %82:f32 = load %x_92
+                %83:f32 = add %82, 0.40000000596046447754f
+                store %x_105, %83
+                %84:f32 = load %x_105
+                store %x_93, %84
+                exit_if  # if_7
+              }
+              %b19 = block {  # false
+                %85:f32 = load %x_92
+                store %x_113, %85
+                %86:i32 = load %x_95
+                %87:f32 = convert %86
+                %88:f32 = round %x_49
+                %89:i32 = load %x_95
+                %90:f32 = convert %89
+                %91:f32 = round %x_49
+                %92:f32 = div %90, %91
+                %93:f32 = floor %92
+                %94:f32 = mul %88, %93
+                %95:f32 = sub %87, %94
+                %96:bool = lte %95, 0.00999999977648258209f
+                if %96 [t: %b20] {  # if_8
+                  %b20 = block {  # true
+                    %97:f32 = load %x_92
+                    %98:f32 = add %97, 100.0f
+                    store %x_112, %98
+                    %99:f32 = load %x_112
+                    store %x_113, %99
+                    exit_if  # if_8
+                  }
+                }
+                %100:f32 = load %x_113
+                store %x_93, %100
+                exit_if  # if_7
+              }
+            }
+            %101:i32 = load %x_95
+            %102:f32 = convert %101
+            %103:f32 = load %x_88
+            %104:bool = gte %102, %103
+            if %104 [t: %b21] {  # if_9
+              %b21 = block {  # true
+                %105:f32 = load %x_93
+                store %x_118, %105
+                %106:f32 = load %x_93
+                store %x_119, %106
+                store %x_120, true
+                exit_loop  # loop_2
+              }
+            }
+            continue %b15
+          }
+          %b15 = block {  # continuing
+            %107:i32 = load %x_95
+            %108:i32 = add %107, 1i
+            store %x_96, %108
+            %109:f32 = load %x_93
+            store %x_92, %109
+            %110:i32 = load %x_96
+            store %x_95, %110
+            next_iteration %b14
+          }
+        }
+        %111:f32 = load %x_118
+        store %x_122, %111
+        %112:bool = load %x_120
+        if %112 [t: %b22] {  # if_10
+          %b22 = block {  # true
+            exit_switch  # switch_2
+          }
+        }
+        %113:f32 = load %x_119
+        store %x_122, %113
+        exit_switch  # switch_2
+      }
+    }
+    %114:f32 = load %x_122
+    store_vector_element %c, 1u, %114
+    %115:f32 = load_vector_element %c, 0u
+    %116:f32 = load_vector_element %c, 1u
+    %117:f32 = add %115, %116
+    store_vector_element %c, 2u, %117
+    store %x_129, 0i
+    loop [b: %b23, c: %b24] {  # loop_3
+      %b23 = block {  # body
+        %x_130:ptr<function, i32, read_write> = var
+        %119:i32 = load %x_129
+        %120:bool = lt %119, 3i
+        if %120 [t: %b25, f: %b26] {  # if_11
+          %b25 = block {  # true
+            exit_if  # if_11
+          }
+          %b26 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %121:i32 = load %x_129
+        %122:f32 = load_vector_element %c, %121
+        %123:bool = gte %122, 1.0f
+        if %123 [t: %b27] {  # if_12
+          %b27 = block {  # true
+            %124:i32 = load %x_129
+            %125:i32 = load %x_129
+            %126:f32 = load_vector_element %c, %125
+            %127:i32 = load %x_129
+            %128:f32 = load_vector_element %c, %127
+            %129:f32 = mul %126, %128
+            store_vector_element %c, %124, %129
+            exit_if  # if_12
+          }
+        }
+        continue %b24
+      }
+      %b24 = block {  # continuing
+        %130:i32 = load %x_129
+        %131:i32 = add %130, 1i
+        store %x_130, %131
+        %132:i32 = load %x_130
+        store %x_129, %132
+        next_iteration %b23
+      }
+    }
+    %133:vec3<f32> = load %c
+    %134:vec3<f32> = abs %133
+    %x_145:vec3<f32> = normalize %134
+    %136:f32 = access %x_145, 0u
+    %137:f32 = access %x_145, 1u
+    %138:f32 = access %x_145, 2u
+    %139:vec4<f32> = construct %136, %137, %138, 1.0f
+    store %x_GLF_color, %139
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b28 {
+  %b28 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %142:void = call %main_1
+    %143:vec4<f32> = load %x_GLF_color
+    %144:main_out = construct %143
+    ret %144
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..019333c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl.expected.ir.msl
@@ -0,0 +1,346 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %x_51:ptr<function, f32, read_write> = var
+    %x_55:ptr<function, f32, read_write> = var
+    %x_56:ptr<function, f32, read_write> = var
+    %x_81:ptr<function, f32, read_write> = var
+    %x_82:ptr<function, f32, read_write> = var
+    %x_118:ptr<function, f32, read_write> = var
+    %x_119:ptr<function, f32, read_write> = var
+    %x_55_phi:ptr<function, f32, read_write> = var
+    %x_58_phi:ptr<function, i32, read_write> = var
+    %x_81_phi:ptr<function, f32, read_write> = var
+    %x_82_phi:ptr<function, f32, read_write> = var
+    %x_83_phi:ptr<function, bool, read_write> = var
+    %x_85_phi:ptr<function, f32, read_write> = var
+    %x_122_phi:ptr<function, f32, read_write> = var
+    %x_129_phi:ptr<function, i32, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %21:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %x_47:f32 = load_vector_element %21, 0u
+    %23:f32 = mul %x_47, 0.125f
+    %x_49:f32 = round %23
+    %25:f32 = load_vector_element %gl_FragCoord, 0u
+    store %x_51, %25
+    switch 0u [c: (default, %b3)] {  # switch_1
+      %b3 = block {  # case
+        store %x_55_phi, -0.5f
+        store %x_58_phi, 1i
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %x_68:ptr<function, f32, read_write> = var
+            %x_76:ptr<function, f32, read_write> = var
+            %x_59:ptr<function, i32, read_write> = var
+            %x_56_phi:ptr<function, f32, read_write> = var
+            %30:f32 = load %x_55_phi
+            store %x_55, %30
+            %x_58:i32 = load %x_58_phi
+            store %x_81_phi, 0.0f
+            %32:f32 = load %x_55
+            store %x_82_phi, %32
+            store %x_83_phi, false
+            %33:bool = lt %x_58, 800i
+            if %33 [t: %b6, f: %b7] {  # if_1
+              %b6 = block {  # true
+                exit_if  # if_1
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            %x_75:ptr<function, f32, read_write> = var
+            %x_76_phi:ptr<function, f32, read_write> = var
+            %36:i32 = mod %x_58, 32i
+            %37:bool = eq %36, 0i
+            if %37 [t: %b8, f: %b9] {  # if_2
+              %b8 = block {  # true
+                %38:f32 = load %x_55
+                %39:f32 = add %38, 0.40000000596046447754f
+                store %x_68, %39
+                %40:f32 = load %x_68
+                store %x_56_phi, %40
+                exit_if  # if_2
+              }
+              %b9 = block {  # false
+                %41:f32 = load %x_55
+                store %x_76_phi, %41
+                %42:f32 = convert %x_58
+                %43:f32 = round %x_49
+                %44:f32 = convert %x_58
+                %45:f32 = round %x_49
+                %46:f32 = div %44, %45
+                %47:f32 = floor %46
+                %48:f32 = mul %43, %47
+                %49:f32 = sub %42, %48
+                %50:bool = lte %49, 0.00999999977648258209f
+                if %50 [t: %b10] {  # if_3
+                  %b10 = block {  # true
+                    %51:f32 = load %x_55
+                    %52:f32 = add %51, 100.0f
+                    store %x_75, %52
+                    %53:f32 = load %x_75
+                    store %x_76_phi, %53
+                    exit_if  # if_3
+                  }
+                }
+                %54:f32 = load %x_76_phi
+                store %x_76, %54
+                %55:f32 = load %x_76
+                store %x_56_phi, %55
+                exit_if  # if_2
+              }
+            }
+            %56:f32 = load %x_56_phi
+            store %x_56, %56
+            %57:f32 = convert %x_58
+            %58:f32 = load %x_51
+            %59:bool = gte %57, %58
+            if %59 [t: %b11] {  # if_4
+              %b11 = block {  # true
+                %60:f32 = load %x_56
+                store %x_81_phi, %60
+                %61:f32 = load %x_56
+                store %x_82_phi, %61
+                store %x_83_phi, true
+                exit_loop  # loop_1
+              }
+            }
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            %62:i32 = add %x_58, 1i
+            store %x_59, %62
+            %63:f32 = load %x_56
+            store %x_55_phi, %63
+            %64:i32 = load %x_59
+            store %x_58_phi, %64
+            next_iteration %b4
+          }
+        }
+        %65:f32 = load %x_81_phi
+        store %x_81, %65
+        %66:f32 = load %x_82_phi
+        store %x_82, %66
+        %x_83:bool = load %x_83_phi
+        %68:f32 = load %x_81
+        store %x_85_phi, %68
+        if %x_83 [t: %b12] {  # if_5
+          %b12 = block {  # true
+            exit_switch  # switch_1
+          }
+        }
+        %69:f32 = load %x_82
+        store %x_85_phi, %69
+        exit_switch  # switch_1
+      }
+    }
+    %x_88:ptr<function, f32, read_write> = var
+    %x_92:ptr<function, f32, read_write> = var
+    %x_93:ptr<function, f32, read_write> = var
+    %x_92_phi:ptr<function, f32, read_write> = var
+    %x_95_phi:ptr<function, i32, read_write> = var
+    %x_118_phi:ptr<function, f32, read_write> = var
+    %x_119_phi:ptr<function, f32, read_write> = var
+    %x_120_phi:ptr<function, bool, read_write> = var
+    %x_85:f32 = load %x_85_phi
+    store_vector_element %c, 0u, %x_85
+    %79:f32 = load_vector_element %gl_FragCoord, 1u
+    store %x_88, %79
+    switch 0u [c: (default, %b13)] {  # switch_2
+      %b13 = block {  # case
+        store %x_92_phi, -0.5f
+        store %x_95_phi, 1i
+        loop [b: %b14, c: %b15] {  # loop_2
+          %b14 = block {  # body
+            %x_105:ptr<function, f32, read_write> = var
+            %x_113:ptr<function, f32, read_write> = var
+            %x_96:ptr<function, i32, read_write> = var
+            %x_93_phi:ptr<function, f32, read_write> = var
+            %84:f32 = load %x_92_phi
+            store %x_92, %84
+            %x_95:i32 = load %x_95_phi
+            store %x_118_phi, 0.0f
+            %86:f32 = load %x_92
+            store %x_119_phi, %86
+            store %x_120_phi, false
+            %87:bool = lt %x_95, 800i
+            if %87 [t: %b16, f: %b17] {  # if_6
+              %b16 = block {  # true
+                exit_if  # if_6
+              }
+              %b17 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_112:ptr<function, f32, read_write> = var
+            %x_113_phi:ptr<function, f32, read_write> = var
+            %90:i32 = mod %x_95, 32i
+            %91:bool = eq %90, 0i
+            if %91 [t: %b18, f: %b19] {  # if_7
+              %b18 = block {  # true
+                %92:f32 = load %x_92
+                %93:f32 = add %92, 0.40000000596046447754f
+                store %x_105, %93
+                %94:f32 = load %x_105
+                store %x_93_phi, %94
+                exit_if  # if_7
+              }
+              %b19 = block {  # false
+                %95:f32 = load %x_92
+                store %x_113_phi, %95
+                %96:f32 = convert %x_95
+                %97:f32 = round %x_49
+                %98:f32 = convert %x_95
+                %99:f32 = round %x_49
+                %100:f32 = div %98, %99
+                %101:f32 = floor %100
+                %102:f32 = mul %97, %101
+                %103:f32 = sub %96, %102
+                %104:bool = lte %103, 0.00999999977648258209f
+                if %104 [t: %b20] {  # if_8
+                  %b20 = block {  # true
+                    %105:f32 = load %x_92
+                    %106:f32 = add %105, 100.0f
+                    store %x_112, %106
+                    %107:f32 = load %x_112
+                    store %x_113_phi, %107
+                    exit_if  # if_8
+                  }
+                }
+                %108:f32 = load %x_113_phi
+                store %x_113, %108
+                %109:f32 = load %x_113
+                store %x_93_phi, %109
+                exit_if  # if_7
+              }
+            }
+            %110:f32 = load %x_93_phi
+            store %x_93, %110
+            %111:f32 = convert %x_95
+            %112:f32 = load %x_88
+            %113:bool = gte %111, %112
+            if %113 [t: %b21] {  # if_9
+              %b21 = block {  # true
+                %114:f32 = load %x_93
+                store %x_118_phi, %114
+                %115:f32 = load %x_93
+                store %x_119_phi, %115
+                store %x_120_phi, true
+                exit_loop  # loop_2
+              }
+            }
+            continue %b15
+          }
+          %b15 = block {  # continuing
+            %116:i32 = add %x_95, 1i
+            store %x_96, %116
+            %117:f32 = load %x_93
+            store %x_92_phi, %117
+            %118:i32 = load %x_96
+            store %x_95_phi, %118
+            next_iteration %b14
+          }
+        }
+        %119:f32 = load %x_118_phi
+        store %x_118, %119
+        %120:f32 = load %x_119_phi
+        store %x_119, %120
+        %x_120:bool = load %x_120_phi
+        %122:f32 = load %x_118
+        store %x_122_phi, %122
+        if %x_120 [t: %b22] {  # if_10
+          %b22 = block {  # true
+            exit_switch  # switch_2
+          }
+        }
+        %123:f32 = load %x_119
+        store %x_122_phi, %123
+        exit_switch  # switch_2
+      }
+    }
+    %x_122:f32 = load %x_122_phi
+    store_vector_element %c, 1u, %x_122
+    %x_124:f32 = load_vector_element %c, 0u
+    %x_125:f32 = load_vector_element %c, 1u
+    %127:f32 = add %x_124, %x_125
+    store_vector_element %c, 2u, %127
+    store %x_129_phi, 0i
+    loop [b: %b23, c: %b24] {  # loop_3
+      %b23 = block {  # body
+        %x_130:ptr<function, i32, read_write> = var
+        %x_129:i32 = load %x_129_phi
+        %130:bool = lt %x_129, 3i
+        if %130 [t: %b25, f: %b26] {  # if_11
+          %b25 = block {  # true
+            exit_if  # if_11
+          }
+          %b26 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_136:f32 = load_vector_element %c, %x_129
+        %132:bool = gte %x_136, 1.0f
+        if %132 [t: %b27] {  # if_12
+          %b27 = block {  # true
+            %x_140:f32 = load_vector_element %c, %x_129
+            %x_141:f32 = load_vector_element %c, %x_129
+            %135:f32 = mul %x_140, %x_141
+            store_vector_element %c, %x_129, %135
+            exit_if  # if_12
+          }
+        }
+        continue %b24
+      }
+      %b24 = block {  # continuing
+        %136:i32 = add %x_129, 1i
+        store %x_130, %136
+        %137:i32 = load %x_130
+        store %x_129_phi, %137
+        next_iteration %b23
+      }
+    }
+    %x_143:vec3<f32> = load %c
+    %139:vec3<f32> = abs %x_143
+    %x_145:vec3<f32> = normalize %139
+    %141:f32 = access %x_145, 0u
+    %142:f32 = access %x_145, 1u
+    %143:f32 = access %x_145, 2u
+    %144:vec4<f32> = construct %141, %142, %143, 1.0f
+    store %x_GLF_color, %144
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b28 {
+  %b28 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %147:void = call %main_1
+    %148:vec4<f32> = load %x_GLF_color
+    %149:main_out = construct %148
+    ret %149
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..ea6632a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.spvasm.expected.ir.msl
@@ -0,0 +1,340 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %x_53:ptr<function, f32, read_write> = var
+    %x_57:ptr<function, f32, read_write> = var
+    %x_60:ptr<function, i32, read_write> = var
+    %x_58:ptr<function, f32, read_write> = var
+    %x_83:ptr<function, f32, read_write> = var
+    %x_84:ptr<function, f32, read_write> = var
+    %x_85:ptr<function, bool, read_write> = var
+    %x_87:ptr<function, f32, read_write> = var
+    %x_124:ptr<function, f32, read_write> = var
+    %x_125:ptr<function, f32, read_write> = var
+    %x_128:ptr<function, f32, read_write> = var
+    %x_135:ptr<function, i32, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %18:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %x_47:f32 = load_vector_element %18, 0u
+    %x_48:vec2<f32> = construct 1.0f, %x_47
+    %21:f32 = mul %x_47, 0.125f
+    %x_50:f32 = round %21
+    %x_51:vec2<f32> = let vec2<f32>(0.0f, -0.5f)
+    %24:f32 = load_vector_element %gl_FragCoord, 0u
+    store %x_53, %24
+    switch 0u [c: (default, %b3)] {  # switch_1
+      %b3 = block {  # case
+        store %x_57, -0.5f
+        store %x_60, 1i
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %x_70:ptr<function, f32, read_write> = var
+            %x_78:ptr<function, f32, read_write> = var
+            %x_61:ptr<function, i32, read_write> = var
+            store %x_83, 0.0f
+            %28:f32 = load %x_57
+            store %x_84, %28
+            store %x_85, false
+            %29:i32 = load %x_60
+            %30:bool = lt %29, 800i
+            if %30 [t: %b6, f: %b7] {  # if_1
+              %b6 = block {  # true
+                exit_if  # if_1
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            %x_77:ptr<function, f32, read_write> = var
+            %32:i32 = load %x_60
+            %33:i32 = mod %32, 32i
+            %34:bool = eq %33, 0i
+            if %34 [t: %b8, f: %b9] {  # if_2
+              %b8 = block {  # true
+                %35:f32 = load %x_57
+                %36:f32 = add %35, 0.40000000596046447754f
+                store %x_70, %36
+                %37:f32 = load %x_70
+                store %x_58, %37
+                exit_if  # if_2
+              }
+              %b9 = block {  # false
+                %38:f32 = load %x_57
+                store %x_78, %38
+                %39:i32 = load %x_60
+                %40:f32 = convert %39
+                %41:f32 = round %x_50
+                %42:i32 = load %x_60
+                %43:f32 = convert %42
+                %44:f32 = round %x_50
+                %45:f32 = div %43, %44
+                %46:f32 = floor %45
+                %47:f32 = mul %41, %46
+                %48:f32 = sub %40, %47
+                %49:bool = lte %48, 0.00999999977648258209f
+                if %49 [t: %b10] {  # if_3
+                  %b10 = block {  # true
+                    %50:f32 = load %x_57
+                    %51:f32 = add %50, 100.0f
+                    store %x_77, %51
+                    %52:f32 = load %x_77
+                    store %x_78, %52
+                    exit_if  # if_3
+                  }
+                }
+                %53:f32 = load %x_78
+                store %x_58, %53
+                exit_if  # if_2
+              }
+            }
+            %54:i32 = load %x_60
+            %55:f32 = convert %54
+            %56:f32 = load %x_53
+            %57:bool = gte %55, %56
+            if %57 [t: %b11] {  # if_4
+              %b11 = block {  # true
+                %58:f32 = load %x_58
+                store %x_83, %58
+                %59:f32 = load %x_58
+                store %x_84, %59
+                store %x_85, true
+                exit_loop  # loop_1
+              }
+            }
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            %60:i32 = load %x_60
+            %61:i32 = add %60, 1i
+            store %x_61, %61
+            %62:f32 = load %x_58
+            store %x_57, %62
+            %63:i32 = load %x_61
+            store %x_60, %63
+            next_iteration %b4
+          }
+        }
+        %64:f32 = load %x_83
+        store %x_87, %64
+        %65:bool = load %x_85
+        if %65 [t: %b12] {  # if_5
+          %b12 = block {  # true
+            exit_switch  # switch_1
+          }
+        }
+        %66:f32 = load %x_84
+        store %x_87, %66
+        exit_switch  # switch_1
+      }
+    }
+    %x_92:ptr<function, f32, read_write> = var
+    %x_98:ptr<function, f32, read_write> = var
+    %x_101:ptr<function, i32, read_write> = var
+    %x_99:ptr<function, f32, read_write> = var
+    %x_126:ptr<function, bool, read_write> = var
+    %72:f32 = load %x_84
+    %73:f32 = load %x_83
+    %x_89:vec4<f32> = construct %72, 0.40000000596046447754f, %73, 0.40000000596046447754f
+    %75:f32 = load %x_87
+    store_vector_element %c, 0u, %75
+    %76:f32 = load_vector_element %gl_FragCoord, 1u
+    store %x_92, %76
+    switch 0u [c: (default, %b13)] {  # switch_2
+      %b13 = block {  # case
+        %77:f32 = load %x_57
+        %x_95:vec4<f32> = construct %x_51, 0.0f, %77
+        %79:vec3<f32> = construct %x_48, -0.5f
+        %80:f32 = access %79, 2u
+        store %x_98, %80
+        store %x_101, 1i
+        loop [b: %b14, c: %b15] {  # loop_2
+          %b14 = block {  # body
+            %x_111:ptr<function, f32, read_write> = var
+            %x_119:ptr<function, f32, read_write> = var
+            %x_102:ptr<function, i32, read_write> = var
+            store %x_124, 0.0f
+            %84:f32 = load %x_98
+            store %x_125, %84
+            store %x_126, false
+            %85:i32 = load %x_101
+            %86:bool = lt %85, 800i
+            if %86 [t: %b16, f: %b17] {  # if_6
+              %b16 = block {  # true
+                exit_if  # if_6
+              }
+              %b17 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_118:ptr<function, f32, read_write> = var
+            %88:i32 = load %x_101
+            %89:i32 = mod %88, 32i
+            %90:bool = eq %89, 0i
+            if %90 [t: %b18, f: %b19] {  # if_7
+              %b18 = block {  # true
+                %91:f32 = load %x_98
+                %92:f32 = add %91, 0.40000000596046447754f
+                store %x_111, %92
+                %93:f32 = load %x_111
+                store %x_99, %93
+                exit_if  # if_7
+              }
+              %b19 = block {  # false
+                %94:f32 = load %x_98
+                store %x_119, %94
+                %95:i32 = load %x_101
+                %96:f32 = convert %95
+                %97:f32 = round %x_50
+                %98:i32 = load %x_101
+                %99:f32 = convert %98
+                %100:f32 = round %x_50
+                %101:f32 = div %99, %100
+                %102:f32 = floor %101
+                %103:f32 = mul %97, %102
+                %104:f32 = sub %96, %103
+                %105:bool = lte %104, 0.00999999977648258209f
+                if %105 [t: %b20] {  # if_8
+                  %b20 = block {  # true
+                    %106:f32 = load %x_98
+                    %107:f32 = add %106, 100.0f
+                    store %x_118, %107
+                    %108:f32 = load %x_118
+                    store %x_119, %108
+                    exit_if  # if_8
+                  }
+                }
+                %109:f32 = load %x_119
+                store %x_99, %109
+                exit_if  # if_7
+              }
+            }
+            %110:i32 = load %x_101
+            %111:f32 = convert %110
+            %112:f32 = load %x_92
+            %113:bool = gte %111, %112
+            if %113 [t: %b21] {  # if_9
+              %b21 = block {  # true
+                %114:f32 = load %x_99
+                store %x_124, %114
+                %115:f32 = load %x_99
+                store %x_125, %115
+                store %x_126, true
+                exit_loop  # loop_2
+              }
+            }
+            continue %b15
+          }
+          %b15 = block {  # continuing
+            %116:i32 = load %x_101
+            %117:i32 = add %116, 1i
+            store %x_102, %117
+            %118:f32 = load %x_99
+            store %x_98, %118
+            %119:i32 = load %x_102
+            store %x_101, %119
+            next_iteration %b14
+          }
+        }
+        %120:f32 = load %x_124
+        store %x_128, %120
+        %121:bool = load %x_126
+        if %121 [t: %b22] {  # if_10
+          %b22 = block {  # true
+            exit_switch  # switch_2
+          }
+        }
+        %122:f32 = load %x_125
+        store %x_128, %122
+        exit_switch  # switch_2
+      }
+    }
+    %123:f32 = load %x_128
+    store_vector_element %c, 1u, %123
+    %124:f32 = load_vector_element %c, 0u
+    %125:f32 = load_vector_element %c, 1u
+    %126:f32 = add %124, %125
+    store_vector_element %c, 2u, %126
+    store %x_135, 0i
+    loop [b: %b23, c: %b24] {  # loop_3
+      %b23 = block {  # body
+        %x_136:ptr<function, i32, read_write> = var
+        %128:i32 = load %x_135
+        %129:bool = lt %128, 3i
+        if %129 [t: %b25, f: %b26] {  # if_11
+          %b25 = block {  # true
+            exit_if  # if_11
+          }
+          %b26 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %130:i32 = load %x_135
+        %131:f32 = load_vector_element %c, %130
+        %132:bool = gte %131, 1.0f
+        if %132 [t: %b27] {  # if_12
+          %b27 = block {  # true
+            %133:i32 = load %x_135
+            %134:i32 = load %x_135
+            %135:f32 = load_vector_element %c, %134
+            %136:i32 = load %x_135
+            %137:f32 = load_vector_element %c, %136
+            %138:f32 = mul %135, %137
+            store_vector_element %c, %133, %138
+            exit_if  # if_12
+          }
+        }
+        continue %b24
+      }
+      %b24 = block {  # continuing
+        %139:i32 = load %x_135
+        %140:i32 = add %139, 1i
+        store %x_136, %140
+        %141:i32 = load %x_136
+        store %x_135, %141
+        next_iteration %b23
+      }
+    }
+    %142:vec3<f32> = load %c
+    %143:vec3<f32> = abs %142
+    %x_151:vec3<f32> = normalize %143
+    %145:f32 = access %x_151, 0u
+    %146:f32 = access %x_151, 1u
+    %147:f32 = access %x_151, 2u
+    %148:vec4<f32> = construct %145, %146, %147, 1.0f
+    store %x_GLF_color, %148
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b28 {
+  %b28 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %151:void = call %main_1
+    %152:vec4<f32> = load %x_GLF_color
+    %153:main_out = construct %152
+    ret %153
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4446ee9
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl.expected.ir.msl
@@ -0,0 +1,355 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %x_53:ptr<function, f32, read_write> = var
+    %x_57:ptr<function, f32, read_write> = var
+    %x_58:ptr<function, f32, read_write> = var
+    %x_83:ptr<function, f32, read_write> = var
+    %x_84:ptr<function, f32, read_write> = var
+    %x_124:ptr<function, f32, read_write> = var
+    %x_125:ptr<function, f32, read_write> = var
+    %x_57_phi:ptr<function, f32, read_write> = var
+    %x_60_phi:ptr<function, i32, read_write> = var
+    %x_83_phi:ptr<function, f32, read_write> = var
+    %x_84_phi:ptr<function, f32, read_write> = var
+    %x_85_phi:ptr<function, bool, read_write> = var
+    %x_87_phi:ptr<function, f32, read_write> = var
+    %x_128_phi:ptr<function, f32, read_write> = var
+    %x_135_phi:ptr<function, i32, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %21:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %x_47:f32 = load_vector_element %21, 0u
+    %x_48:vec2<f32> = construct 1.0f, %x_47
+    %24:f32 = mul %x_47, 0.125f
+    %x_50:f32 = round %24
+    %x_51:vec2<f32> = let vec2<f32>(0.0f, -0.5f)
+    %27:f32 = load_vector_element %gl_FragCoord, 0u
+    store %x_53, %27
+    switch 0u [c: (default, %b3)] {  # switch_1
+      %b3 = block {  # case
+        store %x_57_phi, -0.5f
+        store %x_60_phi, 1i
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %x_70:ptr<function, f32, read_write> = var
+            %x_78:ptr<function, f32, read_write> = var
+            %x_61:ptr<function, i32, read_write> = var
+            %x_58_phi:ptr<function, f32, read_write> = var
+            %32:f32 = load %x_57_phi
+            store %x_57, %32
+            %x_60:i32 = load %x_60_phi
+            store %x_83_phi, 0.0f
+            %34:f32 = load %x_57
+            store %x_84_phi, %34
+            store %x_85_phi, false
+            %35:bool = lt %x_60, 800i
+            if %35 [t: %b6, f: %b7] {  # if_1
+              %b6 = block {  # true
+                exit_if  # if_1
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            %x_77:ptr<function, f32, read_write> = var
+            %x_78_phi:ptr<function, f32, read_write> = var
+            %38:i32 = mod %x_60, 32i
+            %39:bool = eq %38, 0i
+            if %39 [t: %b8, f: %b9] {  # if_2
+              %b8 = block {  # true
+                %40:f32 = load %x_57
+                %41:f32 = add %40, 0.40000000596046447754f
+                store %x_70, %41
+                %42:f32 = load %x_70
+                store %x_58_phi, %42
+                exit_if  # if_2
+              }
+              %b9 = block {  # false
+                %43:f32 = load %x_57
+                store %x_78_phi, %43
+                %44:f32 = convert %x_60
+                %45:f32 = round %x_50
+                %46:f32 = convert %x_60
+                %47:f32 = round %x_50
+                %48:f32 = div %46, %47
+                %49:f32 = floor %48
+                %50:f32 = mul %45, %49
+                %51:f32 = sub %44, %50
+                %52:bool = lte %51, 0.00999999977648258209f
+                if %52 [t: %b10] {  # if_3
+                  %b10 = block {  # true
+                    %53:f32 = load %x_57
+                    %54:f32 = add %53, 100.0f
+                    store %x_77, %54
+                    %55:f32 = load %x_77
+                    store %x_78_phi, %55
+                    exit_if  # if_3
+                  }
+                }
+                %56:f32 = load %x_78_phi
+                store %x_78, %56
+                %57:f32 = load %x_78
+                store %x_58_phi, %57
+                exit_if  # if_2
+              }
+            }
+            %58:f32 = load %x_58_phi
+            store %x_58, %58
+            %59:f32 = convert %x_60
+            %60:f32 = load %x_53
+            %61:bool = gte %59, %60
+            if %61 [t: %b11] {  # if_4
+              %b11 = block {  # true
+                %62:f32 = load %x_58
+                store %x_83_phi, %62
+                %63:f32 = load %x_58
+                store %x_84_phi, %63
+                store %x_85_phi, true
+                exit_loop  # loop_1
+              }
+            }
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            %64:i32 = add %x_60, 1i
+            store %x_61, %64
+            %65:f32 = load %x_58
+            store %x_57_phi, %65
+            %66:i32 = load %x_61
+            store %x_60_phi, %66
+            next_iteration %b4
+          }
+        }
+        %67:f32 = load %x_83_phi
+        store %x_83, %67
+        %68:f32 = load %x_84_phi
+        store %x_84, %68
+        %x_85:bool = load %x_85_phi
+        %70:f32 = load %x_83
+        store %x_87_phi, %70
+        if %x_85 [t: %b12] {  # if_5
+          %b12 = block {  # true
+            exit_switch  # switch_1
+          }
+        }
+        %71:f32 = load %x_84
+        store %x_87_phi, %71
+        exit_switch  # switch_1
+      }
+    }
+    %x_92:ptr<function, f32, read_write> = var
+    %x_98:ptr<function, f32, read_write> = var
+    %x_99:ptr<function, f32, read_write> = var
+    %x_98_phi:ptr<function, f32, read_write> = var
+    %x_101_phi:ptr<function, i32, read_write> = var
+    %x_124_phi:ptr<function, f32, read_write> = var
+    %x_125_phi:ptr<function, f32, read_write> = var
+    %x_126_phi:ptr<function, bool, read_write> = var
+    %x_87:f32 = load %x_87_phi
+    %81:f32 = load %x_84
+    %82:f32 = load %x_83
+    %x_89:vec4<f32> = construct %81, 0.40000000596046447754f, %82, 0.40000000596046447754f
+    store_vector_element %c, 0u, %x_87
+    %84:f32 = load_vector_element %gl_FragCoord, 1u
+    store %x_92, %84
+    switch 0u [c: (default, %b13)] {  # switch_2
+      %b13 = block {  # case
+        %85:f32 = load %x_57
+        %x_95:vec4<f32> = construct %x_51, 0.0f, %85
+        %87:vec3<f32> = construct %x_48, -0.5f
+        %x_96:f32 = access %87, 2u
+        store %x_98_phi, %x_96
+        store %x_101_phi, 1i
+        loop [b: %b14, c: %b15] {  # loop_2
+          %b14 = block {  # body
+            %x_111:ptr<function, f32, read_write> = var
+            %x_119:ptr<function, f32, read_write> = var
+            %x_102:ptr<function, i32, read_write> = var
+            %x_99_phi:ptr<function, f32, read_write> = var
+            %93:f32 = load %x_98_phi
+            store %x_98, %93
+            %x_101:i32 = load %x_101_phi
+            store %x_124_phi, 0.0f
+            %95:f32 = load %x_98
+            store %x_125_phi, %95
+            store %x_126_phi, false
+            %96:bool = lt %x_101, 800i
+            if %96 [t: %b16, f: %b17] {  # if_6
+              %b16 = block {  # true
+                exit_if  # if_6
+              }
+              %b17 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_118:ptr<function, f32, read_write> = var
+            %x_119_phi:ptr<function, f32, read_write> = var
+            %99:i32 = mod %x_101, 32i
+            %100:bool = eq %99, 0i
+            if %100 [t: %b18, f: %b19] {  # if_7
+              %b18 = block {  # true
+                %101:f32 = load %x_98
+                %102:f32 = add %101, 0.40000000596046447754f
+                store %x_111, %102
+                %103:f32 = load %x_111
+                store %x_99_phi, %103
+                exit_if  # if_7
+              }
+              %b19 = block {  # false
+                %104:f32 = load %x_98
+                store %x_119_phi, %104
+                %105:f32 = convert %x_101
+                %106:f32 = round %x_50
+                %107:f32 = convert %x_101
+                %108:f32 = round %x_50
+                %109:f32 = div %107, %108
+                %110:f32 = floor %109
+                %111:f32 = mul %106, %110
+                %112:f32 = sub %105, %111
+                %113:bool = lte %112, 0.00999999977648258209f
+                if %113 [t: %b20] {  # if_8
+                  %b20 = block {  # true
+                    %114:f32 = load %x_98
+                    %115:f32 = add %114, 100.0f
+                    store %x_118, %115
+                    %116:f32 = load %x_118
+                    store %x_119_phi, %116
+                    exit_if  # if_8
+                  }
+                }
+                %117:f32 = load %x_119_phi
+                store %x_119, %117
+                %118:f32 = load %x_119
+                store %x_99_phi, %118
+                exit_if  # if_7
+              }
+            }
+            %119:f32 = load %x_99_phi
+            store %x_99, %119
+            %120:f32 = convert %x_101
+            %121:f32 = load %x_92
+            %122:bool = gte %120, %121
+            if %122 [t: %b21] {  # if_9
+              %b21 = block {  # true
+                %123:f32 = load %x_99
+                store %x_124_phi, %123
+                %124:f32 = load %x_99
+                store %x_125_phi, %124
+                store %x_126_phi, true
+                exit_loop  # loop_2
+              }
+            }
+            continue %b15
+          }
+          %b15 = block {  # continuing
+            %125:i32 = add %x_101, 1i
+            store %x_102, %125
+            %126:f32 = load %x_99
+            store %x_98_phi, %126
+            %127:i32 = load %x_102
+            store %x_101_phi, %127
+            next_iteration %b14
+          }
+        }
+        %128:f32 = load %x_124_phi
+        store %x_124, %128
+        %129:f32 = load %x_125_phi
+        store %x_125, %129
+        %x_126:bool = load %x_126_phi
+        %131:f32 = load %x_124
+        store %x_128_phi, %131
+        if %x_126 [t: %b22] {  # if_10
+          %b22 = block {  # true
+            exit_switch  # switch_2
+          }
+        }
+        %132:f32 = load %x_125
+        store %x_128_phi, %132
+        exit_switch  # switch_2
+      }
+    }
+    %x_128:f32 = load %x_128_phi
+    store_vector_element %c, 1u, %x_128
+    %x_130:f32 = load_vector_element %c, 0u
+    %x_131:f32 = load_vector_element %c, 1u
+    %136:f32 = add %x_130, %x_131
+    store_vector_element %c, 2u, %136
+    store %x_135_phi, 0i
+    loop [b: %b23, c: %b24] {  # loop_3
+      %b23 = block {  # body
+        %x_136:ptr<function, i32, read_write> = var
+        %x_135:i32 = load %x_135_phi
+        %139:bool = lt %x_135, 3i
+        if %139 [t: %b25, f: %b26] {  # if_11
+          %b25 = block {  # true
+            exit_if  # if_11
+          }
+          %b26 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_142:f32 = load_vector_element %c, %x_135
+        %141:bool = gte %x_142, 1.0f
+        if %141 [t: %b27] {  # if_12
+          %b27 = block {  # true
+            %x_146:f32 = load_vector_element %c, %x_135
+            %x_147:f32 = load_vector_element %c, %x_135
+            %144:f32 = mul %x_146, %x_147
+            store_vector_element %c, %x_135, %144
+            exit_if  # if_12
+          }
+        }
+        continue %b24
+      }
+      %b24 = block {  # continuing
+        %145:i32 = add %x_135, 1i
+        store %x_136, %145
+        %146:i32 = load %x_136
+        store %x_135_phi, %146
+        next_iteration %b23
+      }
+    }
+    %x_149:vec3<f32> = load %c
+    %148:vec3<f32> = abs %x_149
+    %x_151:vec3<f32> = normalize %148
+    %150:f32 = access %x_151, 0u
+    %151:f32 = access %x_151, 1u
+    %152:f32 = access %x_151, 2u
+    %153:vec4<f32> = construct %150, %151, %152, 1.0f
+    store %x_GLF_color, %153
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b28 {
+  %b28 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %156:void = call %main_1
+    %157:vec4<f32> = load %x_GLF_color
+    %158:main_out = construct %157
+    ret %158
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..04b32e3
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm.expected.ir.msl
@@ -0,0 +1,96 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_66:ptr<function, i32, read_write> = var
+    %x_69:ptr<function, i32, read_write> = var
+    %8:vec4<f32> = load %gl_FragCoord
+    %9:vec2<f32> = swizzle %8, xy
+    %10:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %11:vec2<f32> = load %10
+    %x_56:vec2<f32> = div %9, %11
+    %13:f32 = access %x_56, 0u
+    %14:f32 = mul %13, 10.0f
+    %15:i32 = convert %14
+    %16:f32 = access %x_56, 1u
+    %17:f32 = mul %16, 10.0f
+    %18:i32 = convert %17
+    %19:i32 = mul %18, 10i
+    %x_64:i32 = add %15, %19
+    store %x_66, 100i
+    store %x_69, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_67:ptr<function, i32, read_write> = var
+        %x_70:ptr<function, i32, read_write> = var
+        %23:i32 = load %x_69
+        %24:bool = lt %23, %x_64
+        if %24 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %25:i32 = load %x_66
+        %26:i32 = mul 4i, %25
+        %27:i32 = load %x_66
+        %28:i32 = sub 1000i, %27
+        %29:i32 = mul %26, %28
+        %30:i32 = div %29, 1000i
+        store %x_67, %30
+        %31:i32 = load %x_69
+        %32:i32 = add %31, 1i
+        store %x_70, %32
+        %33:i32 = load %x_67
+        store %x_66, %33
+        %34:i32 = load %x_70
+        store %x_69, %34
+        next_iteration %b3
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %35:i32 = load %x_66
+    %36:i32 = mod %35, 16i
+    %37:ptr<function, vec4<f32>, read_write> = access %indexable, %36
+    %38:vec4<f32> = load %37
+    store %x_GLF_color, %38
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b7 {
+  %b7 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %41:void = call %main_1
+    %42:vec4<f32> = load %x_GLF_color
+    %43:main_out = construct %42
+    ret %43
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..09d9f86
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl.expected.ir.msl
@@ -0,0 +1,103 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_66:ptr<function, i32, read_write> = var
+    %x_66_phi:ptr<function, i32, read_write> = var
+    %x_69_phi:ptr<function, i32, read_write> = var
+    %x_52:vec4<f32> = load %gl_FragCoord
+    %10:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_55:vec2<f32> = load %10
+    %12:f32 = access %x_52, 0u
+    %13:f32 = access %x_52, 1u
+    %14:vec2<f32> = construct %12, %13
+    %x_56:vec2<f32> = div %14, %x_55
+    %16:f32 = access %x_56, 0u
+    %17:f32 = mul %16, 10.0f
+    %18:i32 = convert %17
+    %19:f32 = access %x_56, 1u
+    %20:f32 = mul %19, 10.0f
+    %21:i32 = convert %20
+    %22:i32 = mul %21, 10i
+    %x_64:i32 = add %18, %22
+    store %x_66_phi, 100i
+    store %x_69_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_67:ptr<function, i32, read_write> = var
+        %x_70:ptr<function, i32, read_write> = var
+        %26:i32 = load %x_66_phi
+        store %x_66, %26
+        %x_69:i32 = load %x_69_phi
+        %28:bool = lt %x_69, %x_64
+        if %28 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %29:i32 = load %x_66
+        %30:i32 = bitcast %29
+        %31:i32 = mul 4i, %30
+        %32:i32 = load %x_66
+        %33:i32 = bitcast %32
+        %34:i32 = sub 1000i, %33
+        %35:i32 = mul %31, %34
+        %36:i32 = div %35, 1000i
+        store %x_67, %36
+        %37:i32 = add %x_69, 1i
+        store %x_70, %37
+        %38:i32 = load %x_67
+        store %x_66_phi, %38
+        %39:i32 = load %x_70
+        store %x_69_phi, %39
+        next_iteration %b3
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %40:i32 = load %x_66
+    %41:i32 = mod %40, 16i
+    %42:i32 = bitcast %41
+    %43:ptr<function, vec4<f32>, read_write> = access %indexable, %42
+    %x_78:vec4<f32> = load %43
+    store %x_GLF_color, %x_78
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b7 {
+  %b7 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %47:void = call %main_1
+    %48:vec4<f32> = load %x_GLF_color
+    %49:main_out = construct %48
+    ret %49
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..da8daf5
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm.expected.ir.msl
@@ -0,0 +1,100 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_72:ptr<function, i32, read_write> = var
+    %x_75:ptr<function, i32, read_write> = var
+    %8:vec4<f32> = load %gl_FragCoord
+    %x_55:vec2<f32> = swizzle %8, xy
+    %10:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %11:vec2<f32> = load %10
+    %x_59:vec2<f32> = div %x_55, %11
+    %13:f32 = access %x_59, 0u
+    %14:vec4<f32> = construct 0.0f, %x_55, 0.5f
+    %15:f32 = access %14, 3u
+    %16:vec4<f32> = construct %15, 10.0f, vec2<f32>(0.0f)
+    %17:f32 = access %16, 1u
+    %18:f32 = mul %13, %17
+    %19:i32 = convert %18
+    %20:f32 = access %x_59, 1u
+    %21:f32 = mul %20, 10.0f
+    %22:i32 = convert %21
+    %23:i32 = mul %22, 10i
+    %x_70:i32 = add %19, %23
+    store %x_72, 100i
+    store %x_75, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_73:ptr<function, i32, read_write> = var
+        %x_76:ptr<function, i32, read_write> = var
+        %27:i32 = load %x_75
+        %28:bool = lt %27, %x_70
+        if %28 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %29:i32 = load %x_72
+        %30:i32 = mul 4i, %29
+        %31:i32 = load %x_72
+        %32:i32 = sub 1000i, %31
+        %33:i32 = mul %30, %32
+        %34:i32 = div %33, 1000i
+        store %x_73, %34
+        %35:i32 = load %x_75
+        %36:i32 = add %35, 1i
+        store %x_76, %36
+        %37:i32 = load %x_73
+        store %x_72, %37
+        %38:i32 = load %x_76
+        store %x_75, %38
+        next_iteration %b3
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %39:i32 = load %x_72
+    %40:i32 = mod %39, 16i
+    %41:ptr<function, vec4<f32>, read_write> = access %indexable, %40
+    %42:vec4<f32> = load %41
+    store %x_GLF_color, %42
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b7 {
+  %b7 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %45:void = call %main_1
+    %46:vec4<f32> = load %x_GLF_color
+    %47:main_out = construct %46
+    ret %47
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b0c0660
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl.expected.ir.msl
@@ -0,0 +1,107 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_72:ptr<function, i32, read_write> = var
+    %x_72_phi:ptr<function, i32, read_write> = var
+    %x_75_phi:ptr<function, i32, read_write> = var
+    %x_54:vec4<f32> = load %gl_FragCoord
+    %10:f32 = access %x_54, 0u
+    %11:f32 = access %x_54, 1u
+    %x_55:vec2<f32> = construct %10, %11
+    %13:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_58:vec2<f32> = load %13
+    %x_59:vec2<f32> = div %x_55, %x_58
+    %16:f32 = access %x_59, 0u
+    %17:vec4<f32> = construct 0.0f, %x_55, 0.5f
+    %18:f32 = access %17, 3u
+    %19:vec4<f32> = construct %18, 10.0f, vec2<f32>(0.0f)
+    %20:f32 = access %19, 1u
+    %21:f32 = mul %16, %20
+    %22:i32 = convert %21
+    %23:f32 = access %x_59, 1u
+    %24:f32 = mul %23, 10.0f
+    %25:i32 = convert %24
+    %26:i32 = mul %25, 10i
+    %x_70:i32 = add %22, %26
+    store %x_72_phi, 100i
+    store %x_75_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_73:ptr<function, i32, read_write> = var
+        %x_76:ptr<function, i32, read_write> = var
+        %30:i32 = load %x_72_phi
+        store %x_72, %30
+        %x_75:i32 = load %x_75_phi
+        %32:bool = lt %x_75, %x_70
+        if %32 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %33:i32 = load %x_72
+        %34:i32 = bitcast %33
+        %35:i32 = mul 4i, %34
+        %36:i32 = load %x_72
+        %37:i32 = bitcast %36
+        %38:i32 = sub 1000i, %37
+        %39:i32 = mul %35, %38
+        %40:i32 = div %39, 1000i
+        store %x_73, %40
+        %41:i32 = add %x_75, 1i
+        store %x_76, %41
+        %42:i32 = load %x_73
+        store %x_72_phi, %42
+        %43:i32 = load %x_76
+        store %x_75_phi, %43
+        next_iteration %b3
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %44:i32 = load %x_72
+    %45:i32 = mod %44, 16i
+    %46:i32 = bitcast %45
+    %47:ptr<function, vec4<f32>, read_write> = access %indexable, %46
+    %x_84:vec4<f32> = load %47
+    store %x_GLF_color, %x_84
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b7 {
+  %b7 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %51:void = call %main_1
+    %52:vec4<f32> = load %x_GLF_color
+    %53:main_out = construct %52
+    ret %53
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-composites/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..956cf49
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/0.spvasm.expected.ir.msl
@@ -0,0 +1,145 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_195:ptr<function, array<i32, 256>, read_write> = var
+    %x_196:ptr<function, array<i32, 256>, read_write> = var
+    %x_197:ptr<function, array<i32, 256>, read_write> = var
+    %x_209:ptr<function, vec2<i32>, read_write> = var
+    %x_213:ptr<function, vec2<i32>, read_write> = var
+    %x_241:ptr<function, vec4<f32>, read_write> = var
+    %x_243:ptr<function, vec4<f32>, read_write> = var
+    %x_244:ptr<function, bool, read_write> = var
+    %x_246:ptr<function, vec4<f32>, read_write> = var
+    %14:vec4<f32> = load %gl_FragCoord
+    %15:vec2<f32> = swizzle %14, xy
+    %16:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %17:vec2<f32> = load %16
+    %x_202:vec2<f32> = div %15, %17
+    %19:f32 = access %x_202, 0u
+    %20:f32 = mul %19, 256.0f
+    %21:i32 = convert %20
+    %22:f32 = access %x_202, 1u
+    %23:f32 = mul %22, 256.0f
+    %24:i32 = convert %23
+    %25:vec2<i32> = construct %21, %24
+    store %x_209, %25
+    switch 0u [c: (default, %b3)] {  # switch_1
+      %b3 = block {  # case
+        %26:vec2<i32> = load %x_209
+        store %x_213, %26
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %x_230:ptr<function, bool, read_write> = var
+            %x_231:ptr<function, bool, read_write> = var
+            %x_216:i32 = load_vector_element %x_213, 1u
+            store %x_243, vec4<f32>(0.0f)
+            store %x_244, false
+            %30:bool = neq %x_216, 256i
+            if %30 [t: %b6, f: %b7] {  # if_1
+              %b6 = block {  # true
+                exit_if  # if_1
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            %x_220:i32 = load_vector_element %x_213, 0u
+            store %x_195, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+            %32:ptr<function, i32, read_write> = access %x_195, %x_216
+            %33:i32 = load %32
+            %34:i32 = add %33, 15i
+            %x_224:bool = lt %x_220, %34
+            store %x_231, %x_224
+            if %x_224 [t: %b8] {  # if_2
+              %b8 = block {  # true
+                store %x_196, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+                %36:ptr<function, i32, read_write> = access %x_196, %x_216
+                %37:i32 = load %36
+                %38:i32 = sub %37, 15i
+                %39:bool = gt %x_220, %38
+                store %x_230, %39
+                %40:bool = load %x_230
+                store %x_231, %40
+                exit_if  # if_2
+              }
+            }
+            %41:bool = load %x_231
+            if %41 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                store %x_197, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+                %42:ptr<function, i32, read_write> = access %x_197, %x_216
+                %43:i32 = load %42
+                %44:i32 = sub %x_220, %43
+                %45:f32 = convert %44
+                %46:f32 = abs %45
+                %47:f32 = sub 15.0f, %46
+                %x_240:f32 = mul %47, 0.06666667014360427856f
+                %49:vec4<f32> = construct %x_240, %x_240, %x_240, 1.0f
+                store %x_241, %49
+                %50:vec4<f32> = load %x_241
+                store %x_243, %50
+                store %x_244, true
+                exit_loop  # loop_1
+              }
+            }
+            %51:vec2<i32> = load %x_213
+            %x_214_1:ptr<function, vec2<i32>, read_write> = var, %51
+            %53:i32 = add %x_216, 1i
+            store_vector_element %x_214_1, 1u, %53
+            %x_214:vec2<i32> = load %x_214_1
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            store %x_213, %x_214
+            next_iteration %b4
+          }
+        }
+        %55:vec4<f32> = load %x_243
+        store %x_246, %55
+        %56:bool = load %x_244
+        if %56 [t: %b10] {  # if_4
+          %b10 = block {  # true
+            exit_switch  # switch_1
+          }
+        }
+        store %x_246, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_switch  # switch_1
+      }
+    }
+    %57:vec4<f32> = load %x_246
+    store %x_GLF_color, %57
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b11 {
+  %b11 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %60:void = call %main_1
+    %61:vec4<f32> = load %x_GLF_color
+    %62:main_out = construct %61
+    ret %62
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7b2fcd4
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl.expected.ir.msl
@@ -0,0 +1,150 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_195:ptr<function, array<i32, 256>, read_write> = var
+    %x_196:ptr<function, array<i32, 256>, read_write> = var
+    %x_197:ptr<function, array<i32, 256>, read_write> = var
+    %x_209:ptr<function, vec2<i32>, read_write> = var
+    %x_241:ptr<function, vec4<f32>, read_write> = var
+    %x_243:ptr<function, vec4<f32>, read_write> = var
+    %x_213_phi:ptr<function, vec2<i32>, read_write> = var
+    %x_243_phi:ptr<function, vec4<f32>, read_write> = var
+    %x_244_phi:ptr<function, bool, read_write> = var
+    %x_246_phi:ptr<function, vec4<f32>, read_write> = var
+    %x_198:vec4<f32> = load %gl_FragCoord
+    %16:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_201:vec2<f32> = load %16
+    %18:f32 = access %x_198, 0u
+    %19:f32 = access %x_198, 1u
+    %20:vec2<f32> = construct %18, %19
+    %x_202:vec2<f32> = div %20, %x_201
+    %22:f32 = access %x_202, 0u
+    %23:f32 = mul %22, 256.0f
+    %24:i32 = convert %23
+    %25:f32 = access %x_202, 1u
+    %26:f32 = mul %25, 256.0f
+    %27:i32 = convert %26
+    %28:vec2<i32> = construct %24, %27
+    store %x_209, %28
+    switch 0u [c: (default, %b3)] {  # switch_1
+      %b3 = block {  # case
+        %29:vec2<i32> = load %x_209
+        store %x_213_phi, %29
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %x_230:ptr<function, bool, read_write> = var
+            %x_231_phi:ptr<function, bool, read_write> = var
+            %x_213:vec2<i32> = load %x_213_phi
+            %x_216:i32 = access %x_213, 1u
+            store %x_243_phi, vec4<f32>(0.0f)
+            store %x_244_phi, false
+            %34:bool = neq %x_216, 256i
+            if %34 [t: %b6, f: %b7] {  # if_1
+              %b6 = block {  # true
+                exit_if  # if_1
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            %x_220:i32 = access %x_213, 0u
+            store %x_195, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+            %36:ptr<function, i32, read_write> = access %x_195, %x_216
+            %x_222:i32 = load %36
+            %38:i32 = add %x_222, 15i
+            %x_224:bool = lt %x_220, %38
+            store %x_231_phi, %x_224
+            if %x_224 [t: %b8] {  # if_2
+              %b8 = block {  # true
+                store %x_196, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+                %40:ptr<function, i32, read_write> = access %x_196, %x_216
+                %x_228:i32 = load %40
+                %42:i32 = sub %x_228, 15i
+                %43:bool = gt %x_220, %42
+                store %x_230, %43
+                %44:bool = load %x_230
+                store %x_231_phi, %44
+                exit_if  # if_2
+              }
+            }
+            %x_231:bool = load %x_231_phi
+            if %x_231 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                store %x_197, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+                %46:ptr<function, i32, read_write> = access %x_197, %x_216
+                %x_235:i32 = load %46
+                %48:i32 = sub %x_220, %x_235
+                %49:f32 = convert %48
+                %50:f32 = abs %49
+                %51:f32 = sub 15.0f, %50
+                %x_240:f32 = mul %51, 0.06666667014360427856f
+                %53:vec4<f32> = construct %x_240, %x_240, %x_240, 1.0f
+                store %x_241, %53
+                %54:vec4<f32> = load %x_241
+                store %x_243_phi, %54
+                store %x_244_phi, true
+                exit_loop  # loop_1
+              }
+            }
+            %x_214_1:ptr<function, vec2<i32>, read_write> = var, %x_213
+            %56:i32 = add %x_216, 1i
+            store_vector_element %x_214_1, 1u, %56
+            %x_214:vec2<i32> = load %x_214_1
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            store %x_213_phi, %x_214
+            next_iteration %b4
+          }
+        }
+        %58:vec4<f32> = load %x_243_phi
+        store %x_243, %58
+        %x_244:bool = load %x_244_phi
+        %60:vec4<f32> = load %x_243
+        store %x_246_phi, %60
+        if %x_244 [t: %b10] {  # if_4
+          %b10 = block {  # true
+            exit_switch  # switch_1
+          }
+        }
+        store %x_246_phi, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_switch  # switch_1
+      }
+    }
+    %x_246:vec4<f32> = load %x_246_phi
+    store %x_GLF_color, %x_246
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b11 {
+  %b11 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %64:void = call %main_1
+    %65:vec4<f32> = load %x_GLF_color
+    %66:main_out = construct %65
+    ret %66
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-composites/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1b90589
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/1.spvasm.expected.ir.msl
@@ -0,0 +1,156 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_195:ptr<function, array<i32, 256>, read_write> = var
+    %x_196:ptr<function, array<i32, 256>, read_write> = var
+    %x_197:ptr<function, array<i32, 256>, read_write> = var
+    %x_208:ptr<function, vec2<f32>, read_write> = var
+    %x_214:ptr<function, vec2<i32>, read_write> = var
+    %x_218:ptr<function, vec2<i32>, read_write> = var
+    %x_249:ptr<function, vec4<f32>, read_write> = var
+    %x_251:ptr<function, vec4<f32>, read_write> = var
+    %x_252:ptr<function, bool, read_write> = var
+    %x_254:ptr<function, vec4<f32>, read_write> = var
+    %15:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_201:vec2<f32> = load %15
+    %17:vec4<f32> = load %gl_FragCoord
+    %18:vec2<f32> = swizzle %17, xy
+    %x_202:vec2<f32> = div %18, %x_201
+    %x_204:i32 = let -82i
+    %21:vec4<f32> = construct %x_201, 15.0f, 15.0f
+    %22:f32 = access %21, 2u
+    %23:vec2<f32> = construct 0.0f, %22
+    store %x_208, %23
+    %x_209:i32 = let 120i
+    %25:f32 = access %x_202, 0u
+    %26:f32 = mul %25, 256.0f
+    %27:i32 = convert %26
+    %28:f32 = access %x_202, 1u
+    %29:f32 = mul %28, 256.0f
+    %30:i32 = convert %29
+    %31:vec2<i32> = construct %27, %30
+    store %x_214, %31
+    switch 0u [c: (default, %b3)] {  # switch_1
+      %b3 = block {  # case
+        %32:vec2<i32> = load %x_214
+        store %x_218, %32
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %x_235:ptr<function, bool, read_write> = var
+            %x_236:ptr<function, bool, read_write> = var
+            %x_221:i32 = load_vector_element %x_218, 1u
+            store %x_251, vec4<f32>(0.0f)
+            store %x_252, false
+            %36:bool = neq %x_221, 256i
+            if %36 [t: %b6, f: %b7] {  # if_1
+              %b6 = block {  # true
+                exit_if  # if_1
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            %x_225:i32 = load_vector_element %x_218, 0u
+            store %x_195, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+            %38:ptr<function, i32, read_write> = access %x_195, %x_221
+            %39:i32 = load %38
+            %40:i32 = add %39, 15i
+            %x_229:bool = lt %x_225, %40
+            store %x_236, %x_229
+            if %x_229 [t: %b8] {  # if_2
+              %b8 = block {  # true
+                store %x_196, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+                %42:ptr<function, i32, read_write> = access %x_196, %x_221
+                %43:i32 = load %42
+                %44:i32 = sub %43, 15i
+                %45:bool = gt %x_225, %44
+                store %x_235, %45
+                %46:bool = load %x_235
+                store %x_236, %46
+                exit_if  # if_2
+              }
+            }
+            %47:bool = load %x_236
+            if %47 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                store %x_197, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+                %x_244:i32 = let 335i
+                %49:vec2<f32> = load %x_208
+                %50:buf0 = construct %49
+                %51:f32 = access %50, 0u, 1u
+                %52:ptr<function, i32, read_write> = access %x_197, %x_221
+                %53:i32 = load %52
+                %54:i32 = sub %x_225, %53
+                %55:f32 = convert %54
+                %56:f32 = abs %55
+                %57:f32 = sub %51, %56
+                %x_248:f32 = mul %57, 0.06666667014360427856f
+                %59:vec4<f32> = construct %x_248, %x_248, %x_248, 1.0f
+                store %x_249, %59
+                %60:vec4<f32> = load %x_249
+                store %x_251, %60
+                store %x_252, true
+                exit_loop  # loop_1
+              }
+            }
+            %61:vec2<i32> = load %x_218
+            %x_219_1:ptr<function, vec2<i32>, read_write> = var, %61
+            %63:i32 = add %x_221, 1i
+            store_vector_element %x_219_1, 1u, %63
+            %x_219:vec2<i32> = load %x_219_1
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            store %x_218, %x_219
+            next_iteration %b4
+          }
+        }
+        %65:vec4<f32> = load %x_251
+        store %x_254, %65
+        %66:bool = load %x_252
+        if %66 [t: %b10] {  # if_4
+          %b10 = block {  # true
+            exit_switch  # switch_1
+          }
+        }
+        store %x_254, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_switch  # switch_1
+      }
+    }
+    %67:vec4<f32> = load %x_254
+    store %x_GLF_color, %67
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b11 {
+  %b11 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %70:void = call %main_1
+    %71:vec4<f32> = load %x_GLF_color
+    %72:main_out = construct %71
+    ret %72
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..31517d0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl.expected.ir.msl
@@ -0,0 +1,161 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_195:ptr<function, array<i32, 256>, read_write> = var
+    %x_196:ptr<function, array<i32, 256>, read_write> = var
+    %x_197:ptr<function, array<i32, 256>, read_write> = var
+    %x_208:ptr<function, vec2<f32>, read_write> = var
+    %x_214:ptr<function, vec2<i32>, read_write> = var
+    %x_249:ptr<function, vec4<f32>, read_write> = var
+    %x_251:ptr<function, vec4<f32>, read_write> = var
+    %x_218_phi:ptr<function, vec2<i32>, read_write> = var
+    %x_251_phi:ptr<function, vec4<f32>, read_write> = var
+    %x_252_phi:ptr<function, bool, read_write> = var
+    %x_254_phi:ptr<function, vec4<f32>, read_write> = var
+    %x_198:vec4<f32> = load %gl_FragCoord
+    %17:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_201:vec2<f32> = load %17
+    %19:f32 = access %x_198, 0u
+    %20:f32 = access %x_198, 1u
+    %21:vec2<f32> = construct %19, %20
+    %x_202:vec2<f32> = div %21, %x_201
+    %x_204:i32 = let -82i
+    %24:vec4<f32> = construct %x_201, 15.0f, 15.0f
+    %25:f32 = access %24, 2u
+    %26:vec2<f32> = construct 0.0f, %25
+    store %x_208, %26
+    %x_209:i32 = let 120i
+    %28:f32 = access %x_202, 0u
+    %29:f32 = mul %28, 256.0f
+    %30:i32 = convert %29
+    %31:f32 = access %x_202, 1u
+    %32:f32 = mul %31, 256.0f
+    %33:i32 = convert %32
+    %34:vec2<i32> = construct %30, %33
+    store %x_214, %34
+    switch 0u [c: (default, %b3)] {  # switch_1
+      %b3 = block {  # case
+        %35:vec2<i32> = load %x_214
+        store %x_218_phi, %35
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %x_235:ptr<function, bool, read_write> = var
+            %x_236_phi:ptr<function, bool, read_write> = var
+            %x_218:vec2<i32> = load %x_218_phi
+            %x_221:i32 = access %x_218, 1u
+            store %x_251_phi, vec4<f32>(0.0f)
+            store %x_252_phi, false
+            %40:bool = neq %x_221, 256i
+            if %40 [t: %b6, f: %b7] {  # if_1
+              %b6 = block {  # true
+                exit_if  # if_1
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            %x_225:i32 = access %x_218, 0u
+            store %x_195, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+            %42:ptr<function, i32, read_write> = access %x_195, %x_221
+            %x_227:i32 = load %42
+            %44:i32 = add %x_227, 15i
+            %x_229:bool = lt %x_225, %44
+            store %x_236_phi, %x_229
+            if %x_229 [t: %b8] {  # if_2
+              %b8 = block {  # true
+                store %x_196, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+                %46:ptr<function, i32, read_write> = access %x_196, %x_221
+                %x_233:i32 = load %46
+                %48:i32 = sub %x_233, 15i
+                %49:bool = gt %x_225, %48
+                store %x_235, %49
+                %50:bool = load %x_235
+                store %x_236_phi, %50
+                exit_if  # if_2
+              }
+            }
+            %x_236:bool = load %x_236_phi
+            if %x_236 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                store %x_197, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+                %52:ptr<function, i32, read_write> = access %x_197, %x_221
+                %x_240:i32 = load %52
+                %x_244:i32 = let 335i
+                %55:vec2<f32> = load %x_208
+                %56:buf0 = construct %55
+                %57:f32 = access %56, 0u, 1u
+                %58:i32 = sub %x_225, %x_240
+                %59:f32 = convert %58
+                %60:f32 = abs %59
+                %61:f32 = sub %57, %60
+                %x_248:f32 = mul %61, 0.06666667014360427856f
+                %63:vec4<f32> = construct %x_248, %x_248, %x_248, 1.0f
+                store %x_249, %63
+                %64:vec4<f32> = load %x_249
+                store %x_251_phi, %64
+                store %x_252_phi, true
+                exit_loop  # loop_1
+              }
+            }
+            %x_219_1:ptr<function, vec2<i32>, read_write> = var, %x_218
+            %66:i32 = add %x_221, 1i
+            store_vector_element %x_219_1, 1u, %66
+            %x_219:vec2<i32> = load %x_219_1
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            store %x_218_phi, %x_219
+            next_iteration %b4
+          }
+        }
+        %68:vec4<f32> = load %x_251_phi
+        store %x_251, %68
+        %x_252:bool = load %x_252_phi
+        %70:vec4<f32> = load %x_251
+        store %x_254_phi, %70
+        if %x_252 [t: %b10] {  # if_4
+          %b10 = block {  # true
+            exit_switch  # switch_1
+          }
+        }
+        store %x_254_phi, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_switch  # switch_1
+      }
+    }
+    %x_254:vec4<f32> = load %x_254_phi
+    store %x_GLF_color, %x_254
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b11 {
+  %b11 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %74:void = call %main_1
+    %75:vec4<f32> = load %x_GLF_color
+    %76:main_out = construct %75
+    ret %76
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..14c81b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.spvasm.expected.ir.msl
@@ -0,0 +1,611 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %map:ptr<private, array<i32, 256>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_60:ptr<private, mat2x4<f32>, read_write> = var, mat2x4<f32>(vec4<f32>(0.0f))
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %pos:ptr<function, vec2<f32>, read_write> = var
+    %ipos:ptr<function, vec2<i32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %p:ptr<function, vec2<i32>, read_write> = var
+    %canwalk:ptr<function, bool, read_write> = var
+    %v:ptr<function, i32, read_write> = var
+    %directions:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %d:ptr<function, i32, read_write> = var
+    %x_68:i32 = let -242i
+    %17:vec4<f32> = load %gl_FragCoord
+    %18:vec2<f32> = swizzle %17, xy
+    %19:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %20:vec2<f32> = load %19
+    %21:vec2<f32> = div %18, %20
+    store %pos, %21
+    %22:f32 = load_vector_element %pos, 0u
+    %23:f32 = mul %22, 16.0f
+    %24:i32 = convert %23
+    %25:f32 = load_vector_element %pos, 1u
+    %26:f32 = mul %25, 16.0f
+    %27:i32 = convert %26
+    %28:vec2<i32> = construct %24, %27
+    store %ipos, %28
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %29:i32 = load %i
+        %30:bool = lt %29, 256i
+        if %30 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_86:i32 = load %i
+        %32:ptr<private, i32, read_write> = access %map, %x_86
+        store %32, 0i
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %33:i32 = load %i
+        %34:i32 = add %33, 1i
+        store %i, %34
+        next_iteration %b3
+      }
+    }
+    store %p, vec2<i32>(0i)
+    store %canwalk, true
+    store %v, 0i
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_110:ptr<function, bool, read_write> = var
+        %x_111:ptr<function, bool, read_write> = var
+        %x_130:ptr<function, bool, read_write> = var
+        %x_131:ptr<function, bool, read_write> = var
+        %x_150:ptr<function, bool, read_write> = var
+        %x_151:ptr<function, bool, read_write> = var
+        %x_171:ptr<function, bool, read_write> = var
+        %x_172:ptr<function, bool, read_write> = var
+        %43:i32 = load %v
+        %44:i32 = add %43, 1i
+        store %v, %44
+        store %directions, 0i
+        %45:i32 = load_vector_element %p, 0u
+        %x_98:bool = gt %45, 0i
+        store %x_111, %x_98
+        if %x_98 [t: %b9] {  # if_2
+          %b9 = block {  # true
+            %47:i32 = load_vector_element %p, 0u
+            %48:i32 = sub %47, 2i
+            %49:i32 = load_vector_element %p, 1u
+            %50:i32 = mul %49, 16i
+            %51:i32 = add %48, %50
+            %52:ptr<private, i32, read_write> = access %map, %51
+            %53:i32 = load %52
+            %54:bool = eq %53, 0i
+            store %x_110, %54
+            %55:bool = load %x_110
+            store %x_111, %55
+            exit_if  # if_2
+          }
+        }
+        %56:bool = load %x_111
+        if %56 [t: %b10] {  # if_3
+          %b10 = block {  # true
+            %57:i32 = load %directions
+            %58:i32 = add %57, 1i
+            store %directions, %58
+            exit_if  # if_3
+          }
+        }
+        %59:i32 = load_vector_element %p, 1u
+        %x_118:bool = gt %59, 0i
+        store %x_131, %x_118
+        if %x_118 [t: %b11] {  # if_4
+          %b11 = block {  # true
+            %61:i32 = load_vector_element %p, 0u
+            %62:i32 = load_vector_element %p, 1u
+            %63:i32 = sub %62, 2i
+            %64:i32 = mul %63, 16i
+            %65:i32 = add %61, %64
+            %66:ptr<private, i32, read_write> = access %map, %65
+            %67:i32 = load %66
+            %68:bool = eq %67, 0i
+            store %x_130, %68
+            %69:bool = load %x_130
+            store %x_131, %69
+            exit_if  # if_4
+          }
+        }
+        %70:bool = load %x_131
+        if %70 [t: %b12] {  # if_5
+          %b12 = block {  # true
+            %71:i32 = load %directions
+            %72:i32 = add %71, 1i
+            store %directions, %72
+            exit_if  # if_5
+          }
+        }
+        %73:i32 = load_vector_element %p, 0u
+        %x_138:bool = lt %73, 14i
+        store %x_151, %x_138
+        if %x_138 [t: %b13] {  # if_6
+          %b13 = block {  # true
+            %75:i32 = load_vector_element %p, 0u
+            %76:i32 = add %75, 2i
+            %77:i32 = load_vector_element %p, 1u
+            %78:i32 = mul %77, 16i
+            %79:i32 = add %76, %78
+            %80:ptr<private, i32, read_write> = access %map, %79
+            %81:i32 = load %80
+            %82:bool = eq %81, 0i
+            store %x_150, %82
+            %83:bool = load %x_150
+            store %x_151, %83
+            exit_if  # if_6
+          }
+        }
+        %84:bool = load %x_151
+        if %84 [t: %b14] {  # if_7
+          %b14 = block {  # true
+            %85:i32 = load %directions
+            %86:i32 = add %85, 1i
+            store %directions, %86
+            exit_if  # if_7
+          }
+        }
+        %x_156:i32 = sub 256i, %x_68
+        %88:i32 = load_vector_element %p, 1u
+        %x_159:bool = lt %88, 14i
+        store %x_172, %x_159
+        if %x_159 [t: %b15] {  # if_8
+          %b15 = block {  # true
+            %90:i32 = load_vector_element %p, 0u
+            %91:i32 = load_vector_element %p, 1u
+            %92:i32 = add %91, 2i
+            %93:i32 = mul %92, 16i
+            %94:i32 = add %90, %93
+            %95:ptr<private, i32, read_write> = access %map, %94
+            %96:i32 = load %95
+            %97:bool = eq %96, 0i
+            store %x_171, %97
+            %98:bool = load %x_171
+            store %x_172, %98
+            exit_if  # if_8
+          }
+        }
+        %99:bool = load %x_172
+        if %99 [t: %b16] {  # if_9
+          %b16 = block {  # true
+            %100:i32 = load %directions
+            %101:i32 = add %100, 1i
+            store %directions, %101
+            exit_if  # if_9
+          }
+        }
+        %x_237:ptr<function, bool, read_write> = var
+        %x_238:ptr<function, bool, read_write> = var
+        %x_250:ptr<function, bool, read_write> = var
+        %x_251:ptr<function, bool, read_write> = var
+        %x_289:ptr<function, bool, read_write> = var
+        %x_290:ptr<function, bool, read_write> = var
+        %x_302:ptr<function, bool, read_write> = var
+        %x_303:ptr<function, bool, read_write> = var
+        %x_341:ptr<function, bool, read_write> = var
+        %x_342:ptr<function, bool, read_write> = var
+        %x_354:ptr<function, bool, read_write> = var
+        %x_355:ptr<function, bool, read_write> = var
+        %x_393:ptr<function, bool, read_write> = var
+        %x_394:ptr<function, bool, read_write> = var
+        %x_406:ptr<function, bool, read_write> = var
+        %x_407:ptr<function, bool, read_write> = var
+        %118:i32 = load %directions
+        %119:bool = eq %118, 0i
+        if %119 [t: %b17, f: %b18] {  # if_10
+          %b17 = block {  # true
+            store %canwalk, false
+            store %i, 0i
+            loop [b: %b19, c: %b20] {  # loop_3
+              %b19 = block {  # body
+                %x_186:i32 = load %i
+                %121:i32 = load %i
+                %122:bool = lt %121, 8i
+                if %122 [t: %b21, f: %b22] {  # if_11
+                  %b21 = block {  # true
+                    exit_if  # if_11
+                  }
+                  %b22 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                store %j, 0i
+                %x_189:i32 = sub %x_156, %x_186
+                store %x_60, mat2x4<f32>(vec4<f32>(0.0f))
+                if false [t: %b23] {  # if_12
+                  %b23 = block {  # true
+                    continue %b20
+                  }
+                }
+                loop [b: %b24, c: %b25] {  # loop_4
+                  %b24 = block {  # body
+                    %124:i32 = load %j
+                    %125:bool = lt %124, 8i
+                    if %125 [t: %b26, f: %b27] {  # if_13
+                      %b26 = block {  # true
+                        exit_if  # if_13
+                      }
+                      %b27 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %126:i32 = load %j
+                    %127:i32 = mul %126, 2i
+                    %128:i32 = load %i
+                    %129:i32 = mul %128, 2i
+                    %130:i32 = mul %129, 16i
+                    %131:i32 = add %127, %130
+                    %132:ptr<private, i32, read_write> = access %map, %131
+                    %133:i32 = load %132
+                    %134:bool = eq %133, 0i
+                    if %134 [t: %b28] {  # if_14
+                      %b28 = block {  # true
+                        %135:i32 = load %j
+                        %136:i32 = mul %135, 2i
+                        store_vector_element %p, 0u, %136
+                        %137:i32 = load %i
+                        %138:i32 = mul %137, 2i
+                        store_vector_element %p, 1u, %138
+                        store %canwalk, true
+                        exit_if  # if_14
+                      }
+                    }
+                    continue %b25
+                  }
+                  %b25 = block {  # continuing
+                    %139:i32 = load %j
+                    %140:i32 = add %139, 1i
+                    store %j, %140
+                    next_iteration %b24
+                  }
+                }
+                continue %b20
+              }
+              %b20 = block {  # continuing
+                %141:i32 = load %i
+                %142:i32 = add %141, 1i
+                store %i, %142
+                next_iteration %b19
+              }
+            }
+            %x_219:i32 = load_vector_element %p, 0u
+            %x_221:i32 = load_vector_element %p, 1u
+            %145:i32 = mul %x_221, 16i
+            %146:i32 = add %x_219, %145
+            %147:ptr<private, i32, read_write> = access %map, %146
+            store %147, 1i
+            exit_if  # if_10
+          }
+          %b18 = block {  # false
+            %148:i32 = load %v
+            %149:i32 = load %directions
+            %150:i32 = mod %148, %149
+            store %d, %150
+            %151:i32 = load %v
+            %152:i32 = load %directions
+            %153:i32 = add %151, %152
+            store %v, %153
+            %154:i32 = load %d
+            %x_232:bool = gte %154, 0i
+            store %x_238, %x_232
+            if %x_232 [t: %b29] {  # if_15
+              %b29 = block {  # true
+                %156:i32 = load_vector_element %p, 0u
+                %157:bool = gt %156, 0i
+                store %x_237, %157
+                %158:bool = load %x_237
+                store %x_238, %158
+                exit_if  # if_15
+              }
+            }
+            %159:bool = load %x_238
+            store %x_251, %159
+            %160:bool = load %x_238
+            if %160 [t: %b30] {  # if_16
+              %b30 = block {  # true
+                %161:i32 = load_vector_element %p, 0u
+                %162:i32 = sub %161, 2i
+                %163:i32 = load_vector_element %p, 1u
+                %164:i32 = mul %163, 16i
+                %165:i32 = add %162, %164
+                %166:ptr<private, i32, read_write> = access %map, %165
+                %167:i32 = load %166
+                %168:bool = eq %167, 0i
+                store %x_250, %168
+                %169:bool = load %x_250
+                store %x_251, %169
+                exit_if  # if_16
+              }
+            }
+            %170:bool = load %x_251
+            if %170 [t: %b31] {  # if_17
+              %b31 = block {  # true
+                %171:i32 = load %d
+                %172:i32 = sub %171, 1i
+                store %d, %172
+                %x_257:i32 = load_vector_element %p, 0u
+                %x_259:i32 = load_vector_element %p, 1u
+                %175:i32 = mul %x_259, 16i
+                %176:i32 = add %x_257, %175
+                %177:ptr<private, i32, read_write> = access %map, %176
+                store %177, 1i
+                %x_264:i32 = load_vector_element %p, 0u
+                %x_267:i32 = load_vector_element %p, 1u
+                %180:i32 = sub %x_264, 1i
+                %181:i32 = mul %x_267, 16i
+                %182:i32 = add %180, %181
+                %183:ptr<private, i32, read_write> = access %map, %182
+                store %183, 1i
+                %x_272:i32 = load_vector_element %p, 0u
+                %x_275:i32 = load_vector_element %p, 1u
+                %186:i32 = sub %x_272, 2i
+                %187:i32 = mul %x_275, 16i
+                %188:i32 = add %186, %187
+                %189:ptr<private, i32, read_write> = access %map, %188
+                store %189, 1i
+                %190:i32 = load_vector_element %p, 0u
+                %191:i32 = sub %190, 2i
+                store_vector_element %p, 0u, %191
+                exit_if  # if_17
+              }
+            }
+            %192:i32 = load %d
+            %x_284:bool = gte %192, 0i
+            store %x_290, %x_284
+            if %x_284 [t: %b32] {  # if_18
+              %b32 = block {  # true
+                %194:i32 = load_vector_element %p, 1u
+                %195:bool = gt %194, 0i
+                store %x_289, %195
+                %196:bool = load %x_289
+                store %x_290, %196
+                exit_if  # if_18
+              }
+            }
+            %197:bool = load %x_290
+            store %x_303, %197
+            %198:bool = load %x_290
+            if %198 [t: %b33] {  # if_19
+              %b33 = block {  # true
+                %199:i32 = load_vector_element %p, 0u
+                %200:i32 = load_vector_element %p, 1u
+                %201:i32 = sub %200, 2i
+                %202:i32 = mul %201, 16i
+                %203:i32 = add %199, %202
+                %204:ptr<private, i32, read_write> = access %map, %203
+                %205:i32 = load %204
+                %206:bool = eq %205, 0i
+                store %x_302, %206
+                %207:bool = load %x_302
+                store %x_303, %207
+                exit_if  # if_19
+              }
+            }
+            %208:bool = load %x_303
+            if %208 [t: %b34] {  # if_20
+              %b34 = block {  # true
+                %209:i32 = load %d
+                %210:i32 = sub %209, 1i
+                store %d, %210
+                %x_309:i32 = load_vector_element %p, 0u
+                %x_311:i32 = load_vector_element %p, 1u
+                %213:i32 = mul %x_311, 16i
+                %214:i32 = add %x_309, %213
+                %215:ptr<private, i32, read_write> = access %map, %214
+                store %215, 1i
+                %x_316:i32 = load_vector_element %p, 0u
+                %x_318:i32 = load_vector_element %p, 1u
+                %218:i32 = sub %x_318, 1i
+                %219:i32 = mul %218, 16i
+                %220:i32 = add %x_316, %219
+                %221:ptr<private, i32, read_write> = access %map, %220
+                store %221, 1i
+                %x_324:i32 = load_vector_element %p, 0u
+                %x_326:i32 = load_vector_element %p, 1u
+                %224:i32 = sub %x_326, 2i
+                %225:i32 = mul %224, 16i
+                %226:i32 = add %x_324, %225
+                %227:ptr<private, i32, read_write> = access %map, %226
+                store %227, 1i
+                %228:i32 = load_vector_element %p, 1u
+                %229:i32 = sub %228, 2i
+                store_vector_element %p, 1u, %229
+                exit_if  # if_20
+              }
+            }
+            %230:i32 = load %d
+            %x_336:bool = gte %230, 0i
+            store %x_342, %x_336
+            if %x_336 [t: %b35] {  # if_21
+              %b35 = block {  # true
+                %232:i32 = load_vector_element %p, 0u
+                %233:bool = lt %232, 14i
+                store %x_341, %233
+                %234:bool = load %x_341
+                store %x_342, %234
+                exit_if  # if_21
+              }
+            }
+            %235:bool = load %x_342
+            store %x_355, %235
+            %236:bool = load %x_342
+            if %236 [t: %b36] {  # if_22
+              %b36 = block {  # true
+                %237:i32 = load_vector_element %p, 0u
+                %238:i32 = add %237, 2i
+                %239:i32 = load_vector_element %p, 1u
+                %240:i32 = mul %239, 16i
+                %241:i32 = add %238, %240
+                %242:ptr<private, i32, read_write> = access %map, %241
+                %243:i32 = load %242
+                %244:bool = eq %243, 0i
+                store %x_354, %244
+                %245:bool = load %x_354
+                store %x_355, %245
+                exit_if  # if_22
+              }
+            }
+            %246:bool = load %x_355
+            if %246 [t: %b37] {  # if_23
+              %b37 = block {  # true
+                %247:i32 = load %d
+                %248:i32 = sub %247, 1i
+                store %d, %248
+                %x_361:i32 = load_vector_element %p, 0u
+                %x_363:i32 = load_vector_element %p, 1u
+                %251:i32 = mul %x_363, 16i
+                %252:i32 = add %x_361, %251
+                %253:ptr<private, i32, read_write> = access %map, %252
+                store %253, 1i
+                %x_368:i32 = load_vector_element %p, 0u
+                %x_371:i32 = load_vector_element %p, 1u
+                %256:i32 = add %x_368, 1i
+                %257:i32 = mul %x_371, 16i
+                %258:i32 = add %256, %257
+                %259:ptr<private, i32, read_write> = access %map, %258
+                store %259, 1i
+                %x_376:i32 = load_vector_element %p, 0u
+                %x_379:i32 = load_vector_element %p, 1u
+                %262:i32 = add %x_376, 2i
+                %263:i32 = mul %x_379, 16i
+                %264:i32 = add %262, %263
+                %265:ptr<private, i32, read_write> = access %map, %264
+                store %265, 1i
+                %266:i32 = load_vector_element %p, 0u
+                %267:i32 = add %266, 2i
+                store_vector_element %p, 0u, %267
+                exit_if  # if_23
+              }
+            }
+            %268:i32 = load %d
+            %x_388:bool = gte %268, 0i
+            store %x_394, %x_388
+            if %x_388 [t: %b38] {  # if_24
+              %b38 = block {  # true
+                %270:i32 = load_vector_element %p, 1u
+                %271:bool = lt %270, 14i
+                store %x_393, %271
+                %272:bool = load %x_393
+                store %x_394, %272
+                exit_if  # if_24
+              }
+            }
+            %273:bool = load %x_394
+            store %x_407, %273
+            %274:bool = load %x_394
+            if %274 [t: %b39] {  # if_25
+              %b39 = block {  # true
+                %275:i32 = load_vector_element %p, 0u
+                %276:i32 = load_vector_element %p, 1u
+                %277:i32 = add %276, 2i
+                %278:i32 = mul %277, 16i
+                %279:i32 = add %275, %278
+                %280:ptr<private, i32, read_write> = access %map, %279
+                %281:i32 = load %280
+                %282:bool = eq %281, 0i
+                store %x_406, %282
+                %283:bool = load %x_406
+                store %x_407, %283
+                exit_if  # if_25
+              }
+            }
+            %284:bool = load %x_407
+            if %284 [t: %b40] {  # if_26
+              %b40 = block {  # true
+                %285:i32 = load %d
+                %286:i32 = sub %285, 1i
+                store %d, %286
+                %x_413:i32 = load_vector_element %p, 0u
+                %x_415:i32 = load_vector_element %p, 1u
+                %289:i32 = mul %x_415, 16i
+                %290:i32 = add %x_413, %289
+                %291:ptr<private, i32, read_write> = access %map, %290
+                store %291, 1i
+                %x_420:i32 = load_vector_element %p, 0u
+                %x_422:i32 = load_vector_element %p, 1u
+                %294:i32 = add %x_422, 1i
+                %295:i32 = mul %294, 16i
+                %296:i32 = add %x_420, %295
+                %297:ptr<private, i32, read_write> = access %map, %296
+                store %297, 1i
+                %x_428:i32 = load_vector_element %p, 0u
+                %x_430:i32 = load_vector_element %p, 1u
+                %300:i32 = add %x_430, 2i
+                %301:i32 = mul %300, 16i
+                %302:i32 = add %x_428, %301
+                %303:ptr<private, i32, read_write> = access %map, %302
+                store %303, 1i
+                %304:i32 = load_vector_element %p, 1u
+                %305:i32 = add %304, 2i
+                store_vector_element %p, 1u, %305
+                exit_if  # if_26
+              }
+            }
+            exit_if  # if_10
+          }
+        }
+        %306:i32 = load_vector_element %ipos, 1u
+        %307:i32 = mul %306, 16i
+        %308:i32 = load_vector_element %ipos, 0u
+        %309:i32 = add %307, %308
+        %310:ptr<private, i32, read_write> = access %map, %309
+        %311:i32 = load %310
+        %312:bool = eq %311, 1i
+        if %312 [t: %b41] {  # if_27
+          %b41 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f)
+            ret
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %x_450:bool = load %canwalk
+        %314:bool = eq %x_450, false
+        break_if %314 %b7
+      }
+    }
+    store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b42 {
+  %b42 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %317:void = call %main_1
+    %318:vec4<f32> = load %x_GLF_color
+    %319:main_out = construct %318
+    ret %319
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..db37090
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl.expected.ir.msl
@@ -0,0 +1,608 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %map:ptr<private, array<i32, 256>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_60:ptr<private, mat2x4<f32>, read_write> = var, mat2x4<f32>(vec4<f32>(0.0f))
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %pos:ptr<function, vec2<f32>, read_write> = var
+    %ipos:ptr<function, vec2<i32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %p:ptr<function, vec2<i32>, read_write> = var
+    %canwalk:ptr<function, bool, read_write> = var
+    %v:ptr<function, i32, read_write> = var
+    %directions:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %d:ptr<function, i32, read_write> = var
+    %x_63:vec4<f32> = load %gl_FragCoord
+    %17:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %x_67:vec2<f32> = load %17
+    %x_68:i32 = let -242i
+    %20:f32 = access %x_63, 0u
+    %21:f32 = access %x_63, 1u
+    %22:vec2<f32> = construct %20, %21
+    %23:vec2<f32> = div %22, %x_67
+    store %pos, %23
+    %x_71:f32 = load_vector_element %pos, 0u
+    %x_75:f32 = load_vector_element %pos, 1u
+    %26:f32 = mul %x_71, 16.0f
+    %27:i32 = convert %26
+    %28:f32 = mul %x_75, 16.0f
+    %29:i32 = convert %28
+    %30:vec2<i32> = construct %27, %29
+    store %ipos, %30
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_83:i32 = load %i
+        %32:bool = lt %x_83, 256i
+        if %32 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_86:i32 = load %i
+        %34:ptr<private, i32, read_write> = access %map, %x_86
+        store %34, 0i
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_88:i32 = load %i
+        %36:i32 = add %x_88, 1i
+        store %i, %36
+        next_iteration %b3
+      }
+    }
+    store %p, vec2<i32>(0i)
+    store %canwalk, true
+    store %v, 0i
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_110:ptr<function, bool, read_write> = var
+        %x_130:ptr<function, bool, read_write> = var
+        %x_150:ptr<function, bool, read_write> = var
+        %x_171:ptr<function, bool, read_write> = var
+        %x_111_phi:ptr<function, bool, read_write> = var
+        %x_131_phi:ptr<function, bool, read_write> = var
+        %x_151_phi:ptr<function, bool, read_write> = var
+        %x_172_phi:ptr<function, bool, read_write> = var
+        %x_94:i32 = load %v
+        %46:i32 = add %x_94, 1i
+        store %v, %46
+        store %directions, 0i
+        %x_97:i32 = load_vector_element %p, 0u
+        %x_98:bool = gt %x_97, 0i
+        store %x_111_phi, %x_98
+        if %x_98 [t: %b9] {  # if_2
+          %b9 = block {  # true
+            %x_102:i32 = load_vector_element %p, 0u
+            %x_105:i32 = load_vector_element %p, 1u
+            %51:i32 = sub %x_102, 2i
+            %52:i32 = mul %x_105, 16i
+            %53:i32 = add %51, %52
+            %54:ptr<private, i32, read_write> = access %map, %53
+            %x_109:i32 = load %54
+            %56:bool = eq %x_109, 0i
+            store %x_110, %56
+            %57:bool = load %x_110
+            store %x_111_phi, %57
+            exit_if  # if_2
+          }
+        }
+        %x_111:bool = load %x_111_phi
+        if %x_111 [t: %b10] {  # if_3
+          %b10 = block {  # true
+            %x_114:i32 = load %directions
+            %60:i32 = add %x_114, 1i
+            store %directions, %60
+            exit_if  # if_3
+          }
+        }
+        %x_117:i32 = load_vector_element %p, 1u
+        %x_118:bool = gt %x_117, 0i
+        store %x_131_phi, %x_118
+        if %x_118 [t: %b11] {  # if_4
+          %b11 = block {  # true
+            %x_122:i32 = load_vector_element %p, 0u
+            %x_124:i32 = load_vector_element %p, 1u
+            %65:i32 = sub %x_124, 2i
+            %66:i32 = mul %65, 16i
+            %67:i32 = add %x_122, %66
+            %68:ptr<private, i32, read_write> = access %map, %67
+            %x_129:i32 = load %68
+            %70:bool = eq %x_129, 0i
+            store %x_130, %70
+            %71:bool = load %x_130
+            store %x_131_phi, %71
+            exit_if  # if_4
+          }
+        }
+        %x_131:bool = load %x_131_phi
+        if %x_131 [t: %b12] {  # if_5
+          %b12 = block {  # true
+            %x_134:i32 = load %directions
+            %74:i32 = add %x_134, 1i
+            store %directions, %74
+            exit_if  # if_5
+          }
+        }
+        %x_137:i32 = load_vector_element %p, 0u
+        %x_138:bool = lt %x_137, 14i
+        store %x_151_phi, %x_138
+        if %x_138 [t: %b13] {  # if_6
+          %b13 = block {  # true
+            %x_142:i32 = load_vector_element %p, 0u
+            %x_145:i32 = load_vector_element %p, 1u
+            %79:i32 = add %x_142, 2i
+            %80:i32 = mul %x_145, 16i
+            %81:i32 = add %79, %80
+            %82:ptr<private, i32, read_write> = access %map, %81
+            %x_149:i32 = load %82
+            %84:bool = eq %x_149, 0i
+            store %x_150, %84
+            %85:bool = load %x_150
+            store %x_151_phi, %85
+            exit_if  # if_6
+          }
+        }
+        %x_151:bool = load %x_151_phi
+        if %x_151 [t: %b14] {  # if_7
+          %b14 = block {  # true
+            %x_154:i32 = load %directions
+            %88:i32 = add %x_154, 1i
+            store %directions, %88
+            exit_if  # if_7
+          }
+        }
+        %x_156:i32 = sub 256i, %x_68
+        %x_158:i32 = load_vector_element %p, 1u
+        %x_159:bool = lt %x_158, 14i
+        store %x_172_phi, %x_159
+        if %x_159 [t: %b15] {  # if_8
+          %b15 = block {  # true
+            %x_163:i32 = load_vector_element %p, 0u
+            %x_165:i32 = load_vector_element %p, 1u
+            %94:i32 = add %x_165, 2i
+            %95:i32 = mul %94, 16i
+            %96:i32 = add %x_163, %95
+            %97:ptr<private, i32, read_write> = access %map, %96
+            %x_170:i32 = load %97
+            %99:bool = eq %x_170, 0i
+            store %x_171, %99
+            %100:bool = load %x_171
+            store %x_172_phi, %100
+            exit_if  # if_8
+          }
+        }
+        %x_172:bool = load %x_172_phi
+        if %x_172 [t: %b16] {  # if_9
+          %b16 = block {  # true
+            %x_175:i32 = load %directions
+            %103:i32 = add %x_175, 1i
+            store %directions, %103
+            exit_if  # if_9
+          }
+        }
+        %x_237:ptr<function, bool, read_write> = var
+        %x_250:ptr<function, bool, read_write> = var
+        %x_289:ptr<function, bool, read_write> = var
+        %x_302:ptr<function, bool, read_write> = var
+        %x_341:ptr<function, bool, read_write> = var
+        %x_354:ptr<function, bool, read_write> = var
+        %x_393:ptr<function, bool, read_write> = var
+        %x_406:ptr<function, bool, read_write> = var
+        %x_238_phi:ptr<function, bool, read_write> = var
+        %x_251_phi:ptr<function, bool, read_write> = var
+        %x_290_phi:ptr<function, bool, read_write> = var
+        %x_303_phi:ptr<function, bool, read_write> = var
+        %x_342_phi:ptr<function, bool, read_write> = var
+        %x_355_phi:ptr<function, bool, read_write> = var
+        %x_394_phi:ptr<function, bool, read_write> = var
+        %x_407_phi:ptr<function, bool, read_write> = var
+        %x_177:i32 = load %directions
+        %121:bool = eq %x_177, 0i
+        if %121 [t: %b17, f: %b18] {  # if_10
+          %b17 = block {  # true
+            store %canwalk, false
+            store %i, 0i
+            loop [b: %b19, c: %b20] {  # loop_3
+              %b19 = block {  # body
+                %x_186:i32 = load %i
+                %123:bool = lt %x_186, 8i
+                if %123 [t: %b21, f: %b22] {  # if_11
+                  %b21 = block {  # true
+                    exit_if  # if_11
+                  }
+                  %b22 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                store %j, 0i
+                %x_189:i32 = sub %x_156, %x_186
+                store %x_60, mat2x4<f32>(vec4<f32>(0.0f))
+                if false [t: %b23] {  # if_12
+                  %b23 = block {  # true
+                    continue %b20
+                  }
+                }
+                loop [b: %b24, c: %b25] {  # loop_4
+                  %b24 = block {  # body
+                    %x_194:i32 = load %j
+                    %126:bool = lt %x_194, 8i
+                    if %126 [t: %b26, f: %b27] {  # if_13
+                      %b26 = block {  # true
+                        exit_if  # if_13
+                      }
+                      %b27 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %x_197:i32 = load %j
+                    %x_199:i32 = load %i
+                    %129:i32 = mul %x_197, 2i
+                    %130:i32 = mul %x_199, 2i
+                    %131:i32 = mul %130, 16i
+                    %132:i32 = add %129, %131
+                    %133:ptr<private, i32, read_write> = access %map, %132
+                    %x_204:i32 = load %133
+                    %135:bool = eq %x_204, 0i
+                    if %135 [t: %b28] {  # if_14
+                      %b28 = block {  # true
+                        %x_208:i32 = load %j
+                        %137:i32 = mul %x_208, 2i
+                        store_vector_element %p, 0u, %137
+                        %x_211:i32 = load %i
+                        %139:i32 = mul %x_211, 2i
+                        store_vector_element %p, 1u, %139
+                        store %canwalk, true
+                        exit_if  # if_14
+                      }
+                    }
+                    continue %b25
+                  }
+                  %b25 = block {  # continuing
+                    %x_214:i32 = load %j
+                    %141:i32 = add %x_214, 1i
+                    store %j, %141
+                    next_iteration %b24
+                  }
+                }
+                continue %b20
+              }
+              %b20 = block {  # continuing
+                %x_216:i32 = load %i
+                %143:i32 = add %x_216, 1i
+                store %i, %143
+                next_iteration %b19
+              }
+            }
+            %x_219:i32 = load_vector_element %p, 0u
+            %x_221:i32 = load_vector_element %p, 1u
+            %146:i32 = mul %x_221, 16i
+            %147:i32 = add %x_219, %146
+            %148:ptr<private, i32, read_write> = access %map, %147
+            store %148, 1i
+            exit_if  # if_10
+          }
+          %b18 = block {  # false
+            %x_225:i32 = load %v
+            %x_226:i32 = load %directions
+            %151:i32 = mod %x_225, %x_226
+            store %d, %151
+            %x_228:i32 = load %directions
+            %x_229:i32 = load %v
+            %154:i32 = add %x_229, %x_228
+            store %v, %154
+            %x_231:i32 = load %d
+            %x_232:bool = gte %x_231, 0i
+            store %x_238_phi, %x_232
+            if %x_232 [t: %b29] {  # if_15
+              %b29 = block {  # true
+                %x_236:i32 = load_vector_element %p, 0u
+                %158:bool = gt %x_236, 0i
+                store %x_237, %158
+                %159:bool = load %x_237
+                store %x_238_phi, %159
+                exit_if  # if_15
+              }
+            }
+            %x_238:bool = load %x_238_phi
+            store %x_251_phi, %x_238
+            if %x_238 [t: %b30] {  # if_16
+              %b30 = block {  # true
+                %x_242:i32 = load_vector_element %p, 0u
+                %x_245:i32 = load_vector_element %p, 1u
+                %163:i32 = sub %x_242, 2i
+                %164:i32 = mul %x_245, 16i
+                %165:i32 = add %163, %164
+                %166:ptr<private, i32, read_write> = access %map, %165
+                %x_249:i32 = load %166
+                %168:bool = eq %x_249, 0i
+                store %x_250, %168
+                %169:bool = load %x_250
+                store %x_251_phi, %169
+                exit_if  # if_16
+              }
+            }
+            %x_251:bool = load %x_251_phi
+            if %x_251 [t: %b31] {  # if_17
+              %b31 = block {  # true
+                %x_254:i32 = load %d
+                %172:i32 = sub %x_254, 1i
+                store %d, %172
+                %x_257:i32 = load_vector_element %p, 0u
+                %x_259:i32 = load_vector_element %p, 1u
+                %175:i32 = mul %x_259, 16i
+                %176:i32 = add %x_257, %175
+                %177:ptr<private, i32, read_write> = access %map, %176
+                store %177, 1i
+                %x_264:i32 = load_vector_element %p, 0u
+                %x_267:i32 = load_vector_element %p, 1u
+                %180:i32 = sub %x_264, 1i
+                %181:i32 = mul %x_267, 16i
+                %182:i32 = add %180, %181
+                %183:ptr<private, i32, read_write> = access %map, %182
+                store %183, 1i
+                %x_272:i32 = load_vector_element %p, 0u
+                %x_275:i32 = load_vector_element %p, 1u
+                %186:i32 = sub %x_272, 2i
+                %187:i32 = mul %x_275, 16i
+                %188:i32 = add %186, %187
+                %189:ptr<private, i32, read_write> = access %map, %188
+                store %189, 1i
+                %x_280:i32 = load_vector_element %p, 0u
+                %191:i32 = sub %x_280, 2i
+                store_vector_element %p, 0u, %191
+                exit_if  # if_17
+              }
+            }
+            %x_283:i32 = load %d
+            %x_284:bool = gte %x_283, 0i
+            store %x_290_phi, %x_284
+            if %x_284 [t: %b32] {  # if_18
+              %b32 = block {  # true
+                %x_288:i32 = load_vector_element %p, 1u
+                %195:bool = gt %x_288, 0i
+                store %x_289, %195
+                %196:bool = load %x_289
+                store %x_290_phi, %196
+                exit_if  # if_18
+              }
+            }
+            %x_290:bool = load %x_290_phi
+            store %x_303_phi, %x_290
+            if %x_290 [t: %b33] {  # if_19
+              %b33 = block {  # true
+                %x_294:i32 = load_vector_element %p, 0u
+                %x_296:i32 = load_vector_element %p, 1u
+                %200:i32 = sub %x_296, 2i
+                %201:i32 = mul %200, 16i
+                %202:i32 = add %x_294, %201
+                %203:ptr<private, i32, read_write> = access %map, %202
+                %x_301:i32 = load %203
+                %205:bool = eq %x_301, 0i
+                store %x_302, %205
+                %206:bool = load %x_302
+                store %x_303_phi, %206
+                exit_if  # if_19
+              }
+            }
+            %x_303:bool = load %x_303_phi
+            if %x_303 [t: %b34] {  # if_20
+              %b34 = block {  # true
+                %x_306:i32 = load %d
+                %209:i32 = sub %x_306, 1i
+                store %d, %209
+                %x_309:i32 = load_vector_element %p, 0u
+                %x_311:i32 = load_vector_element %p, 1u
+                %212:i32 = mul %x_311, 16i
+                %213:i32 = add %x_309, %212
+                %214:ptr<private, i32, read_write> = access %map, %213
+                store %214, 1i
+                %x_316:i32 = load_vector_element %p, 0u
+                %x_318:i32 = load_vector_element %p, 1u
+                %217:i32 = sub %x_318, 1i
+                %218:i32 = mul %217, 16i
+                %219:i32 = add %x_316, %218
+                %220:ptr<private, i32, read_write> = access %map, %219
+                store %220, 1i
+                %x_324:i32 = load_vector_element %p, 0u
+                %x_326:i32 = load_vector_element %p, 1u
+                %223:i32 = sub %x_326, 2i
+                %224:i32 = mul %223, 16i
+                %225:i32 = add %x_324, %224
+                %226:ptr<private, i32, read_write> = access %map, %225
+                store %226, 1i
+                %x_332:i32 = load_vector_element %p, 1u
+                %228:i32 = sub %x_332, 2i
+                store_vector_element %p, 1u, %228
+                exit_if  # if_20
+              }
+            }
+            %x_335:i32 = load %d
+            %x_336:bool = gte %x_335, 0i
+            store %x_342_phi, %x_336
+            if %x_336 [t: %b35] {  # if_21
+              %b35 = block {  # true
+                %x_340:i32 = load_vector_element %p, 0u
+                %232:bool = lt %x_340, 14i
+                store %x_341, %232
+                %233:bool = load %x_341
+                store %x_342_phi, %233
+                exit_if  # if_21
+              }
+            }
+            %x_342:bool = load %x_342_phi
+            store %x_355_phi, %x_342
+            if %x_342 [t: %b36] {  # if_22
+              %b36 = block {  # true
+                %x_346:i32 = load_vector_element %p, 0u
+                %x_349:i32 = load_vector_element %p, 1u
+                %237:i32 = add %x_346, 2i
+                %238:i32 = mul %x_349, 16i
+                %239:i32 = add %237, %238
+                %240:ptr<private, i32, read_write> = access %map, %239
+                %x_353:i32 = load %240
+                %242:bool = eq %x_353, 0i
+                store %x_354, %242
+                %243:bool = load %x_354
+                store %x_355_phi, %243
+                exit_if  # if_22
+              }
+            }
+            %x_355:bool = load %x_355_phi
+            if %x_355 [t: %b37] {  # if_23
+              %b37 = block {  # true
+                %x_358:i32 = load %d
+                %246:i32 = sub %x_358, 1i
+                store %d, %246
+                %x_361:i32 = load_vector_element %p, 0u
+                %x_363:i32 = load_vector_element %p, 1u
+                %249:i32 = mul %x_363, 16i
+                %250:i32 = add %x_361, %249
+                %251:ptr<private, i32, read_write> = access %map, %250
+                store %251, 1i
+                %x_368:i32 = load_vector_element %p, 0u
+                %x_371:i32 = load_vector_element %p, 1u
+                %254:i32 = add %x_368, 1i
+                %255:i32 = mul %x_371, 16i
+                %256:i32 = add %254, %255
+                %257:ptr<private, i32, read_write> = access %map, %256
+                store %257, 1i
+                %x_376:i32 = load_vector_element %p, 0u
+                %x_379:i32 = load_vector_element %p, 1u
+                %260:i32 = add %x_376, 2i
+                %261:i32 = mul %x_379, 16i
+                %262:i32 = add %260, %261
+                %263:ptr<private, i32, read_write> = access %map, %262
+                store %263, 1i
+                %x_384:i32 = load_vector_element %p, 0u
+                %265:i32 = add %x_384, 2i
+                store_vector_element %p, 0u, %265
+                exit_if  # if_23
+              }
+            }
+            %x_387:i32 = load %d
+            %x_388:bool = gte %x_387, 0i
+            store %x_394_phi, %x_388
+            if %x_388 [t: %b38] {  # if_24
+              %b38 = block {  # true
+                %x_392:i32 = load_vector_element %p, 1u
+                %269:bool = lt %x_392, 14i
+                store %x_393, %269
+                %270:bool = load %x_393
+                store %x_394_phi, %270
+                exit_if  # if_24
+              }
+            }
+            %x_394:bool = load %x_394_phi
+            store %x_407_phi, %x_394
+            if %x_394 [t: %b39] {  # if_25
+              %b39 = block {  # true
+                %x_398:i32 = load_vector_element %p, 0u
+                %x_400:i32 = load_vector_element %p, 1u
+                %274:i32 = add %x_400, 2i
+                %275:i32 = mul %274, 16i
+                %276:i32 = add %x_398, %275
+                %277:ptr<private, i32, read_write> = access %map, %276
+                %x_405:i32 = load %277
+                %279:bool = eq %x_405, 0i
+                store %x_406, %279
+                %280:bool = load %x_406
+                store %x_407_phi, %280
+                exit_if  # if_25
+              }
+            }
+            %x_407:bool = load %x_407_phi
+            if %x_407 [t: %b40] {  # if_26
+              %b40 = block {  # true
+                %x_410:i32 = load %d
+                %283:i32 = sub %x_410, 1i
+                store %d, %283
+                %x_413:i32 = load_vector_element %p, 0u
+                %x_415:i32 = load_vector_element %p, 1u
+                %286:i32 = mul %x_415, 16i
+                %287:i32 = add %x_413, %286
+                %288:ptr<private, i32, read_write> = access %map, %287
+                store %288, 1i
+                %x_420:i32 = load_vector_element %p, 0u
+                %x_422:i32 = load_vector_element %p, 1u
+                %291:i32 = add %x_422, 1i
+                %292:i32 = mul %291, 16i
+                %293:i32 = add %x_420, %292
+                %294:ptr<private, i32, read_write> = access %map, %293
+                store %294, 1i
+                %x_428:i32 = load_vector_element %p, 0u
+                %x_430:i32 = load_vector_element %p, 1u
+                %297:i32 = add %x_430, 2i
+                %298:i32 = mul %297, 16i
+                %299:i32 = add %x_428, %298
+                %300:ptr<private, i32, read_write> = access %map, %299
+                store %300, 1i
+                %x_436:i32 = load_vector_element %p, 1u
+                %302:i32 = add %x_436, 2i
+                store_vector_element %p, 1u, %302
+                exit_if  # if_26
+              }
+            }
+            exit_if  # if_10
+          }
+        }
+        %x_440:i32 = load_vector_element %ipos, 1u
+        %x_443:i32 = load_vector_element %ipos, 0u
+        %305:i32 = mul %x_440, 16i
+        %306:i32 = add %305, %x_443
+        %307:ptr<private, i32, read_write> = access %map, %306
+        %x_446:i32 = load %307
+        %309:bool = eq %x_446, 1i
+        if %309 [t: %b41] {  # if_27
+          %b41 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f)
+            ret
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %x_450:bool = load %canwalk
+        %311:bool = eq %x_450, false
+        break_if %311 %b7
+      }
+    }
+    store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b42 {
+  %b42 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %314:void = call %main_1
+    %315:vec4<f32> = load %x_GLF_color
+    %316:main_out = construct %315
+    ret %316
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..0cfc594
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,167 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_20:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %index:ptr<private, i32, read_write> = var
+  %state:ptr<private, array<i32, 16>, read_write> = var
+}
+
+%collision_vf2_vf4_ = func(%pos:ptr<function, vec2<f32>, read_write>, %quad:ptr<function, vec4<f32>, read_write>):bool -> %b2 {
+  %b2 = block {
+    %9:f32 = load_vector_element %pos, 0u
+    %10:f32 = load_vector_element %quad, 0u
+    %11:bool = lt %9, %10
+    if %11 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret false
+      }
+    }
+    %12:f32 = load_vector_element %pos, 1u
+    %13:f32 = load_vector_element %quad, 1u
+    %14:bool = lt %12, %13
+    if %14 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        ret false
+      }
+    }
+    %15:f32 = load_vector_element %pos, 0u
+    %16:f32 = load_vector_element %quad, 0u
+    %17:f32 = load_vector_element %quad, 2u
+    %18:f32 = add %16, %17
+    %19:bool = gt %15, %18
+    if %19 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        ret false
+      }
+    }
+    %20:f32 = load_vector_element %pos, 1u
+    %21:f32 = load_vector_element %quad, 1u
+    %22:f32 = load_vector_element %quad, 3u
+    %23:f32 = add %21, %22
+    %24:bool = gt %20, %23
+    if %24 [t: %b6] {  # if_4
+      %b6 = block {  # true
+        ret false
+      }
+    }
+    ret true
+  }
+}
+%match_vf2_ = func(%pos_1:ptr<function, vec2<f32>, read_write>):vec4<f32> -> %b7 {
+  %b7 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec4<f32>, read_write> = var
+    %indexable:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %indexable_1:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %indexable_2:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %indexable_3:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    store %res, vec4<f32>(0.5f, 0.5f, 1.0f, 1.0f)
+    store %i, 0i
+    loop [b: %b8, c: %b9] {  # loop_1
+      %b8 = block {  # body
+        %35:i32 = load %i
+        %36:bool = lt %35, 8i
+        if %36 [t: %b10, f: %b11] {  # if_5
+          %b10 = block {  # true
+            exit_if  # if_5
+          }
+          %b11 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_155:i32 = load %i
+        %38:vec2<f32> = load %pos_1
+        store %param, %38
+        store %indexable, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+        %39:ptr<function, vec4<f32>, read_write> = access %indexable, %x_155
+        %40:vec4<f32> = load %39
+        store %param_1, %40
+        %x_159:bool = call %collision_vf2_vf4_, %param, %param_1
+        if %x_159 [t: %b12] {  # if_6
+          %b12 = block {  # true
+            %x_162:i32 = load %i
+            store %indexable_1, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %43:ptr<function, vec4<f32>, read_write> = access %indexable_1, %x_162
+            %x_164:f32 = load_vector_element %43, 0u
+            %x_166:i32 = load %i
+            store %indexable_2, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %46:ptr<function, vec4<f32>, read_write> = access %indexable_2, %x_166
+            %x_168:f32 = load_vector_element %46, 1u
+            %x_171:i32 = load %i
+            store %indexable_3, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+            %49:i32 = convert %x_164
+            %50:i32 = convert %x_168
+            %51:i32 = mul %49, %50
+            %52:i32 = mul %x_171, 9i
+            %53:i32 = add %51, %52
+            %54:i32 = add %53, 11i
+            %55:i32 = mod %54, 16i
+            %56:ptr<function, vec4<f32>, read_write> = access %indexable_3, %55
+            %57:vec4<f32> = load %56
+            store %res, %57
+            exit_if  # if_6
+          }
+        }
+        continue %b9
+      }
+      %b9 = block {  # continuing
+        %58:i32 = load %i
+        %59:i32 = add %58, 1i
+        store %i, %59
+        next_iteration %b8
+      }
+    }
+    %x_180:vec4<f32> = load %res
+    ret %x_180
+  }
+}
+%main_1 = func():void -> %b13 {
+  %b13 = block {
+    %lin:ptr<function, vec2<f32>, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %64:vec4<f32> = load %gl_FragCoord
+    %65:vec2<f32> = swizzle %64, xy
+    %66:ptr<uniform, vec2<f32>, read> = access %x_20, 0u
+    %67:vec2<f32> = load %66
+    %68:vec2<f32> = div %65, %67
+    store %lin, %68
+    %69:vec2<f32> = load %lin
+    %70:vec2<f32> = mul %69, 32.0f
+    %71:vec2<f32> = floor %70
+    store %lin, %71
+    %72:vec2<f32> = load %lin
+    store %param_2, %72
+    %x_111:vec4<f32> = call %match_vf2_, %param_2
+    store %x_GLF_color, %x_111
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b14 {
+  %b14 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %76:void = call %main_1
+    %77:vec4<f32> = load %x_GLF_color
+    %78:main_out = construct %77
+    ret %78
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c08c00b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,169 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_20:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %index:ptr<private, i32, read_write> = var
+  %state:ptr<private, array<i32, 16>, read_write> = var
+}
+
+%collision_vf2_vf4_ = func(%pos:ptr<function, vec2<f32>, read_write>, %quad:ptr<function, vec4<f32>, read_write>):bool -> %b2 {
+  %b2 = block {
+    %x_114:f32 = load_vector_element %pos, 0u
+    %x_116:f32 = load_vector_element %quad, 0u
+    %11:bool = lt %x_114, %x_116
+    if %11 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret false
+      }
+    }
+    %x_121:f32 = load_vector_element %pos, 1u
+    %x_123:f32 = load_vector_element %quad, 1u
+    %14:bool = lt %x_121, %x_123
+    if %14 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        ret false
+      }
+    }
+    %x_128:f32 = load_vector_element %pos, 0u
+    %x_130:f32 = load_vector_element %quad, 0u
+    %x_132:f32 = load_vector_element %quad, 2u
+    %18:f32 = add %x_130, %x_132
+    %19:bool = gt %x_128, %18
+    if %19 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        ret false
+      }
+    }
+    %x_138:f32 = load_vector_element %pos, 1u
+    %x_140:f32 = load_vector_element %quad, 1u
+    %x_142:f32 = load_vector_element %quad, 3u
+    %23:f32 = add %x_140, %x_142
+    %24:bool = gt %x_138, %23
+    if %24 [t: %b6] {  # if_4
+      %b6 = block {  # true
+        ret false
+      }
+    }
+    ret true
+  }
+}
+%match_vf2_ = func(%pos_1:ptr<function, vec2<f32>, read_write>):vec4<f32> -> %b7 {
+  %b7 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec4<f32>, read_write> = var
+    %indexable:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %indexable_1:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %indexable_2:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %indexable_3:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    store %res, vec4<f32>(0.5f, 0.5f, 1.0f, 1.0f)
+    store %i, 0i
+    loop [b: %b8, c: %b9] {  # loop_1
+      %b8 = block {  # body
+        %x_152:i32 = load %i
+        %36:bool = lt %x_152, 8i
+        if %36 [t: %b10, f: %b11] {  # if_5
+          %b10 = block {  # true
+            exit_if  # if_5
+          }
+          %b11 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_155:i32 = load %i
+        %x_156:vec2<f32> = load %pos_1
+        store %param, %x_156
+        store %indexable, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+        %39:ptr<function, vec4<f32>, read_write> = access %indexable, %x_155
+        %x_158:vec4<f32> = load %39
+        store %param_1, %x_158
+        %x_159:bool = call %collision_vf2_vf4_, %param, %param_1
+        if %x_159 [t: %b12] {  # if_6
+          %b12 = block {  # true
+            %x_162:i32 = load %i
+            store %indexable_1, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %43:ptr<function, vec4<f32>, read_write> = access %indexable_1, %x_162
+            %x_164:f32 = load_vector_element %43, 0u
+            %x_166:i32 = load %i
+            store %indexable_2, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %46:ptr<function, vec4<f32>, read_write> = access %indexable_2, %x_166
+            %x_168:f32 = load_vector_element %46, 1u
+            %x_171:i32 = load %i
+            store %indexable_3, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+            %49:i32 = convert %x_164
+            %50:i32 = convert %x_168
+            %51:i32 = mul %49, %50
+            %52:i32 = mul %x_171, 9i
+            %53:i32 = add %51, %52
+            %54:i32 = add %53, 11i
+            %55:i32 = mod %54, 16i
+            %56:ptr<function, vec4<f32>, read_write> = access %indexable_3, %55
+            %x_177:vec4<f32> = load %56
+            store %res, %x_177
+            exit_if  # if_6
+          }
+        }
+        continue %b9
+      }
+      %b9 = block {  # continuing
+        %x_178:i32 = load %i
+        %59:i32 = add %x_178, 1i
+        store %i, %59
+        next_iteration %b8
+      }
+    }
+    %x_180:vec4<f32> = load %res
+    ret %x_180
+  }
+}
+%main_1 = func():void -> %b13 {
+  %b13 = block {
+    %lin:ptr<function, vec2<f32>, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %x_102:vec4<f32> = load %gl_FragCoord
+    %65:ptr<uniform, vec2<f32>, read> = access %x_20, 0u
+    %x_105:vec2<f32> = load %65
+    %67:f32 = access %x_102, 0u
+    %68:f32 = access %x_102, 1u
+    %69:vec2<f32> = construct %67, %68
+    %70:vec2<f32> = div %69, %x_105
+    store %lin, %70
+    %x_107:vec2<f32> = load %lin
+    %72:vec2<f32> = mul %x_107, 32.0f
+    %73:vec2<f32> = floor %72
+    store %lin, %73
+    %x_110:vec2<f32> = load %lin
+    store %param_2, %x_110
+    %x_111:vec4<f32> = call %match_vf2_, %param_2
+    store %x_GLF_color, %x_111
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b14 {
+  %b14 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %78:void = call %main_1
+    %79:vec4<f32> = load %x_GLF_color
+    %80:main_out = construct %79
+    ret %80
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..497cee1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.spvasm.expected.ir.msl
@@ -0,0 +1,168 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_20:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %index:ptr<private, i32, read_write> = var
+  %state:ptr<private, array<i32, 16>, read_write> = var
+}
+
+%collision_vf2_vf4_ = func(%pos:ptr<function, vec2<f32>, read_write>, %quad:ptr<function, vec4<f32>, read_write>):bool -> %b2 {
+  %b2 = block {
+    %x_116:ptr<function, vec4<bool>, read_write> = var, vec4<bool>(false)
+    %10:f32 = load_vector_element %pos, 0u
+    %11:f32 = load_vector_element %quad, 0u
+    %12:bool = lt %10, %11
+    if %12 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret false
+      }
+    }
+    %13:f32 = load_vector_element %pos, 1u
+    %14:f32 = load_vector_element %quad, 1u
+    %15:bool = lt %13, %14
+    if %15 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        ret false
+      }
+    }
+    %16:f32 = load_vector_element %pos, 0u
+    %17:f32 = load_vector_element %quad, 0u
+    %18:f32 = load_vector_element %quad, 2u
+    %19:f32 = add %17, %18
+    %20:bool = gt %16, %19
+    if %20 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        ret false
+      }
+    }
+    %21:f32 = load_vector_element %pos, 1u
+    %22:f32 = load_vector_element %quad, 1u
+    %23:f32 = load_vector_element %quad, 3u
+    %24:f32 = add %22, %23
+    %25:bool = gt %21, %24
+    if %25 [t: %b6] {  # if_4
+      %b6 = block {  # true
+        ret false
+      }
+    }
+    ret true
+  }
+}
+%match_vf2_ = func(%pos_1:ptr<function, vec2<f32>, read_write>):vec4<f32> -> %b7 {
+  %b7 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec4<f32>, read_write> = var
+    %indexable:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %indexable_1:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %indexable_2:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %indexable_3:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    store %res, vec4<f32>(0.5f, 0.5f, 1.0f, 1.0f)
+    store %i, 0i
+    loop [b: %b8, c: %b9] {  # loop_1
+      %b8 = block {  # body
+        %36:i32 = load %i
+        %37:bool = lt %36, 8i
+        if %37 [t: %b10, f: %b11] {  # if_5
+          %b10 = block {  # true
+            exit_if  # if_5
+          }
+          %b11 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_159:i32 = load %i
+        %39:vec2<f32> = load %pos_1
+        store %param, %39
+        store %indexable, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+        %40:ptr<function, vec4<f32>, read_write> = access %indexable, %x_159
+        %41:vec4<f32> = load %40
+        store %param_1, %41
+        %x_163:bool = call %collision_vf2_vf4_, %param, %param_1
+        if %x_163 [t: %b12] {  # if_6
+          %b12 = block {  # true
+            %x_166:i32 = load %i
+            store %indexable_1, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %44:ptr<function, vec4<f32>, read_write> = access %indexable_1, %x_166
+            %x_168:f32 = load_vector_element %44, 0u
+            %x_170:i32 = load %i
+            store %indexable_2, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %47:ptr<function, vec4<f32>, read_write> = access %indexable_2, %x_170
+            %x_172:f32 = load_vector_element %47, 1u
+            %x_175:i32 = load %i
+            store %indexable_3, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+            %50:i32 = convert %x_168
+            %51:i32 = convert %x_172
+            %52:i32 = mul %50, %51
+            %53:i32 = mul %x_175, 9i
+            %54:i32 = add %52, %53
+            %55:i32 = add %54, 11i
+            %56:i32 = mod %55, 16i
+            %57:ptr<function, vec4<f32>, read_write> = access %indexable_3, %56
+            %58:vec4<f32> = load %57
+            store %res, %58
+            exit_if  # if_6
+          }
+        }
+        continue %b9
+      }
+      %b9 = block {  # continuing
+        %59:i32 = load %i
+        %60:i32 = add %59, 1i
+        store %i, %60
+        next_iteration %b8
+      }
+    }
+    %x_184:vec4<f32> = load %res
+    ret %x_184
+  }
+}
+%main_1 = func():void -> %b13 {
+  %b13 = block {
+    %lin:ptr<function, vec2<f32>, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %65:vec4<f32> = load %gl_FragCoord
+    %66:vec2<f32> = swizzle %65, xy
+    %67:ptr<uniform, vec2<f32>, read> = access %x_20, 0u
+    %68:vec2<f32> = load %67
+    %69:vec2<f32> = div %66, %68
+    store %lin, %69
+    %70:vec2<f32> = load %lin
+    %71:vec2<f32> = mul %70, 32.0f
+    %72:vec2<f32> = floor %71
+    store %lin, %72
+    %73:vec2<f32> = load %lin
+    store %param_2, %73
+    %x_114:vec4<f32> = call %match_vf2_, %param_2
+    store %x_GLF_color, %x_114
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b14 {
+  %b14 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %77:void = call %main_1
+    %78:vec4<f32> = load %x_GLF_color
+    %79:main_out = construct %78
+    ret %79
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b3060ef
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl.expected.ir.msl
@@ -0,0 +1,170 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_20:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %index:ptr<private, i32, read_write> = var
+  %state:ptr<private, array<i32, 16>, read_write> = var
+}
+
+%collision_vf2_vf4_ = func(%pos:ptr<function, vec2<f32>, read_write>, %quad:ptr<function, vec4<f32>, read_write>):bool -> %b2 {
+  %b2 = block {
+    %x_116:ptr<function, vec4<bool>, read_write> = var, vec4<bool>(false)
+    %x_118:f32 = load_vector_element %pos, 0u
+    %x_120:f32 = load_vector_element %quad, 0u
+    %12:bool = lt %x_118, %x_120
+    if %12 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret false
+      }
+    }
+    %x_125:f32 = load_vector_element %pos, 1u
+    %x_127:f32 = load_vector_element %quad, 1u
+    %15:bool = lt %x_125, %x_127
+    if %15 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        ret false
+      }
+    }
+    %x_132:f32 = load_vector_element %pos, 0u
+    %x_134:f32 = load_vector_element %quad, 0u
+    %x_136:f32 = load_vector_element %quad, 2u
+    %19:f32 = add %x_134, %x_136
+    %20:bool = gt %x_132, %19
+    if %20 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        ret false
+      }
+    }
+    %x_142:f32 = load_vector_element %pos, 1u
+    %x_144:f32 = load_vector_element %quad, 1u
+    %x_146:f32 = load_vector_element %quad, 3u
+    %24:f32 = add %x_144, %x_146
+    %25:bool = gt %x_142, %24
+    if %25 [t: %b6] {  # if_4
+      %b6 = block {  # true
+        ret false
+      }
+    }
+    ret true
+  }
+}
+%match_vf2_ = func(%pos_1:ptr<function, vec2<f32>, read_write>):vec4<f32> -> %b7 {
+  %b7 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec4<f32>, read_write> = var
+    %indexable:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %indexable_1:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %indexable_2:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %indexable_3:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    store %res, vec4<f32>(0.5f, 0.5f, 1.0f, 1.0f)
+    store %i, 0i
+    loop [b: %b8, c: %b9] {  # loop_1
+      %b8 = block {  # body
+        %x_156:i32 = load %i
+        %37:bool = lt %x_156, 8i
+        if %37 [t: %b10, f: %b11] {  # if_5
+          %b10 = block {  # true
+            exit_if  # if_5
+          }
+          %b11 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_159:i32 = load %i
+        %x_160:vec2<f32> = load %pos_1
+        store %param, %x_160
+        store %indexable, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+        %40:ptr<function, vec4<f32>, read_write> = access %indexable, %x_159
+        %x_162:vec4<f32> = load %40
+        store %param_1, %x_162
+        %x_163:bool = call %collision_vf2_vf4_, %param, %param_1
+        if %x_163 [t: %b12] {  # if_6
+          %b12 = block {  # true
+            %x_166:i32 = load %i
+            store %indexable_1, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %44:ptr<function, vec4<f32>, read_write> = access %indexable_1, %x_166
+            %x_168:f32 = load_vector_element %44, 0u
+            %x_170:i32 = load %i
+            store %indexable_2, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %47:ptr<function, vec4<f32>, read_write> = access %indexable_2, %x_170
+            %x_172:f32 = load_vector_element %47, 1u
+            %x_175:i32 = load %i
+            store %indexable_3, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+            %50:i32 = convert %x_168
+            %51:i32 = convert %x_172
+            %52:i32 = mul %50, %51
+            %53:i32 = mul %x_175, 9i
+            %54:i32 = add %52, %53
+            %55:i32 = add %54, 11i
+            %56:i32 = mod %55, 16i
+            %57:ptr<function, vec4<f32>, read_write> = access %indexable_3, %56
+            %x_181:vec4<f32> = load %57
+            store %res, %x_181
+            exit_if  # if_6
+          }
+        }
+        continue %b9
+      }
+      %b9 = block {  # continuing
+        %x_182:i32 = load %i
+        %60:i32 = add %x_182, 1i
+        store %i, %60
+        next_iteration %b8
+      }
+    }
+    %x_184:vec4<f32> = load %res
+    ret %x_184
+  }
+}
+%main_1 = func():void -> %b13 {
+  %b13 = block {
+    %lin:ptr<function, vec2<f32>, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %x_105:vec4<f32> = load %gl_FragCoord
+    %66:ptr<uniform, vec2<f32>, read> = access %x_20, 0u
+    %x_108:vec2<f32> = load %66
+    %68:f32 = access %x_105, 0u
+    %69:f32 = access %x_105, 1u
+    %70:vec2<f32> = construct %68, %69
+    %71:vec2<f32> = div %70, %x_108
+    store %lin, %71
+    %x_110:vec2<f32> = load %lin
+    %73:vec2<f32> = mul %x_110, 32.0f
+    %74:vec2<f32> = floor %73
+    store %lin, %74
+    %x_113:vec2<f32> = load %lin
+    store %param_2, %x_113
+    %x_114:vec4<f32> = call %match_vf2_, %param_2
+    store %x_GLF_color, %x_114
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b14 {
+  %b14 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %79:void = call %main_1
+    %80:vec4<f32> = load %x_GLF_color
+    %81:main_out = construct %80
+    ret %81
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..d3f6144
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,547 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+buf1 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_32:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %15:i32 = load %f
+    store %k, %15
+    %16:i32 = load %f
+    store %i, %16
+    %17:i32 = load %mid
+    %18:i32 = add %17, 1i
+    store %j, %18
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %19:i32 = load %i
+        %20:i32 = load %mid
+        %21:bool = lte %19, %20
+        %22:i32 = load %j
+        %23:i32 = load %to
+        %24:bool = lte %22, %23
+        %25:bool = and %21, %24
+        if %25 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %26:i32 = load %i
+        %27:ptr<private, i32, read_write> = access %data, %26
+        %28:i32 = load %27
+        %29:i32 = load %j
+        %30:ptr<private, i32, read_write> = access %data, %29
+        %31:i32 = load %30
+        %32:bool = lt %28, %31
+        if %32 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_280:i32 = load %k
+            %34:i32 = load %k
+            %35:i32 = add %34, 1i
+            store %k, %35
+            %x_282:i32 = load %i
+            %37:i32 = load %i
+            %38:i32 = add %37, 1i
+            store %i, %38
+            %39:ptr<private, i32, read_write> = access %temp, %x_280
+            %40:ptr<private, i32, read_write> = access %data, %x_282
+            %41:i32 = load %40
+            store %39, %41
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_287:i32 = load %k
+            %43:i32 = load %k
+            %44:i32 = add %43, 1i
+            store %k, %44
+            %x_289:i32 = load %j
+            %46:i32 = load %j
+            %47:i32 = add %46, 1i
+            store %j, %47
+            %48:ptr<private, i32, read_write> = access %temp, %x_287
+            %49:ptr<private, i32, read_write> = access %data, %x_289
+            %50:i32 = load %49
+            store %48, %50
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %51:i32 = load %i
+        %52:bool = lt %51, 10i
+        %53:i32 = load %i
+        %54:i32 = load %mid
+        %55:bool = lte %53, %54
+        %56:bool = and %52, %55
+        if %56 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_305:i32 = load %k
+        %58:i32 = load %k
+        %59:i32 = add %58, 1i
+        store %k, %59
+        %x_307:i32 = load %i
+        %61:i32 = load %i
+        %62:i32 = add %61, 1i
+        store %i, %62
+        %63:ptr<private, i32, read_write> = access %temp, %x_305
+        %64:ptr<private, i32, read_write> = access %data, %x_307
+        %65:i32 = load %64
+        store %63, %65
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    %66:i32 = load %f
+    store %i_1, %66
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %67:i32 = load %i_1
+        %68:i32 = load %to
+        %69:bool = lte %67, %68
+        if %69 [t: %b15, f: %b16] {  # if_4
+          %b15 = block {  # true
+            exit_if  # if_4
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_321:i32 = load %i_1
+        %71:ptr<private, i32, read_write> = access %data, %x_321
+        %72:i32 = load %i_1
+        %73:ptr<private, i32, read_write> = access %temp, %72
+        %74:i32 = load %73
+        store %71, %74
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %75:i32 = load %i_1
+        %76:i32 = add %75, 1i
+        store %i_1, %76
+        next_iteration %b13
+      }
+    }
+    ret
+  }
+}
+%mergeSort_ = func():void -> %b17 {
+  %b17 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b18, c: %b19] {  # loop_4
+      %b18 = block {  # body
+        %88:i32 = load %m
+        %89:i32 = load %high
+        %90:bool = lte %88, %89
+        if %90 [t: %b20, f: %b21] {  # if_5
+          %b20 = block {  # true
+            exit_if  # if_5
+          }
+          %b21 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %91:i32 = load %low
+        store %i_2, %91
+        loop [b: %b22, c: %b23] {  # loop_5
+          %b22 = block {  # body
+            %92:i32 = load %i_2
+            %93:i32 = load %high
+            %94:bool = lt %92, %93
+            if %94 [t: %b24, f: %b25] {  # if_6
+              %b24 = block {  # true
+                exit_if  # if_6
+              }
+              %b25 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %95:i32 = load %i_2
+            store %f_1, %95
+            %96:i32 = load %i_2
+            %97:i32 = load %m
+            %98:i32 = add %96, %97
+            %99:i32 = sub %98, 1i
+            store %mid_1, %99
+            %100:i32 = load %i_2
+            %101:i32 = load %m
+            %102:i32 = mul 2i, %101
+            %103:i32 = add %100, %102
+            %104:i32 = sub %103, 1i
+            %105:i32 = load %high
+            %106:i32 = min %104, %105
+            store %to_1, %106
+            %107:i32 = load %f_1
+            store %param, %107
+            %108:i32 = load %mid_1
+            store %param_1, %108
+            %109:i32 = load %to_1
+            store %param_2, %109
+            %110:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b23
+          }
+          %b23 = block {  # continuing
+            %111:i32 = load %i_2
+            %112:i32 = load %m
+            %113:i32 = mul 2i, %112
+            %114:i32 = add %111, %113
+            store %i_2, %114
+            next_iteration %b22
+          }
+        }
+        continue %b19
+      }
+      %b19 = block {  # continuing
+        %115:i32 = load %m
+        %116:i32 = mul 2i, %115
+        store %m, %116
+        next_iteration %b18
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b26 {
+  %b26 = block {
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %121:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %122:f32 = load_vector_element %121, 0u
+    %123:i32 = convert %122
+    store %i_3, %123
+    loop [b: %b27, c: %b28] {  # loop_6
+      %b27 = block {  # body
+        %x_93:i32 = load %i_3
+        switch %x_93 [c: (9i, %b29), c: (8i, %b30), c: (7i, %b31), c: (6i, %b32), c: (5i, %b33), c: (4i, %b34), c: (3i, %b35), c: (2i, %b36), c: (1i, %b37), c: (0i, %b38), c: (default, %b39)] {  # switch_1
+          %b29 = block {  # case
+            %x_123:i32 = load %i_3
+            %126:ptr<private, i32, read_write> = access %data, %x_123
+            store %126, -5i
+            exit_switch  # switch_1
+          }
+          %b30 = block {  # case
+            %x_121:i32 = load %i_3
+            %128:ptr<private, i32, read_write> = access %data, %x_121
+            store %128, -4i
+            exit_switch  # switch_1
+          }
+          %b31 = block {  # case
+            %x_119:i32 = load %i_3
+            %130:ptr<private, i32, read_write> = access %data, %x_119
+            store %130, -3i
+            exit_switch  # switch_1
+          }
+          %b32 = block {  # case
+            %x_117:i32 = load %i_3
+            %132:ptr<private, i32, read_write> = access %data, %x_117
+            store %132, -2i
+            exit_switch  # switch_1
+          }
+          %b33 = block {  # case
+            %x_115:i32 = load %i_3
+            %134:ptr<private, i32, read_write> = access %data, %x_115
+            store %134, -1i
+            exit_switch  # switch_1
+          }
+          %b34 = block {  # case
+            %x_113:i32 = load %i_3
+            %136:ptr<private, i32, read_write> = access %data, %x_113
+            store %136, 0i
+            exit_switch  # switch_1
+          }
+          %b35 = block {  # case
+            %x_111:i32 = load %i_3
+            %138:ptr<private, i32, read_write> = access %data, %x_111
+            store %138, 1i
+            exit_switch  # switch_1
+          }
+          %b36 = block {  # case
+            %x_109:i32 = load %i_3
+            %140:ptr<private, i32, read_write> = access %data, %x_109
+            store %140, 2i
+            exit_switch  # switch_1
+          }
+          %b37 = block {  # case
+            %x_107:i32 = load %i_3
+            %142:ptr<private, i32, read_write> = access %data, %x_107
+            store %142, 3i
+            exit_switch  # switch_1
+          }
+          %b38 = block {  # case
+            %x_105:i32 = load %i_3
+            %144:ptr<private, i32, read_write> = access %data, %x_105
+            store %144, 4i
+            exit_switch  # switch_1
+          }
+          %b39 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %145:i32 = load %i_3
+        %146:i32 = add %145, 1i
+        store %i_3, %146
+        continue %b28
+      }
+      %b28 = block {  # continuing
+        %x_127:i32 = load %i_3
+        %148:bool = lt %x_127, 10i
+        %149:bool = eq %148, false
+        break_if %149 %b27
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b40, c: %b41] {  # loop_7
+      %b40 = block {  # body
+        %150:i32 = load %j_1
+        %151:bool = lt %150, 10i
+        if %151 [t: %b42, f: %b43] {  # if_7
+          %b42 = block {  # true
+            exit_if  # if_7
+          }
+          %b43 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %x_136:i32 = load %j_1
+        %153:ptr<private, i32, read_write> = access %temp, %x_136
+        %154:i32 = load %j_1
+        %155:ptr<private, i32, read_write> = access %data, %154
+        %156:i32 = load %155
+        store %153, %156
+        continue %b41
+      }
+      %b41 = block {  # continuing
+        %157:i32 = load %j_1
+        %158:i32 = add %157, 1i
+        store %j_1, %158
+        next_iteration %b40
+      }
+    }
+    %159:void = call %mergeSort_
+    %160:f32 = load_vector_element %gl_FragCoord, 1u
+    %161:i32 = convert %160
+    %162:bool = lt %161, 30i
+    if %162 [t: %b44, f: %b45] {  # if_8
+      %b44 = block {  # true
+        %163:ptr<private, i32, read_write> = access %data, 0i
+        %164:i32 = load %163
+        %165:f32 = convert %164
+        %166:f32 = div %165, 10.0f
+        %167:f32 = add 0.5f, %166
+        store %grey, %167
+        exit_if  # if_8
+      }
+      %b45 = block {  # false
+        %168:f32 = load_vector_element %gl_FragCoord, 1u
+        %169:i32 = convert %168
+        %170:bool = lt %169, 60i
+        if %170 [t: %b46, f: %b47] {  # if_9
+          %b46 = block {  # true
+            %171:ptr<private, i32, read_write> = access %data, 1i
+            %172:i32 = load %171
+            %173:f32 = convert %172
+            %174:f32 = div %173, 10.0f
+            %175:f32 = add 0.5f, %174
+            store %grey, %175
+            exit_if  # if_9
+          }
+          %b47 = block {  # false
+            %176:f32 = load_vector_element %gl_FragCoord, 1u
+            %177:i32 = convert %176
+            %178:bool = lt %177, 90i
+            if %178 [t: %b48, f: %b49] {  # if_10
+              %b48 = block {  # true
+                %179:ptr<private, i32, read_write> = access %data, 2i
+                %180:i32 = load %179
+                %181:f32 = convert %180
+                %182:f32 = div %181, 10.0f
+                %183:f32 = add 0.5f, %182
+                store %grey, %183
+                exit_if  # if_10
+              }
+              %b49 = block {  # false
+                %184:f32 = load_vector_element %gl_FragCoord, 1u
+                %185:i32 = convert %184
+                %186:bool = lt %185, 120i
+                if %186 [t: %b50, f: %b51] {  # if_11
+                  %b50 = block {  # true
+                    %187:ptr<private, i32, read_write> = access %data, 3i
+                    %188:i32 = load %187
+                    %189:f32 = convert %188
+                    %190:f32 = div %189, 10.0f
+                    %191:f32 = add 0.5f, %190
+                    store %grey, %191
+                    exit_if  # if_11
+                  }
+                  %b51 = block {  # false
+                    %192:f32 = load_vector_element %gl_FragCoord, 1u
+                    %193:i32 = convert %192
+                    %194:bool = lt %193, 150i
+                    if %194 [t: %b52, f: %b53] {  # if_12
+                      %b52 = block {  # true
+                        discard
+                        exit_if  # if_12
+                      }
+                      %b53 = block {  # false
+                        %195:f32 = load_vector_element %gl_FragCoord, 1u
+                        %196:i32 = convert %195
+                        %197:bool = lt %196, 180i
+                        if %197 [t: %b54, f: %b55] {  # if_13
+                          %b54 = block {  # true
+                            %198:ptr<private, i32, read_write> = access %data, 5i
+                            %199:i32 = load %198
+                            %200:f32 = convert %199
+                            %201:f32 = div %200, 10.0f
+                            %202:f32 = add 0.5f, %201
+                            store %grey, %202
+                            exit_if  # if_13
+                          }
+                          %b55 = block {  # false
+                            %203:f32 = load_vector_element %gl_FragCoord, 1u
+                            %204:i32 = convert %203
+                            %205:bool = lt %204, 210i
+                            if %205 [t: %b56, f: %b57] {  # if_14
+                              %b56 = block {  # true
+                                %206:ptr<private, i32, read_write> = access %data, 6i
+                                %207:i32 = load %206
+                                %208:f32 = convert %207
+                                %209:f32 = div %208, 10.0f
+                                %210:f32 = add 0.5f, %209
+                                store %grey, %210
+                                exit_if  # if_14
+                              }
+                              %b57 = block {  # false
+                                %211:f32 = load_vector_element %gl_FragCoord, 1u
+                                %212:i32 = convert %211
+                                %213:bool = lt %212, 240i
+                                if %213 [t: %b58, f: %b59] {  # if_15
+                                  %b58 = block {  # true
+                                    %214:ptr<private, i32, read_write> = access %data, 7i
+                                    %215:i32 = load %214
+                                    %216:f32 = convert %215
+                                    %217:f32 = div %216, 10.0f
+                                    %218:f32 = add 0.5f, %217
+                                    store %grey, %218
+                                    exit_if  # if_15
+                                  }
+                                  %b59 = block {  # false
+                                    %219:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %220:i32 = convert %219
+                                    %221:bool = lt %220, 270i
+                                    if %221 [t: %b60, f: %b61] {  # if_16
+                                      %b60 = block {  # true
+                                        %222:ptr<private, i32, read_write> = access %data, 8i
+                                        %223:i32 = load %222
+                                        %224:f32 = convert %223
+                                        %225:f32 = div %224, 10.0f
+                                        %226:f32 = add 0.5f, %225
+                                        store %grey, %226
+                                        exit_if  # if_16
+                                      }
+                                      %b61 = block {  # false
+                                        discard
+                                        exit_if  # if_16
+                                      }
+                                    }
+                                    exit_if  # if_15
+                                  }
+                                }
+                                exit_if  # if_14
+                              }
+                            }
+                            exit_if  # if_13
+                          }
+                        }
+                        exit_if  # if_12
+                      }
+                    }
+                    exit_if  # if_11
+                  }
+                }
+                exit_if  # if_10
+              }
+            }
+            exit_if  # if_9
+          }
+        }
+        exit_if  # if_8
+      }
+    }
+    %227:f32 = load %grey
+    %x_248:vec3<f32> = construct %227
+    %229:f32 = access %x_248, 0u
+    %230:f32 = access %x_248, 1u
+    %231:f32 = access %x_248, 2u
+    %232:vec4<f32> = construct %229, %230, %231, 1.0f
+    store %x_GLF_color, %232
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b62 {
+  %b62 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %235:void = call %main_1
+    %236:vec4<f32> = load %x_GLF_color
+    %237:main_out = construct %236
+    ret %237
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..69006f7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,541 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+buf1 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_32:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %x_254:i32 = load %f
+    store %k, %x_254
+    %x_255:i32 = load %f
+    store %i, %x_255
+    %x_256:i32 = load %mid
+    %18:i32 = add %x_256, 1i
+    store %j, %18
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_262:i32 = load %i
+        %x_263:i32 = load %mid
+        %x_265:i32 = load %j
+        %x_266:i32 = load %to
+        %23:bool = lte %x_262, %x_263
+        %24:bool = lte %x_265, %x_266
+        %25:bool = and %23, %24
+        if %25 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_270:i32 = load %i
+        %27:ptr<private, i32, read_write> = access %data, %x_270
+        %x_272:i32 = load %27
+        %x_273:i32 = load %j
+        %30:ptr<private, i32, read_write> = access %data, %x_273
+        %x_275:i32 = load %30
+        %32:bool = lt %x_272, %x_275
+        if %32 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_280:i32 = load %k
+            %34:i32 = add %x_280, 1i
+            store %k, %34
+            %x_282:i32 = load %i
+            %36:i32 = add %x_282, 1i
+            store %i, %36
+            %37:ptr<private, i32, read_write> = access %data, %x_282
+            %x_285:i32 = load %37
+            %39:ptr<private, i32, read_write> = access %temp, %x_280
+            store %39, %x_285
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_287:i32 = load %k
+            %41:i32 = add %x_287, 1i
+            store %k, %41
+            %x_289:i32 = load %j
+            %43:i32 = add %x_289, 1i
+            store %j, %43
+            %44:ptr<private, i32, read_write> = access %data, %x_289
+            %x_292:i32 = load %44
+            %46:ptr<private, i32, read_write> = access %temp, %x_287
+            store %46, %x_292
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %x_298:i32 = load %i
+        %x_300:i32 = load %i
+        %x_301:i32 = load %mid
+        %50:bool = lt %x_298, 10i
+        %51:bool = lte %x_300, %x_301
+        %52:bool = and %50, %51
+        if %52 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_305:i32 = load %k
+        %54:i32 = add %x_305, 1i
+        store %k, %54
+        %x_307:i32 = load %i
+        %56:i32 = add %x_307, 1i
+        store %i, %56
+        %57:ptr<private, i32, read_write> = access %data, %x_307
+        %x_310:i32 = load %57
+        %59:ptr<private, i32, read_write> = access %temp, %x_305
+        store %59, %x_310
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    %x_312:i32 = load %f
+    store %i_1, %x_312
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %x_317:i32 = load %i_1
+        %x_318:i32 = load %to
+        %63:bool = lte %x_317, %x_318
+        if %63 [t: %b15, f: %b16] {  # if_4
+          %b15 = block {  # true
+            exit_if  # if_4
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_321:i32 = load %i_1
+        %x_322:i32 = load %i_1
+        %66:ptr<private, i32, read_write> = access %temp, %x_322
+        %x_324:i32 = load %66
+        %68:ptr<private, i32, read_write> = access %data, %x_321
+        store %68, %x_324
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %x_326:i32 = load %i_1
+        %70:i32 = add %x_326, 1i
+        store %i_1, %70
+        next_iteration %b13
+      }
+    }
+    ret
+  }
+}
+%mergeSort_ = func():void -> %b17 {
+  %b17 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b18, c: %b19] {  # loop_4
+      %b18 = block {  # body
+        %x_333:i32 = load %m
+        %x_334:i32 = load %high
+        %84:bool = lte %x_333, %x_334
+        if %84 [t: %b20, f: %b21] {  # if_5
+          %b20 = block {  # true
+            exit_if  # if_5
+          }
+          %b21 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %x_337:i32 = load %low
+        store %i_2, %x_337
+        loop [b: %b22, c: %b23] {  # loop_5
+          %b22 = block {  # body
+            %x_342:i32 = load %i_2
+            %x_343:i32 = load %high
+            %88:bool = lt %x_342, %x_343
+            if %88 [t: %b24, f: %b25] {  # if_6
+              %b24 = block {  # true
+                exit_if  # if_6
+              }
+              %b25 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %x_346:i32 = load %i_2
+            store %f_1, %x_346
+            %x_347:i32 = load %i_2
+            %x_348:i32 = load %m
+            %92:i32 = add %x_347, %x_348
+            %93:i32 = sub %92, 1i
+            store %mid_1, %93
+            %x_351:i32 = load %i_2
+            %x_352:i32 = load %m
+            %x_356:i32 = load %high
+            %97:i32 = mul 2i, %x_352
+            %98:i32 = add %x_351, %97
+            %99:i32 = sub %98, 1i
+            %100:i32 = min %99, %x_356
+            store %to_1, %100
+            %x_358:i32 = load %f_1
+            store %param, %x_358
+            %x_359:i32 = load %mid_1
+            store %param_1, %x_359
+            %x_360:i32 = load %to_1
+            store %param_2, %x_360
+            %104:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b23
+          }
+          %b23 = block {  # continuing
+            %x_362:i32 = load %m
+            %x_364:i32 = load %i_2
+            %107:i32 = mul 2i, %x_362
+            %108:i32 = add %x_364, %107
+            store %i_2, %108
+            next_iteration %b22
+          }
+        }
+        continue %b19
+      }
+      %b19 = block {  # continuing
+        %x_366:i32 = load %m
+        %110:i32 = mul 2i, %x_366
+        store %m, %110
+        next_iteration %b18
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b26 {
+  %b26 = block {
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %115:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %x_87:f32 = load_vector_element %115, 0u
+    %117:i32 = convert %x_87
+    store %i_3, %117
+    loop [b: %b27, c: %b28] {  # loop_6
+      %b27 = block {  # body
+        %x_93:i32 = load %i_3
+        switch %x_93 [c: (9i, %b29), c: (8i, %b30), c: (7i, %b31), c: (6i, %b32), c: (5i, %b33), c: (4i, %b34), c: (3i, %b35), c: (2i, %b36), c: (1i, %b37), c: (0i, %b38), c: (default, %b39)] {  # switch_1
+          %b29 = block {  # case
+            %x_123:i32 = load %i_3
+            %120:ptr<private, i32, read_write> = access %data, %x_123
+            store %120, -5i
+            exit_switch  # switch_1
+          }
+          %b30 = block {  # case
+            %x_121:i32 = load %i_3
+            %122:ptr<private, i32, read_write> = access %data, %x_121
+            store %122, -4i
+            exit_switch  # switch_1
+          }
+          %b31 = block {  # case
+            %x_119:i32 = load %i_3
+            %124:ptr<private, i32, read_write> = access %data, %x_119
+            store %124, -3i
+            exit_switch  # switch_1
+          }
+          %b32 = block {  # case
+            %x_117:i32 = load %i_3
+            %126:ptr<private, i32, read_write> = access %data, %x_117
+            store %126, -2i
+            exit_switch  # switch_1
+          }
+          %b33 = block {  # case
+            %x_115:i32 = load %i_3
+            %128:ptr<private, i32, read_write> = access %data, %x_115
+            store %128, -1i
+            exit_switch  # switch_1
+          }
+          %b34 = block {  # case
+            %x_113:i32 = load %i_3
+            %130:ptr<private, i32, read_write> = access %data, %x_113
+            store %130, 0i
+            exit_switch  # switch_1
+          }
+          %b35 = block {  # case
+            %x_111:i32 = load %i_3
+            %132:ptr<private, i32, read_write> = access %data, %x_111
+            store %132, 1i
+            exit_switch  # switch_1
+          }
+          %b36 = block {  # case
+            %x_109:i32 = load %i_3
+            %134:ptr<private, i32, read_write> = access %data, %x_109
+            store %134, 2i
+            exit_switch  # switch_1
+          }
+          %b37 = block {  # case
+            %x_107:i32 = load %i_3
+            %136:ptr<private, i32, read_write> = access %data, %x_107
+            store %136, 3i
+            exit_switch  # switch_1
+          }
+          %b38 = block {  # case
+            %x_105:i32 = load %i_3
+            %138:ptr<private, i32, read_write> = access %data, %x_105
+            store %138, 4i
+            exit_switch  # switch_1
+          }
+          %b39 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %x_125:i32 = load %i_3
+        %140:i32 = add %x_125, 1i
+        store %i_3, %140
+        continue %b28
+      }
+      %b28 = block {  # continuing
+        %x_127:i32 = load %i_3
+        %142:bool = lt %x_127, 10i
+        %143:bool = eq %142, false
+        break_if %143 %b27
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b40, c: %b41] {  # loop_7
+      %b40 = block {  # body
+        %x_133:i32 = load %j_1
+        %145:bool = lt %x_133, 10i
+        if %145 [t: %b42, f: %b43] {  # if_7
+          %b42 = block {  # true
+            exit_if  # if_7
+          }
+          %b43 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %x_136:i32 = load %j_1
+        %x_137:i32 = load %j_1
+        %148:ptr<private, i32, read_write> = access %data, %x_137
+        %x_139:i32 = load %148
+        %150:ptr<private, i32, read_write> = access %temp, %x_136
+        store %150, %x_139
+        continue %b41
+      }
+      %b41 = block {  # continuing
+        %x_141:i32 = load %j_1
+        %152:i32 = add %x_141, 1i
+        store %j_1, %152
+        next_iteration %b40
+      }
+    }
+    %153:void = call %mergeSort_
+    %x_145:f32 = load_vector_element %gl_FragCoord, 1u
+    %155:i32 = convert %x_145
+    %156:bool = lt %155, 30i
+    if %156 [t: %b44, f: %b45] {  # if_8
+      %b44 = block {  # true
+        %157:ptr<private, i32, read_write> = access %data, 0i
+        %x_152:i32 = load %157
+        %159:f32 = convert %x_152
+        %160:f32 = div %159, 10.0f
+        %161:f32 = add 0.5f, %160
+        store %grey, %161
+        exit_if  # if_8
+      }
+      %b45 = block {  # false
+        %x_157:f32 = load_vector_element %gl_FragCoord, 1u
+        %163:i32 = convert %x_157
+        %164:bool = lt %163, 60i
+        if %164 [t: %b46, f: %b47] {  # if_9
+          %b46 = block {  # true
+            %165:ptr<private, i32, read_write> = access %data, 1i
+            %x_164:i32 = load %165
+            %167:f32 = convert %x_164
+            %168:f32 = div %167, 10.0f
+            %169:f32 = add 0.5f, %168
+            store %grey, %169
+            exit_if  # if_9
+          }
+          %b47 = block {  # false
+            %x_169:f32 = load_vector_element %gl_FragCoord, 1u
+            %171:i32 = convert %x_169
+            %172:bool = lt %171, 90i
+            if %172 [t: %b48, f: %b49] {  # if_10
+              %b48 = block {  # true
+                %173:ptr<private, i32, read_write> = access %data, 2i
+                %x_176:i32 = load %173
+                %175:f32 = convert %x_176
+                %176:f32 = div %175, 10.0f
+                %177:f32 = add 0.5f, %176
+                store %grey, %177
+                exit_if  # if_10
+              }
+              %b49 = block {  # false
+                %x_181:f32 = load_vector_element %gl_FragCoord, 1u
+                %179:i32 = convert %x_181
+                %180:bool = lt %179, 120i
+                if %180 [t: %b50, f: %b51] {  # if_11
+                  %b50 = block {  # true
+                    %181:ptr<private, i32, read_write> = access %data, 3i
+                    %x_188:i32 = load %181
+                    %183:f32 = convert %x_188
+                    %184:f32 = div %183, 10.0f
+                    %185:f32 = add 0.5f, %184
+                    store %grey, %185
+                    exit_if  # if_11
+                  }
+                  %b51 = block {  # false
+                    %x_193:f32 = load_vector_element %gl_FragCoord, 1u
+                    %187:i32 = convert %x_193
+                    %188:bool = lt %187, 150i
+                    if %188 [t: %b52, f: %b53] {  # if_12
+                      %b52 = block {  # true
+                        discard
+                        exit_if  # if_12
+                      }
+                      %b53 = block {  # false
+                        %x_200:f32 = load_vector_element %gl_FragCoord, 1u
+                        %190:i32 = convert %x_200
+                        %191:bool = lt %190, 180i
+                        if %191 [t: %b54, f: %b55] {  # if_13
+                          %b54 = block {  # true
+                            %192:ptr<private, i32, read_write> = access %data, 5i
+                            %x_207:i32 = load %192
+                            %194:f32 = convert %x_207
+                            %195:f32 = div %194, 10.0f
+                            %196:f32 = add 0.5f, %195
+                            store %grey, %196
+                            exit_if  # if_13
+                          }
+                          %b55 = block {  # false
+                            %x_212:f32 = load_vector_element %gl_FragCoord, 1u
+                            %198:i32 = convert %x_212
+                            %199:bool = lt %198, 210i
+                            if %199 [t: %b56, f: %b57] {  # if_14
+                              %b56 = block {  # true
+                                %200:ptr<private, i32, read_write> = access %data, 6i
+                                %x_219:i32 = load %200
+                                %202:f32 = convert %x_219
+                                %203:f32 = div %202, 10.0f
+                                %204:f32 = add 0.5f, %203
+                                store %grey, %204
+                                exit_if  # if_14
+                              }
+                              %b57 = block {  # false
+                                %x_224:f32 = load_vector_element %gl_FragCoord, 1u
+                                %206:i32 = convert %x_224
+                                %207:bool = lt %206, 240i
+                                if %207 [t: %b58, f: %b59] {  # if_15
+                                  %b58 = block {  # true
+                                    %208:ptr<private, i32, read_write> = access %data, 7i
+                                    %x_231:i32 = load %208
+                                    %210:f32 = convert %x_231
+                                    %211:f32 = div %210, 10.0f
+                                    %212:f32 = add 0.5f, %211
+                                    store %grey, %212
+                                    exit_if  # if_15
+                                  }
+                                  %b59 = block {  # false
+                                    %x_236:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %214:i32 = convert %x_236
+                                    %215:bool = lt %214, 270i
+                                    if %215 [t: %b60, f: %b61] {  # if_16
+                                      %b60 = block {  # true
+                                        %216:ptr<private, i32, read_write> = access %data, 8i
+                                        %x_243:i32 = load %216
+                                        %218:f32 = convert %x_243
+                                        %219:f32 = div %218, 10.0f
+                                        %220:f32 = add 0.5f, %219
+                                        store %grey, %220
+                                        exit_if  # if_16
+                                      }
+                                      %b61 = block {  # false
+                                        discard
+                                        exit_if  # if_16
+                                      }
+                                    }
+                                    exit_if  # if_15
+                                  }
+                                }
+                                exit_if  # if_14
+                              }
+                            }
+                            exit_if  # if_13
+                          }
+                        }
+                        exit_if  # if_12
+                      }
+                    }
+                    exit_if  # if_11
+                  }
+                }
+                exit_if  # if_10
+              }
+            }
+            exit_if  # if_9
+          }
+        }
+        exit_if  # if_8
+      }
+    }
+    %x_247:f32 = load %grey
+    %x_248:vec3<f32> = construct %x_247, %x_247, %x_247
+    %223:f32 = access %x_248, 0u
+    %224:f32 = access %x_248, 1u
+    %225:f32 = access %x_248, 2u
+    %226:vec4<f32> = construct %223, %224, %225, 1.0f
+    store %x_GLF_color, %226
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b62 {
+  %b62 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %229:void = call %main_1
+    %230:vec4<f32> = load %x_GLF_color
+    %231:main_out = construct %230
+    ret %231
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..57d67b4
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.spvasm.expected.ir.msl
@@ -0,0 +1,555 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+buf1 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_32:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %15:i32 = load %f
+    store %k, %15
+    %16:i32 = load %f
+    store %i, %16
+    %17:i32 = load %mid
+    %18:i32 = add %17, 1i
+    store %j, %18
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %19:i32 = load %i
+        %20:i32 = load %mid
+        %21:bool = lte %19, %20
+        %22:i32 = load %j
+        %23:i32 = load %to
+        %24:bool = lte %22, %23
+        %25:bool = and %21, %24
+        if %25 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %26:i32 = load %i
+        %27:ptr<private, i32, read_write> = access %data, %26
+        %28:i32 = load %27
+        %29:i32 = load %j
+        %30:ptr<private, i32, read_write> = access %data, %29
+        %31:i32 = load %30
+        %32:bool = lt %28, %31
+        if %32 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_281:i32 = load %k
+            %34:i32 = load %k
+            %35:i32 = add %34, 1i
+            store %k, %35
+            %x_283:i32 = load %i
+            %37:i32 = load %i
+            %38:i32 = add %37, 1i
+            store %i, %38
+            %39:ptr<private, i32, read_write> = access %temp, %x_281
+            %40:ptr<private, i32, read_write> = access %data, %x_283
+            %41:i32 = load %40
+            store %39, %41
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_288:i32 = load %k
+            %43:i32 = load %k
+            %44:i32 = add %43, 1i
+            store %k, %44
+            %x_290:i32 = load %j
+            %46:i32 = load %j
+            %47:i32 = add %46, 1i
+            store %j, %47
+            %48:ptr<private, i32, read_write> = access %temp, %x_288
+            %49:ptr<private, i32, read_write> = access %data, %x_290
+            %50:i32 = load %49
+            store %48, %50
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %51:i32 = load %i
+        %52:bool = lt %51, 10i
+        %53:i32 = load %i
+        %54:i32 = load %mid
+        %55:bool = lte %53, %54
+        %56:bool = and %52, %55
+        if %56 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_306:i32 = load %k
+        %58:i32 = load %k
+        %59:i32 = add %58, 1i
+        store %k, %59
+        %x_308:i32 = load %i
+        %61:i32 = load %i
+        %62:i32 = add %61, 1i
+        store %i, %62
+        %63:ptr<private, i32, read_write> = access %temp, %x_306
+        %64:ptr<private, i32, read_write> = access %data, %x_308
+        %65:i32 = load %64
+        store %63, %65
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    %66:i32 = load %f
+    store %i_1, %66
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %67:i32 = load %i_1
+        %68:i32 = load %to
+        %69:bool = lte %67, %68
+        if %69 [t: %b15, f: %b16] {  # if_4
+          %b15 = block {  # true
+            exit_if  # if_4
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_322:i32 = load %i_1
+        %71:ptr<private, i32, read_write> = access %data, %x_322
+        %72:i32 = load %i_1
+        %73:ptr<private, i32, read_write> = access %temp, %72
+        %74:i32 = load %73
+        store %71, %74
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %75:i32 = load %i_1
+        %76:i32 = add %75, 1i
+        store %i_1, %76
+        next_iteration %b13
+      }
+    }
+    ret
+  }
+}
+%mergeSort_ = func():void -> %b17 {
+  %b17 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b18, c: %b19] {  # loop_4
+      %b18 = block {  # body
+        %88:i32 = load %m
+        %89:i32 = load %high
+        %90:bool = lte %88, %89
+        if %90 [t: %b20, f: %b21] {  # if_5
+          %b20 = block {  # true
+            exit_if  # if_5
+          }
+          %b21 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %91:i32 = load %low
+        store %i_2, %91
+        loop [b: %b22, c: %b23] {  # loop_5
+          %b22 = block {  # body
+            %92:i32 = load %i_2
+            %93:i32 = load %high
+            %94:bool = lt %92, %93
+            if %94 [t: %b24, f: %b25] {  # if_6
+              %b24 = block {  # true
+                exit_if  # if_6
+              }
+              %b25 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %95:i32 = load %i_2
+            store %f_1, %95
+            %96:i32 = load %i_2
+            %97:i32 = load %m
+            %98:i32 = add %96, %97
+            %99:i32 = sub %98, 1i
+            store %mid_1, %99
+            %100:i32 = load %i_2
+            %101:i32 = load %m
+            %102:i32 = mul 2i, %101
+            %103:i32 = add %100, %102
+            %104:i32 = sub %103, 1i
+            %105:i32 = load %high
+            %106:i32 = min %104, %105
+            store %to_1, %106
+            %107:i32 = load %f_1
+            store %param, %107
+            %108:i32 = load %mid_1
+            store %param_1, %108
+            %109:i32 = load %to_1
+            store %param_2, %109
+            %110:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b23
+          }
+          %b23 = block {  # continuing
+            %111:i32 = load %i_2
+            %112:i32 = load %m
+            %113:i32 = mul 2i, %112
+            %114:i32 = add %111, %113
+            store %i_2, %114
+            next_iteration %b22
+          }
+        }
+        continue %b19
+      }
+      %b19 = block {  # continuing
+        %115:i32 = load %m
+        %116:i32 = mul 2i, %115
+        store %m, %116
+        next_iteration %b18
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b26 {
+  %b26 = block {
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %121:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %122:f32 = load_vector_element %121, 0u
+    %123:i32 = convert %122
+    store %i_3, %123
+    loop [b: %b27, c: %b28] {  # loop_6
+      %b27 = block {  # body
+        %x_94:i32 = load %i_3
+        switch %x_94 [c: (9i, %b29), c: (8i, %b30), c: (7i, %b31), c: (6i, %b32), c: (5i, %b33), c: (4i, %b34), c: (3i, %b35), c: (2i, %b36), c: (1i, %b37), c: (0i, %b38), c: (default, %b39)] {  # switch_1
+          %b29 = block {  # case
+            %x_124:i32 = load %i_3
+            %126:ptr<private, i32, read_write> = access %data, %x_124
+            store %126, -5i
+            if true [t: %b40, f: %b41] {  # if_7
+              %b40 = block {  # true
+                exit_if  # if_7
+              }
+              %b41 = block {  # false
+                continue %b28
+              }
+            }
+            exit_switch  # switch_1
+          }
+          %b30 = block {  # case
+            %x_122:i32 = load %i_3
+            %128:ptr<private, i32, read_write> = access %data, %x_122
+            store %128, -4i
+            exit_switch  # switch_1
+          }
+          %b31 = block {  # case
+            %x_120:i32 = load %i_3
+            %130:ptr<private, i32, read_write> = access %data, %x_120
+            store %130, -3i
+            exit_switch  # switch_1
+          }
+          %b32 = block {  # case
+            %x_118:i32 = load %i_3
+            %132:ptr<private, i32, read_write> = access %data, %x_118
+            store %132, -2i
+            exit_switch  # switch_1
+          }
+          %b33 = block {  # case
+            %x_116:i32 = load %i_3
+            %134:ptr<private, i32, read_write> = access %data, %x_116
+            store %134, -1i
+            exit_switch  # switch_1
+          }
+          %b34 = block {  # case
+            %x_114:i32 = load %i_3
+            %136:ptr<private, i32, read_write> = access %data, %x_114
+            store %136, 0i
+            exit_switch  # switch_1
+          }
+          %b35 = block {  # case
+            %x_112:i32 = load %i_3
+            %138:ptr<private, i32, read_write> = access %data, %x_112
+            store %138, 1i
+            exit_switch  # switch_1
+          }
+          %b36 = block {  # case
+            %x_110:i32 = load %i_3
+            %140:ptr<private, i32, read_write> = access %data, %x_110
+            store %140, 2i
+            exit_switch  # switch_1
+          }
+          %b37 = block {  # case
+            %x_108:i32 = load %i_3
+            %142:ptr<private, i32, read_write> = access %data, %x_108
+            store %142, 3i
+            exit_switch  # switch_1
+          }
+          %b38 = block {  # case
+            %x_106:i32 = load %i_3
+            %144:ptr<private, i32, read_write> = access %data, %x_106
+            store %144, 4i
+            exit_switch  # switch_1
+          }
+          %b39 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %145:i32 = load %i_3
+        %146:i32 = add %145, 1i
+        store %i_3, %146
+        continue %b28
+      }
+      %b28 = block {  # continuing
+        %x_128:i32 = load %i_3
+        %148:bool = lt %x_128, 10i
+        %149:bool = eq %148, false
+        break_if %149 %b27
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b42, c: %b43] {  # loop_7
+      %b42 = block {  # body
+        %150:i32 = load %j_1
+        %151:bool = lt %150, 10i
+        if %151 [t: %b44, f: %b45] {  # if_8
+          %b44 = block {  # true
+            exit_if  # if_8
+          }
+          %b45 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %x_137:i32 = load %j_1
+        %153:ptr<private, i32, read_write> = access %temp, %x_137
+        %154:i32 = load %j_1
+        %155:ptr<private, i32, read_write> = access %data, %154
+        %156:i32 = load %155
+        store %153, %156
+        continue %b43
+      }
+      %b43 = block {  # continuing
+        %157:i32 = load %j_1
+        %158:i32 = add %157, 1i
+        store %j_1, %158
+        next_iteration %b42
+      }
+    }
+    %159:void = call %mergeSort_
+    %160:f32 = load_vector_element %gl_FragCoord, 1u
+    %161:i32 = convert %160
+    %162:bool = lt %161, 30i
+    if %162 [t: %b46, f: %b47] {  # if_9
+      %b46 = block {  # true
+        %163:ptr<private, i32, read_write> = access %data, 0i
+        %164:i32 = load %163
+        %165:f32 = convert %164
+        %166:f32 = div %165, 10.0f
+        %167:f32 = add 0.5f, %166
+        store %grey, %167
+        exit_if  # if_9
+      }
+      %b47 = block {  # false
+        %168:f32 = load_vector_element %gl_FragCoord, 1u
+        %169:i32 = convert %168
+        %170:bool = lt %169, 60i
+        if %170 [t: %b48, f: %b49] {  # if_10
+          %b48 = block {  # true
+            %171:ptr<private, i32, read_write> = access %data, 1i
+            %172:i32 = load %171
+            %173:f32 = convert %172
+            %174:f32 = div %173, 10.0f
+            %175:f32 = add 0.5f, %174
+            store %grey, %175
+            exit_if  # if_10
+          }
+          %b49 = block {  # false
+            %176:f32 = load_vector_element %gl_FragCoord, 1u
+            %177:i32 = convert %176
+            %178:bool = lt %177, 90i
+            if %178 [t: %b50, f: %b51] {  # if_11
+              %b50 = block {  # true
+                %179:ptr<private, i32, read_write> = access %data, 2i
+                %180:i32 = load %179
+                %181:f32 = convert %180
+                %182:f32 = div %181, 10.0f
+                %183:f32 = add 0.5f, %182
+                store %grey, %183
+                exit_if  # if_11
+              }
+              %b51 = block {  # false
+                %184:f32 = load_vector_element %gl_FragCoord, 1u
+                %185:i32 = convert %184
+                %186:bool = lt %185, 120i
+                if %186 [t: %b52, f: %b53] {  # if_12
+                  %b52 = block {  # true
+                    %187:ptr<private, i32, read_write> = access %data, 3i
+                    %188:i32 = load %187
+                    %189:f32 = convert %188
+                    %190:f32 = div %189, 10.0f
+                    %191:f32 = add 0.5f, %190
+                    store %grey, %191
+                    exit_if  # if_12
+                  }
+                  %b53 = block {  # false
+                    %192:f32 = load_vector_element %gl_FragCoord, 1u
+                    %193:i32 = convert %192
+                    %194:bool = lt %193, 150i
+                    if %194 [t: %b54, f: %b55] {  # if_13
+                      %b54 = block {  # true
+                        discard
+                        exit_if  # if_13
+                      }
+                      %b55 = block {  # false
+                        %195:f32 = load_vector_element %gl_FragCoord, 1u
+                        %196:i32 = convert %195
+                        %197:bool = lt %196, 180i
+                        if %197 [t: %b56, f: %b57] {  # if_14
+                          %b56 = block {  # true
+                            %198:ptr<private, i32, read_write> = access %data, 5i
+                            %199:i32 = load %198
+                            %200:f32 = convert %199
+                            %201:f32 = div %200, 10.0f
+                            %202:f32 = add 0.5f, %201
+                            store %grey, %202
+                            exit_if  # if_14
+                          }
+                          %b57 = block {  # false
+                            %203:f32 = load_vector_element %gl_FragCoord, 1u
+                            %204:i32 = convert %203
+                            %205:bool = lt %204, 210i
+                            if %205 [t: %b58, f: %b59] {  # if_15
+                              %b58 = block {  # true
+                                %206:ptr<private, i32, read_write> = access %data, 6i
+                                %207:i32 = load %206
+                                %208:f32 = convert %207
+                                %209:f32 = div %208, 10.0f
+                                %210:f32 = add 0.5f, %209
+                                store %grey, %210
+                                exit_if  # if_15
+                              }
+                              %b59 = block {  # false
+                                %211:f32 = load_vector_element %gl_FragCoord, 1u
+                                %212:i32 = convert %211
+                                %213:bool = lt %212, 240i
+                                if %213 [t: %b60, f: %b61] {  # if_16
+                                  %b60 = block {  # true
+                                    %214:ptr<private, i32, read_write> = access %data, 7i
+                                    %215:i32 = load %214
+                                    %216:f32 = convert %215
+                                    %217:f32 = div %216, 10.0f
+                                    %218:f32 = add 0.5f, %217
+                                    store %grey, %218
+                                    exit_if  # if_16
+                                  }
+                                  %b61 = block {  # false
+                                    %219:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %220:i32 = convert %219
+                                    %221:bool = lt %220, 270i
+                                    if %221 [t: %b62, f: %b63] {  # if_17
+                                      %b62 = block {  # true
+                                        %222:ptr<private, i32, read_write> = access %data, 8i
+                                        %223:i32 = load %222
+                                        %224:f32 = convert %223
+                                        %225:f32 = div %224, 10.0f
+                                        %226:f32 = add 0.5f, %225
+                                        store %grey, %226
+                                        exit_if  # if_17
+                                      }
+                                      %b63 = block {  # false
+                                        discard
+                                        exit_if  # if_17
+                                      }
+                                    }
+                                    exit_if  # if_16
+                                  }
+                                }
+                                exit_if  # if_15
+                              }
+                            }
+                            exit_if  # if_14
+                          }
+                        }
+                        exit_if  # if_13
+                      }
+                    }
+                    exit_if  # if_12
+                  }
+                }
+                exit_if  # if_11
+              }
+            }
+            exit_if  # if_10
+          }
+        }
+        exit_if  # if_9
+      }
+    }
+    %227:f32 = load %grey
+    %x_249:vec3<f32> = construct %227
+    %229:f32 = access %x_249, 0u
+    %230:f32 = access %x_249, 1u
+    %231:f32 = access %x_249, 2u
+    %232:vec4<f32> = construct %229, %230, %231, 1.0f
+    store %x_GLF_color, %232
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b64 {
+  %b64 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %235:void = call %main_1
+    %236:vec4<f32> = load %x_GLF_color
+    %237:main_out = construct %236
+    ret %237
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0413b19
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl.expected.ir.msl
@@ -0,0 +1,549 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+buf1 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_32:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %x_255:i32 = load %f
+    store %k, %x_255
+    %x_256:i32 = load %f
+    store %i, %x_256
+    %x_257:i32 = load %mid
+    %18:i32 = add %x_257, 1i
+    store %j, %18
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_263:i32 = load %i
+        %x_264:i32 = load %mid
+        %x_266:i32 = load %j
+        %x_267:i32 = load %to
+        %23:bool = lte %x_263, %x_264
+        %24:bool = lte %x_266, %x_267
+        %25:bool = and %23, %24
+        if %25 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_271:i32 = load %i
+        %27:ptr<private, i32, read_write> = access %data, %x_271
+        %x_273:i32 = load %27
+        %x_274:i32 = load %j
+        %30:ptr<private, i32, read_write> = access %data, %x_274
+        %x_276:i32 = load %30
+        %32:bool = lt %x_273, %x_276
+        if %32 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_281:i32 = load %k
+            %34:i32 = add %x_281, 1i
+            store %k, %34
+            %x_283:i32 = load %i
+            %36:i32 = add %x_283, 1i
+            store %i, %36
+            %37:ptr<private, i32, read_write> = access %data, %x_283
+            %x_286:i32 = load %37
+            %39:ptr<private, i32, read_write> = access %temp, %x_281
+            store %39, %x_286
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_288:i32 = load %k
+            %41:i32 = add %x_288, 1i
+            store %k, %41
+            %x_290:i32 = load %j
+            %43:i32 = add %x_290, 1i
+            store %j, %43
+            %44:ptr<private, i32, read_write> = access %data, %x_290
+            %x_293:i32 = load %44
+            %46:ptr<private, i32, read_write> = access %temp, %x_288
+            store %46, %x_293
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %x_299:i32 = load %i
+        %x_301:i32 = load %i
+        %x_302:i32 = load %mid
+        %50:bool = lt %x_299, 10i
+        %51:bool = lte %x_301, %x_302
+        %52:bool = and %50, %51
+        if %52 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_306:i32 = load %k
+        %54:i32 = add %x_306, 1i
+        store %k, %54
+        %x_308:i32 = load %i
+        %56:i32 = add %x_308, 1i
+        store %i, %56
+        %57:ptr<private, i32, read_write> = access %data, %x_308
+        %x_311:i32 = load %57
+        %59:ptr<private, i32, read_write> = access %temp, %x_306
+        store %59, %x_311
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    %x_313:i32 = load %f
+    store %i_1, %x_313
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %x_318:i32 = load %i_1
+        %x_319:i32 = load %to
+        %63:bool = lte %x_318, %x_319
+        if %63 [t: %b15, f: %b16] {  # if_4
+          %b15 = block {  # true
+            exit_if  # if_4
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_322:i32 = load %i_1
+        %x_323:i32 = load %i_1
+        %66:ptr<private, i32, read_write> = access %temp, %x_323
+        %x_325:i32 = load %66
+        %68:ptr<private, i32, read_write> = access %data, %x_322
+        store %68, %x_325
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %x_327:i32 = load %i_1
+        %70:i32 = add %x_327, 1i
+        store %i_1, %70
+        next_iteration %b13
+      }
+    }
+    ret
+  }
+}
+%mergeSort_ = func():void -> %b17 {
+  %b17 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b18, c: %b19] {  # loop_4
+      %b18 = block {  # body
+        %x_334:i32 = load %m
+        %x_335:i32 = load %high
+        %84:bool = lte %x_334, %x_335
+        if %84 [t: %b20, f: %b21] {  # if_5
+          %b20 = block {  # true
+            exit_if  # if_5
+          }
+          %b21 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %x_338:i32 = load %low
+        store %i_2, %x_338
+        loop [b: %b22, c: %b23] {  # loop_5
+          %b22 = block {  # body
+            %x_343:i32 = load %i_2
+            %x_344:i32 = load %high
+            %88:bool = lt %x_343, %x_344
+            if %88 [t: %b24, f: %b25] {  # if_6
+              %b24 = block {  # true
+                exit_if  # if_6
+              }
+              %b25 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %x_347:i32 = load %i_2
+            store %f_1, %x_347
+            %x_348:i32 = load %i_2
+            %x_349:i32 = load %m
+            %92:i32 = add %x_348, %x_349
+            %93:i32 = sub %92, 1i
+            store %mid_1, %93
+            %x_352:i32 = load %i_2
+            %x_353:i32 = load %m
+            %x_357:i32 = load %high
+            %97:i32 = mul 2i, %x_353
+            %98:i32 = add %x_352, %97
+            %99:i32 = sub %98, 1i
+            %100:i32 = min %99, %x_357
+            store %to_1, %100
+            %x_359:i32 = load %f_1
+            store %param, %x_359
+            %x_360:i32 = load %mid_1
+            store %param_1, %x_360
+            %x_361:i32 = load %to_1
+            store %param_2, %x_361
+            %104:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b23
+          }
+          %b23 = block {  # continuing
+            %x_363:i32 = load %m
+            %x_365:i32 = load %i_2
+            %107:i32 = mul 2i, %x_363
+            %108:i32 = add %x_365, %107
+            store %i_2, %108
+            next_iteration %b22
+          }
+        }
+        continue %b19
+      }
+      %b19 = block {  # continuing
+        %x_367:i32 = load %m
+        %110:i32 = mul 2i, %x_367
+        store %m, %110
+        next_iteration %b18
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b26 {
+  %b26 = block {
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %115:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %x_88:f32 = load_vector_element %115, 0u
+    %117:i32 = convert %x_88
+    store %i_3, %117
+    loop [b: %b27, c: %b28] {  # loop_6
+      %b27 = block {  # body
+        %x_94:i32 = load %i_3
+        switch %x_94 [c: (9i, %b29), c: (8i, %b30), c: (7i, %b31), c: (6i, %b32), c: (5i, %b33), c: (4i, %b34), c: (3i, %b35), c: (2i, %b36), c: (1i, %b37), c: (0i, %b38), c: (default, %b39)] {  # switch_1
+          %b29 = block {  # case
+            %x_124:i32 = load %i_3
+            %120:ptr<private, i32, read_write> = access %data, %x_124
+            store %120, -5i
+            if true [t: %b40, f: %b41] {  # if_7
+              %b40 = block {  # true
+                exit_if  # if_7
+              }
+              %b41 = block {  # false
+                continue %b28
+              }
+            }
+            exit_switch  # switch_1
+          }
+          %b30 = block {  # case
+            %x_122:i32 = load %i_3
+            %122:ptr<private, i32, read_write> = access %data, %x_122
+            store %122, -4i
+            exit_switch  # switch_1
+          }
+          %b31 = block {  # case
+            %x_120:i32 = load %i_3
+            %124:ptr<private, i32, read_write> = access %data, %x_120
+            store %124, -3i
+            exit_switch  # switch_1
+          }
+          %b32 = block {  # case
+            %x_118:i32 = load %i_3
+            %126:ptr<private, i32, read_write> = access %data, %x_118
+            store %126, -2i
+            exit_switch  # switch_1
+          }
+          %b33 = block {  # case
+            %x_116:i32 = load %i_3
+            %128:ptr<private, i32, read_write> = access %data, %x_116
+            store %128, -1i
+            exit_switch  # switch_1
+          }
+          %b34 = block {  # case
+            %x_114:i32 = load %i_3
+            %130:ptr<private, i32, read_write> = access %data, %x_114
+            store %130, 0i
+            exit_switch  # switch_1
+          }
+          %b35 = block {  # case
+            %x_112:i32 = load %i_3
+            %132:ptr<private, i32, read_write> = access %data, %x_112
+            store %132, 1i
+            exit_switch  # switch_1
+          }
+          %b36 = block {  # case
+            %x_110:i32 = load %i_3
+            %134:ptr<private, i32, read_write> = access %data, %x_110
+            store %134, 2i
+            exit_switch  # switch_1
+          }
+          %b37 = block {  # case
+            %x_108:i32 = load %i_3
+            %136:ptr<private, i32, read_write> = access %data, %x_108
+            store %136, 3i
+            exit_switch  # switch_1
+          }
+          %b38 = block {  # case
+            %x_106:i32 = load %i_3
+            %138:ptr<private, i32, read_write> = access %data, %x_106
+            store %138, 4i
+            exit_switch  # switch_1
+          }
+          %b39 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %x_126:i32 = load %i_3
+        %140:i32 = add %x_126, 1i
+        store %i_3, %140
+        continue %b28
+      }
+      %b28 = block {  # continuing
+        %x_128:i32 = load %i_3
+        %142:bool = lt %x_128, 10i
+        %143:bool = eq %142, false
+        break_if %143 %b27
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b42, c: %b43] {  # loop_7
+      %b42 = block {  # body
+        %x_134:i32 = load %j_1
+        %145:bool = lt %x_134, 10i
+        if %145 [t: %b44, f: %b45] {  # if_8
+          %b44 = block {  # true
+            exit_if  # if_8
+          }
+          %b45 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %x_137:i32 = load %j_1
+        %x_138:i32 = load %j_1
+        %148:ptr<private, i32, read_write> = access %data, %x_138
+        %x_140:i32 = load %148
+        %150:ptr<private, i32, read_write> = access %temp, %x_137
+        store %150, %x_140
+        continue %b43
+      }
+      %b43 = block {  # continuing
+        %x_142:i32 = load %j_1
+        %152:i32 = add %x_142, 1i
+        store %j_1, %152
+        next_iteration %b42
+      }
+    }
+    %153:void = call %mergeSort_
+    %x_146:f32 = load_vector_element %gl_FragCoord, 1u
+    %155:i32 = convert %x_146
+    %156:bool = lt %155, 30i
+    if %156 [t: %b46, f: %b47] {  # if_9
+      %b46 = block {  # true
+        %157:ptr<private, i32, read_write> = access %data, 0i
+        %x_153:i32 = load %157
+        %159:f32 = convert %x_153
+        %160:f32 = div %159, 10.0f
+        %161:f32 = add 0.5f, %160
+        store %grey, %161
+        exit_if  # if_9
+      }
+      %b47 = block {  # false
+        %x_158:f32 = load_vector_element %gl_FragCoord, 1u
+        %163:i32 = convert %x_158
+        %164:bool = lt %163, 60i
+        if %164 [t: %b48, f: %b49] {  # if_10
+          %b48 = block {  # true
+            %165:ptr<private, i32, read_write> = access %data, 1i
+            %x_165:i32 = load %165
+            %167:f32 = convert %x_165
+            %168:f32 = div %167, 10.0f
+            %169:f32 = add 0.5f, %168
+            store %grey, %169
+            exit_if  # if_10
+          }
+          %b49 = block {  # false
+            %x_170:f32 = load_vector_element %gl_FragCoord, 1u
+            %171:i32 = convert %x_170
+            %172:bool = lt %171, 90i
+            if %172 [t: %b50, f: %b51] {  # if_11
+              %b50 = block {  # true
+                %173:ptr<private, i32, read_write> = access %data, 2i
+                %x_177:i32 = load %173
+                %175:f32 = convert %x_177
+                %176:f32 = div %175, 10.0f
+                %177:f32 = add 0.5f, %176
+                store %grey, %177
+                exit_if  # if_11
+              }
+              %b51 = block {  # false
+                %x_182:f32 = load_vector_element %gl_FragCoord, 1u
+                %179:i32 = convert %x_182
+                %180:bool = lt %179, 120i
+                if %180 [t: %b52, f: %b53] {  # if_12
+                  %b52 = block {  # true
+                    %181:ptr<private, i32, read_write> = access %data, 3i
+                    %x_189:i32 = load %181
+                    %183:f32 = convert %x_189
+                    %184:f32 = div %183, 10.0f
+                    %185:f32 = add 0.5f, %184
+                    store %grey, %185
+                    exit_if  # if_12
+                  }
+                  %b53 = block {  # false
+                    %x_194:f32 = load_vector_element %gl_FragCoord, 1u
+                    %187:i32 = convert %x_194
+                    %188:bool = lt %187, 150i
+                    if %188 [t: %b54, f: %b55] {  # if_13
+                      %b54 = block {  # true
+                        discard
+                        exit_if  # if_13
+                      }
+                      %b55 = block {  # false
+                        %x_201:f32 = load_vector_element %gl_FragCoord, 1u
+                        %190:i32 = convert %x_201
+                        %191:bool = lt %190, 180i
+                        if %191 [t: %b56, f: %b57] {  # if_14
+                          %b56 = block {  # true
+                            %192:ptr<private, i32, read_write> = access %data, 5i
+                            %x_208:i32 = load %192
+                            %194:f32 = convert %x_208
+                            %195:f32 = div %194, 10.0f
+                            %196:f32 = add 0.5f, %195
+                            store %grey, %196
+                            exit_if  # if_14
+                          }
+                          %b57 = block {  # false
+                            %x_213:f32 = load_vector_element %gl_FragCoord, 1u
+                            %198:i32 = convert %x_213
+                            %199:bool = lt %198, 210i
+                            if %199 [t: %b58, f: %b59] {  # if_15
+                              %b58 = block {  # true
+                                %200:ptr<private, i32, read_write> = access %data, 6i
+                                %x_220:i32 = load %200
+                                %202:f32 = convert %x_220
+                                %203:f32 = div %202, 10.0f
+                                %204:f32 = add 0.5f, %203
+                                store %grey, %204
+                                exit_if  # if_15
+                              }
+                              %b59 = block {  # false
+                                %x_225:f32 = load_vector_element %gl_FragCoord, 1u
+                                %206:i32 = convert %x_225
+                                %207:bool = lt %206, 240i
+                                if %207 [t: %b60, f: %b61] {  # if_16
+                                  %b60 = block {  # true
+                                    %208:ptr<private, i32, read_write> = access %data, 7i
+                                    %x_232:i32 = load %208
+                                    %210:f32 = convert %x_232
+                                    %211:f32 = div %210, 10.0f
+                                    %212:f32 = add 0.5f, %211
+                                    store %grey, %212
+                                    exit_if  # if_16
+                                  }
+                                  %b61 = block {  # false
+                                    %x_237:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %214:i32 = convert %x_237
+                                    %215:bool = lt %214, 270i
+                                    if %215 [t: %b62, f: %b63] {  # if_17
+                                      %b62 = block {  # true
+                                        %216:ptr<private, i32, read_write> = access %data, 8i
+                                        %x_244:i32 = load %216
+                                        %218:f32 = convert %x_244
+                                        %219:f32 = div %218, 10.0f
+                                        %220:f32 = add 0.5f, %219
+                                        store %grey, %220
+                                        exit_if  # if_17
+                                      }
+                                      %b63 = block {  # false
+                                        discard
+                                        exit_if  # if_17
+                                      }
+                                    }
+                                    exit_if  # if_16
+                                  }
+                                }
+                                exit_if  # if_15
+                              }
+                            }
+                            exit_if  # if_14
+                          }
+                        }
+                        exit_if  # if_13
+                      }
+                    }
+                    exit_if  # if_12
+                  }
+                }
+                exit_if  # if_11
+              }
+            }
+            exit_if  # if_10
+          }
+        }
+        exit_if  # if_9
+      }
+    }
+    %x_248:f32 = load %grey
+    %x_249:vec3<f32> = construct %x_248, %x_248, %x_248
+    %223:f32 = access %x_249, 0u
+    %224:f32 = access %x_249, 1u
+    %225:f32 = access %x_249, 2u
+    %226:vec4<f32> = construct %223, %224, %225, 1.0f
+    store %x_GLF_color, %226
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b64 {
+  %b64 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %229:void = call %main_1
+    %230:vec4<f32> = load %x_GLF_color
+    %231:main_out = construct %230
+    ret %231
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..73c8258
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm.expected.ir.msl
@@ -0,0 +1,221 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %data:ptr<function, array<f32, 10>, read_write> = var
+    %x_40:ptr<function, i32, read_write> = var
+    %x_52:ptr<function, i32, read_write> = var
+    store %x_40, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_41:ptr<function, i32, read_write> = var
+        %10:i32 = load %x_40
+        %11:bool = lt %10, 10i
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %12:i32 = load %x_40
+        %13:ptr<function, f32, read_write> = access %data, %12
+        %14:i32 = load %x_40
+        %15:i32 = sub 10i, %14
+        %16:f32 = convert %15
+        %17:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+        %18:f32 = load_vector_element %17, 1u
+        %19:f32 = mul %16, %18
+        store %13, %19
+        %20:i32 = load %x_40
+        %21:i32 = add %20, 1i
+        store %x_41, %21
+        %22:i32 = load %x_41
+        store %x_40, %22
+        next_iteration %b3
+      }
+    }
+    store %x_52, 0i
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_59:ptr<function, i32, read_write> = var
+        %x_53:ptr<function, i32, read_write> = var
+        %25:i32 = load %x_52
+        %26:bool = lt %25, 9i
+        if %26 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        store %x_59, 0i
+        loop [b: %b11, c: %b12] {  # loop_3
+          %b11 = block {  # body
+            %x_82:ptr<function, bool, read_write> = var
+            %x_83:ptr<function, bool, read_write> = var
+            %x_84:ptr<function, bool, read_write> = var
+            %x_60:ptr<function, i32, read_write> = var
+            %31:i32 = load %x_59
+            %32:bool = lt %31, 10i
+            if %32 [t: %b13, f: %b14] {  # if_3
+              %b13 = block {  # true
+                exit_if  # if_3
+              }
+              %b14 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %33:i32 = load %x_59
+            %34:i32 = load %x_52
+            %35:i32 = add %34, 1i
+            %36:bool = lt %33, %35
+            if %36 [t: %b15] {  # if_4
+              %b15 = block {  # true
+                continue %b12
+              }
+            }
+            %x_69_save:i32 = load %x_52
+            %38:i32 = load %x_52
+            %39:ptr<function, f32, read_write> = access %data, %38
+            %x_70:f32 = load %39
+            %x_71_save:i32 = load %x_59
+            %42:i32 = load %x_59
+            %43:ptr<function, f32, read_write> = access %data, %42
+            %x_72:f32 = load %43
+            %45:f32 = load_vector_element %gl_FragCoord, 1u
+            %46:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+            %47:f32 = load_vector_element %46, 1u
+            %48:f32 = mul %47, 0.5f
+            %49:bool = lt %45, %48
+            if %49 [t: %b16, f: %b17] {  # if_5
+              %b16 = block {  # true
+                %50:bool = gt %x_70, %x_72
+                store %x_82, %50
+                %51:bool = load %x_82
+                store %x_84, %51
+                exit_if  # if_5
+              }
+              %b17 = block {  # false
+                %52:bool = lt %x_70, %x_72
+                store %x_83, %52
+                %53:bool = load %x_83
+                store %x_84, %53
+                exit_if  # if_5
+              }
+            }
+            %54:bool = load %x_84
+            if %54 [t: %b18] {  # if_6
+              %b18 = block {  # true
+                %55:ptr<function, f32, read_write> = access %data, %x_69_save
+                %x_87:f32 = load %55
+                %57:ptr<function, f32, read_write> = access %data, %x_69_save
+                %58:ptr<function, f32, read_write> = access %data, %x_71_save
+                %59:f32 = load %58
+                store %57, %59
+                %60:ptr<function, f32, read_write> = access %data, %x_71_save
+                store %60, %x_87
+                exit_if  # if_6
+              }
+            }
+            continue %b12
+          }
+          %b12 = block {  # continuing
+            %61:i32 = load %x_59
+            %62:i32 = add %61, 1i
+            store %x_60, %62
+            %63:i32 = load %x_60
+            store %x_59, %63
+            next_iteration %b11
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %64:i32 = load %x_52
+        %65:i32 = add %64, 1i
+        store %x_53, %65
+        %66:i32 = load %x_53
+        store %x_52, %66
+        next_iteration %b7
+      }
+    }
+    %67:f32 = load_vector_element %gl_FragCoord, 0u
+    %68:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %69:f32 = load_vector_element %68, 0u
+    %70:f32 = mul %69, 0.5f
+    %71:bool = lt %67, %70
+    if %71 [t: %b19, f: %b20] {  # if_7
+      %b19 = block {  # true
+        %72:ptr<function, f32, read_write> = access %data, 0i
+        %73:f32 = load %72
+        %74:f32 = mul %73, 0.10000000149011611938f
+        %75:ptr<function, f32, read_write> = access %data, 5i
+        %76:f32 = load %75
+        %77:f32 = mul %76, 0.10000000149011611938f
+        %78:ptr<function, f32, read_write> = access %data, 9i
+        %79:f32 = load %78
+        %80:f32 = mul %79, 0.10000000149011611938f
+        %81:vec4<f32> = construct %74, %77, %80, 1.0f
+        store %x_GLF_color, %81
+        exit_if  # if_7
+      }
+      %b20 = block {  # false
+        %82:ptr<function, f32, read_write> = access %data, 5i
+        %83:f32 = load %82
+        %84:f32 = mul %83, 0.10000000149011611938f
+        %85:ptr<function, f32, read_write> = access %data, 9i
+        %86:f32 = load %85
+        %87:f32 = mul %86, 0.10000000149011611938f
+        %88:ptr<function, f32, read_write> = access %data, 0i
+        %89:f32 = load %88
+        %90:f32 = mul %89, 0.10000000149011611938f
+        %91:vec4<f32> = construct %84, %87, %90, 1.0f
+        store %x_GLF_color, %91
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b21 {
+  %b21 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %94:void = call %main_1
+    %95:vec4<f32> = load %x_GLF_color
+    %96:main_out = construct %95
+    ret %96
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f52edd2
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl.expected.ir.msl
@@ -0,0 +1,212 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %data:ptr<function, array<f32, 10>, read_write> = var
+    %x_40_phi:ptr<function, i32, read_write> = var
+    %x_52_phi:ptr<function, i32, read_write> = var
+    store %x_40_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_41:ptr<function, i32, read_write> = var
+        %x_40:i32 = load %x_40_phi
+        %11:bool = lt %x_40, 10i
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %12:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+        %x_48:f32 = load_vector_element %12, 1u
+        %14:ptr<function, f32, read_write> = access %data, %x_40
+        %15:i32 = sub 10i, %x_40
+        %16:f32 = convert %15
+        %17:f32 = mul %16, %x_48
+        store %14, %17
+        %18:i32 = add %x_40, 1i
+        store %x_41, %18
+        %19:i32 = load %x_41
+        store %x_40_phi, %19
+        next_iteration %b3
+      }
+    }
+    store %x_52_phi, 0i
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_53:ptr<function, i32, read_write> = var
+        %x_59_phi:ptr<function, i32, read_write> = var
+        %x_52:i32 = load %x_52_phi
+        %23:bool = lt %x_52, 9i
+        if %23 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        store %x_59_phi, 0i
+        loop [b: %b11, c: %b12] {  # loop_3
+          %b11 = block {  # body
+            %x_82:ptr<function, bool, read_write> = var
+            %x_83:ptr<function, bool, read_write> = var
+            %x_60:ptr<function, i32, read_write> = var
+            %x_84_phi:ptr<function, bool, read_write> = var
+            %x_59:i32 = load %x_59_phi
+            %29:bool = lt %x_59, 10i
+            if %29 [t: %b13, f: %b14] {  # if_3
+              %b13 = block {  # true
+                exit_if  # if_3
+              }
+              %b14 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %30:i32 = add %x_52, 1i
+            %31:bool = lt %x_59, %30
+            if %31 [t: %b15] {  # if_4
+              %b15 = block {  # true
+                continue %b12
+              }
+            }
+            %x_69_save:i32 = let %x_52
+            %33:ptr<function, f32, read_write> = access %data, %x_69_save
+            %x_70:f32 = load %33
+            %x_71_save:i32 = let %x_59
+            %36:ptr<function, f32, read_write> = access %data, %x_71_save
+            %x_72:f32 = load %36
+            %x_74:f32 = load_vector_element %gl_FragCoord, 1u
+            %39:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+            %x_76:f32 = load_vector_element %39, 1u
+            %41:f32 = mul %x_76, 0.5f
+            %42:bool = lt %x_74, %41
+            if %42 [t: %b16, f: %b17] {  # if_5
+              %b16 = block {  # true
+                %43:bool = gt %x_70, %x_72
+                store %x_82, %43
+                %44:bool = load %x_82
+                store %x_84_phi, %44
+                exit_if  # if_5
+              }
+              %b17 = block {  # false
+                %45:bool = lt %x_70, %x_72
+                store %x_83, %45
+                %46:bool = load %x_83
+                store %x_84_phi, %46
+                exit_if  # if_5
+              }
+            }
+            %x_84:bool = load %x_84_phi
+            if %x_84 [t: %b18] {  # if_6
+              %b18 = block {  # true
+                %48:ptr<function, f32, read_write> = access %data, %x_69_save
+                %x_87:f32 = load %48
+                %50:ptr<function, f32, read_write> = access %data, %x_71_save
+                %x_88:f32 = load %50
+                %52:ptr<function, f32, read_write> = access %data, %x_69_save
+                store %52, %x_88
+                %53:ptr<function, f32, read_write> = access %data, %x_71_save
+                store %53, %x_87
+                exit_if  # if_6
+              }
+            }
+            continue %b12
+          }
+          %b12 = block {  # continuing
+            %54:i32 = add %x_59, 1i
+            store %x_60, %54
+            %55:i32 = load %x_60
+            store %x_59_phi, %55
+            next_iteration %b11
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %56:i32 = add %x_52, 1i
+        store %x_53, %56
+        %57:i32 = load %x_53
+        store %x_52_phi, %57
+        next_iteration %b7
+      }
+    }
+    %x_90:f32 = load_vector_element %gl_FragCoord, 0u
+    %59:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_92:f32 = load_vector_element %59, 0u
+    %61:f32 = mul %x_92, 0.5f
+    %62:bool = lt %x_90, %61
+    if %62 [t: %b19, f: %b20] {  # if_7
+      %b19 = block {  # true
+        %63:ptr<function, f32, read_write> = access %data, 0i
+        %x_99:f32 = load %63
+        %65:ptr<function, f32, read_write> = access %data, 5i
+        %x_102:f32 = load %65
+        %67:ptr<function, f32, read_write> = access %data, 9i
+        %x_105:f32 = load %67
+        %69:f32 = mul %x_99, 0.10000000149011611938f
+        %70:f32 = mul %x_102, 0.10000000149011611938f
+        %71:f32 = mul %x_105, 0.10000000149011611938f
+        %72:vec4<f32> = construct %69, %70, %71, 1.0f
+        store %x_GLF_color, %72
+        exit_if  # if_7
+      }
+      %b20 = block {  # false
+        %73:ptr<function, f32, read_write> = access %data, 5i
+        %x_109:f32 = load %73
+        %75:ptr<function, f32, read_write> = access %data, 9i
+        %x_112:f32 = load %75
+        %77:ptr<function, f32, read_write> = access %data, 0i
+        %x_115:f32 = load %77
+        %79:f32 = mul %x_109, 0.10000000149011611938f
+        %80:f32 = mul %x_112, 0.10000000149011611938f
+        %81:f32 = mul %x_115, 0.10000000149011611938f
+        %82:vec4<f32> = construct %79, %80, %81, 1.0f
+        store %x_GLF_color, %82
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b21 {
+  %b21 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %85:void = call %main_1
+    %86:vec4<f32> = load %x_GLF_color
+    %87:main_out = construct %86
+    ret %87
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..68c775d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm.expected.ir.msl
@@ -0,0 +1,221 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %data:ptr<function, array<f32, 10>, read_write> = var
+    %x_41:ptr<function, i32, read_write> = var
+    %x_53:ptr<function, i32, read_write> = var
+    store %x_41, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_42:ptr<function, i32, read_write> = var
+        %10:i32 = load %x_41
+        %11:bool = lt %10, 10i
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %12:i32 = load %x_41
+        %13:ptr<function, f32, read_write> = access %data, %12
+        %14:i32 = load %x_41
+        %15:i32 = sub 10i, %14
+        %16:f32 = convert %15
+        %17:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+        %18:f32 = load_vector_element %17, 1u
+        %19:f32 = mul %16, %18
+        store %13, %19
+        %20:i32 = load %x_41
+        %21:i32 = add %20, 1i
+        store %x_42, %21
+        %22:i32 = load %x_42
+        store %x_41, %22
+        next_iteration %b3
+      }
+    }
+    store %x_53, 0i
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_60:ptr<function, i32, read_write> = var
+        %x_54:ptr<function, i32, read_write> = var
+        %25:i32 = load %x_53
+        %26:bool = lt %25, 9i
+        if %26 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        store %x_60, 0i
+        loop [b: %b11, c: %b12] {  # loop_3
+          %b11 = block {  # body
+            %x_83:ptr<function, bool, read_write> = var
+            %x_84:ptr<function, bool, read_write> = var
+            %x_85:ptr<function, bool, read_write> = var
+            %x_61:ptr<function, i32, read_write> = var
+            %31:i32 = load %x_60
+            %32:bool = lt %31, 10i
+            if %32 [t: %b13, f: %b14] {  # if_3
+              %b13 = block {  # true
+                exit_if  # if_3
+              }
+              %b14 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %33:i32 = load %x_60
+            %34:i32 = load %x_53
+            %35:i32 = add %34, 1i
+            %36:bool = lt %33, %35
+            if %36 [t: %b15] {  # if_4
+              %b15 = block {  # true
+                continue %b12
+              }
+            }
+            %x_70_save:i32 = load %x_53
+            %38:i32 = load %x_53
+            %39:ptr<function, f32, read_write> = access %data, %38
+            %x_71:f32 = load %39
+            %x_72_save:i32 = load %x_60
+            %42:i32 = load %x_60
+            %43:ptr<function, f32, read_write> = access %data, %42
+            %x_73:f32 = load %43
+            %45:f32 = load_vector_element %gl_FragCoord, 1u
+            %46:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+            %47:f32 = load_vector_element %46, 1u
+            %48:f32 = mul %47, 0.5f
+            %49:bool = lt %45, %48
+            if %49 [t: %b16, f: %b17] {  # if_5
+              %b16 = block {  # true
+                %50:bool = gt %x_71, %x_73
+                store %x_83, %50
+                %51:bool = load %x_83
+                store %x_85, %51
+                exit_if  # if_5
+              }
+              %b17 = block {  # false
+                %52:bool = lt %x_71, %x_73
+                store %x_84, %52
+                %53:bool = load %x_84
+                store %x_85, %53
+                exit_if  # if_5
+              }
+            }
+            %54:bool = load %x_85
+            if %54 [t: %b18] {  # if_6
+              %b18 = block {  # true
+                %55:ptr<function, f32, read_write> = access %data, %x_70_save
+                %x_88:f32 = load %55
+                %57:ptr<function, f32, read_write> = access %data, %x_70_save
+                %58:ptr<function, f32, read_write> = access %data, %x_72_save
+                %59:f32 = load %58
+                store %57, %59
+                %60:ptr<function, f32, read_write> = access %data, %x_72_save
+                store %60, %x_88
+                exit_if  # if_6
+              }
+            }
+            continue %b12
+          }
+          %b12 = block {  # continuing
+            %61:i32 = load %x_60
+            %62:i32 = add %61, 1i
+            store %x_61, %62
+            %63:i32 = load %x_61
+            store %x_60, %63
+            next_iteration %b11
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %64:i32 = load %x_53
+        %65:i32 = add %64, 1i
+        store %x_54, %65
+        %66:i32 = load %x_54
+        store %x_53, %66
+        next_iteration %b7
+      }
+    }
+    %67:f32 = load_vector_element %gl_FragCoord, 0u
+    %68:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %69:f32 = load_vector_element %68, 0u
+    %70:f32 = mul %69, 0.5f
+    %71:bool = lt %67, %70
+    if %71 [t: %b19, f: %b20] {  # if_7
+      %b19 = block {  # true
+        %72:ptr<function, f32, read_write> = access %data, 0i
+        %73:f32 = load %72
+        %74:f32 = mul %73, 0.10000000149011611938f
+        %75:ptr<function, f32, read_write> = access %data, 5i
+        %76:f32 = load %75
+        %77:f32 = mul %76, 0.10000000149011611938f
+        %78:ptr<function, f32, read_write> = access %data, 9i
+        %79:f32 = load %78
+        %80:f32 = mul %79, 0.10000000149011611938f
+        %81:vec4<f32> = construct %74, %77, %80, 1.0f
+        store %x_GLF_color, %81
+        exit_if  # if_7
+      }
+      %b20 = block {  # false
+        %82:ptr<function, f32, read_write> = access %data, 5i
+        %83:f32 = load %82
+        %84:f32 = mul %83, 0.10000000149011611938f
+        %85:ptr<function, f32, read_write> = access %data, 9i
+        %86:f32 = load %85
+        %87:f32 = mul %86, 0.10000000149011611938f
+        %88:ptr<function, f32, read_write> = access %data, 0i
+        %89:f32 = load %88
+        %90:f32 = mul %89, 0.10000000149011611938f
+        %91:vec4<f32> = construct %84, %87, %90, 1.0f
+        store %x_GLF_color, %91
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b21 {
+  %b21 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %94:void = call %main_1
+    %95:vec4<f32> = load %x_GLF_color
+    %96:main_out = construct %95
+    ret %96
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b32dd5d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl.expected.ir.msl
@@ -0,0 +1,212 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %data:ptr<function, array<f32, 10>, read_write> = var
+    %x_41_phi:ptr<function, i32, read_write> = var
+    %x_53_phi:ptr<function, i32, read_write> = var
+    store %x_41_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_42:ptr<function, i32, read_write> = var
+        %x_41:i32 = load %x_41_phi
+        %11:bool = lt %x_41, 10i
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %12:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+        %x_49:f32 = load_vector_element %12, 1u
+        %14:ptr<function, f32, read_write> = access %data, %x_41
+        %15:i32 = sub 10i, %x_41
+        %16:f32 = convert %15
+        %17:f32 = mul %16, %x_49
+        store %14, %17
+        %18:i32 = add %x_41, 1i
+        store %x_42, %18
+        %19:i32 = load %x_42
+        store %x_41_phi, %19
+        next_iteration %b3
+      }
+    }
+    store %x_53_phi, 0i
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_54:ptr<function, i32, read_write> = var
+        %x_60_phi:ptr<function, i32, read_write> = var
+        %x_53:i32 = load %x_53_phi
+        %23:bool = lt %x_53, 9i
+        if %23 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        store %x_60_phi, 0i
+        loop [b: %b11, c: %b12] {  # loop_3
+          %b11 = block {  # body
+            %x_83:ptr<function, bool, read_write> = var
+            %x_84:ptr<function, bool, read_write> = var
+            %x_61:ptr<function, i32, read_write> = var
+            %x_85_phi:ptr<function, bool, read_write> = var
+            %x_60:i32 = load %x_60_phi
+            %29:bool = lt %x_60, 10i
+            if %29 [t: %b13, f: %b14] {  # if_3
+              %b13 = block {  # true
+                exit_if  # if_3
+              }
+              %b14 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %30:i32 = add %x_53, 1i
+            %31:bool = lt %x_60, %30
+            if %31 [t: %b15] {  # if_4
+              %b15 = block {  # true
+                continue %b12
+              }
+            }
+            %x_70_save:i32 = let %x_53
+            %33:ptr<function, f32, read_write> = access %data, %x_70_save
+            %x_71:f32 = load %33
+            %x_72_save:i32 = let %x_60
+            %36:ptr<function, f32, read_write> = access %data, %x_72_save
+            %x_73:f32 = load %36
+            %x_75:f32 = load_vector_element %gl_FragCoord, 1u
+            %39:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+            %x_77:f32 = load_vector_element %39, 1u
+            %41:f32 = mul %x_77, 0.5f
+            %42:bool = lt %x_75, %41
+            if %42 [t: %b16, f: %b17] {  # if_5
+              %b16 = block {  # true
+                %43:bool = gt %x_71, %x_73
+                store %x_83, %43
+                %44:bool = load %x_83
+                store %x_85_phi, %44
+                exit_if  # if_5
+              }
+              %b17 = block {  # false
+                %45:bool = lt %x_71, %x_73
+                store %x_84, %45
+                %46:bool = load %x_84
+                store %x_85_phi, %46
+                exit_if  # if_5
+              }
+            }
+            %x_85:bool = load %x_85_phi
+            if %x_85 [t: %b18] {  # if_6
+              %b18 = block {  # true
+                %48:ptr<function, f32, read_write> = access %data, %x_70_save
+                %x_88:f32 = load %48
+                %50:ptr<function, f32, read_write> = access %data, %x_72_save
+                %x_89:f32 = load %50
+                %52:ptr<function, f32, read_write> = access %data, %x_70_save
+                store %52, %x_89
+                %53:ptr<function, f32, read_write> = access %data, %x_72_save
+                store %53, %x_88
+                exit_if  # if_6
+              }
+            }
+            continue %b12
+          }
+          %b12 = block {  # continuing
+            %54:i32 = add %x_60, 1i
+            store %x_61, %54
+            %55:i32 = load %x_61
+            store %x_60_phi, %55
+            next_iteration %b11
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %56:i32 = add %x_53, 1i
+        store %x_54, %56
+        %57:i32 = load %x_54
+        store %x_53_phi, %57
+        next_iteration %b7
+      }
+    }
+    %x_91:f32 = load_vector_element %gl_FragCoord, 0u
+    %59:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_93:f32 = load_vector_element %59, 0u
+    %61:f32 = mul %x_93, 0.5f
+    %62:bool = lt %x_91, %61
+    if %62 [t: %b19, f: %b20] {  # if_7
+      %b19 = block {  # true
+        %63:ptr<function, f32, read_write> = access %data, 0i
+        %x_100:f32 = load %63
+        %65:ptr<function, f32, read_write> = access %data, 5i
+        %x_103:f32 = load %65
+        %67:ptr<function, f32, read_write> = access %data, 9i
+        %x_106:f32 = load %67
+        %69:f32 = mul %x_100, 0.10000000149011611938f
+        %70:f32 = mul %x_103, 0.10000000149011611938f
+        %71:f32 = mul %x_106, 0.10000000149011611938f
+        %72:vec4<f32> = construct %69, %70, %71, 1.0f
+        store %x_GLF_color, %72
+        exit_if  # if_7
+      }
+      %b20 = block {  # false
+        %73:ptr<function, f32, read_write> = access %data, 5i
+        %x_110:f32 = load %73
+        %75:ptr<function, f32, read_write> = access %data, 9i
+        %x_113:f32 = load %75
+        %77:ptr<function, f32, read_write> = access %data, 0i
+        %x_116:f32 = load %77
+        %79:f32 = mul %x_110, 0.10000000149011611938f
+        %80:f32 = mul %x_113, 0.10000000149011611938f
+        %81:f32 = mul %x_116, 0.10000000149011611938f
+        %82:vec4<f32> = construct %79, %80, %81, 1.0f
+        store %x_GLF_color, %82
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b21 {
+  %b21 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %85:void = call %main_1
+    %86:vec4<f32> = load %x_GLF_color
+    %87:main_out = construct %86
+    ret %87
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..fe30786
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.spvasm.expected.ir.msl
@@ -0,0 +1,555 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+buf1 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_32:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %15:i32 = load %f
+    store %k, %15
+    %16:i32 = load %f
+    store %i, %16
+    %17:i32 = load %mid
+    %18:i32 = add %17, 1i
+    store %j, %18
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %19:i32 = load %i
+        %20:i32 = load %mid
+        %21:bool = lte %19, %20
+        %22:i32 = load %j
+        %23:i32 = load %to
+        %24:bool = lte %22, %23
+        %25:bool = and %21, %24
+        if %25 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %26:i32 = load %i
+        %27:ptr<private, i32, read_write> = access %data, %26
+        %28:i32 = load %27
+        %29:i32 = load %j
+        %30:ptr<private, i32, read_write> = access %data, %29
+        %31:i32 = load %30
+        %32:bool = lt %28, %31
+        if %32 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_282:i32 = load %k
+            %34:i32 = load %k
+            %35:i32 = add %34, 1i
+            store %k, %35
+            %x_284:i32 = load %i
+            %37:i32 = load %i
+            %38:i32 = add %37, 1i
+            store %i, %38
+            %39:ptr<private, i32, read_write> = access %temp, %x_282
+            %40:ptr<private, i32, read_write> = access %data, %x_284
+            %41:i32 = load %40
+            store %39, %41
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_289:i32 = load %k
+            %43:i32 = load %k
+            %44:i32 = add %43, 1i
+            store %k, %44
+            %x_291:i32 = load %j
+            %46:i32 = load %j
+            %47:i32 = add %46, 1i
+            store %j, %47
+            %48:ptr<private, i32, read_write> = access %temp, %x_289
+            %49:ptr<private, i32, read_write> = access %data, %x_291
+            %50:i32 = load %49
+            store %48, %50
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        if true [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            continue %b10
+          }
+        }
+        %51:i32 = load %i
+        %52:bool = lt %51, 10i
+        %53:i32 = load %i
+        %54:i32 = load %mid
+        %55:bool = lte %53, %54
+        %56:bool = and %52, %55
+        if %56 [t: %b13, f: %b14] {  # if_4
+          %b13 = block {  # true
+            exit_if  # if_4
+          }
+          %b14 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_309:i32 = load %k
+        %58:i32 = load %k
+        %59:i32 = add %58, 1i
+        store %k, %59
+        %x_311:i32 = load %i
+        %61:i32 = load %i
+        %62:i32 = add %61, 1i
+        store %i, %62
+        %63:ptr<private, i32, read_write> = access %temp, %x_309
+        %64:ptr<private, i32, read_write> = access %data, %x_311
+        %65:i32 = load %64
+        store %63, %65
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    %66:i32 = load %f
+    store %i_1, %66
+    loop [b: %b15, c: %b16] {  # loop_3
+      %b15 = block {  # body
+        %67:i32 = load %i_1
+        %68:i32 = load %to
+        %69:bool = lte %67, %68
+        if %69 [t: %b17, f: %b18] {  # if_5
+          %b17 = block {  # true
+            exit_if  # if_5
+          }
+          %b18 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_325:i32 = load %i_1
+        %71:ptr<private, i32, read_write> = access %data, %x_325
+        %72:i32 = load %i_1
+        %73:ptr<private, i32, read_write> = access %temp, %72
+        %74:i32 = load %73
+        store %71, %74
+        continue %b16
+      }
+      %b16 = block {  # continuing
+        %75:i32 = load %i_1
+        %76:i32 = add %75, 1i
+        store %i_1, %76
+        next_iteration %b15
+      }
+    }
+    ret
+  }
+}
+%mergeSort_ = func():void -> %b19 {
+  %b19 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b20, c: %b21] {  # loop_4
+      %b20 = block {  # body
+        %88:i32 = load %m
+        %89:i32 = load %high
+        %90:bool = lte %88, %89
+        if %90 [t: %b22, f: %b23] {  # if_6
+          %b22 = block {  # true
+            exit_if  # if_6
+          }
+          %b23 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %91:i32 = load %low
+        store %i_2, %91
+        loop [b: %b24, c: %b25] {  # loop_5
+          %b24 = block {  # body
+            %92:i32 = load %i_2
+            %93:i32 = load %high
+            %94:bool = lt %92, %93
+            if %94 [t: %b26, f: %b27] {  # if_7
+              %b26 = block {  # true
+                exit_if  # if_7
+              }
+              %b27 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %95:i32 = load %i_2
+            store %f_1, %95
+            %96:i32 = load %i_2
+            %97:i32 = load %m
+            %98:i32 = add %96, %97
+            %99:i32 = sub %98, 1i
+            store %mid_1, %99
+            %100:i32 = load %i_2
+            %101:i32 = load %m
+            %102:i32 = mul 2i, %101
+            %103:i32 = add %100, %102
+            %104:i32 = sub %103, 1i
+            %105:i32 = load %high
+            %106:i32 = min %104, %105
+            store %to_1, %106
+            %107:i32 = load %f_1
+            store %param, %107
+            %108:i32 = load %mid_1
+            store %param_1, %108
+            %109:i32 = load %to_1
+            store %param_2, %109
+            %110:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b25
+          }
+          %b25 = block {  # continuing
+            %111:i32 = load %i_2
+            %112:i32 = load %m
+            %113:i32 = mul 2i, %112
+            %114:i32 = add %111, %113
+            store %i_2, %114
+            next_iteration %b24
+          }
+        }
+        continue %b21
+      }
+      %b21 = block {  # continuing
+        %115:i32 = load %m
+        %116:i32 = mul 2i, %115
+        store %m, %116
+        next_iteration %b20
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b28 {
+  %b28 = block {
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %121:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %122:f32 = load_vector_element %121, 0u
+    %123:i32 = convert %122
+    store %i_3, %123
+    loop [b: %b29, c: %b30] {  # loop_6
+      %b29 = block {  # body
+        %x_95:i32 = load %i_3
+        switch %x_95 [c: (9i, %b31), c: (8i, %b32), c: (7i, %b33), c: (6i, %b34), c: (5i, %b35), c: (4i, %b36), c: (3i, %b37), c: (2i, %b38), c: (1i, %b39), c: (0i, %b40), c: (default, %b41)] {  # switch_1
+          %b31 = block {  # case
+            %x_125:i32 = load %i_3
+            %126:ptr<private, i32, read_write> = access %data, %x_125
+            store %126, -5i
+            exit_switch  # switch_1
+          }
+          %b32 = block {  # case
+            %x_123:i32 = load %i_3
+            %128:ptr<private, i32, read_write> = access %data, %x_123
+            store %128, -4i
+            exit_switch  # switch_1
+          }
+          %b33 = block {  # case
+            %x_121:i32 = load %i_3
+            %130:ptr<private, i32, read_write> = access %data, %x_121
+            store %130, -3i
+            exit_switch  # switch_1
+          }
+          %b34 = block {  # case
+            %x_119:i32 = load %i_3
+            %132:ptr<private, i32, read_write> = access %data, %x_119
+            store %132, -2i
+            exit_switch  # switch_1
+          }
+          %b35 = block {  # case
+            %x_117:i32 = load %i_3
+            %134:ptr<private, i32, read_write> = access %data, %x_117
+            store %134, -1i
+            exit_switch  # switch_1
+          }
+          %b36 = block {  # case
+            %x_115:i32 = load %i_3
+            %136:ptr<private, i32, read_write> = access %data, %x_115
+            store %136, 0i
+            exit_switch  # switch_1
+          }
+          %b37 = block {  # case
+            %x_113:i32 = load %i_3
+            %138:ptr<private, i32, read_write> = access %data, %x_113
+            store %138, 1i
+            exit_switch  # switch_1
+          }
+          %b38 = block {  # case
+            %x_111:i32 = load %i_3
+            %140:ptr<private, i32, read_write> = access %data, %x_111
+            store %140, 2i
+            exit_switch  # switch_1
+          }
+          %b39 = block {  # case
+            %x_109:i32 = load %i_3
+            %142:ptr<private, i32, read_write> = access %data, %x_109
+            store %142, 3i
+            exit_switch  # switch_1
+          }
+          %b40 = block {  # case
+            %x_107:i32 = load %i_3
+            %144:ptr<private, i32, read_write> = access %data, %x_107
+            store %144, 4i
+            exit_switch  # switch_1
+          }
+          %b41 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %145:i32 = load %i_3
+        %146:i32 = add %145, 1i
+        store %i_3, %146
+        continue %b30
+      }
+      %b30 = block {  # continuing
+        %x_129:i32 = load %i_3
+        %148:bool = lt %x_129, 10i
+        %149:bool = eq %148, false
+        break_if %149 %b29
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b42, c: %b43] {  # loop_7
+      %b42 = block {  # body
+        %150:i32 = load %j_1
+        %151:bool = lt %150, 10i
+        if %151 [t: %b44, f: %b45] {  # if_8
+          %b44 = block {  # true
+            exit_if  # if_8
+          }
+          %b45 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %x_138:i32 = load %j_1
+        %153:ptr<private, i32, read_write> = access %temp, %x_138
+        %154:i32 = load %j_1
+        %155:ptr<private, i32, read_write> = access %data, %154
+        %156:i32 = load %155
+        store %153, %156
+        continue %b43
+      }
+      %b43 = block {  # continuing
+        %157:i32 = load %j_1
+        %158:i32 = add %157, 1i
+        store %j_1, %158
+        next_iteration %b42
+      }
+    }
+    %159:void = call %mergeSort_
+    %160:f32 = load_vector_element %gl_FragCoord, 1u
+    %161:i32 = convert %160
+    %162:bool = lt %161, 30i
+    if %162 [t: %b46, f: %b47] {  # if_9
+      %b46 = block {  # true
+        %163:ptr<private, i32, read_write> = access %data, 0i
+        %164:i32 = load %163
+        %165:f32 = convert %164
+        %166:f32 = div %165, 10.0f
+        %167:f32 = add 0.5f, %166
+        store %grey, %167
+        exit_if  # if_9
+      }
+      %b47 = block {  # false
+        %168:f32 = load_vector_element %gl_FragCoord, 1u
+        %169:i32 = convert %168
+        %170:bool = lt %169, 60i
+        if %170 [t: %b48, f: %b49] {  # if_10
+          %b48 = block {  # true
+            %171:ptr<private, i32, read_write> = access %data, 1i
+            %172:i32 = load %171
+            %173:f32 = convert %172
+            %174:f32 = div %173, 10.0f
+            %175:f32 = add 0.5f, %174
+            store %grey, %175
+            exit_if  # if_10
+          }
+          %b49 = block {  # false
+            %176:f32 = load_vector_element %gl_FragCoord, 1u
+            %177:i32 = convert %176
+            %178:bool = lt %177, 90i
+            if %178 [t: %b50, f: %b51] {  # if_11
+              %b50 = block {  # true
+                %179:ptr<private, i32, read_write> = access %data, 2i
+                %180:i32 = load %179
+                %181:f32 = convert %180
+                %182:f32 = div %181, 10.0f
+                %183:f32 = add 0.5f, %182
+                store %grey, %183
+                exit_if  # if_11
+              }
+              %b51 = block {  # false
+                %184:f32 = load_vector_element %gl_FragCoord, 1u
+                %185:i32 = convert %184
+                %186:bool = lt %185, 120i
+                if %186 [t: %b52, f: %b53] {  # if_12
+                  %b52 = block {  # true
+                    %187:ptr<private, i32, read_write> = access %data, 3i
+                    %188:i32 = load %187
+                    %189:f32 = convert %188
+                    %190:f32 = div %189, 10.0f
+                    %191:f32 = add 0.5f, %190
+                    store %grey, %191
+                    exit_if  # if_12
+                  }
+                  %b53 = block {  # false
+                    %192:f32 = load_vector_element %gl_FragCoord, 1u
+                    %193:i32 = convert %192
+                    %194:bool = lt %193, 150i
+                    if %194 [t: %b54, f: %b55] {  # if_13
+                      %b54 = block {  # true
+                        discard
+                        exit_if  # if_13
+                      }
+                      %b55 = block {  # false
+                        %195:f32 = load_vector_element %gl_FragCoord, 1u
+                        %196:i32 = convert %195
+                        %197:bool = lt %196, 180i
+                        if %197 [t: %b56, f: %b57] {  # if_14
+                          %b56 = block {  # true
+                            %198:ptr<private, i32, read_write> = access %data, 5i
+                            %199:i32 = load %198
+                            %200:f32 = convert %199
+                            %201:f32 = div %200, 10.0f
+                            %202:f32 = add 0.5f, %201
+                            store %grey, %202
+                            exit_if  # if_14
+                          }
+                          %b57 = block {  # false
+                            %203:f32 = load_vector_element %gl_FragCoord, 1u
+                            %204:i32 = convert %203
+                            %205:bool = lt %204, 210i
+                            if %205 [t: %b58, f: %b59] {  # if_15
+                              %b58 = block {  # true
+                                %206:ptr<private, i32, read_write> = access %data, 6i
+                                %207:i32 = load %206
+                                %208:f32 = convert %207
+                                %209:f32 = div %208, 10.0f
+                                %210:f32 = add 0.5f, %209
+                                store %grey, %210
+                                exit_if  # if_15
+                              }
+                              %b59 = block {  # false
+                                %211:f32 = load_vector_element %gl_FragCoord, 1u
+                                %212:i32 = convert %211
+                                %213:bool = lt %212, 240i
+                                if %213 [t: %b60, f: %b61] {  # if_16
+                                  %b60 = block {  # true
+                                    %214:ptr<private, i32, read_write> = access %data, 7i
+                                    %215:i32 = load %214
+                                    %216:f32 = convert %215
+                                    %217:f32 = div %216, 10.0f
+                                    %218:f32 = add 0.5f, %217
+                                    store %grey, %218
+                                    exit_if  # if_16
+                                  }
+                                  %b61 = block {  # false
+                                    %219:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %220:i32 = convert %219
+                                    %221:bool = lt %220, 270i
+                                    if %221 [t: %b62, f: %b63] {  # if_17
+                                      %b62 = block {  # true
+                                        %222:ptr<private, i32, read_write> = access %data, 8i
+                                        %223:i32 = load %222
+                                        %224:f32 = convert %223
+                                        %225:f32 = div %224, 10.0f
+                                        %226:f32 = add 0.5f, %225
+                                        store %grey, %226
+                                        exit_if  # if_17
+                                      }
+                                      %b63 = block {  # false
+                                        discard
+                                        exit_if  # if_17
+                                      }
+                                    }
+                                    exit_if  # if_16
+                                  }
+                                }
+                                exit_if  # if_15
+                              }
+                            }
+                            exit_if  # if_14
+                          }
+                        }
+                        exit_if  # if_13
+                      }
+                    }
+                    exit_if  # if_12
+                  }
+                }
+                exit_if  # if_11
+              }
+            }
+            exit_if  # if_10
+          }
+        }
+        exit_if  # if_9
+      }
+    }
+    %227:f32 = load %grey
+    %x_250:vec3<f32> = construct %227
+    %229:f32 = access %x_250, 0u
+    %230:f32 = access %x_250, 1u
+    %231:f32 = access %x_250, 2u
+    %232:vec4<f32> = construct %229, %230, %231, 1.0f
+    store %x_GLF_color, %232
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b64 {
+  %b64 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %235:void = call %main_1
+    %236:vec4<f32> = load %x_GLF_color
+    %237:main_out = construct %236
+    ret %237
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1bf7226
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl.expected.ir.msl
@@ -0,0 +1,549 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+buf1 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_32:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %x_256:i32 = load %f
+    store %k, %x_256
+    %x_257:i32 = load %f
+    store %i, %x_257
+    %x_258:i32 = load %mid
+    %18:i32 = add %x_258, 1i
+    store %j, %18
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_264:i32 = load %i
+        %x_265:i32 = load %mid
+        %x_267:i32 = load %j
+        %x_268:i32 = load %to
+        %23:bool = lte %x_264, %x_265
+        %24:bool = lte %x_267, %x_268
+        %25:bool = and %23, %24
+        if %25 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_272:i32 = load %i
+        %27:ptr<private, i32, read_write> = access %data, %x_272
+        %x_274:i32 = load %27
+        %x_275:i32 = load %j
+        %30:ptr<private, i32, read_write> = access %data, %x_275
+        %x_277:i32 = load %30
+        %32:bool = lt %x_274, %x_277
+        if %32 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_282:i32 = load %k
+            %34:i32 = add %x_282, 1i
+            store %k, %34
+            %x_284:i32 = load %i
+            %36:i32 = add %x_284, 1i
+            store %i, %36
+            %37:ptr<private, i32, read_write> = access %data, %x_284
+            %x_287:i32 = load %37
+            %39:ptr<private, i32, read_write> = access %temp, %x_282
+            store %39, %x_287
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_289:i32 = load %k
+            %41:i32 = add %x_289, 1i
+            store %k, %41
+            %x_291:i32 = load %j
+            %43:i32 = add %x_291, 1i
+            store %j, %43
+            %44:ptr<private, i32, read_write> = access %data, %x_291
+            %x_294:i32 = load %44
+            %46:ptr<private, i32, read_write> = access %temp, %x_289
+            store %46, %x_294
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        if true [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            continue %b10
+          }
+        }
+        %x_301:i32 = load %i
+        %x_303:i32 = load %i
+        %x_304:i32 = load %mid
+        %50:bool = lt %x_301, 10i
+        %51:bool = lte %x_303, %x_304
+        %52:bool = and %50, %51
+        if %52 [t: %b13, f: %b14] {  # if_4
+          %b13 = block {  # true
+            exit_if  # if_4
+          }
+          %b14 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_309:i32 = load %k
+        %54:i32 = add %x_309, 1i
+        store %k, %54
+        %x_311:i32 = load %i
+        %56:i32 = add %x_311, 1i
+        store %i, %56
+        %57:ptr<private, i32, read_write> = access %data, %x_311
+        %x_314:i32 = load %57
+        %59:ptr<private, i32, read_write> = access %temp, %x_309
+        store %59, %x_314
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    %x_316:i32 = load %f
+    store %i_1, %x_316
+    loop [b: %b15, c: %b16] {  # loop_3
+      %b15 = block {  # body
+        %x_321:i32 = load %i_1
+        %x_322:i32 = load %to
+        %63:bool = lte %x_321, %x_322
+        if %63 [t: %b17, f: %b18] {  # if_5
+          %b17 = block {  # true
+            exit_if  # if_5
+          }
+          %b18 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_325:i32 = load %i_1
+        %x_326:i32 = load %i_1
+        %66:ptr<private, i32, read_write> = access %temp, %x_326
+        %x_328:i32 = load %66
+        %68:ptr<private, i32, read_write> = access %data, %x_325
+        store %68, %x_328
+        continue %b16
+      }
+      %b16 = block {  # continuing
+        %x_330:i32 = load %i_1
+        %70:i32 = add %x_330, 1i
+        store %i_1, %70
+        next_iteration %b15
+      }
+    }
+    ret
+  }
+}
+%mergeSort_ = func():void -> %b19 {
+  %b19 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b20, c: %b21] {  # loop_4
+      %b20 = block {  # body
+        %x_337:i32 = load %m
+        %x_338:i32 = load %high
+        %84:bool = lte %x_337, %x_338
+        if %84 [t: %b22, f: %b23] {  # if_6
+          %b22 = block {  # true
+            exit_if  # if_6
+          }
+          %b23 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %x_341:i32 = load %low
+        store %i_2, %x_341
+        loop [b: %b24, c: %b25] {  # loop_5
+          %b24 = block {  # body
+            %x_346:i32 = load %i_2
+            %x_347:i32 = load %high
+            %88:bool = lt %x_346, %x_347
+            if %88 [t: %b26, f: %b27] {  # if_7
+              %b26 = block {  # true
+                exit_if  # if_7
+              }
+              %b27 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %x_350:i32 = load %i_2
+            store %f_1, %x_350
+            %x_351:i32 = load %i_2
+            %x_352:i32 = load %m
+            %92:i32 = add %x_351, %x_352
+            %93:i32 = sub %92, 1i
+            store %mid_1, %93
+            %x_355:i32 = load %i_2
+            %x_356:i32 = load %m
+            %x_360:i32 = load %high
+            %97:i32 = mul 2i, %x_356
+            %98:i32 = add %x_355, %97
+            %99:i32 = sub %98, 1i
+            %100:i32 = min %99, %x_360
+            store %to_1, %100
+            %x_362:i32 = load %f_1
+            store %param, %x_362
+            %x_363:i32 = load %mid_1
+            store %param_1, %x_363
+            %x_364:i32 = load %to_1
+            store %param_2, %x_364
+            %104:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b25
+          }
+          %b25 = block {  # continuing
+            %x_366:i32 = load %m
+            %x_368:i32 = load %i_2
+            %107:i32 = mul 2i, %x_366
+            %108:i32 = add %x_368, %107
+            store %i_2, %108
+            next_iteration %b24
+          }
+        }
+        continue %b21
+      }
+      %b21 = block {  # continuing
+        %x_370:i32 = load %m
+        %110:i32 = mul 2i, %x_370
+        store %m, %110
+        next_iteration %b20
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b28 {
+  %b28 = block {
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %115:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %x_89:f32 = load_vector_element %115, 0u
+    %117:i32 = convert %x_89
+    store %i_3, %117
+    loop [b: %b29, c: %b30] {  # loop_6
+      %b29 = block {  # body
+        %x_95:i32 = load %i_3
+        switch %x_95 [c: (9i, %b31), c: (8i, %b32), c: (7i, %b33), c: (6i, %b34), c: (5i, %b35), c: (4i, %b36), c: (3i, %b37), c: (2i, %b38), c: (1i, %b39), c: (0i, %b40), c: (default, %b41)] {  # switch_1
+          %b31 = block {  # case
+            %x_125:i32 = load %i_3
+            %120:ptr<private, i32, read_write> = access %data, %x_125
+            store %120, -5i
+            exit_switch  # switch_1
+          }
+          %b32 = block {  # case
+            %x_123:i32 = load %i_3
+            %122:ptr<private, i32, read_write> = access %data, %x_123
+            store %122, -4i
+            exit_switch  # switch_1
+          }
+          %b33 = block {  # case
+            %x_121:i32 = load %i_3
+            %124:ptr<private, i32, read_write> = access %data, %x_121
+            store %124, -3i
+            exit_switch  # switch_1
+          }
+          %b34 = block {  # case
+            %x_119:i32 = load %i_3
+            %126:ptr<private, i32, read_write> = access %data, %x_119
+            store %126, -2i
+            exit_switch  # switch_1
+          }
+          %b35 = block {  # case
+            %x_117:i32 = load %i_3
+            %128:ptr<private, i32, read_write> = access %data, %x_117
+            store %128, -1i
+            exit_switch  # switch_1
+          }
+          %b36 = block {  # case
+            %x_115:i32 = load %i_3
+            %130:ptr<private, i32, read_write> = access %data, %x_115
+            store %130, 0i
+            exit_switch  # switch_1
+          }
+          %b37 = block {  # case
+            %x_113:i32 = load %i_3
+            %132:ptr<private, i32, read_write> = access %data, %x_113
+            store %132, 1i
+            exit_switch  # switch_1
+          }
+          %b38 = block {  # case
+            %x_111:i32 = load %i_3
+            %134:ptr<private, i32, read_write> = access %data, %x_111
+            store %134, 2i
+            exit_switch  # switch_1
+          }
+          %b39 = block {  # case
+            %x_109:i32 = load %i_3
+            %136:ptr<private, i32, read_write> = access %data, %x_109
+            store %136, 3i
+            exit_switch  # switch_1
+          }
+          %b40 = block {  # case
+            %x_107:i32 = load %i_3
+            %138:ptr<private, i32, read_write> = access %data, %x_107
+            store %138, 4i
+            exit_switch  # switch_1
+          }
+          %b41 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %x_127:i32 = load %i_3
+        %140:i32 = add %x_127, 1i
+        store %i_3, %140
+        continue %b30
+      }
+      %b30 = block {  # continuing
+        %x_129:i32 = load %i_3
+        %142:bool = lt %x_129, 10i
+        %143:bool = eq %142, false
+        break_if %143 %b29
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b42, c: %b43] {  # loop_7
+      %b42 = block {  # body
+        %x_135:i32 = load %j_1
+        %145:bool = lt %x_135, 10i
+        if %145 [t: %b44, f: %b45] {  # if_8
+          %b44 = block {  # true
+            exit_if  # if_8
+          }
+          %b45 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %x_138:i32 = load %j_1
+        %x_139:i32 = load %j_1
+        %148:ptr<private, i32, read_write> = access %data, %x_139
+        %x_141:i32 = load %148
+        %150:ptr<private, i32, read_write> = access %temp, %x_138
+        store %150, %x_141
+        continue %b43
+      }
+      %b43 = block {  # continuing
+        %x_143:i32 = load %j_1
+        %152:i32 = add %x_143, 1i
+        store %j_1, %152
+        next_iteration %b42
+      }
+    }
+    %153:void = call %mergeSort_
+    %x_147:f32 = load_vector_element %gl_FragCoord, 1u
+    %155:i32 = convert %x_147
+    %156:bool = lt %155, 30i
+    if %156 [t: %b46, f: %b47] {  # if_9
+      %b46 = block {  # true
+        %157:ptr<private, i32, read_write> = access %data, 0i
+        %x_154:i32 = load %157
+        %159:f32 = convert %x_154
+        %160:f32 = div %159, 10.0f
+        %161:f32 = add 0.5f, %160
+        store %grey, %161
+        exit_if  # if_9
+      }
+      %b47 = block {  # false
+        %x_159:f32 = load_vector_element %gl_FragCoord, 1u
+        %163:i32 = convert %x_159
+        %164:bool = lt %163, 60i
+        if %164 [t: %b48, f: %b49] {  # if_10
+          %b48 = block {  # true
+            %165:ptr<private, i32, read_write> = access %data, 1i
+            %x_166:i32 = load %165
+            %167:f32 = convert %x_166
+            %168:f32 = div %167, 10.0f
+            %169:f32 = add 0.5f, %168
+            store %grey, %169
+            exit_if  # if_10
+          }
+          %b49 = block {  # false
+            %x_171:f32 = load_vector_element %gl_FragCoord, 1u
+            %171:i32 = convert %x_171
+            %172:bool = lt %171, 90i
+            if %172 [t: %b50, f: %b51] {  # if_11
+              %b50 = block {  # true
+                %173:ptr<private, i32, read_write> = access %data, 2i
+                %x_178:i32 = load %173
+                %175:f32 = convert %x_178
+                %176:f32 = div %175, 10.0f
+                %177:f32 = add 0.5f, %176
+                store %grey, %177
+                exit_if  # if_11
+              }
+              %b51 = block {  # false
+                %x_183:f32 = load_vector_element %gl_FragCoord, 1u
+                %179:i32 = convert %x_183
+                %180:bool = lt %179, 120i
+                if %180 [t: %b52, f: %b53] {  # if_12
+                  %b52 = block {  # true
+                    %181:ptr<private, i32, read_write> = access %data, 3i
+                    %x_190:i32 = load %181
+                    %183:f32 = convert %x_190
+                    %184:f32 = div %183, 10.0f
+                    %185:f32 = add 0.5f, %184
+                    store %grey, %185
+                    exit_if  # if_12
+                  }
+                  %b53 = block {  # false
+                    %x_195:f32 = load_vector_element %gl_FragCoord, 1u
+                    %187:i32 = convert %x_195
+                    %188:bool = lt %187, 150i
+                    if %188 [t: %b54, f: %b55] {  # if_13
+                      %b54 = block {  # true
+                        discard
+                        exit_if  # if_13
+                      }
+                      %b55 = block {  # false
+                        %x_202:f32 = load_vector_element %gl_FragCoord, 1u
+                        %190:i32 = convert %x_202
+                        %191:bool = lt %190, 180i
+                        if %191 [t: %b56, f: %b57] {  # if_14
+                          %b56 = block {  # true
+                            %192:ptr<private, i32, read_write> = access %data, 5i
+                            %x_209:i32 = load %192
+                            %194:f32 = convert %x_209
+                            %195:f32 = div %194, 10.0f
+                            %196:f32 = add 0.5f, %195
+                            store %grey, %196
+                            exit_if  # if_14
+                          }
+                          %b57 = block {  # false
+                            %x_214:f32 = load_vector_element %gl_FragCoord, 1u
+                            %198:i32 = convert %x_214
+                            %199:bool = lt %198, 210i
+                            if %199 [t: %b58, f: %b59] {  # if_15
+                              %b58 = block {  # true
+                                %200:ptr<private, i32, read_write> = access %data, 6i
+                                %x_221:i32 = load %200
+                                %202:f32 = convert %x_221
+                                %203:f32 = div %202, 10.0f
+                                %204:f32 = add 0.5f, %203
+                                store %grey, %204
+                                exit_if  # if_15
+                              }
+                              %b59 = block {  # false
+                                %x_226:f32 = load_vector_element %gl_FragCoord, 1u
+                                %206:i32 = convert %x_226
+                                %207:bool = lt %206, 240i
+                                if %207 [t: %b60, f: %b61] {  # if_16
+                                  %b60 = block {  # true
+                                    %208:ptr<private, i32, read_write> = access %data, 7i
+                                    %x_233:i32 = load %208
+                                    %210:f32 = convert %x_233
+                                    %211:f32 = div %210, 10.0f
+                                    %212:f32 = add 0.5f, %211
+                                    store %grey, %212
+                                    exit_if  # if_16
+                                  }
+                                  %b61 = block {  # false
+                                    %x_238:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %214:i32 = convert %x_238
+                                    %215:bool = lt %214, 270i
+                                    if %215 [t: %b62, f: %b63] {  # if_17
+                                      %b62 = block {  # true
+                                        %216:ptr<private, i32, read_write> = access %data, 8i
+                                        %x_245:i32 = load %216
+                                        %218:f32 = convert %x_245
+                                        %219:f32 = div %218, 10.0f
+                                        %220:f32 = add 0.5f, %219
+                                        store %grey, %220
+                                        exit_if  # if_17
+                                      }
+                                      %b63 = block {  # false
+                                        discard
+                                        exit_if  # if_17
+                                      }
+                                    }
+                                    exit_if  # if_16
+                                  }
+                                }
+                                exit_if  # if_15
+                              }
+                            }
+                            exit_if  # if_14
+                          }
+                        }
+                        exit_if  # if_13
+                      }
+                    }
+                    exit_if  # if_12
+                  }
+                }
+                exit_if  # if_11
+              }
+            }
+            exit_if  # if_10
+          }
+        }
+        exit_if  # if_9
+      }
+    }
+    %x_249:f32 = load %grey
+    %x_250:vec3<f32> = construct %x_249, %x_249, %x_249
+    %223:f32 = access %x_250, 0u
+    %224:f32 = access %x_250, 1u
+    %225:f32 = access %x_250, 2u
+    %226:vec4<f32> = construct %223, %224, %225, 1.0f
+    store %x_GLF_color, %226
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b64 {
+  %b64 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %229:void = call %main_1
+    %230:vec4<f32> = load %x_GLF_color
+    %231:main_out = construct %230
+    ret %231
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..ff27fc7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm.expected.ir.msl
@@ -0,0 +1,162 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_77:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %x_78:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %x_79:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %x_80:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_89:ptr<function, vec4<f32>, read_write> = var
+    %x_92:ptr<function, i32, read_write> = var
+    %11:vec4<f32> = load %gl_FragCoord
+    %12:vec2<f32> = swizzle %11, xy
+    %13:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %14:vec2<f32> = load %13
+    %15:vec2<f32> = div %12, %14
+    %16:vec2<f32> = mul %15, 32.0f
+    %x_87:vec2<f32> = floor %16
+    store %x_89, vec4<f32>(0.5f, 0.5f, 1.0f, 1.0f)
+    store %x_92, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_121:ptr<function, bool, read_write> = var
+        %x_136:ptr<function, vec4<f32>, read_write> = var
+        %x_90:ptr<function, vec4<f32>, read_write> = var
+        %x_93:ptr<function, i32, read_write> = var
+        %22:i32 = load %x_92
+        %23:bool = lt %22, 8i
+        if %23 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_98:ptr<function, vec4<f32>, read_write> = var
+        store %x_77, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+        %25:i32 = load %x_92
+        %26:ptr<function, vec4<f32>, read_write> = access %x_77, %25
+        %27:vec4<f32> = load %26
+        store %x_98, %27
+        switch 0u [c: (default, %b7)] {  # switch_1
+          %b7 = block {  # case
+            %x_101:f32 = access %x_87, 0u
+            %x_102:f32 = load_vector_element %x_98, 0u
+            %30:bool = lt %x_101, %x_102
+            if %30 [t: %b8] {  # if_2
+              %b8 = block {  # true
+                store %x_121, false
+                exit_switch  # switch_1
+              }
+            }
+            %x_106:f32 = access %x_87, 1u
+            %x_107:f32 = load_vector_element %x_98, 1u
+            %33:bool = lt %x_106, %x_107
+            if %33 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                store %x_121, false
+                exit_switch  # switch_1
+              }
+            }
+            %34:f32 = load_vector_element %x_98, 2u
+            %35:f32 = add %x_102, %34
+            %36:bool = gt %x_101, %35
+            if %36 [t: %b10] {  # if_4
+              %b10 = block {  # true
+                store %x_121, false
+                exit_switch  # switch_1
+              }
+            }
+            %37:f32 = load_vector_element %x_98, 3u
+            %38:f32 = add %x_107, %37
+            %39:bool = gt %x_106, %38
+            if %39 [t: %b11] {  # if_5
+              %b11 = block {  # true
+                store %x_121, false
+                exit_switch  # switch_1
+              }
+            }
+            store %x_121, true
+            exit_switch  # switch_1
+          }
+        }
+        %40:vec4<f32> = load %x_89
+        store %x_90, %40
+        %41:bool = load %x_121
+        if %41 [t: %b12] {  # if_6
+          %b12 = block {  # true
+            store %x_78, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %42:i32 = load %x_92
+            %43:ptr<function, vec4<f32>, read_write> = access %x_78, %42
+            %x_125:f32 = load_vector_element %43, 0u
+            store %x_79, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %45:i32 = load %x_92
+            %46:ptr<function, vec4<f32>, read_write> = access %x_79, %45
+            %x_128:f32 = load_vector_element %46, 1u
+            store %x_80, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+            %48:i32 = convert %x_125
+            %49:i32 = convert %x_128
+            %50:i32 = mul %48, %49
+            %51:i32 = load %x_92
+            %52:i32 = mul %51, 9i
+            %53:i32 = add %50, %52
+            %54:i32 = add %53, 11i
+            %55:i32 = mod %54, 16i
+            %56:ptr<function, vec4<f32>, read_write> = access %x_80, %55
+            %57:vec4<f32> = load %56
+            store %x_136, %57
+            %58:vec4<f32> = load %x_136
+            store %x_90, %58
+            exit_if  # if_6
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %59:i32 = load %x_92
+        %60:i32 = add %59, 1i
+        store %x_93, %60
+        %61:vec4<f32> = load %x_90
+        store %x_89, %61
+        %62:i32 = load %x_93
+        store %x_92, %62
+        next_iteration %b3
+      }
+    }
+    %63:vec4<f32> = load %x_89
+    store %x_GLF_color, %63
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b13 {
+  %b13 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %66:void = call %main_1
+    %67:vec4<f32> = load %x_GLF_color
+    %68:main_out = construct %67
+    ret %68
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7899a65
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl.expected.ir.msl
@@ -0,0 +1,162 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_77:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %x_78:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %x_79:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %x_80:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_89:ptr<function, vec4<f32>, read_write> = var
+    %x_89_phi:ptr<function, vec4<f32>, read_write> = var
+    %x_92_phi:ptr<function, i32, read_write> = var
+    %x_81:vec4<f32> = load %gl_FragCoord
+    %13:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_84:vec2<f32> = load %13
+    %15:f32 = access %x_81, 0u
+    %16:f32 = access %x_81, 1u
+    %17:vec2<f32> = construct %15, %16
+    %18:vec2<f32> = div %17, %x_84
+    %19:vec2<f32> = mul %18, 32.0f
+    %x_87:vec2<f32> = floor %19
+    store %x_89_phi, vec4<f32>(0.5f, 0.5f, 1.0f, 1.0f)
+    store %x_92_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_136:ptr<function, vec4<f32>, read_write> = var
+        %x_93:ptr<function, i32, read_write> = var
+        %x_121_phi:ptr<function, bool, read_write> = var
+        %x_90_phi:ptr<function, vec4<f32>, read_write> = var
+        %25:vec4<f32> = load %x_89_phi
+        store %x_89, %25
+        %x_92:i32 = load %x_92_phi
+        %27:bool = lt %x_92, 8i
+        if %27 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_98:ptr<function, vec4<f32>, read_write> = var
+        store %x_77, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+        %29:ptr<function, vec4<f32>, read_write> = access %x_77, %x_92
+        %30:vec4<f32> = load %29
+        store %x_98, %30
+        switch 0u [c: (default, %b7)] {  # switch_1
+          %b7 = block {  # case
+            %x_101:f32 = access %x_87, 0u
+            %x_102:f32 = load_vector_element %x_98, 0u
+            %33:bool = lt %x_101, %x_102
+            if %33 [t: %b8] {  # if_2
+              %b8 = block {  # true
+                store %x_121_phi, false
+                exit_switch  # switch_1
+              }
+            }
+            %x_106:f32 = access %x_87, 1u
+            %x_107:f32 = load_vector_element %x_98, 1u
+            %36:bool = lt %x_106, %x_107
+            if %36 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                store %x_121_phi, false
+                exit_switch  # switch_1
+              }
+            }
+            %37:f32 = load_vector_element %x_98, 2u
+            %38:f32 = add %x_102, %37
+            %39:bool = gt %x_101, %38
+            if %39 [t: %b10] {  # if_4
+              %b10 = block {  # true
+                store %x_121_phi, false
+                exit_switch  # switch_1
+              }
+            }
+            %40:f32 = load_vector_element %x_98, 3u
+            %41:f32 = add %x_107, %40
+            %42:bool = gt %x_106, %41
+            if %42 [t: %b11] {  # if_5
+              %b11 = block {  # true
+                store %x_121_phi, false
+                exit_switch  # switch_1
+              }
+            }
+            store %x_121_phi, true
+            exit_switch  # switch_1
+          }
+        }
+        %x_121:bool = load %x_121_phi
+        %44:vec4<f32> = load %x_89
+        store %x_90_phi, %44
+        if %x_121 [t: %b12] {  # if_6
+          %b12 = block {  # true
+            store %x_78, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %45:ptr<function, vec4<f32>, read_write> = access %x_78, %x_92
+            %x_125:f32 = load_vector_element %45, 0u
+            store %x_79, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %47:ptr<function, vec4<f32>, read_write> = access %x_79, %x_92
+            %x_128:f32 = load_vector_element %47, 1u
+            store %x_80, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+            %49:i32 = convert %x_125
+            %50:i32 = convert %x_128
+            %51:i32 = mul %49, %50
+            %52:i32 = mul %x_92, 9i
+            %53:i32 = add %51, %52
+            %54:i32 = add %53, 11i
+            %55:i32 = mod %54, 16i
+            %56:ptr<function, vec4<f32>, read_write> = access %x_80, %55
+            %57:vec4<f32> = load %56
+            store %x_136, %57
+            %58:vec4<f32> = load %x_136
+            store %x_90_phi, %58
+            exit_if  # if_6
+          }
+        }
+        %x_90:vec4<f32> = load %x_90_phi
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %60:i32 = add %x_92, 1i
+        store %x_93, %60
+        store %x_89_phi, %x_90
+        %61:i32 = load %x_93
+        store %x_92_phi, %61
+        next_iteration %b3
+      }
+    }
+    %62:vec4<f32> = load %x_89
+    store %x_GLF_color, %62
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b13 {
+  %b13 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %65:void = call %main_1
+    %66:vec4<f32> = load %x_GLF_color
+    %67:main_out = construct %66
+    ret %67
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..4b323ce
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm.expected.ir.msl
@@ -0,0 +1,100 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_69:ptr<function, i32, read_write> = var
+    %x_72:ptr<function, i32, read_write> = var
+    %8:vec4<f32> = load %gl_FragCoord
+    %9:vec2<f32> = swizzle %8, xy
+    %10:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %11:vec2<f32> = load %10
+    %x_59:vec2<f32> = div %9, %11
+    %13:f32 = access %x_59, 0u
+    %14:f32 = mul %13, 10.0f
+    %15:i32 = convert %14
+    %16:f32 = access %x_59, 1u
+    %17:f32 = mul %16, 10.0f
+    %18:i32 = convert %17
+    %19:i32 = mul %18, 10i
+    %x_67:i32 = add %15, %19
+    store %x_69, 100i
+    store %x_72, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_70:ptr<function, i32, read_write> = var
+        %x_73:ptr<function, i32, read_write> = var
+        %23:i32 = load %x_72
+        %24:bool = lt %23, %x_67
+        if %24 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %25:i32 = load %x_69
+        %26:i32 = mul 4i, %25
+        %27:i32 = load %x_69
+        %28:i32 = sub 1000i, %27
+        %29:i32 = mul %26, %28
+        %30:i32 = div %29, 1000i
+        store %x_70, %30
+        %31:i32 = load %x_72
+        %32:i32 = add %31, 1i
+        store %x_73, %32
+        %33:i32 = load %x_70
+        store %x_69, %33
+        %34:i32 = load %x_73
+        store %x_72, %34
+        next_iteration %b3
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %x_80:array<vec4<f32>, 16> = load %indexable
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f))
+    store %indexable, %x_80
+    %x_81:vec2<f32> = let vec2<f32>(1.0f, 0.5f)
+    %37:i32 = load %x_69
+    %38:i32 = mod %37, 16i
+    %39:ptr<function, vec4<f32>, read_write> = access %indexable, %38
+    %40:vec4<f32> = load %39
+    store %x_GLF_color, %40
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b7 {
+  %b7 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %43:void = call %main_1
+    %44:vec4<f32> = load %x_GLF_color
+    %45:main_out = construct %44
+    ret %45
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..be17432
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl.expected.ir.msl
@@ -0,0 +1,107 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_69:ptr<function, i32, read_write> = var
+    %x_69_phi:ptr<function, i32, read_write> = var
+    %x_72_phi:ptr<function, i32, read_write> = var
+    %x_55:vec4<f32> = load %gl_FragCoord
+    %10:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_58:vec2<f32> = load %10
+    %12:f32 = access %x_55, 0u
+    %13:f32 = access %x_55, 1u
+    %14:vec2<f32> = construct %12, %13
+    %x_59:vec2<f32> = div %14, %x_58
+    %16:f32 = access %x_59, 0u
+    %17:f32 = mul %16, 10.0f
+    %18:i32 = convert %17
+    %19:f32 = access %x_59, 1u
+    %20:f32 = mul %19, 10.0f
+    %21:i32 = convert %20
+    %22:i32 = mul %21, 10i
+    %x_67:i32 = add %18, %22
+    store %x_69_phi, 100i
+    store %x_72_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_70:ptr<function, i32, read_write> = var
+        %x_73:ptr<function, i32, read_write> = var
+        %26:i32 = load %x_69_phi
+        store %x_69, %26
+        %x_72:i32 = load %x_72_phi
+        %28:bool = lt %x_72, %x_67
+        if %28 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %29:i32 = load %x_69
+        %30:i32 = bitcast %29
+        %31:i32 = mul 4i, %30
+        %32:i32 = load %x_69
+        %33:i32 = bitcast %32
+        %34:i32 = sub 1000i, %33
+        %35:i32 = mul %31, %34
+        %36:i32 = div %35, 1000i
+        store %x_70, %36
+        %37:i32 = add %x_72, 1i
+        store %x_73, %37
+        %38:i32 = load %x_70
+        store %x_69_phi, %38
+        %39:i32 = load %x_73
+        store %x_72_phi, %39
+        next_iteration %b3
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %x_80:array<vec4<f32>, 16> = load %indexable
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f))
+    store %indexable, %x_80
+    %x_81:vec2<f32> = let vec2<f32>(1.0f, 0.5f)
+    %42:i32 = load %x_69
+    %43:i32 = mod %42, 16i
+    %44:i32 = bitcast %43
+    %45:ptr<function, vec4<f32>, read_write> = access %indexable, %44
+    %x_83:vec4<f32> = load %45
+    store %x_GLF_color, %x_83
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b7 {
+  %b7 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %49:void = call %main_1
+    %50:vec4<f32> = load %x_GLF_color
+    %51:main_out = construct %50
+    ret %51
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7c78244
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm.expected.ir.msl
@@ -0,0 +1,97 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_69:ptr<function, i32, read_write> = var
+    %x_72:ptr<function, i32, read_write> = var
+    %8:vec4<f32> = load %gl_FragCoord
+    %9:vec2<f32> = swizzle %8, xy
+    %10:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %11:vec2<f32> = load %10
+    %x_59:vec2<f32> = div %9, %11
+    %13:f32 = access %x_59, 0u
+    %14:f32 = mul %13, 10.0f
+    %15:i32 = convert %14
+    %16:f32 = access %x_59, 1u
+    %17:f32 = mul %16, 10.0f
+    %18:i32 = convert %17
+    %19:i32 = mul %18, 10i
+    %x_67:i32 = add %15, %19
+    store %x_69, 100i
+    store %x_72, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_70:ptr<function, i32, read_write> = var
+        %x_73:ptr<function, i32, read_write> = var
+        %23:i32 = load %x_72
+        %24:bool = lt %23, %x_67
+        if %24 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %25:i32 = load %x_69
+        %26:i32 = mul 4i, %25
+        %27:i32 = load %x_69
+        %28:i32 = sub 1000i, %27
+        %29:i32 = mul %26, %28
+        %30:i32 = div %29, 1000i
+        store %x_70, %30
+        %31:i32 = load %x_72
+        %32:i32 = add %31, 1i
+        store %x_73, %32
+        %33:i32 = load %x_70
+        store %x_69, %33
+        %34:i32 = load %x_73
+        store %x_72, %34
+        next_iteration %b3
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %x_80:vec2<f32> = let vec2<f32>(1.0f, 0.5f)
+    %36:i32 = load %x_69
+    %37:i32 = mod %36, 16i
+    %38:ptr<function, vec4<f32>, read_write> = access %indexable, %37
+    %39:vec4<f32> = load %38
+    store %x_GLF_color, %39
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b7 {
+  %b7 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %42:void = call %main_1
+    %43:vec4<f32> = load %x_GLF_color
+    %44:main_out = construct %43
+    ret %44
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f8cb527
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl.expected.ir.msl
@@ -0,0 +1,104 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_69:ptr<function, i32, read_write> = var
+    %x_69_phi:ptr<function, i32, read_write> = var
+    %x_72_phi:ptr<function, i32, read_write> = var
+    %x_55:vec4<f32> = load %gl_FragCoord
+    %10:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_58:vec2<f32> = load %10
+    %12:f32 = access %x_55, 0u
+    %13:f32 = access %x_55, 1u
+    %14:vec2<f32> = construct %12, %13
+    %x_59:vec2<f32> = div %14, %x_58
+    %16:f32 = access %x_59, 0u
+    %17:f32 = mul %16, 10.0f
+    %18:i32 = convert %17
+    %19:f32 = access %x_59, 1u
+    %20:f32 = mul %19, 10.0f
+    %21:i32 = convert %20
+    %22:i32 = mul %21, 10i
+    %x_67:i32 = add %18, %22
+    store %x_69_phi, 100i
+    store %x_72_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_70:ptr<function, i32, read_write> = var
+        %x_73:ptr<function, i32, read_write> = var
+        %26:i32 = load %x_69_phi
+        store %x_69, %26
+        %x_72:i32 = load %x_72_phi
+        %28:bool = lt %x_72, %x_67
+        if %28 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %29:i32 = load %x_69
+        %30:i32 = bitcast %29
+        %31:i32 = mul 4i, %30
+        %32:i32 = load %x_69
+        %33:i32 = bitcast %32
+        %34:i32 = sub 1000i, %33
+        %35:i32 = mul %31, %34
+        %36:i32 = div %35, 1000i
+        store %x_70, %36
+        %37:i32 = add %x_72, 1i
+        store %x_73, %37
+        %38:i32 = load %x_70
+        store %x_69_phi, %38
+        %39:i32 = load %x_73
+        store %x_72_phi, %39
+        next_iteration %b3
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %x_80:vec2<f32> = let vec2<f32>(1.0f, 0.5f)
+    %41:i32 = load %x_69
+    %42:i32 = mod %41, 16i
+    %43:i32 = bitcast %42
+    %44:ptr<function, vec4<f32>, read_write> = access %indexable, %43
+    %x_82:vec4<f32> = load %44
+    store %x_GLF_color, %x_82
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b7 {
+  %b7 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %48:void = call %main_1
+    %49:vec4<f32> = load %x_GLF_color
+    %50:main_out = construct %49
+    ret %50
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1a1969f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.spvasm.expected.ir.msl
@@ -0,0 +1,228 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_13:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%checkSwap_f1_f1_ = func(%a:ptr<function, f32, read_write>, %b:ptr<function, f32, read_write>):bool -> %b2 {
+  %b2 = block {
+    %x_144:ptr<function, bool, read_write> = var
+    %9:f32 = load_vector_element %gl_FragCoord, 1u
+    %10:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %11:f32 = load_vector_element %10, 1u
+    %12:f32 = div %11, 2.0f
+    %13:bool = lt %9, %12
+    if %13 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %14:f32 = load %a
+        %15:f32 = load %b
+        %16:bool = gt %14, %15
+        store %x_144, %16
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %17:f32 = load %a
+        %18:f32 = load %b
+        %19:bool = lt %17, %18
+        store %x_144, %19
+        exit_if  # if_1
+      }
+    }
+    %x_160:bool = load %x_144
+    ret %x_160
+  }
+}
+%main_1 = func():void -> %b5 {
+  %b5 = block {
+    %i:ptr<function, i32, read_write> = var
+    %data:ptr<function, array<f32, 10>, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %doSwap:ptr<function, bool, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %param_1:ptr<function, f32, read_write> = var
+    %temp:ptr<function, f32, read_write> = var
+    store %i, 0i
+    loop [b: %b6, c: %b7] {  # loop_1
+      %b6 = block {  # body
+        %30:i32 = load %i
+        %31:bool = lt %30, 10i
+        if %31 [t: %b8, f: %b9] {  # if_2
+          %b8 = block {  # true
+            exit_if  # if_2
+          }
+          %b9 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_59:i32 = load %i
+        %33:ptr<function, f32, read_write> = access %data, %x_59
+        %34:i32 = load %i
+        %35:i32 = sub 10i, %34
+        %36:f32 = convert %35
+        %37:ptr<uniform, vec2<f32>, read> = access %x_13, 0u
+        %38:f32 = load_vector_element %37, 1u
+        %39:f32 = mul %36, %38
+        store %33, %39
+        continue %b7
+      }
+      %b7 = block {  # continuing
+        %40:i32 = load %i
+        %41:i32 = add %40, 1i
+        store %i, %41
+        next_iteration %b6
+      }
+    }
+    store %i_1, 0i
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %42:i32 = load %i_1
+        %43:bool = lt %42, 9i
+        if %43 [t: %b12, f: %b13] {  # if_3
+          %b12 = block {  # true
+            exit_if  # if_3
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        store %j, 0i
+        loop [b: %b14, c: %b15] {  # loop_3
+          %b14 = block {  # body
+            %44:i32 = load %j
+            %45:bool = lt %44, 10i
+            if %45 [t: %b16, f: %b17] {  # if_4
+              %b16 = block {  # true
+                exit_if  # if_4
+              }
+              %b17 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %46:i32 = load %j
+            %47:i32 = load %i_1
+            %48:i32 = add %47, 1i
+            %49:bool = lt %46, %48
+            if %49 [t: %b18] {  # if_5
+              %b18 = block {  # true
+                continue %b15
+              }
+            }
+            %x_90:i32 = load %j
+            %51:i32 = load %i_1
+            %52:ptr<function, f32, read_write> = access %data, %51
+            %53:f32 = load %52
+            store %param, %53
+            %54:ptr<function, f32, read_write> = access %data, %x_90
+            %55:f32 = load %54
+            store %param_1, %55
+            %x_95:bool = call %checkSwap_f1_f1_, %param, %param_1
+            store %doSwap, %x_95
+            %57:bool = load %doSwap
+            if %57 [t: %b19] {  # if_6
+              %b19 = block {  # true
+                %58:i32 = load %i_1
+                %59:ptr<function, f32, read_write> = access %data, %58
+                %60:f32 = load %59
+                store %temp, %60
+                %x_102:i32 = load %i_1
+                %62:ptr<function, f32, read_write> = access %data, %x_102
+                %63:i32 = load %j
+                %64:ptr<function, f32, read_write> = access %data, %63
+                %65:f32 = load %64
+                store %62, %65
+                %x_107:i32 = load %j
+                %67:ptr<function, f32, read_write> = access %data, %x_107
+                %68:f32 = load %temp
+                store %67, %68
+                exit_if  # if_6
+              }
+            }
+            continue %b15
+          }
+          %b15 = block {  # continuing
+            %69:i32 = load %j
+            %70:i32 = add %69, 1i
+            store %j, %70
+            next_iteration %b14
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        %71:i32 = load %i_1
+        %72:i32 = add %71, 1i
+        store %i_1, %72
+        next_iteration %b10
+      }
+    }
+    %73:f32 = load_vector_element %gl_FragCoord, 0u
+    %74:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %75:f32 = load_vector_element %74, 0u
+    %76:f32 = div %75, 2.0f
+    %77:bool = lt %73, %76
+    if %77 [t: %b20, f: %b21] {  # if_7
+      %b20 = block {  # true
+        %78:ptr<function, f32, read_write> = access %data, 0i
+        %79:f32 = load %78
+        %80:f32 = div %79, 10.0f
+        %81:ptr<function, f32, read_write> = access %data, 5i
+        %82:f32 = load %81
+        %83:f32 = div %82, 10.0f
+        %84:ptr<function, f32, read_write> = access %data, 9i
+        %85:f32 = load %84
+        %86:f32 = div %85, 10.0f
+        %87:vec4<f32> = construct %80, %83, %86, 1.0f
+        store %x_GLF_color, %87
+        exit_if  # if_7
+      }
+      %b21 = block {  # false
+        %88:ptr<function, f32, read_write> = access %data, 5i
+        %89:f32 = load %88
+        %90:f32 = div %89, 10.0f
+        %91:ptr<function, f32, read_write> = access %data, 9i
+        %92:f32 = load %91
+        %93:f32 = div %92, 10.0f
+        %94:ptr<function, f32, read_write> = access %data, 0i
+        %95:f32 = load %94
+        %96:f32 = div %95, 10.0f
+        %97:vec4<f32> = construct %90, %93, %96, 1.0f
+        store %x_GLF_color, %97
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b22 {
+  %b22 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %100:void = call %main_1
+    %101:vec4<f32> = load %x_GLF_color
+    %102:main_out = construct %101
+    ret %102
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3d6e70c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl.expected.ir.msl
@@ -0,0 +1,228 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_13:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%checkSwap_f1_f1_ = func(%a:ptr<function, f32, read_write>, %b:ptr<function, f32, read_write>):bool -> %b2 {
+  %b2 = block {
+    %x_144:ptr<function, bool, read_write> = var
+    %x_146:f32 = load_vector_element %gl_FragCoord, 1u
+    %10:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %x_148:f32 = load_vector_element %10, 1u
+    %12:f32 = div %x_148, 2.0f
+    %13:bool = lt %x_146, %12
+    if %13 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %x_154:f32 = load %a
+        %x_155:f32 = load %b
+        %16:bool = gt %x_154, %x_155
+        store %x_144, %16
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %x_157:f32 = load %a
+        %x_158:f32 = load %b
+        %19:bool = lt %x_157, %x_158
+        store %x_144, %19
+        exit_if  # if_1
+      }
+    }
+    %x_160:bool = load %x_144
+    ret %x_160
+  }
+}
+%main_1 = func():void -> %b5 {
+  %b5 = block {
+    %i:ptr<function, i32, read_write> = var
+    %data:ptr<function, array<f32, 10>, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %doSwap:ptr<function, bool, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %param_1:ptr<function, f32, read_write> = var
+    %temp:ptr<function, f32, read_write> = var
+    store %i, 0i
+    loop [b: %b6, c: %b7] {  # loop_1
+      %b6 = block {  # body
+        %x_56:i32 = load %i
+        %31:bool = lt %x_56, 10i
+        if %31 [t: %b8, f: %b9] {  # if_2
+          %b8 = block {  # true
+            exit_if  # if_2
+          }
+          %b9 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_59:i32 = load %i
+        %x_60:i32 = load %i
+        %34:ptr<uniform, vec2<f32>, read> = access %x_13, 0u
+        %x_64:f32 = load_vector_element %34, 1u
+        %36:ptr<function, f32, read_write> = access %data, %x_59
+        %37:i32 = sub 10i, %x_60
+        %38:f32 = convert %37
+        %39:f32 = mul %38, %x_64
+        store %36, %39
+        continue %b7
+      }
+      %b7 = block {  # continuing
+        %x_67:i32 = load %i
+        %41:i32 = add %x_67, 1i
+        store %i, %41
+        next_iteration %b6
+      }
+    }
+    store %i_1, 0i
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %x_73:i32 = load %i_1
+        %43:bool = lt %x_73, 9i
+        if %43 [t: %b12, f: %b13] {  # if_3
+          %b12 = block {  # true
+            exit_if  # if_3
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        store %j, 0i
+        loop [b: %b14, c: %b15] {  # loop_3
+          %b14 = block {  # body
+            %x_80:i32 = load %j
+            %45:bool = lt %x_80, 10i
+            if %45 [t: %b16, f: %b17] {  # if_4
+              %b16 = block {  # true
+                exit_if  # if_4
+              }
+              %b17 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %x_83:i32 = load %j
+            %x_84:i32 = load %i_1
+            %48:i32 = add %x_84, 1i
+            %49:bool = lt %x_83, %48
+            if %49 [t: %b18] {  # if_5
+              %b18 = block {  # true
+                continue %b15
+              }
+            }
+            %x_89:i32 = load %i_1
+            %x_90:i32 = load %j
+            %52:ptr<function, f32, read_write> = access %data, %x_89
+            %x_92:f32 = load %52
+            store %param, %x_92
+            %54:ptr<function, f32, read_write> = access %data, %x_90
+            %x_94:f32 = load %54
+            store %param_1, %x_94
+            %x_95:bool = call %checkSwap_f1_f1_, %param, %param_1
+            store %doSwap, %x_95
+            %x_96:bool = load %doSwap
+            if %x_96 [t: %b19] {  # if_6
+              %b19 = block {  # true
+                %x_99:i32 = load %i_1
+                %59:ptr<function, f32, read_write> = access %data, %x_99
+                %x_101:f32 = load %59
+                store %temp, %x_101
+                %x_102:i32 = load %i_1
+                %x_103:i32 = load %j
+                %63:ptr<function, f32, read_write> = access %data, %x_103
+                %x_105:f32 = load %63
+                %65:ptr<function, f32, read_write> = access %data, %x_102
+                store %65, %x_105
+                %x_107:i32 = load %j
+                %x_108:f32 = load %temp
+                %68:ptr<function, f32, read_write> = access %data, %x_107
+                store %68, %x_108
+                exit_if  # if_6
+              }
+            }
+            continue %b15
+          }
+          %b15 = block {  # continuing
+            %x_110:i32 = load %j
+            %70:i32 = add %x_110, 1i
+            store %j, %70
+            next_iteration %b14
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        %x_112:i32 = load %i_1
+        %72:i32 = add %x_112, 1i
+        store %i_1, %72
+        next_iteration %b10
+      }
+    }
+    %x_115:f32 = load_vector_element %gl_FragCoord, 0u
+    %74:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %x_117:f32 = load_vector_element %74, 0u
+    %76:f32 = div %x_117, 2.0f
+    %77:bool = lt %x_115, %76
+    if %77 [t: %b20, f: %b21] {  # if_7
+      %b20 = block {  # true
+        %78:ptr<function, f32, read_write> = access %data, 0i
+        %x_124:f32 = load %78
+        %80:ptr<function, f32, read_write> = access %data, 5i
+        %x_127:f32 = load %80
+        %82:ptr<function, f32, read_write> = access %data, 9i
+        %x_130:f32 = load %82
+        %84:f32 = div %x_124, 10.0f
+        %85:f32 = div %x_127, 10.0f
+        %86:f32 = div %x_130, 10.0f
+        %87:vec4<f32> = construct %84, %85, %86, 1.0f
+        store %x_GLF_color, %87
+        exit_if  # if_7
+      }
+      %b21 = block {  # false
+        %88:ptr<function, f32, read_write> = access %data, 5i
+        %x_134:f32 = load %88
+        %90:ptr<function, f32, read_write> = access %data, 9i
+        %x_137:f32 = load %90
+        %92:ptr<function, f32, read_write> = access %data, 0i
+        %x_140:f32 = load %92
+        %94:f32 = div %x_134, 10.0f
+        %95:f32 = div %x_137, 10.0f
+        %96:f32 = div %x_140, 10.0f
+        %97:vec4<f32> = construct %94, %95, %96, 1.0f
+        store %x_GLF_color, %97
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b22 {
+  %b22 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %100:void = call %main_1
+    %101:vec4<f32> = load %x_GLF_color
+    %102:main_out = construct %101
+    ret %102
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..fcefbe1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.spvasm.expected.ir.msl
@@ -0,0 +1,336 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_13:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%checkSwap_f1_f1_ = func(%a:ptr<function, f32, read_write>, %b:ptr<function, f32, read_write>):bool -> %b2 {
+  %b2 = block {
+    %x_147:ptr<function, bool, read_write> = var
+    %x_158:ptr<function, f32, read_write> = var
+    %x_159:ptr<function, f32, read_write> = var
+    %x_160:ptr<function, f32, read_write> = var
+    %x_179:ptr<function, f32, read_write> = var
+    %x_178:ptr<function, f32, read_write> = var
+    %x_180:ptr<function, f32, read_write> = var
+    %x_185:ptr<function, f32, read_write> = var
+    %x_184:ptr<function, f32, read_write> = var
+    %x_186:ptr<function, f32, read_write> = var
+    %18:f32 = load_vector_element %gl_FragCoord, 1u
+    %19:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %20:f32 = load_vector_element %19, 1u
+    %21:f32 = div %20, 2.0f
+    %x_153:bool = lt %18, %21
+    if %x_153 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %23:f32 = load %a
+        store %x_158, %23
+        %24:f32 = load %x_158
+        store %x_160, %24
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_159, 0.0f
+        %25:f32 = load %x_159
+        store %x_160, %25
+        exit_if  # if_1
+      }
+    }
+    %x_166:ptr<function, f32, read_write> = var
+    %x_167:ptr<function, f32, read_write> = var
+    %x_168:ptr<function, f32, read_write> = var
+    %guard155:ptr<function, bool, read_write> = var, true
+    if false [t: %b5, f: %b6] {  # if_2
+      %b5 = block {  # true
+        exit_if  # if_2
+      }
+      %b6 = block {  # false
+        %30:bool = load %guard155
+        if %30 [t: %b7] {  # if_3
+          %b7 = block {  # true
+            if %x_153 [t: %b8, f: %b9] {  # if_4
+              %b8 = block {  # true
+                %31:f32 = load %b
+                store %x_166, %31
+                %32:f32 = load %x_166
+                store %x_168, %32
+                exit_if  # if_4
+              }
+              %b9 = block {  # false
+                store %x_167, 0.0f
+                %33:f32 = load %x_167
+                store %x_168, %33
+                exit_if  # if_4
+              }
+            }
+            %34:f32 = load %x_160
+            %35:f32 = load %x_168
+            %x_169:bool = gt %34, %35
+            if %x_153 [t: %b10] {  # if_5
+              %b10 = block {  # true
+                store %x_147, %x_169
+                exit_if  # if_5
+              }
+            }
+            if true [t: %b11, f: %b12] {  # if_6
+              %b11 = block {  # true
+                exit_if  # if_6
+              }
+              %b12 = block {  # false
+                store %guard155, false
+                exit_if  # if_6
+              }
+            }
+            %37:bool = load %guard155
+            if %37 [t: %b13] {  # if_7
+              %b13 = block {  # true
+                store %guard155, false
+                exit_if  # if_7
+              }
+            }
+            exit_if  # if_3
+          }
+        }
+        exit_if  # if_2
+      }
+    }
+    if %x_153 [t: %b14, f: %b15] {  # if_8
+      %b14 = block {  # true
+        store %x_179, 0.0f
+        %38:f32 = load %x_179
+        store %x_180, %38
+        exit_if  # if_8
+      }
+      %b15 = block {  # false
+        %39:f32 = load %a
+        store %x_178, %39
+        %40:f32 = load %x_178
+        store %x_180, %40
+        exit_if  # if_8
+      }
+    }
+    if %x_153 [t: %b16, f: %b17] {  # if_9
+      %b16 = block {  # true
+        store %x_185, 0.0f
+        %41:f32 = load %x_185
+        store %x_186, %41
+        exit_if  # if_9
+      }
+      %b17 = block {  # false
+        %42:f32 = load %b
+        store %x_184, %42
+        %43:f32 = load %x_184
+        store %x_186, %43
+        exit_if  # if_9
+      }
+    }
+    if %x_153 [t: %b18, f: %b19] {  # if_10
+      %b18 = block {  # true
+        exit_if  # if_10
+      }
+      %b19 = block {  # false
+        %44:f32 = load %x_180
+        %45:f32 = load %x_186
+        %46:bool = lt %44, %45
+        store %x_147, %46
+        exit_if  # if_10
+      }
+    }
+    %x_191:bool = load %x_147
+    ret %x_191
+  }
+}
+%main_1 = func():void -> %b20 {
+  %b20 = block {
+    %i:ptr<function, i32, read_write> = var
+    %data:ptr<function, array<f32, 10>, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %doSwap:ptr<function, bool, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %param_1:ptr<function, f32, read_write> = var
+    %temp:ptr<function, f32, read_write> = var
+    store %i, 0i
+    loop [b: %b21, c: %b22] {  # loop_1
+      %b21 = block {  # body
+        %57:i32 = load %i
+        %58:bool = lt %57, 10i
+        if %58 [t: %b23, f: %b24] {  # if_11
+          %b23 = block {  # true
+            exit_if  # if_11
+          }
+          %b24 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_62:i32 = load %i
+        %60:ptr<function, f32, read_write> = access %data, %x_62
+        %61:i32 = load %i
+        %62:i32 = sub 10i, %61
+        %63:f32 = convert %62
+        %64:ptr<uniform, vec2<f32>, read> = access %x_13, 0u
+        %65:f32 = load_vector_element %64, 1u
+        %66:f32 = mul %63, %65
+        store %60, %66
+        continue %b22
+      }
+      %b22 = block {  # continuing
+        %67:i32 = load %i
+        %68:i32 = add %67, 1i
+        store %i, %68
+        next_iteration %b21
+      }
+    }
+    store %i_1, 0i
+    loop [b: %b25, c: %b26] {  # loop_2
+      %b25 = block {  # body
+        %69:i32 = load %i_1
+        %70:bool = lt %69, 9i
+        if %70 [t: %b27, f: %b28] {  # if_12
+          %b27 = block {  # true
+            exit_if  # if_12
+          }
+          %b28 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        store %j, 0i
+        loop [b: %b29, c: %b30] {  # loop_3
+          %b29 = block {  # body
+            %71:i32 = load %j
+            %72:bool = lt %71, 10i
+            if %72 [t: %b31, f: %b32] {  # if_13
+              %b31 = block {  # true
+                exit_if  # if_13
+              }
+              %b32 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %73:i32 = load %j
+            %74:i32 = load %i_1
+            %75:i32 = add %74, 1i
+            %76:bool = lt %73, %75
+            if %76 [t: %b33] {  # if_14
+              %b33 = block {  # true
+                continue %b30
+              }
+            }
+            %x_93:i32 = load %j
+            %78:i32 = load %i_1
+            %79:ptr<function, f32, read_write> = access %data, %78
+            %80:f32 = load %79
+            store %param, %80
+            %81:ptr<function, f32, read_write> = access %data, %x_93
+            %82:f32 = load %81
+            store %param_1, %82
+            %x_98:bool = call %checkSwap_f1_f1_, %param, %param_1
+            store %doSwap, %x_98
+            %84:bool = load %doSwap
+            if %84 [t: %b34] {  # if_15
+              %b34 = block {  # true
+                %85:i32 = load %i_1
+                %86:ptr<function, f32, read_write> = access %data, %85
+                %87:f32 = load %86
+                store %temp, %87
+                %x_105:i32 = load %i_1
+                %89:ptr<function, f32, read_write> = access %data, %x_105
+                %90:i32 = load %j
+                %91:ptr<function, f32, read_write> = access %data, %90
+                %92:f32 = load %91
+                store %89, %92
+                %x_110:i32 = load %j
+                %94:ptr<function, f32, read_write> = access %data, %x_110
+                %95:f32 = load %temp
+                store %94, %95
+                exit_if  # if_15
+              }
+            }
+            continue %b30
+          }
+          %b30 = block {  # continuing
+            %96:i32 = load %j
+            %97:i32 = add %96, 1i
+            store %j, %97
+            next_iteration %b29
+          }
+        }
+        continue %b26
+      }
+      %b26 = block {  # continuing
+        %98:i32 = load %i_1
+        %99:i32 = add %98, 1i
+        store %i_1, %99
+        next_iteration %b25
+      }
+    }
+    %100:f32 = load_vector_element %gl_FragCoord, 0u
+    %101:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %102:f32 = load_vector_element %101, 0u
+    %103:f32 = div %102, 2.0f
+    %104:bool = lt %100, %103
+    if %104 [t: %b35, f: %b36] {  # if_16
+      %b35 = block {  # true
+        %105:ptr<function, f32, read_write> = access %data, 0i
+        %106:f32 = load %105
+        %107:f32 = div %106, 10.0f
+        %108:ptr<function, f32, read_write> = access %data, 5i
+        %109:f32 = load %108
+        %110:f32 = div %109, 10.0f
+        %111:ptr<function, f32, read_write> = access %data, 9i
+        %112:f32 = load %111
+        %113:f32 = div %112, 10.0f
+        %114:vec4<f32> = construct %107, %110, %113, 1.0f
+        store %x_GLF_color, %114
+        exit_if  # if_16
+      }
+      %b36 = block {  # false
+        %115:ptr<function, f32, read_write> = access %data, 5i
+        %116:f32 = load %115
+        %117:f32 = div %116, 10.0f
+        %118:ptr<function, f32, read_write> = access %data, 9i
+        %119:f32 = load %118
+        %120:f32 = div %119, 10.0f
+        %121:ptr<function, f32, read_write> = access %data, 0i
+        %122:f32 = load %121
+        %123:f32 = div %122, 10.0f
+        %124:vec4<f32> = construct %117, %120, %123, 1.0f
+        store %x_GLF_color, %124
+        exit_if  # if_16
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b37 {
+  %b37 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %127:void = call %main_1
+    %128:vec4<f32> = load %x_GLF_color
+    %129:main_out = construct %128
+    ret %129
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5d79343
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl.expected.ir.msl
@@ -0,0 +1,336 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_13:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%checkSwap_f1_f1_ = func(%a:ptr<function, f32, read_write>, %b:ptr<function, f32, read_write>):bool -> %b2 {
+  %b2 = block {
+    %x_147:ptr<function, bool, read_write> = var
+    %x_158:ptr<function, f32, read_write> = var
+    %x_159:ptr<function, f32, read_write> = var
+    %x_179:ptr<function, f32, read_write> = var
+    %x_178:ptr<function, f32, read_write> = var
+    %x_185:ptr<function, f32, read_write> = var
+    %x_184:ptr<function, f32, read_write> = var
+    %x_160_phi:ptr<function, f32, read_write> = var
+    %x_180_phi:ptr<function, f32, read_write> = var
+    %x_186_phi:ptr<function, f32, read_write> = var
+    %x_149:f32 = load_vector_element %gl_FragCoord, 1u
+    %19:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %x_151:f32 = load_vector_element %19, 1u
+    %21:f32 = div %x_151, 2.0f
+    %x_153:bool = lt %x_149, %21
+    if %x_153 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %23:f32 = load %a
+        store %x_158, %23
+        %24:f32 = load %x_158
+        store %x_160_phi, %24
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        store %x_159, 0.0f
+        %25:f32 = load %x_159
+        store %x_160_phi, %25
+        exit_if  # if_1
+      }
+    }
+    %x_166:ptr<function, f32, read_write> = var
+    %x_167:ptr<function, f32, read_write> = var
+    %x_168_phi:ptr<function, f32, read_write> = var
+    %x_160:f32 = load %x_160_phi
+    %guard155:ptr<function, bool, read_write> = var, true
+    if false [t: %b5, f: %b6] {  # if_2
+      %b5 = block {  # true
+        exit_if  # if_2
+      }
+      %b6 = block {  # false
+        %31:bool = load %guard155
+        if %31 [t: %b7] {  # if_3
+          %b7 = block {  # true
+            if %x_153 [t: %b8, f: %b9] {  # if_4
+              %b8 = block {  # true
+                %32:f32 = load %b
+                store %x_166, %32
+                %33:f32 = load %x_166
+                store %x_168_phi, %33
+                exit_if  # if_4
+              }
+              %b9 = block {  # false
+                store %x_167, 0.0f
+                %34:f32 = load %x_167
+                store %x_168_phi, %34
+                exit_if  # if_4
+              }
+            }
+            %x_168:f32 = load %x_168_phi
+            %x_169:bool = gt %x_160, %x_168
+            if %x_153 [t: %b10] {  # if_5
+              %b10 = block {  # true
+                store %x_147, %x_169
+                exit_if  # if_5
+              }
+            }
+            if true [t: %b11, f: %b12] {  # if_6
+              %b11 = block {  # true
+                exit_if  # if_6
+              }
+              %b12 = block {  # false
+                store %guard155, false
+                exit_if  # if_6
+              }
+            }
+            %37:bool = load %guard155
+            if %37 [t: %b13] {  # if_7
+              %b13 = block {  # true
+                store %guard155, false
+                exit_if  # if_7
+              }
+            }
+            exit_if  # if_3
+          }
+        }
+        exit_if  # if_2
+      }
+    }
+    if %x_153 [t: %b14, f: %b15] {  # if_8
+      %b14 = block {  # true
+        store %x_179, 0.0f
+        %38:f32 = load %x_179
+        store %x_180_phi, %38
+        exit_if  # if_8
+      }
+      %b15 = block {  # false
+        %39:f32 = load %a
+        store %x_178, %39
+        %40:f32 = load %x_178
+        store %x_180_phi, %40
+        exit_if  # if_8
+      }
+    }
+    %x_180:f32 = load %x_180_phi
+    if %x_153 [t: %b16, f: %b17] {  # if_9
+      %b16 = block {  # true
+        store %x_185, 0.0f
+        %42:f32 = load %x_185
+        store %x_186_phi, %42
+        exit_if  # if_9
+      }
+      %b17 = block {  # false
+        %43:f32 = load %b
+        store %x_184, %43
+        %44:f32 = load %x_184
+        store %x_186_phi, %44
+        exit_if  # if_9
+      }
+    }
+    %x_186:f32 = load %x_186_phi
+    if %x_153 [t: %b18, f: %b19] {  # if_10
+      %b18 = block {  # true
+        exit_if  # if_10
+      }
+      %b19 = block {  # false
+        %46:bool = lt %x_180, %x_186
+        store %x_147, %46
+        exit_if  # if_10
+      }
+    }
+    %x_191:bool = load %x_147
+    ret %x_191
+  }
+}
+%main_1 = func():void -> %b20 {
+  %b20 = block {
+    %i:ptr<function, i32, read_write> = var
+    %data:ptr<function, array<f32, 10>, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %doSwap:ptr<function, bool, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %param_1:ptr<function, f32, read_write> = var
+    %temp:ptr<function, f32, read_write> = var
+    store %i, 0i
+    loop [b: %b21, c: %b22] {  # loop_1
+      %b21 = block {  # body
+        %x_59:i32 = load %i
+        %58:bool = lt %x_59, 10i
+        if %58 [t: %b23, f: %b24] {  # if_11
+          %b23 = block {  # true
+            exit_if  # if_11
+          }
+          %b24 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_62:i32 = load %i
+        %x_63:i32 = load %i
+        %61:ptr<uniform, vec2<f32>, read> = access %x_13, 0u
+        %x_67:f32 = load_vector_element %61, 1u
+        %63:ptr<function, f32, read_write> = access %data, %x_62
+        %64:i32 = sub 10i, %x_63
+        %65:f32 = convert %64
+        %66:f32 = mul %65, %x_67
+        store %63, %66
+        continue %b22
+      }
+      %b22 = block {  # continuing
+        %x_70:i32 = load %i
+        %68:i32 = add %x_70, 1i
+        store %i, %68
+        next_iteration %b21
+      }
+    }
+    store %i_1, 0i
+    loop [b: %b25, c: %b26] {  # loop_2
+      %b25 = block {  # body
+        %x_76:i32 = load %i_1
+        %70:bool = lt %x_76, 9i
+        if %70 [t: %b27, f: %b28] {  # if_12
+          %b27 = block {  # true
+            exit_if  # if_12
+          }
+          %b28 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        store %j, 0i
+        loop [b: %b29, c: %b30] {  # loop_3
+          %b29 = block {  # body
+            %x_83:i32 = load %j
+            %72:bool = lt %x_83, 10i
+            if %72 [t: %b31, f: %b32] {  # if_13
+              %b31 = block {  # true
+                exit_if  # if_13
+              }
+              %b32 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %x_86:i32 = load %j
+            %x_87:i32 = load %i_1
+            %75:i32 = add %x_87, 1i
+            %76:bool = lt %x_86, %75
+            if %76 [t: %b33] {  # if_14
+              %b33 = block {  # true
+                continue %b30
+              }
+            }
+            %x_92:i32 = load %i_1
+            %x_93:i32 = load %j
+            %79:ptr<function, f32, read_write> = access %data, %x_92
+            %x_95:f32 = load %79
+            store %param, %x_95
+            %81:ptr<function, f32, read_write> = access %data, %x_93
+            %x_97:f32 = load %81
+            store %param_1, %x_97
+            %x_98:bool = call %checkSwap_f1_f1_, %param, %param_1
+            store %doSwap, %x_98
+            %x_99:bool = load %doSwap
+            if %x_99 [t: %b34] {  # if_15
+              %b34 = block {  # true
+                %x_102:i32 = load %i_1
+                %86:ptr<function, f32, read_write> = access %data, %x_102
+                %x_104:f32 = load %86
+                store %temp, %x_104
+                %x_105:i32 = load %i_1
+                %x_106:i32 = load %j
+                %90:ptr<function, f32, read_write> = access %data, %x_106
+                %x_108:f32 = load %90
+                %92:ptr<function, f32, read_write> = access %data, %x_105
+                store %92, %x_108
+                %x_110:i32 = load %j
+                %x_111:f32 = load %temp
+                %95:ptr<function, f32, read_write> = access %data, %x_110
+                store %95, %x_111
+                exit_if  # if_15
+              }
+            }
+            continue %b30
+          }
+          %b30 = block {  # continuing
+            %x_113:i32 = load %j
+            %97:i32 = add %x_113, 1i
+            store %j, %97
+            next_iteration %b29
+          }
+        }
+        continue %b26
+      }
+      %b26 = block {  # continuing
+        %x_115:i32 = load %i_1
+        %99:i32 = add %x_115, 1i
+        store %i_1, %99
+        next_iteration %b25
+      }
+    }
+    %x_118:f32 = load_vector_element %gl_FragCoord, 0u
+    %101:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %x_120:f32 = load_vector_element %101, 0u
+    %103:f32 = div %x_120, 2.0f
+    %104:bool = lt %x_118, %103
+    if %104 [t: %b35, f: %b36] {  # if_16
+      %b35 = block {  # true
+        %105:ptr<function, f32, read_write> = access %data, 0i
+        %x_127:f32 = load %105
+        %107:ptr<function, f32, read_write> = access %data, 5i
+        %x_130:f32 = load %107
+        %109:ptr<function, f32, read_write> = access %data, 9i
+        %x_133:f32 = load %109
+        %111:f32 = div %x_127, 10.0f
+        %112:f32 = div %x_130, 10.0f
+        %113:f32 = div %x_133, 10.0f
+        %114:vec4<f32> = construct %111, %112, %113, 1.0f
+        store %x_GLF_color, %114
+        exit_if  # if_16
+      }
+      %b36 = block {  # false
+        %115:ptr<function, f32, read_write> = access %data, 5i
+        %x_137:f32 = load %115
+        %117:ptr<function, f32, read_write> = access %data, 9i
+        %x_140:f32 = load %117
+        %119:ptr<function, f32, read_write> = access %data, 0i
+        %x_143:f32 = load %119
+        %121:f32 = div %x_137, 10.0f
+        %122:f32 = div %x_140, 10.0f
+        %123:f32 = div %x_143, 10.0f
+        %124:vec4<f32> = construct %121, %122, %123, 1.0f
+        store %x_GLF_color, %124
+        exit_if  # if_16
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b37 {
+  %b37 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %127:void = call %main_1
+    %128:vec4<f32> = load %x_GLF_color
+    %129:main_out = construct %128
+    ret %129
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7ff3415
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm.expected.ir.msl
@@ -0,0 +1,110 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_65:ptr<function, i32, read_write> = var
+    %x_68:ptr<function, i32, read_write> = var
+    %8:vec4<f32> = load %gl_FragCoord
+    %9:vec2<f32> = swizzle %8, xy
+    %10:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %11:vec2<f32> = load %10
+    %12:vec2<f32> = div %9, %11
+    %13:vec2<f32> = mul %12, 8.0f
+    %x_57:vec2<f32> = floor %13
+    %15:f32 = access %x_57, 0u
+    %16:i32 = convert %15
+    %17:i32 = mul %16, 8i
+    %18:f32 = access %x_57, 1u
+    %19:i32 = convert %18
+    %x_63:i32 = add %17, %19
+    store %x_65, 0i
+    store %x_68, %x_63
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_79:ptr<function, i32, read_write> = var
+        %x_80:ptr<function, i32, read_write> = var
+        %x_69:ptr<function, i32, read_write> = var
+        %24:i32 = load %x_68
+        %25:bool = gt %24, 1i
+        if %25 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %26:i32 = load %x_68
+        %27:i32 = and %26, 1i
+        %28:bool = eq %27, 1i
+        if %28 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %29:i32 = load %x_68
+            %30:i32 = mul 3i, %29
+            %31:i32 = add %30, 1i
+            store %x_79, %31
+            %32:i32 = load %x_79
+            store %x_69, %32
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %33:i32 = load %x_68
+            %34:i32 = div %33, 2i
+            store %x_80, %34
+            %35:i32 = load %x_80
+            store %x_69, %35
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %36:i32 = load %x_65
+        %37:i32 = add %36, 1i
+        store %x_65, %37
+        %38:i32 = load %x_69
+        store %x_68, %38
+        next_iteration %b3
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %39:i32 = load %x_65
+    %40:i32 = mod %39, 16i
+    %41:ptr<function, vec4<f32>, read_write> = access %indexable, %40
+    %42:vec4<f32> = load %41
+    store %x_GLF_color, %42
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b9 {
+  %b9 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %45:void = call %main_1
+    %46:vec4<f32> = load %x_GLF_color
+    %47:main_out = construct %46
+    ret %47
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f21b508
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl.expected.ir.msl
@@ -0,0 +1,114 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_65:ptr<function, i32, read_write> = var
+    %x_65_phi:ptr<function, i32, read_write> = var
+    %x_68_phi:ptr<function, i32, read_write> = var
+    %x_51:vec4<f32> = load %gl_FragCoord
+    %10:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_54:vec2<f32> = load %10
+    %12:f32 = access %x_51, 0u
+    %13:f32 = access %x_51, 1u
+    %14:vec2<f32> = construct %12, %13
+    %15:vec2<f32> = div %14, %x_54
+    %16:vec2<f32> = mul %15, 8.0f
+    %x_57:vec2<f32> = floor %16
+    %18:f32 = access %x_57, 0u
+    %19:i32 = convert %18
+    %20:i32 = mul %19, 8i
+    %21:f32 = access %x_57, 1u
+    %22:i32 = convert %21
+    %x_63:i32 = add %20, %22
+    store %x_65_phi, 0i
+    store %x_68_phi, %x_63
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_79:ptr<function, i32, read_write> = var
+        %x_80:ptr<function, i32, read_write> = var
+        %x_69_phi:ptr<function, i32, read_write> = var
+        %27:i32 = load %x_65_phi
+        store %x_65, %27
+        %x_68:i32 = load %x_68_phi
+        %29:bool = gt %x_68, 1i
+        if %29 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %30:i32 = and %x_68, 1i
+        %31:bool = eq %30, 1i
+        if %31 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %32:i32 = mul 3i, %x_68
+            %33:i32 = add %32, 1i
+            store %x_79, %33
+            %34:i32 = load %x_79
+            store %x_69_phi, %34
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %35:i32 = div %x_68, 2i
+            store %x_80, %35
+            %36:i32 = load %x_80
+            store %x_69_phi, %36
+            exit_if  # if_2
+          }
+        }
+        %x_69:i32 = load %x_69_phi
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %38:i32 = load %x_65
+        %39:i32 = add %38, 1i
+        %40:i32 = bitcast %39
+        store %x_65_phi, %40
+        store %x_68_phi, %x_69
+        next_iteration %b3
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %41:i32 = load %x_65
+    %42:i32 = mod %41, 16i
+    %43:i32 = bitcast %42
+    %44:ptr<function, vec4<f32>, read_write> = access %indexable, %43
+    %x_83:vec4<f32> = load %44
+    store %x_GLF_color, %x_83
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b9 {
+  %b9 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %48:void = call %main_1
+    %49:vec4<f32> = load %x_GLF_color
+    %50:main_out = construct %49
+    ret %50
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..5f64ee1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm.expected.ir.msl
@@ -0,0 +1,119 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_71:ptr<function, i32, read_write> = var
+    %x_74:ptr<function, i32, read_write> = var
+    %x_54:vec4<f32> = load %gl_FragCoord
+    %9:vec4<f32> = load %gl_FragCoord
+    %x_55:vec2<f32> = swizzle %9, xy
+    %11:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %12:vec2<f32> = load %11
+    %13:vec2<f32> = div %x_55, %12
+    %x_61:vec2<f32> = mul %13, 8.0f
+    %x_62:vec2<f32> = floor %x_61
+    %16:f32 = access %x_62, 0u
+    %17:i32 = convert %16
+    %18:i32 = mul %17, 8i
+    %19:f32 = access %x_62, 1u
+    %20:i32 = convert %19
+    %x_69:i32 = add %18, %20
+    store %x_71, 0i
+    store %x_74, %x_69
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_85:ptr<function, i32, read_write> = var
+        %x_86:ptr<function, i32, read_write> = var
+        %x_75:ptr<function, i32, read_write> = var
+        %25:i32 = load %x_74
+        %26:bool = gt %25, 1i
+        if %26 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %27:i32 = load %x_74
+        %28:i32 = and %27, 1i
+        %29:bool = eq %28, 1i
+        if %29 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %30:i32 = load %x_74
+            %31:i32 = mul 3i, %30
+            %32:i32 = add %31, 1i
+            store %x_85, %32
+            %33:i32 = load %x_85
+            store %x_75, %33
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %34:i32 = load %x_74
+            %35:i32 = div %34, 2i
+            store %x_86, %35
+            %36:i32 = load %x_86
+            store %x_75, %36
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %37:i32 = load %x_71
+        %38:i32 = add %37, 1i
+        store %x_71, %38
+        %39:i32 = load %x_75
+        store %x_74, %39
+        next_iteration %b3
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %x_88:array<vec4<f32>, 16> = load %indexable
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f))
+    store %indexable, %x_88
+    %41:array<vec4<f32>, 16> = construct vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), %x_54, vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    %x_89:vec4<f32> = access %41, 1u
+    %43:vec4<f32> = construct 0.0f, 8.0f, %x_55
+    %44:vec4<f32> = construct %x_61, 0.5f, 1.0f
+    %x_90:array<vec4<f32>, 16> = construct vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), %43, vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), %44
+    %46:i32 = load %x_71
+    %47:i32 = mod %46, 16i
+    %48:ptr<function, vec4<f32>, read_write> = access %indexable, %47
+    %49:vec4<f32> = load %48
+    store %x_GLF_color, %49
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b9 {
+  %b9 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %52:void = call %main_1
+    %53:vec4<f32> = load %x_GLF_color
+    %54:main_out = construct %53
+    ret %54
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..547cc92
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl.expected.ir.msl
@@ -0,0 +1,122 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_71:ptr<function, i32, read_write> = var
+    %x_71_phi:ptr<function, i32, read_write> = var
+    %x_74_phi:ptr<function, i32, read_write> = var
+    %x_54:vec4<f32> = load %gl_FragCoord
+    %10:f32 = access %x_54, 0u
+    %11:f32 = access %x_54, 1u
+    %x_55:vec2<f32> = construct %10, %11
+    %13:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_58:vec2<f32> = load %13
+    %15:vec2<f32> = div %x_55, %x_58
+    %x_61:vec2<f32> = mul %15, 8.0f
+    %x_62:vec2<f32> = floor %x_61
+    %18:f32 = access %x_62, 0u
+    %19:i32 = convert %18
+    %20:i32 = mul %19, 8i
+    %21:f32 = access %x_62, 1u
+    %22:i32 = convert %21
+    %x_69:i32 = add %20, %22
+    store %x_71_phi, 0i
+    store %x_74_phi, %x_69
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_85:ptr<function, i32, read_write> = var
+        %x_86:ptr<function, i32, read_write> = var
+        %x_75_phi:ptr<function, i32, read_write> = var
+        %27:i32 = load %x_71_phi
+        store %x_71, %27
+        %x_74:i32 = load %x_74_phi
+        %29:bool = gt %x_74, 1i
+        if %29 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %30:i32 = and %x_74, 1i
+        %31:bool = eq %30, 1i
+        if %31 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %32:i32 = mul 3i, %x_74
+            %33:i32 = add %32, 1i
+            store %x_85, %33
+            %34:i32 = load %x_85
+            store %x_75_phi, %34
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %35:i32 = div %x_74, 2i
+            store %x_86, %35
+            %36:i32 = load %x_86
+            store %x_75_phi, %36
+            exit_if  # if_2
+          }
+        }
+        %x_75:i32 = load %x_75_phi
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %38:i32 = load %x_71
+        %39:i32 = add %38, 1i
+        %40:i32 = bitcast %39
+        store %x_71_phi, %40
+        store %x_74_phi, %x_75
+        next_iteration %b3
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %x_88:array<vec4<f32>, 16> = load %indexable
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f))
+    store %indexable, %x_88
+    %42:array<vec4<f32>, 16> = construct vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), %x_54, vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    %x_89:vec4<f32> = access %42, 1u
+    %44:vec4<f32> = construct 0.0f, 8.0f, %x_55
+    %45:vec4<f32> = construct %x_61, 0.5f, 1.0f
+    %x_90:array<vec4<f32>, 16> = construct vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), %44, vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), %45
+    %47:i32 = load %x_71
+    %48:i32 = mod %47, 16i
+    %49:i32 = bitcast %48
+    %50:ptr<function, vec4<f32>, read_write> = access %indexable, %49
+    %x_92:vec4<f32> = load %50
+    store %x_GLF_color, %x_92
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b9 {
+  %b9 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %54:void = call %main_1
+    %55:vec4<f32> = load %x_GLF_color
+    %56:main_out = construct %55
+    ret %56
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..9214b0d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.spvasm.expected.ir.msl
@@ -0,0 +1,331 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %x_51:ptr<function, f32, read_write> = var
+    %x_55:ptr<function, f32, read_write> = var
+    %x_58:ptr<function, i32, read_write> = var
+    %x_56:ptr<function, f32, read_write> = var
+    %x_81:ptr<function, f32, read_write> = var
+    %x_82:ptr<function, f32, read_write> = var
+    %x_83:ptr<function, bool, read_write> = var
+    %x_85:ptr<function, f32, read_write> = var
+    %x_118:ptr<function, f32, read_write> = var
+    %x_119:ptr<function, f32, read_write> = var
+    %x_122:ptr<function, f32, read_write> = var
+    %x_129:ptr<function, i32, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %18:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %19:f32 = load_vector_element %18, 0u
+    %20:f32 = mul %19, 0.125f
+    %x_49:f32 = round %20
+    %22:f32 = load_vector_element %gl_FragCoord, 0u
+    store %x_51, %22
+    switch 0u [c: (default, %b3)] {  # switch_1
+      %b3 = block {  # case
+        store %x_55, -0.5f
+        store %x_58, 1i
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %x_68:ptr<function, f32, read_write> = var
+            %x_76:ptr<function, f32, read_write> = var
+            %x_59:ptr<function, i32, read_write> = var
+            store %x_81, 0.0f
+            %26:f32 = load %x_55
+            store %x_82, %26
+            store %x_83, false
+            %27:i32 = load %x_58
+            %28:bool = lt %27, 800i
+            if %28 [t: %b6, f: %b7] {  # if_1
+              %b6 = block {  # true
+                exit_if  # if_1
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            %x_75:ptr<function, f32, read_write> = var
+            %30:i32 = load %x_58
+            %31:i32 = mod %30, 32i
+            %32:bool = eq %31, 0i
+            if %32 [t: %b8, f: %b9] {  # if_2
+              %b8 = block {  # true
+                %33:f32 = load %x_55
+                %34:f32 = add %33, 0.40000000596046447754f
+                store %x_68, %34
+                %35:f32 = load %x_68
+                store %x_56, %35
+                exit_if  # if_2
+              }
+              %b9 = block {  # false
+                %36:f32 = load %x_55
+                store %x_76, %36
+                %37:i32 = load %x_58
+                %38:f32 = convert %37
+                %39:f32 = round %x_49
+                %40:i32 = load %x_58
+                %41:f32 = convert %40
+                %42:f32 = round %x_49
+                %43:f32 = div %41, %42
+                %44:f32 = floor %43
+                %45:f32 = mul %39, %44
+                %46:f32 = sub %38, %45
+                %47:bool = lte %46, 0.00999999977648258209f
+                if %47 [t: %b10] {  # if_3
+                  %b10 = block {  # true
+                    %48:f32 = load %x_55
+                    %49:f32 = add %48, 100.0f
+                    store %x_75, %49
+                    %50:f32 = load %x_75
+                    store %x_76, %50
+                    exit_if  # if_3
+                  }
+                }
+                %51:f32 = load %x_76
+                store %x_56, %51
+                exit_if  # if_2
+              }
+            }
+            %52:i32 = load %x_58
+            %53:f32 = convert %52
+            %54:f32 = load %x_51
+            %55:bool = gte %53, %54
+            if %55 [t: %b11] {  # if_4
+              %b11 = block {  # true
+                %56:f32 = load %x_56
+                store %x_81, %56
+                %57:f32 = load %x_56
+                store %x_82, %57
+                store %x_83, true
+                exit_loop  # loop_1
+              }
+            }
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            %58:i32 = load %x_58
+            %59:i32 = add %58, 1i
+            store %x_59, %59
+            %60:f32 = load %x_56
+            store %x_55, %60
+            %61:i32 = load %x_59
+            store %x_58, %61
+            next_iteration %b4
+          }
+        }
+        %62:f32 = load %x_81
+        store %x_85, %62
+        %63:bool = load %x_83
+        if %63 [t: %b12] {  # if_5
+          %b12 = block {  # true
+            exit_switch  # switch_1
+          }
+        }
+        %64:f32 = load %x_82
+        store %x_85, %64
+        exit_switch  # switch_1
+      }
+    }
+    %x_88:ptr<function, f32, read_write> = var
+    %x_92:ptr<function, f32, read_write> = var
+    %x_95:ptr<function, i32, read_write> = var
+    %x_93:ptr<function, f32, read_write> = var
+    %x_120:ptr<function, bool, read_write> = var
+    %70:f32 = load %x_85
+    store_vector_element %c, 0u, %70
+    %71:f32 = load_vector_element %gl_FragCoord, 1u
+    store %x_88, %71
+    switch 0u [c: (default, %b13)] {  # switch_2
+      %b13 = block {  # case
+        store %x_92, -0.5f
+        store %x_95, 1i
+        loop [b: %b14, c: %b15] {  # loop_2
+          %b14 = block {  # body
+            %x_113:ptr<function, f32, read_write> = var
+            %x_112:ptr<function, f32, read_write> = var
+            %x_96:ptr<function, i32, read_write> = var
+            store %x_118, 0.0f
+            %75:f32 = load %x_92
+            store %x_119, %75
+            store %x_120, false
+            %76:i32 = load %x_95
+            %77:bool = lt %76, 800i
+            if %77 [t: %b16, f: %b17] {  # if_6
+              %b16 = block {  # true
+                exit_if  # if_6
+              }
+              %b17 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_111:ptr<function, f32, read_write> = var
+            %79:i32 = load %x_95
+            %80:i32 = mod %79, 32i
+            %81:bool = eq %80, 0i
+            if %81 [t: %b18, f: %b19] {  # if_7
+              %b18 = block {  # true
+                %82:f32 = load %x_92
+                %83:f32 = add %82, 0.40000000596046447754f
+                store %x_113, %83
+                %84:f32 = load %x_113
+                store %x_93, %84
+                exit_if  # if_7
+              }
+              %b19 = block {  # false
+                %85:f32 = load %x_92
+                store %x_112, %85
+                %86:i32 = load %x_95
+                %87:f32 = convert %86
+                %88:f32 = round %x_49
+                %89:i32 = load %x_95
+                %90:f32 = convert %89
+                %91:f32 = round %x_49
+                %92:f32 = div %90, %91
+                %93:f32 = floor %92
+                %94:f32 = mul %88, %93
+                %95:f32 = sub %87, %94
+                %96:bool = lte %95, 0.00999999977648258209f
+                if %96 [t: %b20] {  # if_8
+                  %b20 = block {  # true
+                    %97:f32 = load %x_92
+                    %98:f32 = add %97, 100.0f
+                    store %x_111, %98
+                    %99:f32 = load %x_111
+                    store %x_112, %99
+                    exit_if  # if_8
+                  }
+                }
+                %100:f32 = load %x_112
+                store %x_93, %100
+                exit_if  # if_7
+              }
+            }
+            %101:i32 = load %x_95
+            %102:f32 = convert %101
+            %103:f32 = load %x_88
+            %104:bool = gte %102, %103
+            if %104 [t: %b21] {  # if_9
+              %b21 = block {  # true
+                %105:f32 = load %x_93
+                store %x_118, %105
+                %106:f32 = load %x_93
+                store %x_119, %106
+                store %x_120, true
+                exit_loop  # loop_2
+              }
+            }
+            continue %b15
+          }
+          %b15 = block {  # continuing
+            %107:i32 = load %x_95
+            %108:i32 = add %107, 1i
+            store %x_96, %108
+            %109:f32 = load %x_93
+            store %x_92, %109
+            %110:i32 = load %x_96
+            store %x_95, %110
+            next_iteration %b14
+          }
+        }
+        %111:f32 = load %x_118
+        store %x_122, %111
+        %112:bool = load %x_120
+        if %112 [t: %b22] {  # if_10
+          %b22 = block {  # true
+            exit_switch  # switch_2
+          }
+        }
+        %113:f32 = load %x_119
+        store %x_122, %113
+        exit_switch  # switch_2
+      }
+    }
+    %114:f32 = load %x_122
+    store_vector_element %c, 1u, %114
+    %115:f32 = load_vector_element %c, 0u
+    %116:f32 = load_vector_element %c, 1u
+    %117:f32 = add %115, %116
+    store_vector_element %c, 2u, %117
+    store %x_129, 0i
+    loop [b: %b23, c: %b24] {  # loop_3
+      %b23 = block {  # body
+        %x_130:ptr<function, i32, read_write> = var
+        %119:i32 = load %x_129
+        %120:bool = lt %119, 3i
+        if %120 [t: %b25, f: %b26] {  # if_11
+          %b25 = block {  # true
+            exit_if  # if_11
+          }
+          %b26 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %121:i32 = load %x_129
+        %122:f32 = load_vector_element %c, %121
+        %123:bool = gte %122, 1.0f
+        if %123 [t: %b27] {  # if_12
+          %b27 = block {  # true
+            %124:i32 = load %x_129
+            %125:i32 = load %x_129
+            %126:f32 = load_vector_element %c, %125
+            %127:i32 = load %x_129
+            %128:f32 = load_vector_element %c, %127
+            %129:f32 = mul %126, %128
+            store_vector_element %c, %124, %129
+            exit_if  # if_12
+          }
+        }
+        continue %b24
+      }
+      %b24 = block {  # continuing
+        %130:i32 = load %x_129
+        %131:i32 = add %130, 1i
+        store %x_130, %131
+        %132:i32 = load %x_130
+        store %x_129, %132
+        next_iteration %b23
+      }
+    }
+    %133:vec3<f32> = load %c
+    %134:vec3<f32> = abs %133
+    %x_145:vec3<f32> = normalize %134
+    %136:f32 = access %x_145, 0u
+    %137:f32 = access %x_145, 1u
+    %138:f32 = access %x_145, 2u
+    %139:vec4<f32> = construct %136, %137, %138, 1.0f
+    store %x_GLF_color, %139
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b28 {
+  %b28 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %142:void = call %main_1
+    %143:vec4<f32> = load %x_GLF_color
+    %144:main_out = construct %143
+    ret %144
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e4684a2
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl.expected.ir.msl
@@ -0,0 +1,346 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %x_51:ptr<function, f32, read_write> = var
+    %x_55:ptr<function, f32, read_write> = var
+    %x_56:ptr<function, f32, read_write> = var
+    %x_81:ptr<function, f32, read_write> = var
+    %x_82:ptr<function, f32, read_write> = var
+    %x_118:ptr<function, f32, read_write> = var
+    %x_119:ptr<function, f32, read_write> = var
+    %x_55_phi:ptr<function, f32, read_write> = var
+    %x_58_phi:ptr<function, i32, read_write> = var
+    %x_81_phi:ptr<function, f32, read_write> = var
+    %x_82_phi:ptr<function, f32, read_write> = var
+    %x_83_phi:ptr<function, bool, read_write> = var
+    %x_85_phi:ptr<function, f32, read_write> = var
+    %x_122_phi:ptr<function, f32, read_write> = var
+    %x_129_phi:ptr<function, i32, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %21:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %x_47:f32 = load_vector_element %21, 0u
+    %23:f32 = mul %x_47, 0.125f
+    %x_49:f32 = round %23
+    %25:f32 = load_vector_element %gl_FragCoord, 0u
+    store %x_51, %25
+    switch 0u [c: (default, %b3)] {  # switch_1
+      %b3 = block {  # case
+        store %x_55_phi, -0.5f
+        store %x_58_phi, 1i
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %x_68:ptr<function, f32, read_write> = var
+            %x_76:ptr<function, f32, read_write> = var
+            %x_59:ptr<function, i32, read_write> = var
+            %x_56_phi:ptr<function, f32, read_write> = var
+            %30:f32 = load %x_55_phi
+            store %x_55, %30
+            %x_58:i32 = load %x_58_phi
+            store %x_81_phi, 0.0f
+            %32:f32 = load %x_55
+            store %x_82_phi, %32
+            store %x_83_phi, false
+            %33:bool = lt %x_58, 800i
+            if %33 [t: %b6, f: %b7] {  # if_1
+              %b6 = block {  # true
+                exit_if  # if_1
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            %x_75:ptr<function, f32, read_write> = var
+            %x_76_phi:ptr<function, f32, read_write> = var
+            %36:i32 = mod %x_58, 32i
+            %37:bool = eq %36, 0i
+            if %37 [t: %b8, f: %b9] {  # if_2
+              %b8 = block {  # true
+                %38:f32 = load %x_55
+                %39:f32 = add %38, 0.40000000596046447754f
+                store %x_68, %39
+                %40:f32 = load %x_68
+                store %x_56_phi, %40
+                exit_if  # if_2
+              }
+              %b9 = block {  # false
+                %41:f32 = load %x_55
+                store %x_76_phi, %41
+                %42:f32 = convert %x_58
+                %43:f32 = round %x_49
+                %44:f32 = convert %x_58
+                %45:f32 = round %x_49
+                %46:f32 = div %44, %45
+                %47:f32 = floor %46
+                %48:f32 = mul %43, %47
+                %49:f32 = sub %42, %48
+                %50:bool = lte %49, 0.00999999977648258209f
+                if %50 [t: %b10] {  # if_3
+                  %b10 = block {  # true
+                    %51:f32 = load %x_55
+                    %52:f32 = add %51, 100.0f
+                    store %x_75, %52
+                    %53:f32 = load %x_75
+                    store %x_76_phi, %53
+                    exit_if  # if_3
+                  }
+                }
+                %54:f32 = load %x_76_phi
+                store %x_76, %54
+                %55:f32 = load %x_76
+                store %x_56_phi, %55
+                exit_if  # if_2
+              }
+            }
+            %56:f32 = load %x_56_phi
+            store %x_56, %56
+            %57:f32 = convert %x_58
+            %58:f32 = load %x_51
+            %59:bool = gte %57, %58
+            if %59 [t: %b11] {  # if_4
+              %b11 = block {  # true
+                %60:f32 = load %x_56
+                store %x_81_phi, %60
+                %61:f32 = load %x_56
+                store %x_82_phi, %61
+                store %x_83_phi, true
+                exit_loop  # loop_1
+              }
+            }
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            %62:i32 = add %x_58, 1i
+            store %x_59, %62
+            %63:f32 = load %x_56
+            store %x_55_phi, %63
+            %64:i32 = load %x_59
+            store %x_58_phi, %64
+            next_iteration %b4
+          }
+        }
+        %65:f32 = load %x_81_phi
+        store %x_81, %65
+        %66:f32 = load %x_82_phi
+        store %x_82, %66
+        %x_83:bool = load %x_83_phi
+        %68:f32 = load %x_81
+        store %x_85_phi, %68
+        if %x_83 [t: %b12] {  # if_5
+          %b12 = block {  # true
+            exit_switch  # switch_1
+          }
+        }
+        %69:f32 = load %x_82
+        store %x_85_phi, %69
+        exit_switch  # switch_1
+      }
+    }
+    %x_88:ptr<function, f32, read_write> = var
+    %x_92:ptr<function, f32, read_write> = var
+    %x_93:ptr<function, f32, read_write> = var
+    %x_92_phi:ptr<function, f32, read_write> = var
+    %x_95_phi:ptr<function, i32, read_write> = var
+    %x_118_phi:ptr<function, f32, read_write> = var
+    %x_119_phi:ptr<function, f32, read_write> = var
+    %x_120_phi:ptr<function, bool, read_write> = var
+    %x_85:f32 = load %x_85_phi
+    store_vector_element %c, 0u, %x_85
+    %79:f32 = load_vector_element %gl_FragCoord, 1u
+    store %x_88, %79
+    switch 0u [c: (default, %b13)] {  # switch_2
+      %b13 = block {  # case
+        store %x_92_phi, -0.5f
+        store %x_95_phi, 1i
+        loop [b: %b14, c: %b15] {  # loop_2
+          %b14 = block {  # body
+            %x_113:ptr<function, f32, read_write> = var
+            %x_112:ptr<function, f32, read_write> = var
+            %x_96:ptr<function, i32, read_write> = var
+            %x_93_phi:ptr<function, f32, read_write> = var
+            %84:f32 = load %x_92_phi
+            store %x_92, %84
+            %x_95:i32 = load %x_95_phi
+            store %x_118_phi, 0.0f
+            %86:f32 = load %x_92
+            store %x_119_phi, %86
+            store %x_120_phi, false
+            %87:bool = lt %x_95, 800i
+            if %87 [t: %b16, f: %b17] {  # if_6
+              %b16 = block {  # true
+                exit_if  # if_6
+              }
+              %b17 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_111:ptr<function, f32, read_write> = var
+            %x_112_phi:ptr<function, f32, read_write> = var
+            %90:i32 = mod %x_95, 32i
+            %91:bool = eq %90, 0i
+            if %91 [t: %b18, f: %b19] {  # if_7
+              %b18 = block {  # true
+                %92:f32 = load %x_92
+                %93:f32 = add %92, 0.40000000596046447754f
+                store %x_113, %93
+                %94:f32 = load %x_113
+                store %x_93_phi, %94
+                exit_if  # if_7
+              }
+              %b19 = block {  # false
+                %95:f32 = load %x_92
+                store %x_112_phi, %95
+                %96:f32 = convert %x_95
+                %97:f32 = round %x_49
+                %98:f32 = convert %x_95
+                %99:f32 = round %x_49
+                %100:f32 = div %98, %99
+                %101:f32 = floor %100
+                %102:f32 = mul %97, %101
+                %103:f32 = sub %96, %102
+                %104:bool = lte %103, 0.00999999977648258209f
+                if %104 [t: %b20] {  # if_8
+                  %b20 = block {  # true
+                    %105:f32 = load %x_92
+                    %106:f32 = add %105, 100.0f
+                    store %x_111, %106
+                    %107:f32 = load %x_111
+                    store %x_112_phi, %107
+                    exit_if  # if_8
+                  }
+                }
+                %108:f32 = load %x_112_phi
+                store %x_112, %108
+                %109:f32 = load %x_112
+                store %x_93_phi, %109
+                exit_if  # if_7
+              }
+            }
+            %110:f32 = load %x_93_phi
+            store %x_93, %110
+            %111:f32 = convert %x_95
+            %112:f32 = load %x_88
+            %113:bool = gte %111, %112
+            if %113 [t: %b21] {  # if_9
+              %b21 = block {  # true
+                %114:f32 = load %x_93
+                store %x_118_phi, %114
+                %115:f32 = load %x_93
+                store %x_119_phi, %115
+                store %x_120_phi, true
+                exit_loop  # loop_2
+              }
+            }
+            continue %b15
+          }
+          %b15 = block {  # continuing
+            %116:i32 = add %x_95, 1i
+            store %x_96, %116
+            %117:f32 = load %x_93
+            store %x_92_phi, %117
+            %118:i32 = load %x_96
+            store %x_95_phi, %118
+            next_iteration %b14
+          }
+        }
+        %119:f32 = load %x_118_phi
+        store %x_118, %119
+        %120:f32 = load %x_119_phi
+        store %x_119, %120
+        %x_120:bool = load %x_120_phi
+        %122:f32 = load %x_118
+        store %x_122_phi, %122
+        if %x_120 [t: %b22] {  # if_10
+          %b22 = block {  # true
+            exit_switch  # switch_2
+          }
+        }
+        %123:f32 = load %x_119
+        store %x_122_phi, %123
+        exit_switch  # switch_2
+      }
+    }
+    %x_122:f32 = load %x_122_phi
+    store_vector_element %c, 1u, %x_122
+    %x_124:f32 = load_vector_element %c, 0u
+    %x_125:f32 = load_vector_element %c, 1u
+    %127:f32 = add %x_124, %x_125
+    store_vector_element %c, 2u, %127
+    store %x_129_phi, 0i
+    loop [b: %b23, c: %b24] {  # loop_3
+      %b23 = block {  # body
+        %x_130:ptr<function, i32, read_write> = var
+        %x_129:i32 = load %x_129_phi
+        %130:bool = lt %x_129, 3i
+        if %130 [t: %b25, f: %b26] {  # if_11
+          %b25 = block {  # true
+            exit_if  # if_11
+          }
+          %b26 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_136:f32 = load_vector_element %c, %x_129
+        %132:bool = gte %x_136, 1.0f
+        if %132 [t: %b27] {  # if_12
+          %b27 = block {  # true
+            %x_140:f32 = load_vector_element %c, %x_129
+            %x_141:f32 = load_vector_element %c, %x_129
+            %135:f32 = mul %x_140, %x_141
+            store_vector_element %c, %x_129, %135
+            exit_if  # if_12
+          }
+        }
+        continue %b24
+      }
+      %b24 = block {  # continuing
+        %136:i32 = add %x_129, 1i
+        store %x_130, %136
+        %137:i32 = load %x_130
+        store %x_129_phi, %137
+        next_iteration %b23
+      }
+    }
+    %x_143:vec3<f32> = load %c
+    %139:vec3<f32> = abs %x_143
+    %x_145:vec3<f32> = normalize %139
+    %141:f32 = access %x_145, 0u
+    %142:f32 = access %x_145, 1u
+    %143:f32 = access %x_145, 2u
+    %144:vec4<f32> = construct %141, %142, %143, 1.0f
+    store %x_GLF_color, %144
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b28 {
+  %b28 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %147:void = call %main_1
+    %148:vec4<f32> = load %x_GLF_color
+    %149:main_out = construct %148
+    ret %149
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..e0d3a32
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm.expected.ir.msl
@@ -0,0 +1,683 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %map:ptr<private, array<i32, 256>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %pos:ptr<function, vec2<f32>, read_write> = var
+    %ipos:ptr<function, vec2<i32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %p:ptr<function, vec2<i32>, read_write> = var
+    %canwalk:ptr<function, bool, read_write> = var
+    %v:ptr<function, i32, read_write> = var
+    %directions:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %d:ptr<function, i32, read_write> = var
+    %15:vec4<f32> = load %gl_FragCoord
+    %16:vec2<f32> = swizzle %15, xy
+    %17:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %18:vec2<f32> = load %17
+    %19:vec2<f32> = div %16, %18
+    store %pos, %19
+    %20:f32 = load_vector_element %pos, 0u
+    %21:f32 = mul %20, 16.0f
+    %22:i32 = convert %21
+    %23:f32 = load_vector_element %pos, 1u
+    %24:f32 = mul %23, 16.0f
+    %25:i32 = convert %24
+    %26:vec2<i32> = construct %22, %25
+    store %ipos, %26
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %27:i32 = load %i
+        %28:bool = lt %27, 256i
+        if %28 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_80:i32 = load %i
+        %30:ptr<private, i32, read_write> = access %map, %x_80
+        store %30, 0i
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %31:i32 = load %i
+        %32:i32 = add %31, 1i
+        store %i, %32
+        next_iteration %b3
+      }
+    }
+    store %p, vec2<i32>(0i)
+    store %canwalk, true
+    store %v, 0i
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_104:ptr<function, bool, read_write> = var
+        %x_105:ptr<function, bool, read_write> = var
+        %x_124:ptr<function, bool, read_write> = var
+        %x_125:ptr<function, bool, read_write> = var
+        %x_144:ptr<function, bool, read_write> = var
+        %x_145:ptr<function, bool, read_write> = var
+        %x_164:ptr<function, bool, read_write> = var
+        %x_165:ptr<function, bool, read_write> = var
+        %41:i32 = load %v
+        %42:i32 = add %41, 1i
+        store %v, %42
+        store %directions, 0i
+        %43:i32 = load_vector_element %p, 0u
+        %x_92:bool = gt %43, 0i
+        store %x_105, %x_92
+        if %x_92 [t: %b9] {  # if_2
+          %b9 = block {  # true
+            %45:i32 = load_vector_element %p, 0u
+            %46:i32 = sub %45, 2i
+            %47:i32 = load_vector_element %p, 1u
+            %48:i32 = mul %47, 16i
+            %49:i32 = add %46, %48
+            %50:ptr<private, i32, read_write> = access %map, %49
+            %51:i32 = load %50
+            %52:bool = eq %51, 0i
+            store %x_104, %52
+            %53:bool = load %x_104
+            store %x_105, %53
+            exit_if  # if_2
+          }
+        }
+        %54:bool = load %x_105
+        if %54 [t: %b10] {  # if_3
+          %b10 = block {  # true
+            %55:i32 = load %directions
+            %56:i32 = add %55, 1i
+            store %directions, %56
+            exit_if  # if_3
+          }
+        }
+        %57:i32 = load_vector_element %p, 1u
+        %x_112:bool = gt %57, 0i
+        store %x_125, %x_112
+        if %x_112 [t: %b11] {  # if_4
+          %b11 = block {  # true
+            %59:i32 = load_vector_element %p, 0u
+            %60:i32 = load_vector_element %p, 1u
+            %61:i32 = sub %60, 2i
+            %62:i32 = mul %61, 16i
+            %63:i32 = add %59, %62
+            %64:ptr<private, i32, read_write> = access %map, %63
+            %65:i32 = load %64
+            %66:bool = eq %65, 0i
+            store %x_124, %66
+            %67:bool = load %x_124
+            store %x_125, %67
+            exit_if  # if_4
+          }
+        }
+        %68:bool = load %x_125
+        if %68 [t: %b12] {  # if_5
+          %b12 = block {  # true
+            %69:i32 = load %directions
+            %70:i32 = add %69, 1i
+            store %directions, %70
+            exit_if  # if_5
+          }
+        }
+        %71:i32 = load_vector_element %p, 0u
+        %x_132:bool = lt %71, 14i
+        store %x_145, %x_132
+        if %x_132 [t: %b13] {  # if_6
+          %b13 = block {  # true
+            %73:i32 = load_vector_element %p, 0u
+            %74:i32 = add %73, 2i
+            %75:i32 = load_vector_element %p, 1u
+            %76:i32 = mul %75, 16i
+            %77:i32 = add %74, %76
+            %78:ptr<private, i32, read_write> = access %map, %77
+            %79:i32 = load %78
+            %80:bool = eq %79, 0i
+            store %x_144, %80
+            %81:bool = load %x_144
+            store %x_145, %81
+            exit_if  # if_6
+          }
+        }
+        %82:bool = load %x_145
+        if %82 [t: %b14] {  # if_7
+          %b14 = block {  # true
+            %83:i32 = load %directions
+            %84:i32 = add %83, 1i
+            store %directions, %84
+            exit_if  # if_7
+          }
+        }
+        %85:i32 = load_vector_element %p, 1u
+        %x_152:bool = lt %85, 14i
+        store %x_165, %x_152
+        if %x_152 [t: %b15] {  # if_8
+          %b15 = block {  # true
+            %87:i32 = load_vector_element %p, 0u
+            %88:i32 = load_vector_element %p, 1u
+            %89:i32 = add %88, 2i
+            %90:i32 = mul %89, 16i
+            %91:i32 = add %87, %90
+            %92:ptr<private, i32, read_write> = access %map, %91
+            %93:i32 = load %92
+            %94:bool = eq %93, 0i
+            store %x_164, %94
+            %95:bool = load %x_164
+            store %x_165, %95
+            exit_if  # if_8
+          }
+        }
+        %96:bool = load %x_165
+        if %96 [t: %b16] {  # if_9
+          %b16 = block {  # true
+            %97:i32 = load %directions
+            %98:i32 = add %97, 1i
+            store %directions, %98
+            exit_if  # if_9
+          }
+        }
+        %x_229:ptr<function, bool, read_write> = var
+        %x_230:ptr<function, bool, read_write> = var
+        %x_242:ptr<function, bool, read_write> = var
+        %x_243:ptr<function, bool, read_write> = var
+        %x_281:ptr<function, bool, read_write> = var
+        %x_282:ptr<function, bool, read_write> = var
+        %x_288:ptr<function, i32, read_write> = var
+        %x_289:ptr<function, i32, read_write> = var
+        %x_290:ptr<function, i32, read_write> = var
+        %x_295:ptr<function, i32, read_write> = var
+        %x_296:ptr<function, i32, read_write> = var
+        %x_297:ptr<function, i32, read_write> = var
+        %x_303:ptr<function, array<i32, 256>, read_write> = var
+        %x_304:ptr<function, array<i32, 256>, read_write> = var
+        %x_305:ptr<function, array<i32, 256>, read_write> = var
+        %x_315:ptr<function, i32, read_write> = var
+        %x_316:ptr<function, i32, read_write> = var
+        %x_317:ptr<function, i32, read_write> = var
+        %x_359:ptr<function, bool, read_write> = var
+        %x_360:ptr<function, bool, read_write> = var
+        %x_372:ptr<function, bool, read_write> = var
+        %x_373:ptr<function, bool, read_write> = var
+        %x_411:ptr<function, bool, read_write> = var
+        %x_412:ptr<function, bool, read_write> = var
+        %x_424:ptr<function, bool, read_write> = var
+        %x_425:ptr<function, bool, read_write> = var
+        %125:i32 = load %directions
+        %126:bool = eq %125, 0i
+        if %126 [t: %b17, f: %b18] {  # if_10
+          %b17 = block {  # true
+            store %canwalk, false
+            store %i, 0i
+            loop [b: %b19, c: %b20] {  # loop_3
+              %b19 = block {  # body
+                %127:i32 = load %i
+                %128:bool = lt %127, 8i
+                if %128 [t: %b21, f: %b22] {  # if_11
+                  %b21 = block {  # true
+                    exit_if  # if_11
+                  }
+                  %b22 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                store %j, 0i
+                loop [b: %b23, c: %b24] {  # loop_4
+                  %b23 = block {  # body
+                    %129:i32 = load %j
+                    %130:bool = lt %129, 8i
+                    if %130 [t: %b25, f: %b26] {  # if_12
+                      %b25 = block {  # true
+                        exit_if  # if_12
+                      }
+                      %b26 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %131:i32 = load %j
+                    %132:i32 = mul %131, 2i
+                    %133:i32 = load %i
+                    %134:i32 = mul %133, 2i
+                    %135:i32 = mul %134, 16i
+                    %136:i32 = add %132, %135
+                    %137:ptr<private, i32, read_write> = access %map, %136
+                    %138:i32 = load %137
+                    %139:bool = eq %138, 0i
+                    if %139 [t: %b27] {  # if_13
+                      %b27 = block {  # true
+                        %140:i32 = load %j
+                        %141:i32 = mul %140, 2i
+                        store_vector_element %p, 0u, %141
+                        %142:i32 = load %i
+                        %143:i32 = mul %142, 2i
+                        store_vector_element %p, 1u, %143
+                        store %canwalk, true
+                        exit_if  # if_13
+                      }
+                    }
+                    continue %b24
+                  }
+                  %b24 = block {  # continuing
+                    %144:i32 = load %j
+                    %145:i32 = add %144, 1i
+                    store %j, %145
+                    next_iteration %b23
+                  }
+                }
+                continue %b20
+              }
+              %b20 = block {  # continuing
+                %146:i32 = load %i
+                %147:i32 = add %146, 1i
+                store %i, %147
+                next_iteration %b19
+              }
+            }
+            %x_211:i32 = load_vector_element %p, 0u
+            %x_213:i32 = load_vector_element %p, 1u
+            %150:i32 = mul %x_213, 16i
+            %151:i32 = add %x_211, %150
+            %152:ptr<private, i32, read_write> = access %map, %151
+            store %152, 1i
+            exit_if  # if_10
+          }
+          %b18 = block {  # false
+            %153:i32 = load %v
+            %154:i32 = load %directions
+            %155:i32 = mod %153, %154
+            store %d, %155
+            %156:i32 = load %v
+            %157:i32 = load %directions
+            %158:i32 = add %156, %157
+            store %v, %158
+            %159:i32 = load %d
+            %x_224:bool = gte %159, 0i
+            store %x_230, %x_224
+            if %x_224 [t: %b28] {  # if_14
+              %b28 = block {  # true
+                %161:i32 = load_vector_element %p, 0u
+                %162:bool = gt %161, 0i
+                store %x_229, %162
+                %163:bool = load %x_229
+                store %x_230, %163
+                exit_if  # if_14
+              }
+            }
+            %164:bool = load %x_230
+            store %x_243, %164
+            %165:bool = load %x_230
+            if %165 [t: %b29] {  # if_15
+              %b29 = block {  # true
+                %166:i32 = load_vector_element %p, 0u
+                %167:i32 = sub %166, 2i
+                %168:i32 = load_vector_element %p, 1u
+                %169:i32 = mul %168, 16i
+                %170:i32 = add %167, %169
+                %171:ptr<private, i32, read_write> = access %map, %170
+                %172:i32 = load %171
+                %173:bool = eq %172, 0i
+                store %x_242, %173
+                %174:bool = load %x_242
+                store %x_243, %174
+                exit_if  # if_15
+              }
+            }
+            %175:bool = load %x_243
+            if %175 [t: %b30] {  # if_16
+              %b30 = block {  # true
+                %176:i32 = load %d
+                %177:i32 = sub %176, 1i
+                store %d, %177
+                %x_249:i32 = load_vector_element %p, 0u
+                %x_251:i32 = load_vector_element %p, 1u
+                %180:i32 = mul %x_251, 16i
+                %181:i32 = add %x_249, %180
+                %182:ptr<private, i32, read_write> = access %map, %181
+                store %182, 1i
+                %x_256:i32 = load_vector_element %p, 0u
+                %x_259:i32 = load_vector_element %p, 1u
+                %185:i32 = sub %x_256, 1i
+                %186:i32 = mul %x_259, 16i
+                %187:i32 = add %185, %186
+                %188:ptr<private, i32, read_write> = access %map, %187
+                store %188, 1i
+                %x_264:i32 = load_vector_element %p, 0u
+                %x_267:i32 = load_vector_element %p, 1u
+                %191:i32 = sub %x_264, 2i
+                %192:i32 = mul %x_267, 16i
+                %193:i32 = add %191, %192
+                %194:ptr<private, i32, read_write> = access %map, %193
+                store %194, 1i
+                %195:i32 = load_vector_element %p, 0u
+                %196:i32 = sub %195, 2i
+                store_vector_element %p, 0u, %196
+                exit_if  # if_16
+              }
+            }
+            %197:i32 = load %d
+            %x_276:bool = gte %197, 0i
+            store %x_282, %x_276
+            if %x_276 [t: %b31] {  # if_17
+              %b31 = block {  # true
+                %199:i32 = load_vector_element %p, 1u
+                %200:bool = gt %199, 0i
+                store %x_281, %200
+                %201:bool = load %x_281
+                store %x_282, %201
+                exit_if  # if_17
+              }
+            }
+            %202:bool = load %x_282
+            if %202 [t: %b32, f: %b33] {  # if_18
+              %b32 = block {  # true
+                %203:i32 = load_vector_element %p, 0u
+                store %x_288, %203
+                %204:i32 = load %x_288
+                store %x_290, %204
+                exit_if  # if_18
+              }
+              %b33 = block {  # false
+                store %x_289, 0i
+                %205:i32 = load %x_289
+                store %x_290, %205
+                exit_if  # if_18
+              }
+            }
+            %206:bool = load %x_282
+            if %206 [t: %b34, f: %b35] {  # if_19
+              %b34 = block {  # true
+                %207:i32 = load_vector_element %p, 1u
+                store %x_295, %207
+                %208:i32 = load %x_295
+                store %x_297, %208
+                exit_if  # if_19
+              }
+              %b35 = block {  # false
+                store %x_296, 0i
+                %209:i32 = load %x_296
+                store %x_297, %209
+                exit_if  # if_19
+              }
+            }
+            %210:i32 = load %x_297
+            %211:i32 = sub %210, 2i
+            %x_299:i32 = mul %211, 16i
+            %213:bool = load %x_282
+            if %213 [t: %b36, f: %b37] {  # if_20
+              %b36 = block {  # true
+                %214:array<i32, 256> = load %map
+                store %x_303, %214
+                %215:array<i32, 256> = load %x_303
+                store %x_305, %215
+                exit_if  # if_20
+              }
+              %b37 = block {  # false
+                store %x_304, array<i32, 256>(0i)
+                %216:array<i32, 256> = load %x_304
+                store %x_305, %216
+                exit_if  # if_20
+              }
+            }
+            %217:bool = load %x_282
+            if %217 [t: %b38] {  # if_21
+              %b38 = block {  # true
+                store %map, array<i32, 256>(0i)
+                exit_if  # if_21
+              }
+            }
+            %218:bool = load %x_282
+            if %218 [t: %b39] {  # if_22
+              %b39 = block {  # true
+                %219:array<i32, 256> = load %x_305
+                store %map, %219
+                exit_if  # if_22
+              }
+            }
+            %220:bool = load %x_282
+            if %220 [t: %b40, f: %b41] {  # if_23
+              %b40 = block {  # true
+                %221:i32 = load %x_290
+                %222:i32 = add %221, %x_299
+                %223:ptr<private, i32, read_write> = access %map, %222
+                %224:i32 = load %223
+                store %x_315, %224
+                %225:i32 = load %x_315
+                store %x_317, %225
+                exit_if  # if_23
+              }
+              %b41 = block {  # false
+                store %x_316, 0i
+                %226:i32 = load %x_316
+                store %x_317, %226
+                exit_if  # if_23
+              }
+            }
+            %227:bool = load %x_282
+            %228:i32 = load %x_317
+            %229:bool = eq %228, 0i
+            %230:bool = load %x_282
+            %231:bool = select %227, %229, %230
+            if %231 [t: %b42] {  # if_24
+              %b42 = block {  # true
+                %232:i32 = load %d
+                %233:i32 = sub %232, 1i
+                store %d, %233
+                %x_326:i32 = load_vector_element %p, 0u
+                %x_328:i32 = load_vector_element %p, 1u
+                %236:i32 = mul %x_328, 16i
+                %237:i32 = add %x_326, %236
+                %238:ptr<private, i32, read_write> = access %map, %237
+                store %238, 1i
+                %x_333:i32 = load_vector_element %p, 0u
+                %x_335:i32 = load_vector_element %p, 1u
+                %241:i32 = sub %x_335, 1i
+                %242:i32 = mul %241, 16i
+                %243:i32 = add %x_333, %242
+                %244:ptr<private, i32, read_write> = access %map, %243
+                store %244, 1i
+                %x_341:i32 = load_vector_element %p, 0u
+                %x_343:i32 = load_vector_element %p, 1u
+                %x_345:array<i32, 256> = load %map
+                store %map, array<i32, 256>(0i)
+                store %map, %x_345
+                %248:i32 = sub %x_343, 2i
+                %249:i32 = mul %248, 16i
+                %250:i32 = add %x_341, %249
+                %251:ptr<private, i32, read_write> = access %map, %250
+                store %251, 1i
+                %252:i32 = load_vector_element %p, 1u
+                %253:i32 = sub %252, 2i
+                store_vector_element %p, 1u, %253
+                exit_if  # if_24
+              }
+            }
+            %254:i32 = load %d
+            %x_354:bool = gte %254, 0i
+            store %x_360, %x_354
+            if %x_354 [t: %b43] {  # if_25
+              %b43 = block {  # true
+                %256:i32 = load_vector_element %p, 0u
+                %257:bool = lt %256, 14i
+                store %x_359, %257
+                %258:bool = load %x_359
+                store %x_360, %258
+                exit_if  # if_25
+              }
+            }
+            %259:bool = load %x_360
+            store %x_373, %259
+            %260:bool = load %x_360
+            if %260 [t: %b44] {  # if_26
+              %b44 = block {  # true
+                %261:i32 = load_vector_element %p, 0u
+                %262:i32 = add %261, 2i
+                %263:i32 = load_vector_element %p, 1u
+                %264:i32 = mul %263, 16i
+                %265:i32 = add %262, %264
+                %266:ptr<private, i32, read_write> = access %map, %265
+                %267:i32 = load %266
+                %268:bool = eq %267, 0i
+                store %x_372, %268
+                %269:bool = load %x_372
+                store %x_373, %269
+                exit_if  # if_26
+              }
+            }
+            %270:bool = load %x_373
+            if %270 [t: %b45] {  # if_27
+              %b45 = block {  # true
+                %271:i32 = load %d
+                %272:i32 = sub %271, 1i
+                store %d, %272
+                %x_379:i32 = load_vector_element %p, 0u
+                %x_381:i32 = load_vector_element %p, 1u
+                %275:i32 = mul %x_381, 16i
+                %276:i32 = add %x_379, %275
+                %277:ptr<private, i32, read_write> = access %map, %276
+                store %277, 1i
+                %x_386:i32 = load_vector_element %p, 0u
+                %x_389:i32 = load_vector_element %p, 1u
+                %280:i32 = add %x_386, 1i
+                %281:i32 = mul %x_389, 16i
+                %282:i32 = add %280, %281
+                %283:ptr<private, i32, read_write> = access %map, %282
+                store %283, 1i
+                %x_394:i32 = load_vector_element %p, 0u
+                %x_397:i32 = load_vector_element %p, 1u
+                %286:i32 = add %x_394, 2i
+                %287:i32 = mul %x_397, 16i
+                %288:i32 = add %286, %287
+                %289:ptr<private, i32, read_write> = access %map, %288
+                store %289, 1i
+                %290:i32 = load_vector_element %p, 0u
+                %291:i32 = add %290, 2i
+                store_vector_element %p, 0u, %291
+                exit_if  # if_27
+              }
+            }
+            %292:i32 = load %d
+            %x_406:bool = gte %292, 0i
+            store %x_412, %x_406
+            if %x_406 [t: %b46] {  # if_28
+              %b46 = block {  # true
+                %294:i32 = load_vector_element %p, 1u
+                %295:bool = lt %294, 14i
+                store %x_411, %295
+                %296:bool = load %x_411
+                store %x_412, %296
+                exit_if  # if_28
+              }
+            }
+            %297:bool = load %x_412
+            store %x_425, %297
+            %298:bool = load %x_412
+            if %298 [t: %b47] {  # if_29
+              %b47 = block {  # true
+                %299:i32 = load_vector_element %p, 0u
+                %300:i32 = load_vector_element %p, 1u
+                %301:i32 = add %300, 2i
+                %302:i32 = mul %301, 16i
+                %303:i32 = add %299, %302
+                %304:ptr<private, i32, read_write> = access %map, %303
+                %305:i32 = load %304
+                %306:bool = eq %305, 0i
+                store %x_424, %306
+                %307:bool = load %x_424
+                store %x_425, %307
+                exit_if  # if_29
+              }
+            }
+            %308:bool = load %x_425
+            if %308 [t: %b48] {  # if_30
+              %b48 = block {  # true
+                %309:i32 = load %d
+                %310:i32 = sub %309, 1i
+                store %d, %310
+                %x_431:i32 = load_vector_element %p, 0u
+                %x_433:i32 = load_vector_element %p, 1u
+                %313:i32 = mul %x_433, 16i
+                %314:i32 = add %x_431, %313
+                %315:ptr<private, i32, read_write> = access %map, %314
+                store %315, 1i
+                %x_438:i32 = load_vector_element %p, 0u
+                %x_440:i32 = load_vector_element %p, 1u
+                %318:i32 = add %x_440, 1i
+                %319:i32 = mul %318, 16i
+                %320:i32 = add %x_438, %319
+                %321:ptr<private, i32, read_write> = access %map, %320
+                store %321, 1i
+                %x_446:i32 = load_vector_element %p, 0u
+                %x_448:i32 = load_vector_element %p, 1u
+                %324:i32 = add %x_448, 2i
+                %325:i32 = mul %324, 16i
+                %326:i32 = add %x_446, %325
+                %327:ptr<private, i32, read_write> = access %map, %326
+                store %327, 1i
+                %328:i32 = load_vector_element %p, 1u
+                %329:i32 = add %328, 2i
+                store_vector_element %p, 1u, %329
+                exit_if  # if_30
+              }
+            }
+            exit_if  # if_10
+          }
+        }
+        %330:i32 = load_vector_element %ipos, 1u
+        %331:i32 = mul %330, 16i
+        %332:i32 = load_vector_element %ipos, 0u
+        %333:i32 = add %331, %332
+        %334:ptr<private, i32, read_write> = access %map, %333
+        %335:i32 = load %334
+        %336:bool = eq %335, 1i
+        if %336 [t: %b49] {  # if_31
+          %b49 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f)
+            ret
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %x_468:bool = load %canwalk
+        %338:bool = eq %x_468, false
+        break_if %338 %b7
+      }
+    }
+    store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b50 {
+  %b50 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %341:void = call %main_1
+    %342:vec4<f32> = load %x_GLF_color
+    %343:main_out = construct %342
+    ret %343
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4a5700b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl.expected.ir.msl
@@ -0,0 +1,675 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %map:ptr<private, array<i32, 256>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %pos:ptr<function, vec2<f32>, read_write> = var
+    %ipos:ptr<function, vec2<i32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %p:ptr<function, vec2<i32>, read_write> = var
+    %canwalk:ptr<function, bool, read_write> = var
+    %v:ptr<function, i32, read_write> = var
+    %directions:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %d:ptr<function, i32, read_write> = var
+    %x_59:vec4<f32> = load %gl_FragCoord
+    %16:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %x_62:vec2<f32> = load %16
+    %18:f32 = access %x_59, 0u
+    %19:f32 = access %x_59, 1u
+    %20:vec2<f32> = construct %18, %19
+    %21:vec2<f32> = div %20, %x_62
+    store %pos, %21
+    %x_65:f32 = load_vector_element %pos, 0u
+    %x_69:f32 = load_vector_element %pos, 1u
+    %24:f32 = mul %x_65, 16.0f
+    %25:i32 = convert %24
+    %26:f32 = mul %x_69, 16.0f
+    %27:i32 = convert %26
+    %28:vec2<i32> = construct %25, %27
+    store %ipos, %28
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_77:i32 = load %i
+        %30:bool = lt %x_77, 256i
+        if %30 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_80:i32 = load %i
+        %32:ptr<private, i32, read_write> = access %map, %x_80
+        store %32, 0i
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_82:i32 = load %i
+        %34:i32 = add %x_82, 1i
+        store %i, %34
+        next_iteration %b3
+      }
+    }
+    store %p, vec2<i32>(0i)
+    store %canwalk, true
+    store %v, 0i
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_104:ptr<function, bool, read_write> = var
+        %x_124:ptr<function, bool, read_write> = var
+        %x_144:ptr<function, bool, read_write> = var
+        %x_164:ptr<function, bool, read_write> = var
+        %x_105_phi:ptr<function, bool, read_write> = var
+        %x_125_phi:ptr<function, bool, read_write> = var
+        %x_145_phi:ptr<function, bool, read_write> = var
+        %x_165_phi:ptr<function, bool, read_write> = var
+        %x_88:i32 = load %v
+        %44:i32 = add %x_88, 1i
+        store %v, %44
+        store %directions, 0i
+        %x_91:i32 = load_vector_element %p, 0u
+        %x_92:bool = gt %x_91, 0i
+        store %x_105_phi, %x_92
+        if %x_92 [t: %b9] {  # if_2
+          %b9 = block {  # true
+            %x_96:i32 = load_vector_element %p, 0u
+            %x_99:i32 = load_vector_element %p, 1u
+            %49:i32 = sub %x_96, 2i
+            %50:i32 = mul %x_99, 16i
+            %51:i32 = add %49, %50
+            %52:ptr<private, i32, read_write> = access %map, %51
+            %x_103:i32 = load %52
+            %54:bool = eq %x_103, 0i
+            store %x_104, %54
+            %55:bool = load %x_104
+            store %x_105_phi, %55
+            exit_if  # if_2
+          }
+        }
+        %x_105:bool = load %x_105_phi
+        if %x_105 [t: %b10] {  # if_3
+          %b10 = block {  # true
+            %x_108:i32 = load %directions
+            %58:i32 = add %x_108, 1i
+            store %directions, %58
+            exit_if  # if_3
+          }
+        }
+        %x_111:i32 = load_vector_element %p, 1u
+        %x_112:bool = gt %x_111, 0i
+        store %x_125_phi, %x_112
+        if %x_112 [t: %b11] {  # if_4
+          %b11 = block {  # true
+            %x_116:i32 = load_vector_element %p, 0u
+            %x_118:i32 = load_vector_element %p, 1u
+            %63:i32 = sub %x_118, 2i
+            %64:i32 = mul %63, 16i
+            %65:i32 = add %x_116, %64
+            %66:ptr<private, i32, read_write> = access %map, %65
+            %x_123:i32 = load %66
+            %68:bool = eq %x_123, 0i
+            store %x_124, %68
+            %69:bool = load %x_124
+            store %x_125_phi, %69
+            exit_if  # if_4
+          }
+        }
+        %x_125:bool = load %x_125_phi
+        if %x_125 [t: %b12] {  # if_5
+          %b12 = block {  # true
+            %x_128:i32 = load %directions
+            %72:i32 = add %x_128, 1i
+            store %directions, %72
+            exit_if  # if_5
+          }
+        }
+        %x_131:i32 = load_vector_element %p, 0u
+        %x_132:bool = lt %x_131, 14i
+        store %x_145_phi, %x_132
+        if %x_132 [t: %b13] {  # if_6
+          %b13 = block {  # true
+            %x_136:i32 = load_vector_element %p, 0u
+            %x_139:i32 = load_vector_element %p, 1u
+            %77:i32 = add %x_136, 2i
+            %78:i32 = mul %x_139, 16i
+            %79:i32 = add %77, %78
+            %80:ptr<private, i32, read_write> = access %map, %79
+            %x_143:i32 = load %80
+            %82:bool = eq %x_143, 0i
+            store %x_144, %82
+            %83:bool = load %x_144
+            store %x_145_phi, %83
+            exit_if  # if_6
+          }
+        }
+        %x_145:bool = load %x_145_phi
+        if %x_145 [t: %b14] {  # if_7
+          %b14 = block {  # true
+            %x_148:i32 = load %directions
+            %86:i32 = add %x_148, 1i
+            store %directions, %86
+            exit_if  # if_7
+          }
+        }
+        %x_151:i32 = load_vector_element %p, 1u
+        %x_152:bool = lt %x_151, 14i
+        store %x_165_phi, %x_152
+        if %x_152 [t: %b15] {  # if_8
+          %b15 = block {  # true
+            %x_156:i32 = load_vector_element %p, 0u
+            %x_158:i32 = load_vector_element %p, 1u
+            %91:i32 = add %x_158, 2i
+            %92:i32 = mul %91, 16i
+            %93:i32 = add %x_156, %92
+            %94:ptr<private, i32, read_write> = access %map, %93
+            %x_163:i32 = load %94
+            %96:bool = eq %x_163, 0i
+            store %x_164, %96
+            %97:bool = load %x_164
+            store %x_165_phi, %97
+            exit_if  # if_8
+          }
+        }
+        %x_165:bool = load %x_165_phi
+        if %x_165 [t: %b16] {  # if_9
+          %b16 = block {  # true
+            %x_168:i32 = load %directions
+            %100:i32 = add %x_168, 1i
+            store %directions, %100
+            exit_if  # if_9
+          }
+        }
+        %x_229:ptr<function, bool, read_write> = var
+        %x_242:ptr<function, bool, read_write> = var
+        %x_281:ptr<function, bool, read_write> = var
+        %x_288:ptr<function, i32, read_write> = var
+        %x_289:ptr<function, i32, read_write> = var
+        %x_295:ptr<function, i32, read_write> = var
+        %x_296:ptr<function, i32, read_write> = var
+        %x_303:ptr<function, array<i32, 256>, read_write> = var
+        %x_304:ptr<function, array<i32, 256>, read_write> = var
+        %x_315:ptr<function, i32, read_write> = var
+        %x_316:ptr<function, i32, read_write> = var
+        %x_359:ptr<function, bool, read_write> = var
+        %x_372:ptr<function, bool, read_write> = var
+        %x_411:ptr<function, bool, read_write> = var
+        %x_424:ptr<function, bool, read_write> = var
+        %x_230_phi:ptr<function, bool, read_write> = var
+        %x_243_phi:ptr<function, bool, read_write> = var
+        %x_282_phi:ptr<function, bool, read_write> = var
+        %x_290_phi:ptr<function, i32, read_write> = var
+        %x_297_phi:ptr<function, i32, read_write> = var
+        %x_305_phi:ptr<function, array<i32, 256>, read_write> = var
+        %x_317_phi:ptr<function, i32, read_write> = var
+        %x_360_phi:ptr<function, bool, read_write> = var
+        %x_373_phi:ptr<function, bool, read_write> = var
+        %x_412_phi:ptr<function, bool, read_write> = var
+        %x_425_phi:ptr<function, bool, read_write> = var
+        %x_170:i32 = load %directions
+        %128:bool = eq %x_170, 0i
+        if %128 [t: %b17, f: %b18] {  # if_10
+          %b17 = block {  # true
+            store %canwalk, false
+            store %i, 0i
+            loop [b: %b19, c: %b20] {  # loop_3
+              %b19 = block {  # body
+                %x_179:i32 = load %i
+                %130:bool = lt %x_179, 8i
+                if %130 [t: %b21, f: %b22] {  # if_11
+                  %b21 = block {  # true
+                    exit_if  # if_11
+                  }
+                  %b22 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                store %j, 0i
+                loop [b: %b23, c: %b24] {  # loop_4
+                  %b23 = block {  # body
+                    %x_186:i32 = load %j
+                    %132:bool = lt %x_186, 8i
+                    if %132 [t: %b25, f: %b26] {  # if_12
+                      %b25 = block {  # true
+                        exit_if  # if_12
+                      }
+                      %b26 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %x_189:i32 = load %j
+                    %x_191:i32 = load %i
+                    %135:i32 = mul %x_189, 2i
+                    %136:i32 = mul %x_191, 2i
+                    %137:i32 = mul %136, 16i
+                    %138:i32 = add %135, %137
+                    %139:ptr<private, i32, read_write> = access %map, %138
+                    %x_196:i32 = load %139
+                    %141:bool = eq %x_196, 0i
+                    if %141 [t: %b27] {  # if_13
+                      %b27 = block {  # true
+                        %x_200:i32 = load %j
+                        %143:i32 = mul %x_200, 2i
+                        store_vector_element %p, 0u, %143
+                        %x_203:i32 = load %i
+                        %145:i32 = mul %x_203, 2i
+                        store_vector_element %p, 1u, %145
+                        store %canwalk, true
+                        exit_if  # if_13
+                      }
+                    }
+                    continue %b24
+                  }
+                  %b24 = block {  # continuing
+                    %x_206:i32 = load %j
+                    %147:i32 = add %x_206, 1i
+                    store %j, %147
+                    next_iteration %b23
+                  }
+                }
+                continue %b20
+              }
+              %b20 = block {  # continuing
+                %x_208:i32 = load %i
+                %149:i32 = add %x_208, 1i
+                store %i, %149
+                next_iteration %b19
+              }
+            }
+            %x_211:i32 = load_vector_element %p, 0u
+            %x_213:i32 = load_vector_element %p, 1u
+            %152:i32 = mul %x_213, 16i
+            %153:i32 = add %x_211, %152
+            %154:ptr<private, i32, read_write> = access %map, %153
+            store %154, 1i
+            exit_if  # if_10
+          }
+          %b18 = block {  # false
+            %x_217:i32 = load %v
+            %x_218:i32 = load %directions
+            %157:i32 = mod %x_217, %x_218
+            store %d, %157
+            %x_220:i32 = load %directions
+            %x_221:i32 = load %v
+            %160:i32 = add %x_221, %x_220
+            store %v, %160
+            %x_223:i32 = load %d
+            %x_224:bool = gte %x_223, 0i
+            store %x_230_phi, %x_224
+            if %x_224 [t: %b28] {  # if_14
+              %b28 = block {  # true
+                %x_228:i32 = load_vector_element %p, 0u
+                %164:bool = gt %x_228, 0i
+                store %x_229, %164
+                %165:bool = load %x_229
+                store %x_230_phi, %165
+                exit_if  # if_14
+              }
+            }
+            %x_230:bool = load %x_230_phi
+            store %x_243_phi, %x_230
+            if %x_230 [t: %b29] {  # if_15
+              %b29 = block {  # true
+                %x_234:i32 = load_vector_element %p, 0u
+                %x_237:i32 = load_vector_element %p, 1u
+                %169:i32 = sub %x_234, 2i
+                %170:i32 = mul %x_237, 16i
+                %171:i32 = add %169, %170
+                %172:ptr<private, i32, read_write> = access %map, %171
+                %x_241:i32 = load %172
+                %174:bool = eq %x_241, 0i
+                store %x_242, %174
+                %175:bool = load %x_242
+                store %x_243_phi, %175
+                exit_if  # if_15
+              }
+            }
+            %x_243:bool = load %x_243_phi
+            if %x_243 [t: %b30] {  # if_16
+              %b30 = block {  # true
+                %x_246:i32 = load %d
+                %178:i32 = sub %x_246, 1i
+                store %d, %178
+                %x_249:i32 = load_vector_element %p, 0u
+                %x_251:i32 = load_vector_element %p, 1u
+                %181:i32 = mul %x_251, 16i
+                %182:i32 = add %x_249, %181
+                %183:ptr<private, i32, read_write> = access %map, %182
+                store %183, 1i
+                %x_256:i32 = load_vector_element %p, 0u
+                %x_259:i32 = load_vector_element %p, 1u
+                %186:i32 = sub %x_256, 1i
+                %187:i32 = mul %x_259, 16i
+                %188:i32 = add %186, %187
+                %189:ptr<private, i32, read_write> = access %map, %188
+                store %189, 1i
+                %x_264:i32 = load_vector_element %p, 0u
+                %x_267:i32 = load_vector_element %p, 1u
+                %192:i32 = sub %x_264, 2i
+                %193:i32 = mul %x_267, 16i
+                %194:i32 = add %192, %193
+                %195:ptr<private, i32, read_write> = access %map, %194
+                store %195, 1i
+                %x_272:i32 = load_vector_element %p, 0u
+                %197:i32 = sub %x_272, 2i
+                store_vector_element %p, 0u, %197
+                exit_if  # if_16
+              }
+            }
+            %x_275:i32 = load %d
+            %x_276:bool = gte %x_275, 0i
+            store %x_282_phi, %x_276
+            if %x_276 [t: %b31] {  # if_17
+              %b31 = block {  # true
+                %x_280:i32 = load_vector_element %p, 1u
+                %201:bool = gt %x_280, 0i
+                store %x_281, %201
+                %202:bool = load %x_281
+                store %x_282_phi, %202
+                exit_if  # if_17
+              }
+            }
+            %x_282:bool = load %x_282_phi
+            if %x_282 [t: %b32, f: %b33] {  # if_18
+              %b32 = block {  # true
+                %204:i32 = load_vector_element %p, 0u
+                store %x_288, %204
+                %205:i32 = load %x_288
+                store %x_290_phi, %205
+                exit_if  # if_18
+              }
+              %b33 = block {  # false
+                store %x_289, 0i
+                %206:i32 = load %x_289
+                store %x_290_phi, %206
+                exit_if  # if_18
+              }
+            }
+            %x_290:i32 = load %x_290_phi
+            if %x_282 [t: %b34, f: %b35] {  # if_19
+              %b34 = block {  # true
+                %208:i32 = load_vector_element %p, 1u
+                store %x_295, %208
+                %209:i32 = load %x_295
+                store %x_297_phi, %209
+                exit_if  # if_19
+              }
+              %b35 = block {  # false
+                store %x_296, 0i
+                %210:i32 = load %x_296
+                store %x_297_phi, %210
+                exit_if  # if_19
+              }
+            }
+            %x_297:i32 = load %x_297_phi
+            %212:i32 = sub %x_297, 2i
+            %x_299:i32 = mul %212, 16i
+            if %x_282 [t: %b36, f: %b37] {  # if_20
+              %b36 = block {  # true
+                %214:array<i32, 256> = load %map
+                store %x_303, %214
+                %215:array<i32, 256> = load %x_303
+                store %x_305_phi, %215
+                exit_if  # if_20
+              }
+              %b37 = block {  # false
+                store %x_304, array<i32, 256>(0i)
+                %216:array<i32, 256> = load %x_304
+                store %x_305_phi, %216
+                exit_if  # if_20
+              }
+            }
+            %x_305:array<i32, 256> = load %x_305_phi
+            if %x_282 [t: %b38] {  # if_21
+              %b38 = block {  # true
+                store %map, array<i32, 256>(0i)
+                exit_if  # if_21
+              }
+            }
+            if %x_282 [t: %b39] {  # if_22
+              %b39 = block {  # true
+                store %map, %x_305
+                exit_if  # if_22
+              }
+            }
+            if %x_282 [t: %b40, f: %b41] {  # if_23
+              %b40 = block {  # true
+                %218:i32 = add %x_290, %x_299
+                %219:ptr<private, i32, read_write> = access %map, %218
+                %220:i32 = load %219
+                store %x_315, %220
+                %221:i32 = load %x_315
+                store %x_317_phi, %221
+                exit_if  # if_23
+              }
+              %b41 = block {  # false
+                store %x_316, 0i
+                %222:i32 = load %x_316
+                store %x_317_phi, %222
+                exit_if  # if_23
+              }
+            }
+            %x_317:i32 = load %x_317_phi
+            %x_318:bool = eq %x_317, 0i
+            %225:bool = select %x_282, %x_318, %x_282
+            if %225 [t: %b42] {  # if_24
+              %b42 = block {  # true
+                %x_323:i32 = load %d
+                %227:i32 = sub %x_323, 1i
+                store %d, %227
+                %x_326:i32 = load_vector_element %p, 0u
+                %x_328:i32 = load_vector_element %p, 1u
+                %230:i32 = mul %x_328, 16i
+                %231:i32 = add %x_326, %230
+                %232:ptr<private, i32, read_write> = access %map, %231
+                store %232, 1i
+                %x_333:i32 = load_vector_element %p, 0u
+                %x_335:i32 = load_vector_element %p, 1u
+                %235:i32 = sub %x_335, 1i
+                %236:i32 = mul %235, 16i
+                %237:i32 = add %x_333, %236
+                %238:ptr<private, i32, read_write> = access %map, %237
+                store %238, 1i
+                %x_341:i32 = load_vector_element %p, 0u
+                %x_343:i32 = load_vector_element %p, 1u
+                %x_345:array<i32, 256> = load %map
+                store %map, array<i32, 256>(0i)
+                store %map, %x_345
+                %242:i32 = sub %x_343, 2i
+                %243:i32 = mul %242, 16i
+                %244:i32 = add %x_341, %243
+                %245:ptr<private, i32, read_write> = access %map, %244
+                store %245, 1i
+                %x_350:i32 = load_vector_element %p, 1u
+                %247:i32 = sub %x_350, 2i
+                store_vector_element %p, 1u, %247
+                exit_if  # if_24
+              }
+            }
+            %x_353:i32 = load %d
+            %x_354:bool = gte %x_353, 0i
+            store %x_360_phi, %x_354
+            if %x_354 [t: %b43] {  # if_25
+              %b43 = block {  # true
+                %x_358:i32 = load_vector_element %p, 0u
+                %251:bool = lt %x_358, 14i
+                store %x_359, %251
+                %252:bool = load %x_359
+                store %x_360_phi, %252
+                exit_if  # if_25
+              }
+            }
+            %x_360:bool = load %x_360_phi
+            store %x_373_phi, %x_360
+            if %x_360 [t: %b44] {  # if_26
+              %b44 = block {  # true
+                %x_364:i32 = load_vector_element %p, 0u
+                %x_367:i32 = load_vector_element %p, 1u
+                %256:i32 = add %x_364, 2i
+                %257:i32 = mul %x_367, 16i
+                %258:i32 = add %256, %257
+                %259:ptr<private, i32, read_write> = access %map, %258
+                %x_371:i32 = load %259
+                %261:bool = eq %x_371, 0i
+                store %x_372, %261
+                %262:bool = load %x_372
+                store %x_373_phi, %262
+                exit_if  # if_26
+              }
+            }
+            %x_373:bool = load %x_373_phi
+            if %x_373 [t: %b45] {  # if_27
+              %b45 = block {  # true
+                %x_376:i32 = load %d
+                %265:i32 = sub %x_376, 1i
+                store %d, %265
+                %x_379:i32 = load_vector_element %p, 0u
+                %x_381:i32 = load_vector_element %p, 1u
+                %268:i32 = mul %x_381, 16i
+                %269:i32 = add %x_379, %268
+                %270:ptr<private, i32, read_write> = access %map, %269
+                store %270, 1i
+                %x_386:i32 = load_vector_element %p, 0u
+                %x_389:i32 = load_vector_element %p, 1u
+                %273:i32 = add %x_386, 1i
+                %274:i32 = mul %x_389, 16i
+                %275:i32 = add %273, %274
+                %276:ptr<private, i32, read_write> = access %map, %275
+                store %276, 1i
+                %x_394:i32 = load_vector_element %p, 0u
+                %x_397:i32 = load_vector_element %p, 1u
+                %279:i32 = add %x_394, 2i
+                %280:i32 = mul %x_397, 16i
+                %281:i32 = add %279, %280
+                %282:ptr<private, i32, read_write> = access %map, %281
+                store %282, 1i
+                %x_402:i32 = load_vector_element %p, 0u
+                %284:i32 = add %x_402, 2i
+                store_vector_element %p, 0u, %284
+                exit_if  # if_27
+              }
+            }
+            %x_405:i32 = load %d
+            %x_406:bool = gte %x_405, 0i
+            store %x_412_phi, %x_406
+            if %x_406 [t: %b46] {  # if_28
+              %b46 = block {  # true
+                %x_410:i32 = load_vector_element %p, 1u
+                %288:bool = lt %x_410, 14i
+                store %x_411, %288
+                %289:bool = load %x_411
+                store %x_412_phi, %289
+                exit_if  # if_28
+              }
+            }
+            %x_412:bool = load %x_412_phi
+            store %x_425_phi, %x_412
+            if %x_412 [t: %b47] {  # if_29
+              %b47 = block {  # true
+                %x_416:i32 = load_vector_element %p, 0u
+                %x_418:i32 = load_vector_element %p, 1u
+                %293:i32 = add %x_418, 2i
+                %294:i32 = mul %293, 16i
+                %295:i32 = add %x_416, %294
+                %296:ptr<private, i32, read_write> = access %map, %295
+                %x_423:i32 = load %296
+                %298:bool = eq %x_423, 0i
+                store %x_424, %298
+                %299:bool = load %x_424
+                store %x_425_phi, %299
+                exit_if  # if_29
+              }
+            }
+            %x_425:bool = load %x_425_phi
+            if %x_425 [t: %b48] {  # if_30
+              %b48 = block {  # true
+                %x_428:i32 = load %d
+                %302:i32 = sub %x_428, 1i
+                store %d, %302
+                %x_431:i32 = load_vector_element %p, 0u
+                %x_433:i32 = load_vector_element %p, 1u
+                %305:i32 = mul %x_433, 16i
+                %306:i32 = add %x_431, %305
+                %307:ptr<private, i32, read_write> = access %map, %306
+                store %307, 1i
+                %x_438:i32 = load_vector_element %p, 0u
+                %x_440:i32 = load_vector_element %p, 1u
+                %310:i32 = add %x_440, 1i
+                %311:i32 = mul %310, 16i
+                %312:i32 = add %x_438, %311
+                %313:ptr<private, i32, read_write> = access %map, %312
+                store %313, 1i
+                %x_446:i32 = load_vector_element %p, 0u
+                %x_448:i32 = load_vector_element %p, 1u
+                %316:i32 = add %x_448, 2i
+                %317:i32 = mul %316, 16i
+                %318:i32 = add %x_446, %317
+                %319:ptr<private, i32, read_write> = access %map, %318
+                store %319, 1i
+                %x_454:i32 = load_vector_element %p, 1u
+                %321:i32 = add %x_454, 2i
+                store_vector_element %p, 1u, %321
+                exit_if  # if_30
+              }
+            }
+            exit_if  # if_10
+          }
+        }
+        %x_458:i32 = load_vector_element %ipos, 1u
+        %x_461:i32 = load_vector_element %ipos, 0u
+        %324:i32 = mul %x_458, 16i
+        %325:i32 = add %324, %x_461
+        %326:ptr<private, i32, read_write> = access %map, %325
+        %x_464:i32 = load %326
+        %328:bool = eq %x_464, 1i
+        if %328 [t: %b49] {  # if_31
+          %b49 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f)
+            ret
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %x_468:bool = load %canwalk
+        %330:bool = eq %x_468, false
+        break_if %330 %b7
+      }
+    }
+    store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b50 {
+  %b50 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %333:void = call %main_1
+    %334:vec4<f32> = load %x_GLF_color
+    %335:main_out = construct %334
+    ret %335
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..5b39cf9
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.spvasm.expected.ir.msl
@@ -0,0 +1,606 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %map:ptr<private, array<i32, 256>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %pos:ptr<function, vec2<f32>, read_write> = var
+    %ipos:ptr<function, vec2<i32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %p:ptr<function, vec2<i32>, read_write> = var
+    %canwalk:ptr<function, bool, read_write> = var
+    %v:ptr<function, i32, read_write> = var
+    %directions:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %d:ptr<function, i32, read_write> = var
+    %15:vec4<f32> = load %gl_FragCoord
+    %16:vec2<f32> = swizzle %15, xy
+    %17:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %18:vec2<f32> = load %17
+    %19:vec2<f32> = div %16, %18
+    store %pos, %19
+    %20:f32 = load_vector_element %pos, 0u
+    %21:f32 = mul %20, 16.0f
+    %22:i32 = convert %21
+    %23:f32 = load_vector_element %pos, 1u
+    %24:f32 = mul %23, 16.0f
+    %25:i32 = convert %24
+    %26:vec2<i32> = construct %22, %25
+    store %ipos, %26
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %27:i32 = load %i
+        %28:bool = lt %27, 256i
+        if %28 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_80:i32 = load %i
+        %30:ptr<private, i32, read_write> = access %map, %x_80
+        store %30, 0i
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %31:i32 = load %i
+        %32:i32 = add %31, 1i
+        store %i, %32
+        next_iteration %b3
+      }
+    }
+    store %p, vec2<i32>(0i)
+    store %canwalk, true
+    store %v, 0i
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_104:ptr<function, bool, read_write> = var
+        %x_105:ptr<function, bool, read_write> = var
+        %x_124:ptr<function, bool, read_write> = var
+        %x_125:ptr<function, bool, read_write> = var
+        %x_144:ptr<function, bool, read_write> = var
+        %x_145:ptr<function, bool, read_write> = var
+        %x_164:ptr<function, bool, read_write> = var
+        %x_165:ptr<function, bool, read_write> = var
+        %41:i32 = load %v
+        %42:i32 = add %41, 1i
+        store %v, %42
+        store %directions, 0i
+        %43:i32 = load_vector_element %p, 0u
+        %x_92:bool = gt %43, 0i
+        store %x_105, %x_92
+        if %x_92 [t: %b9] {  # if_2
+          %b9 = block {  # true
+            %45:i32 = load_vector_element %p, 0u
+            %46:i32 = sub %45, 2i
+            %47:i32 = load_vector_element %p, 1u
+            %48:i32 = mul %47, 16i
+            %49:i32 = add %46, %48
+            %50:ptr<private, i32, read_write> = access %map, %49
+            %51:i32 = load %50
+            %52:bool = eq %51, 0i
+            store %x_104, %52
+            %53:bool = load %x_104
+            store %x_105, %53
+            exit_if  # if_2
+          }
+        }
+        %54:bool = load %x_105
+        if %54 [t: %b10] {  # if_3
+          %b10 = block {  # true
+            %55:i32 = load %directions
+            %56:i32 = add %55, 1i
+            store %directions, %56
+            exit_if  # if_3
+          }
+        }
+        %57:i32 = load_vector_element %p, 1u
+        %x_112:bool = gt %57, 0i
+        store %x_125, %x_112
+        if %x_112 [t: %b11] {  # if_4
+          %b11 = block {  # true
+            %59:i32 = load_vector_element %p, 0u
+            %60:i32 = load_vector_element %p, 1u
+            %61:i32 = sub %60, 2i
+            %62:i32 = mul %61, 16i
+            %63:i32 = add %59, %62
+            %64:ptr<private, i32, read_write> = access %map, %63
+            %65:i32 = load %64
+            %66:bool = eq %65, 0i
+            store %x_124, %66
+            %67:bool = load %x_124
+            store %x_125, %67
+            exit_if  # if_4
+          }
+        }
+        %68:bool = load %x_125
+        if %68 [t: %b12] {  # if_5
+          %b12 = block {  # true
+            %69:i32 = load %directions
+            %70:i32 = add %69, 1i
+            store %directions, %70
+            exit_if  # if_5
+          }
+        }
+        %71:i32 = load_vector_element %p, 0u
+        %x_132:bool = lt %71, 14i
+        store %x_145, %x_132
+        if %x_132 [t: %b13] {  # if_6
+          %b13 = block {  # true
+            %73:i32 = load_vector_element %p, 0u
+            %74:i32 = add %73, 2i
+            %75:i32 = load_vector_element %p, 1u
+            %76:i32 = mul %75, 16i
+            %77:i32 = add %74, %76
+            %78:ptr<private, i32, read_write> = access %map, %77
+            %79:i32 = load %78
+            %80:bool = eq %79, 0i
+            store %x_144, %80
+            %81:bool = load %x_144
+            store %x_145, %81
+            exit_if  # if_6
+          }
+        }
+        %82:bool = load %x_145
+        if %82 [t: %b14] {  # if_7
+          %b14 = block {  # true
+            %83:i32 = load %directions
+            %84:i32 = add %83, 1i
+            store %directions, %84
+            exit_if  # if_7
+          }
+        }
+        %85:i32 = load_vector_element %p, 1u
+        %x_152:bool = lt %85, 14i
+        store %x_165, %x_152
+        if %x_152 [t: %b15] {  # if_8
+          %b15 = block {  # true
+            %87:i32 = load_vector_element %p, 0u
+            %88:i32 = load_vector_element %p, 1u
+            %89:i32 = add %88, 2i
+            %90:i32 = mul %89, 16i
+            %91:i32 = add %87, %90
+            %92:ptr<private, i32, read_write> = access %map, %91
+            %93:i32 = load %92
+            %94:bool = eq %93, 0i
+            store %x_164, %94
+            %95:bool = load %x_164
+            store %x_165, %95
+            exit_if  # if_8
+          }
+        }
+        %96:bool = load %x_165
+        if %96 [t: %b16] {  # if_9
+          %b16 = block {  # true
+            %97:i32 = load %directions
+            %98:i32 = add %97, 1i
+            store %directions, %98
+            exit_if  # if_9
+          }
+        }
+        %x_229:ptr<function, bool, read_write> = var
+        %x_230:ptr<function, bool, read_write> = var
+        %x_242:ptr<function, bool, read_write> = var
+        %x_243:ptr<function, bool, read_write> = var
+        %x_281:ptr<function, bool, read_write> = var
+        %x_282:ptr<function, bool, read_write> = var
+        %x_295:ptr<function, bool, read_write> = var
+        %x_296:ptr<function, bool, read_write> = var
+        %x_335:ptr<function, bool, read_write> = var
+        %x_336:ptr<function, bool, read_write> = var
+        %x_348:ptr<function, bool, read_write> = var
+        %x_349:ptr<function, bool, read_write> = var
+        %x_387:ptr<function, bool, read_write> = var
+        %x_388:ptr<function, bool, read_write> = var
+        %x_400:ptr<function, bool, read_write> = var
+        %x_401:ptr<function, bool, read_write> = var
+        %115:i32 = load %directions
+        %116:bool = eq %115, 0i
+        if %116 [t: %b17, f: %b18] {  # if_10
+          %b17 = block {  # true
+            store %canwalk, false
+            store %i, 0i
+            loop [b: %b19, c: %b20] {  # loop_3
+              %b19 = block {  # body
+                %117:i32 = load %i
+                %118:bool = lt %117, 8i
+                if %118 [t: %b21, f: %b22] {  # if_11
+                  %b21 = block {  # true
+                    exit_if  # if_11
+                  }
+                  %b22 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                store %j, 0i
+                loop [b: %b23, c: %b24] {  # loop_4
+                  %b23 = block {  # body
+                    %119:i32 = load %j
+                    %120:bool = lt %119, 8i
+                    if %120 [t: %b25, f: %b26] {  # if_12
+                      %b25 = block {  # true
+                        exit_if  # if_12
+                      }
+                      %b26 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %121:i32 = load %j
+                    %122:i32 = mul %121, 2i
+                    %123:i32 = load %i
+                    %124:i32 = mul %123, 2i
+                    %125:i32 = mul %124, 16i
+                    %126:i32 = add %122, %125
+                    %127:ptr<private, i32, read_write> = access %map, %126
+                    %128:i32 = load %127
+                    %129:bool = eq %128, 0i
+                    if %129 [t: %b27] {  # if_13
+                      %b27 = block {  # true
+                        %130:i32 = load %j
+                        %131:i32 = mul %130, 2i
+                        store_vector_element %p, 0u, %131
+                        %132:i32 = load %i
+                        %133:i32 = mul %132, 2i
+                        store_vector_element %p, 1u, %133
+                        store %canwalk, true
+                        exit_if  # if_13
+                      }
+                    }
+                    continue %b24
+                  }
+                  %b24 = block {  # continuing
+                    %134:i32 = load %j
+                    %135:i32 = add %134, 1i
+                    store %j, %135
+                    next_iteration %b23
+                  }
+                }
+                continue %b20
+              }
+              %b20 = block {  # continuing
+                %136:i32 = load %i
+                %137:i32 = add %136, 1i
+                store %i, %137
+                next_iteration %b19
+              }
+            }
+            %x_211:i32 = load_vector_element %p, 0u
+            %x_213:i32 = load_vector_element %p, 1u
+            %140:i32 = mul %x_213, 16i
+            %141:i32 = add %x_211, %140
+            %142:ptr<private, i32, read_write> = access %map, %141
+            store %142, 1i
+            exit_if  # if_10
+          }
+          %b18 = block {  # false
+            %143:i32 = load %v
+            %144:i32 = load %directions
+            %145:i32 = mod %143, %144
+            store %d, %145
+            %146:i32 = load %v
+            %147:i32 = load %directions
+            %148:i32 = add %146, %147
+            store %v, %148
+            %149:i32 = load %d
+            %x_224:bool = gte %149, 0i
+            store %x_230, %x_224
+            if %x_224 [t: %b28] {  # if_14
+              %b28 = block {  # true
+                %151:i32 = load_vector_element %p, 0u
+                %152:bool = gt %151, 0i
+                store %x_229, %152
+                %153:bool = load %x_229
+                store %x_230, %153
+                exit_if  # if_14
+              }
+            }
+            %154:bool = load %x_230
+            store %x_243, %154
+            %155:bool = load %x_230
+            if %155 [t: %b29] {  # if_15
+              %b29 = block {  # true
+                %156:i32 = load_vector_element %p, 0u
+                %157:i32 = sub %156, 2i
+                %158:i32 = load_vector_element %p, 1u
+                %159:i32 = mul %158, 16i
+                %160:i32 = add %157, %159
+                %161:ptr<private, i32, read_write> = access %map, %160
+                %162:i32 = load %161
+                %163:bool = eq %162, 0i
+                store %x_242, %163
+                %164:bool = load %x_242
+                store %x_243, %164
+                exit_if  # if_15
+              }
+            }
+            %165:bool = load %x_243
+            if %165 [t: %b30] {  # if_16
+              %b30 = block {  # true
+                %166:i32 = load %d
+                %167:i32 = sub %166, 1i
+                store %d, %167
+                %x_249:i32 = load_vector_element %p, 0u
+                %x_251:i32 = load_vector_element %p, 1u
+                %170:i32 = mul %x_251, 16i
+                %171:i32 = add %x_249, %170
+                %172:ptr<private, i32, read_write> = access %map, %171
+                store %172, 1i
+                %x_256:i32 = load_vector_element %p, 0u
+                %x_259:i32 = load_vector_element %p, 1u
+                %175:i32 = sub %x_256, 1i
+                %176:i32 = mul %x_259, 16i
+                %177:i32 = add %175, %176
+                %178:ptr<private, i32, read_write> = access %map, %177
+                store %178, 1i
+                %x_264:i32 = load_vector_element %p, 0u
+                %x_267:i32 = load_vector_element %p, 1u
+                %181:i32 = sub %x_264, 2i
+                %182:i32 = mul %x_267, 16i
+                %183:i32 = add %181, %182
+                %184:ptr<private, i32, read_write> = access %map, %183
+                store %184, 1i
+                %185:i32 = load_vector_element %p, 0u
+                %186:i32 = sub %185, 2i
+                store_vector_element %p, 0u, %186
+                exit_if  # if_16
+              }
+            }
+            %187:i32 = load %d
+            %x_276:bool = gte %187, 0i
+            store %x_282, %x_276
+            if %x_276 [t: %b31] {  # if_17
+              %b31 = block {  # true
+                %189:i32 = load_vector_element %p, 1u
+                %190:bool = gt %189, 0i
+                store %x_281, %190
+                %191:bool = load %x_281
+                store %x_282, %191
+                exit_if  # if_17
+              }
+            }
+            %192:bool = load %x_282
+            store %x_296, %192
+            %193:bool = load %x_282
+            if %193 [t: %b32] {  # if_18
+              %b32 = block {  # true
+                %x_286:i32 = load_vector_element %p, 0u
+                %x_288:i32 = load_vector_element %p, 1u
+                %x_291:array<i32, 256> = load %map
+                store %map, array<i32, 256>(0i)
+                store %map, %x_291
+                %197:i32 = sub %x_288, 2i
+                %198:i32 = mul %197, 16i
+                %199:i32 = add %x_286, %198
+                %200:ptr<private, i32, read_write> = access %map, %199
+                %201:i32 = load %200
+                %202:bool = eq %201, 0i
+                store %x_295, %202
+                %203:bool = load %x_295
+                store %x_296, %203
+                exit_if  # if_18
+              }
+            }
+            %204:bool = load %x_296
+            if %204 [t: %b33] {  # if_19
+              %b33 = block {  # true
+                %205:i32 = load %d
+                %206:i32 = sub %205, 1i
+                store %d, %206
+                %x_302:i32 = load_vector_element %p, 0u
+                %x_304:i32 = load_vector_element %p, 1u
+                %209:i32 = mul %x_304, 16i
+                %210:i32 = add %x_302, %209
+                %211:ptr<private, i32, read_write> = access %map, %210
+                store %211, 1i
+                %x_309:i32 = load_vector_element %p, 0u
+                %x_311:i32 = load_vector_element %p, 1u
+                %214:i32 = sub %x_311, 1i
+                %215:i32 = mul %214, 16i
+                %216:i32 = add %x_309, %215
+                %217:ptr<private, i32, read_write> = access %map, %216
+                store %217, 1i
+                %x_317:i32 = load_vector_element %p, 0u
+                %x_319:i32 = load_vector_element %p, 1u
+                %x_321:array<i32, 256> = load %map
+                store %map, array<i32, 256>(0i)
+                store %map, %x_321
+                %221:i32 = sub %x_319, 2i
+                %222:i32 = mul %221, 16i
+                %223:i32 = add %x_317, %222
+                %224:ptr<private, i32, read_write> = access %map, %223
+                store %224, 1i
+                %225:i32 = load_vector_element %p, 1u
+                %226:i32 = sub %225, 2i
+                store_vector_element %p, 1u, %226
+                exit_if  # if_19
+              }
+            }
+            %227:i32 = load %d
+            %x_330:bool = gte %227, 0i
+            store %x_336, %x_330
+            if %x_330 [t: %b34] {  # if_20
+              %b34 = block {  # true
+                %229:i32 = load_vector_element %p, 0u
+                %230:bool = lt %229, 14i
+                store %x_335, %230
+                %231:bool = load %x_335
+                store %x_336, %231
+                exit_if  # if_20
+              }
+            }
+            %232:bool = load %x_336
+            store %x_349, %232
+            %233:bool = load %x_336
+            if %233 [t: %b35] {  # if_21
+              %b35 = block {  # true
+                %234:i32 = load_vector_element %p, 0u
+                %235:i32 = add %234, 2i
+                %236:i32 = load_vector_element %p, 1u
+                %237:i32 = mul %236, 16i
+                %238:i32 = add %235, %237
+                %239:ptr<private, i32, read_write> = access %map, %238
+                %240:i32 = load %239
+                %241:bool = eq %240, 0i
+                store %x_348, %241
+                %242:bool = load %x_348
+                store %x_349, %242
+                exit_if  # if_21
+              }
+            }
+            %243:bool = load %x_349
+            if %243 [t: %b36] {  # if_22
+              %b36 = block {  # true
+                %244:i32 = load %d
+                %245:i32 = sub %244, 1i
+                store %d, %245
+                %x_355:i32 = load_vector_element %p, 0u
+                %x_357:i32 = load_vector_element %p, 1u
+                %248:i32 = mul %x_357, 16i
+                %249:i32 = add %x_355, %248
+                %250:ptr<private, i32, read_write> = access %map, %249
+                store %250, 1i
+                %x_362:i32 = load_vector_element %p, 0u
+                %x_365:i32 = load_vector_element %p, 1u
+                %253:i32 = add %x_362, 1i
+                %254:i32 = mul %x_365, 16i
+                %255:i32 = add %253, %254
+                %256:ptr<private, i32, read_write> = access %map, %255
+                store %256, 1i
+                %x_370:i32 = load_vector_element %p, 0u
+                %x_373:i32 = load_vector_element %p, 1u
+                %259:i32 = add %x_370, 2i
+                %260:i32 = mul %x_373, 16i
+                %261:i32 = add %259, %260
+                %262:ptr<private, i32, read_write> = access %map, %261
+                store %262, 1i
+                %263:i32 = load_vector_element %p, 0u
+                %264:i32 = add %263, 2i
+                store_vector_element %p, 0u, %264
+                exit_if  # if_22
+              }
+            }
+            %265:i32 = load %d
+            %x_382:bool = gte %265, 0i
+            store %x_388, %x_382
+            if %x_382 [t: %b37] {  # if_23
+              %b37 = block {  # true
+                %267:i32 = load_vector_element %p, 1u
+                %268:bool = lt %267, 14i
+                store %x_387, %268
+                %269:bool = load %x_387
+                store %x_388, %269
+                exit_if  # if_23
+              }
+            }
+            %270:bool = load %x_388
+            store %x_401, %270
+            %271:bool = load %x_388
+            if %271 [t: %b38] {  # if_24
+              %b38 = block {  # true
+                %272:i32 = load_vector_element %p, 0u
+                %273:i32 = load_vector_element %p, 1u
+                %274:i32 = add %273, 2i
+                %275:i32 = mul %274, 16i
+                %276:i32 = add %272, %275
+                %277:ptr<private, i32, read_write> = access %map, %276
+                %278:i32 = load %277
+                %279:bool = eq %278, 0i
+                store %x_400, %279
+                %280:bool = load %x_400
+                store %x_401, %280
+                exit_if  # if_24
+              }
+            }
+            %281:bool = load %x_401
+            if %281 [t: %b39] {  # if_25
+              %b39 = block {  # true
+                %282:i32 = load %d
+                %283:i32 = sub %282, 1i
+                store %d, %283
+                %x_407:i32 = load_vector_element %p, 0u
+                %x_409:i32 = load_vector_element %p, 1u
+                %286:i32 = mul %x_409, 16i
+                %287:i32 = add %x_407, %286
+                %288:ptr<private, i32, read_write> = access %map, %287
+                store %288, 1i
+                %x_414:i32 = load_vector_element %p, 0u
+                %x_416:i32 = load_vector_element %p, 1u
+                %291:i32 = add %x_416, 1i
+                %292:i32 = mul %291, 16i
+                %293:i32 = add %x_414, %292
+                %294:ptr<private, i32, read_write> = access %map, %293
+                store %294, 1i
+                %x_422:i32 = load_vector_element %p, 0u
+                %x_424:i32 = load_vector_element %p, 1u
+                %297:i32 = add %x_424, 2i
+                %298:i32 = mul %297, 16i
+                %299:i32 = add %x_422, %298
+                %300:ptr<private, i32, read_write> = access %map, %299
+                store %300, 1i
+                %301:i32 = load_vector_element %p, 1u
+                %302:i32 = add %301, 2i
+                store_vector_element %p, 1u, %302
+                exit_if  # if_25
+              }
+            }
+            exit_if  # if_10
+          }
+        }
+        %303:i32 = load_vector_element %ipos, 1u
+        %304:i32 = mul %303, 16i
+        %305:i32 = load_vector_element %ipos, 0u
+        %306:i32 = add %304, %305
+        %307:ptr<private, i32, read_write> = access %map, %306
+        %308:i32 = load %307
+        %309:bool = eq %308, 1i
+        if %309 [t: %b40] {  # if_26
+          %b40 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f)
+            ret
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %x_444:bool = load %canwalk
+        %311:bool = eq %x_444, false
+        break_if %311 %b7
+      }
+    }
+    store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b41 {
+  %b41 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %314:void = call %main_1
+    %315:vec4<f32> = load %x_GLF_color
+    %316:main_out = construct %315
+    ret %316
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8bc1ff7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl.expected.ir.msl
@@ -0,0 +1,604 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %map:ptr<private, array<i32, 256>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %pos:ptr<function, vec2<f32>, read_write> = var
+    %ipos:ptr<function, vec2<i32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %p:ptr<function, vec2<i32>, read_write> = var
+    %canwalk:ptr<function, bool, read_write> = var
+    %v:ptr<function, i32, read_write> = var
+    %directions:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %d:ptr<function, i32, read_write> = var
+    %x_59:vec4<f32> = load %gl_FragCoord
+    %16:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %x_62:vec2<f32> = load %16
+    %18:f32 = access %x_59, 0u
+    %19:f32 = access %x_59, 1u
+    %20:vec2<f32> = construct %18, %19
+    %21:vec2<f32> = div %20, %x_62
+    store %pos, %21
+    %x_65:f32 = load_vector_element %pos, 0u
+    %x_69:f32 = load_vector_element %pos, 1u
+    %24:f32 = mul %x_65, 16.0f
+    %25:i32 = convert %24
+    %26:f32 = mul %x_69, 16.0f
+    %27:i32 = convert %26
+    %28:vec2<i32> = construct %25, %27
+    store %ipos, %28
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_77:i32 = load %i
+        %30:bool = lt %x_77, 256i
+        if %30 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_80:i32 = load %i
+        %32:ptr<private, i32, read_write> = access %map, %x_80
+        store %32, 0i
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_82:i32 = load %i
+        %34:i32 = add %x_82, 1i
+        store %i, %34
+        next_iteration %b3
+      }
+    }
+    store %p, vec2<i32>(0i)
+    store %canwalk, true
+    store %v, 0i
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_104:ptr<function, bool, read_write> = var
+        %x_124:ptr<function, bool, read_write> = var
+        %x_144:ptr<function, bool, read_write> = var
+        %x_164:ptr<function, bool, read_write> = var
+        %x_105_phi:ptr<function, bool, read_write> = var
+        %x_125_phi:ptr<function, bool, read_write> = var
+        %x_145_phi:ptr<function, bool, read_write> = var
+        %x_165_phi:ptr<function, bool, read_write> = var
+        %x_88:i32 = load %v
+        %44:i32 = add %x_88, 1i
+        store %v, %44
+        store %directions, 0i
+        %x_91:i32 = load_vector_element %p, 0u
+        %x_92:bool = gt %x_91, 0i
+        store %x_105_phi, %x_92
+        if %x_92 [t: %b9] {  # if_2
+          %b9 = block {  # true
+            %x_96:i32 = load_vector_element %p, 0u
+            %x_99:i32 = load_vector_element %p, 1u
+            %49:i32 = sub %x_96, 2i
+            %50:i32 = mul %x_99, 16i
+            %51:i32 = add %49, %50
+            %52:ptr<private, i32, read_write> = access %map, %51
+            %x_103:i32 = load %52
+            %54:bool = eq %x_103, 0i
+            store %x_104, %54
+            %55:bool = load %x_104
+            store %x_105_phi, %55
+            exit_if  # if_2
+          }
+        }
+        %x_105:bool = load %x_105_phi
+        if %x_105 [t: %b10] {  # if_3
+          %b10 = block {  # true
+            %x_108:i32 = load %directions
+            %58:i32 = add %x_108, 1i
+            store %directions, %58
+            exit_if  # if_3
+          }
+        }
+        %x_111:i32 = load_vector_element %p, 1u
+        %x_112:bool = gt %x_111, 0i
+        store %x_125_phi, %x_112
+        if %x_112 [t: %b11] {  # if_4
+          %b11 = block {  # true
+            %x_116:i32 = load_vector_element %p, 0u
+            %x_118:i32 = load_vector_element %p, 1u
+            %63:i32 = sub %x_118, 2i
+            %64:i32 = mul %63, 16i
+            %65:i32 = add %x_116, %64
+            %66:ptr<private, i32, read_write> = access %map, %65
+            %x_123:i32 = load %66
+            %68:bool = eq %x_123, 0i
+            store %x_124, %68
+            %69:bool = load %x_124
+            store %x_125_phi, %69
+            exit_if  # if_4
+          }
+        }
+        %x_125:bool = load %x_125_phi
+        if %x_125 [t: %b12] {  # if_5
+          %b12 = block {  # true
+            %x_128:i32 = load %directions
+            %72:i32 = add %x_128, 1i
+            store %directions, %72
+            exit_if  # if_5
+          }
+        }
+        %x_131:i32 = load_vector_element %p, 0u
+        %x_132:bool = lt %x_131, 14i
+        store %x_145_phi, %x_132
+        if %x_132 [t: %b13] {  # if_6
+          %b13 = block {  # true
+            %x_136:i32 = load_vector_element %p, 0u
+            %x_139:i32 = load_vector_element %p, 1u
+            %77:i32 = add %x_136, 2i
+            %78:i32 = mul %x_139, 16i
+            %79:i32 = add %77, %78
+            %80:ptr<private, i32, read_write> = access %map, %79
+            %x_143:i32 = load %80
+            %82:bool = eq %x_143, 0i
+            store %x_144, %82
+            %83:bool = load %x_144
+            store %x_145_phi, %83
+            exit_if  # if_6
+          }
+        }
+        %x_145:bool = load %x_145_phi
+        if %x_145 [t: %b14] {  # if_7
+          %b14 = block {  # true
+            %x_148:i32 = load %directions
+            %86:i32 = add %x_148, 1i
+            store %directions, %86
+            exit_if  # if_7
+          }
+        }
+        %x_151:i32 = load_vector_element %p, 1u
+        %x_152:bool = lt %x_151, 14i
+        store %x_165_phi, %x_152
+        if %x_152 [t: %b15] {  # if_8
+          %b15 = block {  # true
+            %x_156:i32 = load_vector_element %p, 0u
+            %x_158:i32 = load_vector_element %p, 1u
+            %91:i32 = add %x_158, 2i
+            %92:i32 = mul %91, 16i
+            %93:i32 = add %x_156, %92
+            %94:ptr<private, i32, read_write> = access %map, %93
+            %x_163:i32 = load %94
+            %96:bool = eq %x_163, 0i
+            store %x_164, %96
+            %97:bool = load %x_164
+            store %x_165_phi, %97
+            exit_if  # if_8
+          }
+        }
+        %x_165:bool = load %x_165_phi
+        if %x_165 [t: %b16] {  # if_9
+          %b16 = block {  # true
+            %x_168:i32 = load %directions
+            %100:i32 = add %x_168, 1i
+            store %directions, %100
+            exit_if  # if_9
+          }
+        }
+        %x_229:ptr<function, bool, read_write> = var
+        %x_242:ptr<function, bool, read_write> = var
+        %x_281:ptr<function, bool, read_write> = var
+        %x_295:ptr<function, bool, read_write> = var
+        %x_335:ptr<function, bool, read_write> = var
+        %x_348:ptr<function, bool, read_write> = var
+        %x_387:ptr<function, bool, read_write> = var
+        %x_400:ptr<function, bool, read_write> = var
+        %x_230_phi:ptr<function, bool, read_write> = var
+        %x_243_phi:ptr<function, bool, read_write> = var
+        %x_282_phi:ptr<function, bool, read_write> = var
+        %x_296_phi:ptr<function, bool, read_write> = var
+        %x_336_phi:ptr<function, bool, read_write> = var
+        %x_349_phi:ptr<function, bool, read_write> = var
+        %x_388_phi:ptr<function, bool, read_write> = var
+        %x_401_phi:ptr<function, bool, read_write> = var
+        %x_170:i32 = load %directions
+        %118:bool = eq %x_170, 0i
+        if %118 [t: %b17, f: %b18] {  # if_10
+          %b17 = block {  # true
+            store %canwalk, false
+            store %i, 0i
+            loop [b: %b19, c: %b20] {  # loop_3
+              %b19 = block {  # body
+                %x_179:i32 = load %i
+                %120:bool = lt %x_179, 8i
+                if %120 [t: %b21, f: %b22] {  # if_11
+                  %b21 = block {  # true
+                    exit_if  # if_11
+                  }
+                  %b22 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                store %j, 0i
+                loop [b: %b23, c: %b24] {  # loop_4
+                  %b23 = block {  # body
+                    %x_186:i32 = load %j
+                    %122:bool = lt %x_186, 8i
+                    if %122 [t: %b25, f: %b26] {  # if_12
+                      %b25 = block {  # true
+                        exit_if  # if_12
+                      }
+                      %b26 = block {  # false
+                        exit_loop  # loop_4
+                      }
+                    }
+                    %x_189:i32 = load %j
+                    %x_191:i32 = load %i
+                    %125:i32 = mul %x_189, 2i
+                    %126:i32 = mul %x_191, 2i
+                    %127:i32 = mul %126, 16i
+                    %128:i32 = add %125, %127
+                    %129:ptr<private, i32, read_write> = access %map, %128
+                    %x_196:i32 = load %129
+                    %131:bool = eq %x_196, 0i
+                    if %131 [t: %b27] {  # if_13
+                      %b27 = block {  # true
+                        %x_200:i32 = load %j
+                        %133:i32 = mul %x_200, 2i
+                        store_vector_element %p, 0u, %133
+                        %x_203:i32 = load %i
+                        %135:i32 = mul %x_203, 2i
+                        store_vector_element %p, 1u, %135
+                        store %canwalk, true
+                        exit_if  # if_13
+                      }
+                    }
+                    continue %b24
+                  }
+                  %b24 = block {  # continuing
+                    %x_206:i32 = load %j
+                    %137:i32 = add %x_206, 1i
+                    store %j, %137
+                    next_iteration %b23
+                  }
+                }
+                continue %b20
+              }
+              %b20 = block {  # continuing
+                %x_208:i32 = load %i
+                %139:i32 = add %x_208, 1i
+                store %i, %139
+                next_iteration %b19
+              }
+            }
+            %x_211:i32 = load_vector_element %p, 0u
+            %x_213:i32 = load_vector_element %p, 1u
+            %142:i32 = mul %x_213, 16i
+            %143:i32 = add %x_211, %142
+            %144:ptr<private, i32, read_write> = access %map, %143
+            store %144, 1i
+            exit_if  # if_10
+          }
+          %b18 = block {  # false
+            %x_217:i32 = load %v
+            %x_218:i32 = load %directions
+            %147:i32 = mod %x_217, %x_218
+            store %d, %147
+            %x_220:i32 = load %directions
+            %x_221:i32 = load %v
+            %150:i32 = add %x_221, %x_220
+            store %v, %150
+            %x_223:i32 = load %d
+            %x_224:bool = gte %x_223, 0i
+            store %x_230_phi, %x_224
+            if %x_224 [t: %b28] {  # if_14
+              %b28 = block {  # true
+                %x_228:i32 = load_vector_element %p, 0u
+                %154:bool = gt %x_228, 0i
+                store %x_229, %154
+                %155:bool = load %x_229
+                store %x_230_phi, %155
+                exit_if  # if_14
+              }
+            }
+            %x_230:bool = load %x_230_phi
+            store %x_243_phi, %x_230
+            if %x_230 [t: %b29] {  # if_15
+              %b29 = block {  # true
+                %x_234:i32 = load_vector_element %p, 0u
+                %x_237:i32 = load_vector_element %p, 1u
+                %159:i32 = sub %x_234, 2i
+                %160:i32 = mul %x_237, 16i
+                %161:i32 = add %159, %160
+                %162:ptr<private, i32, read_write> = access %map, %161
+                %x_241:i32 = load %162
+                %164:bool = eq %x_241, 0i
+                store %x_242, %164
+                %165:bool = load %x_242
+                store %x_243_phi, %165
+                exit_if  # if_15
+              }
+            }
+            %x_243:bool = load %x_243_phi
+            if %x_243 [t: %b30] {  # if_16
+              %b30 = block {  # true
+                %x_246:i32 = load %d
+                %168:i32 = sub %x_246, 1i
+                store %d, %168
+                %x_249:i32 = load_vector_element %p, 0u
+                %x_251:i32 = load_vector_element %p, 1u
+                %171:i32 = mul %x_251, 16i
+                %172:i32 = add %x_249, %171
+                %173:ptr<private, i32, read_write> = access %map, %172
+                store %173, 1i
+                %x_256:i32 = load_vector_element %p, 0u
+                %x_259:i32 = load_vector_element %p, 1u
+                %176:i32 = sub %x_256, 1i
+                %177:i32 = mul %x_259, 16i
+                %178:i32 = add %176, %177
+                %179:ptr<private, i32, read_write> = access %map, %178
+                store %179, 1i
+                %x_264:i32 = load_vector_element %p, 0u
+                %x_267:i32 = load_vector_element %p, 1u
+                %182:i32 = sub %x_264, 2i
+                %183:i32 = mul %x_267, 16i
+                %184:i32 = add %182, %183
+                %185:ptr<private, i32, read_write> = access %map, %184
+                store %185, 1i
+                %x_272:i32 = load_vector_element %p, 0u
+                %187:i32 = sub %x_272, 2i
+                store_vector_element %p, 0u, %187
+                exit_if  # if_16
+              }
+            }
+            %x_275:i32 = load %d
+            %x_276:bool = gte %x_275, 0i
+            store %x_282_phi, %x_276
+            if %x_276 [t: %b31] {  # if_17
+              %b31 = block {  # true
+                %x_280:i32 = load_vector_element %p, 1u
+                %191:bool = gt %x_280, 0i
+                store %x_281, %191
+                %192:bool = load %x_281
+                store %x_282_phi, %192
+                exit_if  # if_17
+              }
+            }
+            %x_282:bool = load %x_282_phi
+            store %x_296_phi, %x_282
+            if %x_282 [t: %b32] {  # if_18
+              %b32 = block {  # true
+                %x_286:i32 = load_vector_element %p, 0u
+                %x_288:i32 = load_vector_element %p, 1u
+                %x_291:array<i32, 256> = load %map
+                store %map, array<i32, 256>(0i)
+                store %map, %x_291
+                %197:i32 = sub %x_288, 2i
+                %198:i32 = mul %197, 16i
+                %199:i32 = add %x_286, %198
+                %200:ptr<private, i32, read_write> = access %map, %199
+                %x_294:i32 = load %200
+                %202:bool = eq %x_294, 0i
+                store %x_295, %202
+                %203:bool = load %x_295
+                store %x_296_phi, %203
+                exit_if  # if_18
+              }
+            }
+            %x_296:bool = load %x_296_phi
+            if %x_296 [t: %b33] {  # if_19
+              %b33 = block {  # true
+                %x_299:i32 = load %d
+                %206:i32 = sub %x_299, 1i
+                store %d, %206
+                %x_302:i32 = load_vector_element %p, 0u
+                %x_304:i32 = load_vector_element %p, 1u
+                %209:i32 = mul %x_304, 16i
+                %210:i32 = add %x_302, %209
+                %211:ptr<private, i32, read_write> = access %map, %210
+                store %211, 1i
+                %x_309:i32 = load_vector_element %p, 0u
+                %x_311:i32 = load_vector_element %p, 1u
+                %214:i32 = sub %x_311, 1i
+                %215:i32 = mul %214, 16i
+                %216:i32 = add %x_309, %215
+                %217:ptr<private, i32, read_write> = access %map, %216
+                store %217, 1i
+                %x_317:i32 = load_vector_element %p, 0u
+                %x_319:i32 = load_vector_element %p, 1u
+                %x_321:array<i32, 256> = load %map
+                store %map, array<i32, 256>(0i)
+                store %map, %x_321
+                %221:i32 = sub %x_319, 2i
+                %222:i32 = mul %221, 16i
+                %223:i32 = add %x_317, %222
+                %224:ptr<private, i32, read_write> = access %map, %223
+                store %224, 1i
+                %x_326:i32 = load_vector_element %p, 1u
+                %226:i32 = sub %x_326, 2i
+                store_vector_element %p, 1u, %226
+                exit_if  # if_19
+              }
+            }
+            %x_329:i32 = load %d
+            %x_330:bool = gte %x_329, 0i
+            store %x_336_phi, %x_330
+            if %x_330 [t: %b34] {  # if_20
+              %b34 = block {  # true
+                %x_334:i32 = load_vector_element %p, 0u
+                %230:bool = lt %x_334, 14i
+                store %x_335, %230
+                %231:bool = load %x_335
+                store %x_336_phi, %231
+                exit_if  # if_20
+              }
+            }
+            %x_336:bool = load %x_336_phi
+            store %x_349_phi, %x_336
+            if %x_336 [t: %b35] {  # if_21
+              %b35 = block {  # true
+                %x_340:i32 = load_vector_element %p, 0u
+                %x_343:i32 = load_vector_element %p, 1u
+                %235:i32 = add %x_340, 2i
+                %236:i32 = mul %x_343, 16i
+                %237:i32 = add %235, %236
+                %238:ptr<private, i32, read_write> = access %map, %237
+                %x_347:i32 = load %238
+                %240:bool = eq %x_347, 0i
+                store %x_348, %240
+                %241:bool = load %x_348
+                store %x_349_phi, %241
+                exit_if  # if_21
+              }
+            }
+            %x_349:bool = load %x_349_phi
+            if %x_349 [t: %b36] {  # if_22
+              %b36 = block {  # true
+                %x_352:i32 = load %d
+                %244:i32 = sub %x_352, 1i
+                store %d, %244
+                %x_355:i32 = load_vector_element %p, 0u
+                %x_357:i32 = load_vector_element %p, 1u
+                %247:i32 = mul %x_357, 16i
+                %248:i32 = add %x_355, %247
+                %249:ptr<private, i32, read_write> = access %map, %248
+                store %249, 1i
+                %x_362:i32 = load_vector_element %p, 0u
+                %x_365:i32 = load_vector_element %p, 1u
+                %252:i32 = add %x_362, 1i
+                %253:i32 = mul %x_365, 16i
+                %254:i32 = add %252, %253
+                %255:ptr<private, i32, read_write> = access %map, %254
+                store %255, 1i
+                %x_370:i32 = load_vector_element %p, 0u
+                %x_373:i32 = load_vector_element %p, 1u
+                %258:i32 = add %x_370, 2i
+                %259:i32 = mul %x_373, 16i
+                %260:i32 = add %258, %259
+                %261:ptr<private, i32, read_write> = access %map, %260
+                store %261, 1i
+                %x_378:i32 = load_vector_element %p, 0u
+                %263:i32 = add %x_378, 2i
+                store_vector_element %p, 0u, %263
+                exit_if  # if_22
+              }
+            }
+            %x_381:i32 = load %d
+            %x_382:bool = gte %x_381, 0i
+            store %x_388_phi, %x_382
+            if %x_382 [t: %b37] {  # if_23
+              %b37 = block {  # true
+                %x_386:i32 = load_vector_element %p, 1u
+                %267:bool = lt %x_386, 14i
+                store %x_387, %267
+                %268:bool = load %x_387
+                store %x_388_phi, %268
+                exit_if  # if_23
+              }
+            }
+            %x_388:bool = load %x_388_phi
+            store %x_401_phi, %x_388
+            if %x_388 [t: %b38] {  # if_24
+              %b38 = block {  # true
+                %x_392:i32 = load_vector_element %p, 0u
+                %x_394:i32 = load_vector_element %p, 1u
+                %272:i32 = add %x_394, 2i
+                %273:i32 = mul %272, 16i
+                %274:i32 = add %x_392, %273
+                %275:ptr<private, i32, read_write> = access %map, %274
+                %x_399:i32 = load %275
+                %277:bool = eq %x_399, 0i
+                store %x_400, %277
+                %278:bool = load %x_400
+                store %x_401_phi, %278
+                exit_if  # if_24
+              }
+            }
+            %x_401:bool = load %x_401_phi
+            if %x_401 [t: %b39] {  # if_25
+              %b39 = block {  # true
+                %x_404:i32 = load %d
+                %281:i32 = sub %x_404, 1i
+                store %d, %281
+                %x_407:i32 = load_vector_element %p, 0u
+                %x_409:i32 = load_vector_element %p, 1u
+                %284:i32 = mul %x_409, 16i
+                %285:i32 = add %x_407, %284
+                %286:ptr<private, i32, read_write> = access %map, %285
+                store %286, 1i
+                %x_414:i32 = load_vector_element %p, 0u
+                %x_416:i32 = load_vector_element %p, 1u
+                %289:i32 = add %x_416, 1i
+                %290:i32 = mul %289, 16i
+                %291:i32 = add %x_414, %290
+                %292:ptr<private, i32, read_write> = access %map, %291
+                store %292, 1i
+                %x_422:i32 = load_vector_element %p, 0u
+                %x_424:i32 = load_vector_element %p, 1u
+                %295:i32 = add %x_424, 2i
+                %296:i32 = mul %295, 16i
+                %297:i32 = add %x_422, %296
+                %298:ptr<private, i32, read_write> = access %map, %297
+                store %298, 1i
+                %x_430:i32 = load_vector_element %p, 1u
+                %300:i32 = add %x_430, 2i
+                store_vector_element %p, 1u, %300
+                exit_if  # if_25
+              }
+            }
+            exit_if  # if_10
+          }
+        }
+        %x_434:i32 = load_vector_element %ipos, 1u
+        %x_437:i32 = load_vector_element %ipos, 0u
+        %303:i32 = mul %x_434, 16i
+        %304:i32 = add %303, %x_437
+        %305:ptr<private, i32, read_write> = access %map, %304
+        %x_440:i32 = load %305
+        %307:bool = eq %x_440, 1i
+        if %307 [t: %b40] {  # if_26
+          %b40 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f)
+            ret
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %x_444:bool = load %canwalk
+        %309:bool = eq %x_444, false
+        break_if %309 %b7
+      }
+    }
+    store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b41 {
+  %b41 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %312:void = call %main_1
+    %313:vec4<f32> = load %x_GLF_color
+    %314:main_out = construct %313
+    ret %314
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1754b25
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.spvasm.expected.ir.msl
@@ -0,0 +1,631 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, array<i32, 10>, read_write> = var
+    %data:ptr<function, array<i32, 10>, read_write> = var
+    %x_63:ptr<function, i32, read_write> = var
+    %x_103:ptr<function, i32, read_write> = var
+    %x_112:ptr<function, i32, read_write> = var
+    %x_190:ptr<function, f32, read_write> = var
+    %x_262:ptr<function, f32, read_write> = var
+    %x_263:ptr<function, f32, read_write> = var
+    %13:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %14:f32 = load_vector_element %13, 0u
+    %15:i32 = convert %14
+    store %x_63, %15
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_100:ptr<function, i32, read_write> = var
+        %x_98:ptr<function, i32, read_write> = var
+        %x_96:ptr<function, i32, read_write> = var
+        %x_94:ptr<function, i32, read_write> = var
+        %x_92:ptr<function, i32, read_write> = var
+        %x_90:ptr<function, i32, read_write> = var
+        %x_88:ptr<function, i32, read_write> = var
+        %x_86:ptr<function, i32, read_write> = var
+        %x_84:ptr<function, i32, read_write> = var
+        %x_82:ptr<function, i32, read_write> = var
+        %x_64:ptr<function, i32, read_write> = var
+        %x_68:array<i32, 10> = load %data
+        store %data, array<i32, 10>(0i)
+        store %data, %x_68
+        %28:i32 = load %x_63
+        %29:i32 = add %28, 1i
+        store %x_64, %29
+        %30:i32 = load %x_63
+        switch %30 [c: (9i, %b5), c: (8i, %b6), c: (7i, %b7), c: (6i, %b8), c: (5i, %b9), c: (4i, %b10), c: (3i, %b11), c: (2i, %b12), c: (1i, %b13), c: (0i, %b14), c: (default, %b15)] {  # switch_1
+          %b5 = block {  # case
+            %31:i32 = load %x_63
+            %32:ptr<function, i32, read_write> = access %data, %31
+            store %32, -5i
+            %33:i32 = load %x_63
+            %34:i32 = add %33, 1i
+            store %x_100, %34
+            %35:i32 = load %x_100
+            store %x_64, %35
+            exit_switch  # switch_1
+          }
+          %b6 = block {  # case
+            %36:i32 = load %x_63
+            %37:ptr<function, i32, read_write> = access %data, %36
+            store %37, -4i
+            %38:i32 = load %x_63
+            %39:i32 = add %38, 1i
+            store %x_98, %39
+            %40:i32 = load %x_98
+            store %x_64, %40
+            exit_switch  # switch_1
+          }
+          %b7 = block {  # case
+            %41:i32 = load %x_63
+            %42:ptr<function, i32, read_write> = access %data, %41
+            store %42, -3i
+            %43:i32 = load %x_63
+            %44:i32 = add %43, 1i
+            store %x_96, %44
+            %45:i32 = load %x_96
+            store %x_64, %45
+            exit_switch  # switch_1
+          }
+          %b8 = block {  # case
+            %46:i32 = load %x_63
+            %47:ptr<function, i32, read_write> = access %data, %46
+            store %47, -2i
+            %48:i32 = load %x_63
+            %49:i32 = add %48, 1i
+            store %x_94, %49
+            %50:i32 = load %x_94
+            store %x_64, %50
+            exit_switch  # switch_1
+          }
+          %b9 = block {  # case
+            %51:i32 = load %x_63
+            %52:ptr<function, i32, read_write> = access %data, %51
+            store %52, -1i
+            %53:i32 = load %x_63
+            %54:i32 = add %53, 1i
+            store %x_92, %54
+            %55:i32 = load %x_92
+            store %x_64, %55
+            exit_switch  # switch_1
+          }
+          %b10 = block {  # case
+            %56:i32 = load %x_63
+            %57:ptr<function, i32, read_write> = access %data, %56
+            store %57, 0i
+            %58:i32 = load %x_63
+            %59:i32 = add %58, 1i
+            store %x_90, %59
+            %60:i32 = load %x_90
+            store %x_64, %60
+            exit_switch  # switch_1
+          }
+          %b11 = block {  # case
+            %61:i32 = load %x_63
+            %62:ptr<function, i32, read_write> = access %data, %61
+            store %62, 1i
+            %63:i32 = load %x_63
+            %64:i32 = add %63, 1i
+            store %x_88, %64
+            %65:i32 = load %x_88
+            store %x_64, %65
+            exit_switch  # switch_1
+          }
+          %b12 = block {  # case
+            %66:i32 = load %x_63
+            %67:ptr<function, i32, read_write> = access %data, %66
+            store %67, 2i
+            %68:i32 = load %x_63
+            %69:i32 = add %68, 1i
+            store %x_86, %69
+            %70:i32 = load %x_86
+            store %x_64, %70
+            exit_switch  # switch_1
+          }
+          %b13 = block {  # case
+            %71:i32 = load %x_63
+            %72:ptr<function, i32, read_write> = access %data, %71
+            store %72, 3i
+            %73:i32 = load %x_63
+            %74:i32 = add %73, 1i
+            store %x_84, %74
+            %75:i32 = load %x_84
+            store %x_64, %75
+            exit_switch  # switch_1
+          }
+          %b14 = block {  # case
+            %76:i32 = load %x_63
+            %77:ptr<function, i32, read_write> = access %data, %76
+            store %77, 4i
+            %78:i32 = load %x_63
+            %79:i32 = add %78, 1i
+            store %x_82, %79
+            %80:i32 = load %x_82
+            store %x_64, %80
+            exit_switch  # switch_1
+          }
+          %b15 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %81:i32 = load %x_64
+        store %x_63, %81
+        %82:i32 = load %x_64
+        %83:bool = lt %82, 10i
+        %84:bool = eq %83, false
+        break_if %84 %b3
+      }
+    }
+    store %x_103, 0i
+    loop [b: %b16, c: %b17] {  # loop_2
+      %b16 = block {  # body
+        %x_104:ptr<function, i32, read_write> = var
+        %86:i32 = load %x_103
+        %87:bool = lt %86, 10i
+        if %87 [t: %b18, f: %b19] {  # if_1
+          %b18 = block {  # true
+            exit_if  # if_1
+          }
+          %b19 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b17
+      }
+      %b17 = block {  # continuing
+        %88:i32 = load %x_103
+        %89:ptr<function, i32, read_write> = access %temp, %88
+        %90:i32 = load %x_103
+        %91:ptr<function, i32, read_write> = access %data, %90
+        %92:i32 = load %91
+        store %89, %92
+        %93:i32 = load %x_103
+        %94:i32 = add %93, 1i
+        store %x_104, %94
+        %95:i32 = load %x_104
+        store %x_103, %95
+        next_iteration %b16
+      }
+    }
+    store %x_112, 1i
+    loop [b: %b20, c: %b21] {  # loop_3
+      %b20 = block {  # body
+        %x_119:ptr<function, i32, read_write> = var
+        %x_113:ptr<function, i32, read_write> = var
+        %98:i32 = load %x_112
+        %99:bool = lte %98, 9i
+        if %99 [t: %b22, f: %b23] {  # if_2
+          %b22 = block {  # true
+            exit_if  # if_2
+          }
+          %b23 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        store %x_119, 0i
+        loop [b: %b24, c: %b25] {  # loop_4
+          %b24 = block {  # body
+            %x_131:ptr<function, i32, read_write> = var
+            %x_134:ptr<function, i32, read_write> = var
+            %x_136:ptr<function, i32, read_write> = var
+            %x_158:ptr<function, i32, read_write> = var
+            %x_161:ptr<function, i32, read_write> = var
+            %x_171:ptr<function, i32, read_write> = var
+            %106:i32 = load %x_119
+            %107:bool = lt %106, 9i
+            if %107 [t: %b26, f: %b27] {  # if_3
+              %b26 = block {  # true
+                exit_if  # if_3
+              }
+              %b27 = block {  # false
+                exit_loop  # loop_4
+              }
+            }
+            %108:i32 = load %x_119
+            %109:i32 = load %x_112
+            %x_125:i32 = add %108, %109
+            %x_126:i32 = sub %x_125, 1i
+            %112:i32 = load %x_119
+            %113:i32 = load %x_112
+            %114:i32 = mul 2i, %113
+            %x_120:i32 = add %112, %114
+            %116:i32 = sub %x_120, 1i
+            %x_129:i32 = min %116, 9i
+            %118:i32 = load %x_119
+            store %x_131, %118
+            store %x_134, %x_125
+            %119:i32 = load %x_119
+            store %x_136, %119
+            loop [b: %b28, c: %b29] {  # loop_5
+              %b28 = block {  # body
+                %x_151:ptr<function, i32, read_write> = var
+                %x_154:ptr<function, i32, read_write> = var
+                %x_135:ptr<function, i32, read_write> = var
+                %x_137:ptr<function, i32, read_write> = var
+                %124:i32 = load %x_136
+                %125:bool = lte %124, %x_126
+                %126:i32 = load %x_134
+                %127:bool = lte %126, %x_129
+                %128:bool = and %125, %127
+                if %128 [t: %b30, f: %b31] {  # if_4
+                  %b30 = block {  # true
+                    exit_if  # if_4
+                  }
+                  %b31 = block {  # false
+                    exit_loop  # loop_5
+                  }
+                }
+                %x_143_save:i32 = load %x_136
+                %x_145_save:i32 = load %x_134
+                %131:i32 = load %x_131
+                %x_132:i32 = add %131, 1i
+                %133:i32 = load %x_136
+                %134:ptr<function, i32, read_write> = access %data, %133
+                %135:i32 = load %134
+                %136:i32 = load %x_134
+                %137:ptr<function, i32, read_write> = access %data, %136
+                %138:i32 = load %137
+                %139:bool = lt %135, %138
+                if %139 [t: %b32, f: %b33] {  # if_5
+                  %b32 = block {  # true
+                    %140:i32 = load %x_136
+                    %141:i32 = add %140, 1i
+                    store %x_151, %141
+                    %142:i32 = load %x_131
+                    %143:ptr<function, i32, read_write> = access %temp, %142
+                    %144:ptr<function, i32, read_write> = access %data, %x_143_save
+                    %145:i32 = load %144
+                    store %143, %145
+                    %146:i32 = load %x_134
+                    store %x_135, %146
+                    %147:i32 = load %x_151
+                    store %x_137, %147
+                    exit_if  # if_5
+                  }
+                  %b33 = block {  # false
+                    %148:i32 = load %x_134
+                    %149:i32 = add %148, 1i
+                    store %x_154, %149
+                    %150:i32 = load %x_131
+                    %151:ptr<function, i32, read_write> = access %temp, %150
+                    %152:ptr<function, i32, read_write> = access %data, %x_145_save
+                    %153:i32 = load %152
+                    store %151, %153
+                    %154:i32 = load %x_154
+                    store %x_135, %154
+                    %155:i32 = load %x_136
+                    store %x_137, %155
+                    exit_if  # if_5
+                  }
+                }
+                continue %b29
+              }
+              %b29 = block {  # continuing
+                store %x_131, %x_132
+                %156:i32 = load %x_135
+                store %x_134, %156
+                %157:i32 = load %x_137
+                store %x_136, %157
+                next_iteration %b28
+              }
+            }
+            %158:i32 = load %x_131
+            store %x_158, %158
+            %159:i32 = load %x_136
+            store %x_161, %159
+            loop [b: %b34, c: %b35] {  # loop_6
+              %b34 = block {  # body
+                %x_159:ptr<function, i32, read_write> = var
+                %x_162:ptr<function, i32, read_write> = var
+                %162:i32 = load %x_161
+                %163:bool = lt %162, 10i
+                %164:i32 = load %x_161
+                %165:bool = lte %164, %x_126
+                %166:bool = and %163, %165
+                if %166 [t: %b36, f: %b37] {  # if_6
+                  %b36 = block {  # true
+                    exit_if  # if_6
+                  }
+                  %b37 = block {  # false
+                    exit_loop  # loop_6
+                  }
+                }
+                continue %b35
+              }
+              %b35 = block {  # continuing
+                %167:i32 = load %x_158
+                %168:i32 = add %167, 1i
+                store %x_159, %168
+                %169:i32 = load %x_161
+                %170:i32 = add %169, 1i
+                store %x_162, %170
+                %171:i32 = load %x_158
+                %172:ptr<function, i32, read_write> = access %temp, %171
+                %173:i32 = load %x_161
+                %174:ptr<function, i32, read_write> = access %data, %173
+                %175:i32 = load %174
+                store %172, %175
+                %176:i32 = load %x_159
+                store %x_158, %176
+                %177:i32 = load %x_162
+                store %x_161, %177
+                next_iteration %b34
+              }
+            }
+            %178:i32 = load %x_119
+            store %x_171, %178
+            loop [b: %b38, c: %b39] {  # loop_7
+              %b38 = block {  # body
+                %x_172:ptr<function, i32, read_write> = var
+                %180:i32 = load %x_171
+                %181:bool = lte %180, %x_129
+                if %181 [t: %b40, f: %b41] {  # if_7
+                  %b40 = block {  # true
+                    exit_if  # if_7
+                  }
+                  %b41 = block {  # false
+                    exit_loop  # loop_7
+                  }
+                }
+                continue %b39
+              }
+              %b39 = block {  # continuing
+                %182:i32 = load %x_171
+                %183:ptr<function, i32, read_write> = access %data, %182
+                %184:i32 = load %x_171
+                %185:ptr<function, i32, read_write> = access %temp, %184
+                %186:i32 = load %185
+                store %183, %186
+                %187:i32 = load %x_171
+                %188:i32 = add %187, 1i
+                store %x_172, %188
+                %189:i32 = load %x_172
+                store %x_171, %189
+                next_iteration %b38
+              }
+            }
+            continue %b25
+          }
+          %b25 = block {  # continuing
+            store %x_119, %x_120
+            next_iteration %b24
+          }
+        }
+        continue %b21
+      }
+      %b21 = block {  # continuing
+        %190:i32 = load %x_112
+        %191:i32 = mul 2i, %190
+        store %x_113, %191
+        %192:i32 = load %x_113
+        store %x_112, %192
+        next_iteration %b20
+      }
+    }
+    %x_181:ptr<function, i32, read_write> = var
+    %x_199:ptr<function, f32, read_write> = var
+    %x_261:ptr<function, f32, read_write> = var
+    %196:f32 = load_vector_element %gl_FragCoord, 1u
+    %197:i32 = convert %196
+    store %x_181, %197
+    %198:i32 = load %x_181
+    %199:bool = lt %198, 30i
+    if %199 [t: %b42, f: %b43] {  # if_8
+      %b42 = block {  # true
+        %200:ptr<function, i32, read_write> = access %data, 0i
+        %201:i32 = load %200
+        %202:f32 = convert %201
+        %203:f32 = mul %202, 0.10000000149011611938f
+        %204:f32 = add 0.5f, %203
+        store %x_190, %204
+        %205:f32 = load %x_190
+        store %x_263, %205
+        exit_if  # if_8
+      }
+      %b43 = block {  # false
+        %x_208:ptr<function, f32, read_write> = var
+        %x_260:ptr<function, f32, read_write> = var
+        %208:i32 = load %x_181
+        %209:bool = lt %208, 60i
+        if %209 [t: %b44, f: %b45] {  # if_9
+          %b44 = block {  # true
+            %210:ptr<function, i32, read_write> = access %data, 1i
+            %211:i32 = load %210
+            %212:f32 = convert %211
+            %213:f32 = mul %212, 0.10000000149011611938f
+            %214:f32 = add 0.5f, %213
+            store %x_199, %214
+            %215:f32 = load %x_199
+            store %x_262, %215
+            exit_if  # if_9
+          }
+          %b45 = block {  # false
+            %x_217:ptr<function, f32, read_write> = var
+            %x_259:ptr<function, f32, read_write> = var
+            %218:i32 = load %x_181
+            %219:bool = lt %218, 90i
+            if %219 [t: %b46, f: %b47] {  # if_10
+              %b46 = block {  # true
+                %220:ptr<function, i32, read_write> = access %data, 2i
+                %221:i32 = load %220
+                %222:f32 = convert %221
+                %223:f32 = mul %222, 0.10000000149011611938f
+                %224:f32 = add 0.5f, %223
+                store %x_208, %224
+                %225:f32 = load %x_208
+                store %x_261, %225
+                exit_if  # if_10
+              }
+              %b47 = block {  # false
+                %226:i32 = load %x_181
+                %227:bool = lt %226, 120i
+                if %227 [t: %b48, f: %b49] {  # if_11
+                  %b48 = block {  # true
+                    %228:ptr<function, i32, read_write> = access %data, 3i
+                    %229:i32 = load %228
+                    %230:f32 = convert %229
+                    %231:f32 = mul %230, 0.10000000149011611938f
+                    %232:f32 = add 0.5f, %231
+                    store %x_217, %232
+                    %233:f32 = load %x_217
+                    store %x_260, %233
+                    exit_if  # if_11
+                  }
+                  %b49 = block {  # false
+                    %x_230:ptr<function, f32, read_write> = var
+                    %x_258:ptr<function, f32, read_write> = var
+                    %236:i32 = load %x_181
+                    %237:bool = lt %236, 150i
+                    if %237 [t: %b50, f: %b51] {  # if_12
+                      %b50 = block {  # true
+                        discard
+                        exit_if  # if_12
+                      }
+                      %b51 = block {  # false
+                        %x_239:ptr<function, f32, read_write> = var
+                        %x_257:ptr<function, f32, read_write> = var
+                        %240:i32 = load %x_181
+                        %241:bool = lt %240, 180i
+                        if %241 [t: %b52, f: %b53] {  # if_13
+                          %b52 = block {  # true
+                            %242:ptr<function, i32, read_write> = access %data, 5i
+                            %243:i32 = load %242
+                            %244:f32 = convert %243
+                            %245:f32 = mul %244, 0.10000000149011611938f
+                            %246:f32 = add 0.5f, %245
+                            store %x_230, %246
+                            %247:f32 = load %x_230
+                            store %x_259, %247
+                            exit_if  # if_13
+                          }
+                          %b53 = block {  # false
+                            %x_248:ptr<function, f32, read_write> = var
+                            %x_256:ptr<function, f32, read_write> = var
+                            %250:i32 = load %x_181
+                            %251:bool = lt %250, 210i
+                            if %251 [t: %b54, f: %b55] {  # if_14
+                              %b54 = block {  # true
+                                %252:ptr<function, i32, read_write> = access %data, 6i
+                                %253:i32 = load %252
+                                %254:f32 = convert %253
+                                %255:f32 = mul %254, 0.10000000149011611938f
+                                %256:f32 = add 0.5f, %255
+                                store %x_239, %256
+                                %257:f32 = load %x_239
+                                store %x_258, %257
+                                exit_if  # if_14
+                              }
+                              %b55 = block {  # false
+                                %258:i32 = load %x_181
+                                %259:bool = lt %258, 240i
+                                if %259 [t: %b56, f: %b57] {  # if_15
+                                  %b56 = block {  # true
+                                    %260:ptr<function, i32, read_write> = access %data, 7i
+                                    %261:i32 = load %260
+                                    %262:f32 = convert %261
+                                    %263:f32 = mul %262, 0.10000000149011611938f
+                                    %264:f32 = add 0.5f, %263
+                                    store %x_248, %264
+                                    %265:f32 = load %x_248
+                                    store %x_257, %265
+                                    exit_if  # if_15
+                                  }
+                                  %b57 = block {  # false
+                                    %266:i32 = load %x_181
+                                    %267:bool = lt %266, 270i
+                                    if %267 [t: %b58, f: %b59] {  # if_16
+                                      %b58 = block {  # true
+                                        exit_if  # if_16
+                                      }
+                                      %b59 = block {  # false
+                                        discard
+                                        exit_if  # if_16
+                                      }
+                                    }
+                                    %268:ptr<function, i32, read_write> = access %data, 8i
+                                    %269:i32 = load %268
+                                    %270:f32 = convert %269
+                                    %271:f32 = mul %270, 0.10000000149011611938f
+                                    %272:f32 = add 0.5f, %271
+                                    store %x_256, %272
+                                    %273:f32 = load %x_256
+                                    store %x_257, %273
+                                    exit_if  # if_15
+                                  }
+                                }
+                                %274:f32 = load %x_257
+                                store %x_258, %274
+                                exit_if  # if_14
+                              }
+                            }
+                            %275:f32 = load %x_258
+                            store %x_259, %275
+                            exit_if  # if_13
+                          }
+                        }
+                        exit_if  # if_12
+                      }
+                    }
+                    %276:f32 = load %x_259
+                    store %x_260, %276
+                    exit_if  # if_11
+                  }
+                }
+                %277:f32 = load %x_260
+                store %x_261, %277
+                exit_if  # if_10
+              }
+            }
+            %278:f32 = load %x_261
+            store %x_262, %278
+            exit_if  # if_9
+          }
+        }
+        %279:f32 = load %x_262
+        store %x_263, %279
+        exit_if  # if_8
+      }
+    }
+    %280:f32 = load %x_263
+    %281:f32 = load %x_263
+    %282:f32 = load %x_263
+    %283:vec4<f32> = construct %280, %281, %282, 1.0f
+    store %x_GLF_color, %283
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b60 {
+  %b60 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %286:void = call %main_1
+    %287:vec4<f32> = load %x_GLF_color
+    %288:main_out = construct %287
+    ret %288
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dcf7074
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl.expected.ir.msl
@@ -0,0 +1,611 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, array<i32, 10>, read_write> = var
+    %data:ptr<function, array<i32, 10>, read_write> = var
+    %x_190:ptr<function, f32, read_write> = var
+    %x_262:ptr<function, f32, read_write> = var
+    %x_63_phi:ptr<function, i32, read_write> = var
+    %x_103_phi:ptr<function, i32, read_write> = var
+    %x_112_phi:ptr<function, i32, read_write> = var
+    %x_263_phi:ptr<function, f32, read_write> = var
+    %13:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %x_60:f32 = load_vector_element %13, 0u
+    %x_61:i32 = convert %x_60
+    store %x_63_phi, %x_61
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_100:ptr<function, i32, read_write> = var
+        %x_98:ptr<function, i32, read_write> = var
+        %x_96:ptr<function, i32, read_write> = var
+        %x_94:ptr<function, i32, read_write> = var
+        %x_92:ptr<function, i32, read_write> = var
+        %x_90:ptr<function, i32, read_write> = var
+        %x_88:ptr<function, i32, read_write> = var
+        %x_86:ptr<function, i32, read_write> = var
+        %x_84:ptr<function, i32, read_write> = var
+        %x_82:ptr<function, i32, read_write> = var
+        %x_64_phi:ptr<function, i32, read_write> = var
+        %x_63:i32 = load %x_63_phi
+        %x_68:array<i32, 10> = load %data
+        store %data, array<i32, 10>(0i)
+        store %data, %x_68
+        %x_69:i32 = add %x_63, 1i
+        store %x_64_phi, %x_69
+        switch %x_63 [c: (9i, %b5), c: (8i, %b6), c: (7i, %b7), c: (6i, %b8), c: (5i, %b9), c: (4i, %b10), c: (3i, %b11), c: (2i, %b12), c: (1i, %b13), c: (0i, %b14), c: (default, %b15)] {  # switch_1
+          %b5 = block {  # case
+            %30:ptr<function, i32, read_write> = access %data, %x_63
+            store %30, -5i
+            %31:i32 = add %x_63, 1i
+            store %x_100, %31
+            %32:i32 = load %x_100
+            store %x_64_phi, %32
+            exit_switch  # switch_1
+          }
+          %b6 = block {  # case
+            %33:ptr<function, i32, read_write> = access %data, %x_63
+            store %33, -4i
+            %34:i32 = add %x_63, 1i
+            store %x_98, %34
+            %35:i32 = load %x_98
+            store %x_64_phi, %35
+            exit_switch  # switch_1
+          }
+          %b7 = block {  # case
+            %36:ptr<function, i32, read_write> = access %data, %x_63
+            store %36, -3i
+            %37:i32 = add %x_63, 1i
+            store %x_96, %37
+            %38:i32 = load %x_96
+            store %x_64_phi, %38
+            exit_switch  # switch_1
+          }
+          %b8 = block {  # case
+            %39:ptr<function, i32, read_write> = access %data, %x_63
+            store %39, -2i
+            %40:i32 = add %x_63, 1i
+            store %x_94, %40
+            %41:i32 = load %x_94
+            store %x_64_phi, %41
+            exit_switch  # switch_1
+          }
+          %b9 = block {  # case
+            %42:ptr<function, i32, read_write> = access %data, %x_63
+            store %42, -1i
+            %43:i32 = add %x_63, 1i
+            store %x_92, %43
+            %44:i32 = load %x_92
+            store %x_64_phi, %44
+            exit_switch  # switch_1
+          }
+          %b10 = block {  # case
+            %45:ptr<function, i32, read_write> = access %data, %x_63
+            store %45, 0i
+            %46:i32 = add %x_63, 1i
+            store %x_90, %46
+            %47:i32 = load %x_90
+            store %x_64_phi, %47
+            exit_switch  # switch_1
+          }
+          %b11 = block {  # case
+            %48:ptr<function, i32, read_write> = access %data, %x_63
+            store %48, 1i
+            %49:i32 = add %x_63, 1i
+            store %x_88, %49
+            %50:i32 = load %x_88
+            store %x_64_phi, %50
+            exit_switch  # switch_1
+          }
+          %b12 = block {  # case
+            %51:ptr<function, i32, read_write> = access %data, %x_63
+            store %51, 2i
+            %52:i32 = add %x_63, 1i
+            store %x_86, %52
+            %53:i32 = load %x_86
+            store %x_64_phi, %53
+            exit_switch  # switch_1
+          }
+          %b13 = block {  # case
+            %54:ptr<function, i32, read_write> = access %data, %x_63
+            store %54, 3i
+            %55:i32 = add %x_63, 1i
+            store %x_84, %55
+            %56:i32 = load %x_84
+            store %x_64_phi, %56
+            exit_switch  # switch_1
+          }
+          %b14 = block {  # case
+            %57:ptr<function, i32, read_write> = access %data, %x_63
+            store %57, 4i
+            %58:i32 = add %x_63, 1i
+            store %x_82, %58
+            %59:i32 = load %x_82
+            store %x_64_phi, %59
+            exit_switch  # switch_1
+          }
+          %b15 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %x_64:i32 = load %x_64_phi
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        store %x_63_phi, %x_64
+        %61:bool = lt %x_64, 10i
+        %62:bool = eq %61, false
+        break_if %62 %b3
+      }
+    }
+    store %x_103_phi, 0i
+    loop [b: %b16, c: %b17] {  # loop_2
+      %b16 = block {  # body
+        %x_104:ptr<function, i32, read_write> = var
+        %x_103:i32 = load %x_103_phi
+        %65:bool = lt %x_103, 10i
+        if %65 [t: %b18, f: %b19] {  # if_1
+          %b18 = block {  # true
+            exit_if  # if_1
+          }
+          %b19 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b17
+      }
+      %b17 = block {  # continuing
+        %66:ptr<function, i32, read_write> = access %data, %x_103
+        %x_109:i32 = load %66
+        %68:ptr<function, i32, read_write> = access %temp, %x_103
+        store %68, %x_109
+        %69:i32 = add %x_103, 1i
+        store %x_104, %69
+        %70:i32 = load %x_104
+        store %x_103_phi, %70
+        next_iteration %b16
+      }
+    }
+    store %x_112_phi, 1i
+    loop [b: %b20, c: %b21] {  # loop_3
+      %b20 = block {  # body
+        %x_113:ptr<function, i32, read_write> = var
+        %x_119_phi:ptr<function, i32, read_write> = var
+        %x_112:i32 = load %x_112_phi
+        %74:bool = lte %x_112, 9i
+        if %74 [t: %b22, f: %b23] {  # if_2
+          %b22 = block {  # true
+            exit_if  # if_2
+          }
+          %b23 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        store %x_119_phi, 0i
+        loop [b: %b24, c: %b25] {  # loop_4
+          %b24 = block {  # body
+            %x_131:ptr<function, i32, read_write> = var
+            %x_136:ptr<function, i32, read_write> = var
+            %x_131_phi:ptr<function, i32, read_write> = var
+            %x_134_phi:ptr<function, i32, read_write> = var
+            %x_136_phi:ptr<function, i32, read_write> = var
+            %x_158_phi:ptr<function, i32, read_write> = var
+            %x_161_phi:ptr<function, i32, read_write> = var
+            %x_171_phi:ptr<function, i32, read_write> = var
+            %x_119:i32 = load %x_119_phi
+            %84:bool = lt %x_119, 9i
+            if %84 [t: %b26, f: %b27] {  # if_3
+              %b26 = block {  # true
+                exit_if  # if_3
+              }
+              %b27 = block {  # false
+                exit_loop  # loop_4
+              }
+            }
+            %x_125:i32 = add %x_119, %x_112
+            %x_126:i32 = sub %x_125, 1i
+            %87:i32 = mul 2i, %x_112
+            %x_120:i32 = add %x_119, %87
+            %89:i32 = sub %x_120, 1i
+            %x_129:i32 = min %89, 9i
+            store %x_131_phi, %x_119
+            store %x_134_phi, %x_125
+            store %x_136_phi, %x_119
+            loop [b: %b28, c: %b29] {  # loop_5
+              %b28 = block {  # body
+                %x_151:ptr<function, i32, read_write> = var
+                %x_154:ptr<function, i32, read_write> = var
+                %x_135_phi:ptr<function, i32, read_write> = var
+                %x_137_phi:ptr<function, i32, read_write> = var
+                %95:i32 = load %x_131_phi
+                store %x_131, %95
+                %x_134:i32 = load %x_134_phi
+                %97:i32 = load %x_136_phi
+                store %x_136, %97
+                %98:i32 = load %x_136
+                %99:bool = lte %98, %x_126
+                %100:bool = lte %x_134, %x_129
+                %101:bool = and %99, %100
+                if %101 [t: %b30, f: %b31] {  # if_4
+                  %b30 = block {  # true
+                    exit_if  # if_4
+                  }
+                  %b31 = block {  # false
+                    exit_loop  # loop_5
+                  }
+                }
+                %x_143_save:i32 = load %x_136
+                %103:ptr<function, i32, read_write> = access %data, %x_143_save
+                %x_144:i32 = load %103
+                %x_145_save:i32 = let %x_134
+                %106:ptr<function, i32, read_write> = access %data, %x_145_save
+                %x_146:i32 = load %106
+                %108:i32 = load %x_131
+                %109:i32 = add %108, 1i
+                %x_132:i32 = bitcast %109
+                %111:bool = lt %x_144, %x_146
+                if %111 [t: %b32, f: %b33] {  # if_5
+                  %b32 = block {  # true
+                    %112:i32 = load %x_136
+                    %113:i32 = add %112, 1i
+                    %114:i32 = bitcast %113
+                    store %x_151, %114
+                    %115:ptr<function, i32, read_write> = access %data, %x_143_save
+                    %x_152:i32 = load %115
+                    %117:i32 = load %x_131
+                    %118:ptr<function, i32, read_write> = access %temp, %117
+                    store %118, %x_152
+                    store %x_135_phi, %x_134
+                    %119:i32 = load %x_151
+                    store %x_137_phi, %119
+                    exit_if  # if_5
+                  }
+                  %b33 = block {  # false
+                    %120:i32 = add %x_134, 1i
+                    store %x_154, %120
+                    %121:ptr<function, i32, read_write> = access %data, %x_145_save
+                    %x_155:i32 = load %121
+                    %123:i32 = load %x_131
+                    %124:ptr<function, i32, read_write> = access %temp, %123
+                    store %124, %x_155
+                    %125:i32 = load %x_154
+                    store %x_135_phi, %125
+                    %126:i32 = load %x_136
+                    store %x_137_phi, %126
+                    exit_if  # if_5
+                  }
+                }
+                %x_135:i32 = load %x_135_phi
+                %x_137:i32 = load %x_137_phi
+                continue %b29
+              }
+              %b29 = block {  # continuing
+                store %x_131_phi, %x_132
+                store %x_134_phi, %x_135
+                store %x_136_phi, %x_137
+                next_iteration %b28
+              }
+            }
+            %129:i32 = load %x_131
+            store %x_158_phi, %129
+            %130:i32 = load %x_136
+            store %x_161_phi, %130
+            loop [b: %b34, c: %b35] {  # loop_6
+              %b34 = block {  # body
+                %x_159:ptr<function, i32, read_write> = var
+                %x_162:ptr<function, i32, read_write> = var
+                %x_158:i32 = load %x_158_phi
+                %x_161:i32 = load %x_161_phi
+                %135:bool = lt %x_161, 10i
+                %136:bool = lte %x_161, %x_126
+                %137:bool = and %135, %136
+                if %137 [t: %b36, f: %b37] {  # if_6
+                  %b36 = block {  # true
+                    exit_if  # if_6
+                  }
+                  %b37 = block {  # false
+                    exit_loop  # loop_6
+                  }
+                }
+                continue %b35
+              }
+              %b35 = block {  # continuing
+                %138:i32 = add %x_158, 1i
+                store %x_159, %138
+                %139:i32 = add %x_161, 1i
+                store %x_162, %139
+                %140:ptr<function, i32, read_write> = access %data, %x_161
+                %x_168:i32 = load %140
+                %142:ptr<function, i32, read_write> = access %temp, %x_158
+                store %142, %x_168
+                %143:i32 = load %x_159
+                store %x_158_phi, %143
+                %144:i32 = load %x_162
+                store %x_161_phi, %144
+                next_iteration %b34
+              }
+            }
+            store %x_171_phi, %x_119
+            loop [b: %b38, c: %b39] {  # loop_7
+              %b38 = block {  # body
+                %x_172:ptr<function, i32, read_write> = var
+                %x_171:i32 = load %x_171_phi
+                %147:bool = lte %x_171, %x_129
+                if %147 [t: %b40, f: %b41] {  # if_7
+                  %b40 = block {  # true
+                    exit_if  # if_7
+                  }
+                  %b41 = block {  # false
+                    exit_loop  # loop_7
+                  }
+                }
+                continue %b39
+              }
+              %b39 = block {  # continuing
+                %148:ptr<function, i32, read_write> = access %temp, %x_171
+                %x_177:i32 = load %148
+                %150:ptr<function, i32, read_write> = access %data, %x_171
+                store %150, %x_177
+                %151:i32 = add %x_171, 1i
+                store %x_172, %151
+                %152:i32 = load %x_172
+                store %x_171_phi, %152
+                next_iteration %b38
+              }
+            }
+            continue %b25
+          }
+          %b25 = block {  # continuing
+            store %x_119_phi, %x_120
+            next_iteration %b24
+          }
+        }
+        continue %b21
+      }
+      %b21 = block {  # continuing
+        %153:i32 = mul 2i, %x_112
+        store %x_113, %153
+        %154:i32 = load %x_113
+        store %x_112_phi, %154
+        next_iteration %b20
+      }
+    }
+    %x_181:ptr<function, i32, read_write> = var
+    %x_199:ptr<function, f32, read_write> = var
+    %x_261:ptr<function, f32, read_write> = var
+    %x_262_phi:ptr<function, f32, read_write> = var
+    %x_180:f32 = load_vector_element %gl_FragCoord, 1u
+    %160:i32 = convert %x_180
+    store %x_181, %160
+    %161:i32 = load %x_181
+    %162:bool = lt %161, 30i
+    if %162 [t: %b42, f: %b43] {  # if_8
+      %b42 = block {  # true
+        %163:ptr<function, i32, read_write> = access %data, 0i
+        %x_187:i32 = load %163
+        %165:f32 = convert %x_187
+        %166:f32 = mul %165, 0.10000000149011611938f
+        %167:f32 = add 0.5f, %166
+        store %x_190, %167
+        %168:f32 = load %x_190
+        store %x_263_phi, %168
+        exit_if  # if_8
+      }
+      %b43 = block {  # false
+        %x_208:ptr<function, f32, read_write> = var
+        %x_260:ptr<function, f32, read_write> = var
+        %x_261_phi:ptr<function, f32, read_write> = var
+        %172:i32 = load %x_181
+        %173:bool = lt %172, 60i
+        if %173 [t: %b44, f: %b45] {  # if_9
+          %b44 = block {  # true
+            %174:ptr<function, i32, read_write> = access %data, 1i
+            %x_196:i32 = load %174
+            %176:f32 = convert %x_196
+            %177:f32 = mul %176, 0.10000000149011611938f
+            %178:f32 = add 0.5f, %177
+            store %x_199, %178
+            %179:f32 = load %x_199
+            store %x_262_phi, %179
+            exit_if  # if_9
+          }
+          %b45 = block {  # false
+            %x_217:ptr<function, f32, read_write> = var
+            %x_259:ptr<function, f32, read_write> = var
+            %x_260_phi:ptr<function, f32, read_write> = var
+            %183:i32 = load %x_181
+            %184:bool = lt %183, 90i
+            if %184 [t: %b46, f: %b47] {  # if_10
+              %b46 = block {  # true
+                %185:ptr<function, i32, read_write> = access %data, 2i
+                %x_205:i32 = load %185
+                %187:f32 = convert %x_205
+                %188:f32 = mul %187, 0.10000000149011611938f
+                %189:f32 = add 0.5f, %188
+                store %x_208, %189
+                %190:f32 = load %x_208
+                store %x_261_phi, %190
+                exit_if  # if_10
+              }
+              %b47 = block {  # false
+                %191:i32 = load %x_181
+                %192:bool = lt %191, 120i
+                if %192 [t: %b48, f: %b49] {  # if_11
+                  %b48 = block {  # true
+                    %193:ptr<function, i32, read_write> = access %data, 3i
+                    %x_214:i32 = load %193
+                    %195:f32 = convert %x_214
+                    %196:f32 = mul %195, 0.10000000149011611938f
+                    %197:f32 = add 0.5f, %196
+                    store %x_217, %197
+                    %198:f32 = load %x_217
+                    store %x_260_phi, %198
+                    exit_if  # if_11
+                  }
+                  %b49 = block {  # false
+                    %x_230:ptr<function, f32, read_write> = var
+                    %x_258:ptr<function, f32, read_write> = var
+                    %x_259_phi:ptr<function, f32, read_write> = var
+                    %202:i32 = load %x_181
+                    %203:bool = lt %202, 150i
+                    if %203 [t: %b50, f: %b51] {  # if_12
+                      %b50 = block {  # true
+                        discard
+                        exit_if  # if_12
+                      }
+                      %b51 = block {  # false
+                        %x_239:ptr<function, f32, read_write> = var
+                        %x_257:ptr<function, f32, read_write> = var
+                        %x_258_phi:ptr<function, f32, read_write> = var
+                        %207:i32 = load %x_181
+                        %208:bool = lt %207, 180i
+                        if %208 [t: %b52, f: %b53] {  # if_13
+                          %b52 = block {  # true
+                            %209:ptr<function, i32, read_write> = access %data, 5i
+                            %x_227:i32 = load %209
+                            %211:f32 = convert %x_227
+                            %212:f32 = mul %211, 0.10000000149011611938f
+                            %213:f32 = add 0.5f, %212
+                            store %x_230, %213
+                            %214:f32 = load %x_230
+                            store %x_259_phi, %214
+                            exit_if  # if_13
+                          }
+                          %b53 = block {  # false
+                            %x_248:ptr<function, f32, read_write> = var
+                            %x_256:ptr<function, f32, read_write> = var
+                            %x_257_phi:ptr<function, f32, read_write> = var
+                            %218:i32 = load %x_181
+                            %219:bool = lt %218, 210i
+                            if %219 [t: %b54, f: %b55] {  # if_14
+                              %b54 = block {  # true
+                                %220:ptr<function, i32, read_write> = access %data, 6i
+                                %x_236:i32 = load %220
+                                %222:f32 = convert %x_236
+                                %223:f32 = mul %222, 0.10000000149011611938f
+                                %224:f32 = add 0.5f, %223
+                                store %x_239, %224
+                                %225:f32 = load %x_239
+                                store %x_258_phi, %225
+                                exit_if  # if_14
+                              }
+                              %b55 = block {  # false
+                                %226:i32 = load %x_181
+                                %227:bool = lt %226, 240i
+                                if %227 [t: %b56, f: %b57] {  # if_15
+                                  %b56 = block {  # true
+                                    %228:ptr<function, i32, read_write> = access %data, 7i
+                                    %x_245:i32 = load %228
+                                    %230:f32 = convert %x_245
+                                    %231:f32 = mul %230, 0.10000000149011611938f
+                                    %232:f32 = add 0.5f, %231
+                                    store %x_248, %232
+                                    %233:f32 = load %x_248
+                                    store %x_257_phi, %233
+                                    exit_if  # if_15
+                                  }
+                                  %b57 = block {  # false
+                                    %234:i32 = load %x_181
+                                    %235:bool = lt %234, 270i
+                                    if %235 [t: %b58, f: %b59] {  # if_16
+                                      %b58 = block {  # true
+                                        exit_if  # if_16
+                                      }
+                                      %b59 = block {  # false
+                                        discard
+                                        exit_if  # if_16
+                                      }
+                                    }
+                                    %236:ptr<function, i32, read_write> = access %data, 8i
+                                    %x_253:i32 = load %236
+                                    %238:f32 = convert %x_253
+                                    %239:f32 = mul %238, 0.10000000149011611938f
+                                    %240:f32 = add 0.5f, %239
+                                    store %x_256, %240
+                                    %241:f32 = load %x_256
+                                    store %x_257_phi, %241
+                                    exit_if  # if_15
+                                  }
+                                }
+                                %242:f32 = load %x_257_phi
+                                store %x_257, %242
+                                %243:f32 = load %x_257
+                                store %x_258_phi, %243
+                                exit_if  # if_14
+                              }
+                            }
+                            %244:f32 = load %x_258_phi
+                            store %x_258, %244
+                            %245:f32 = load %x_258
+                            store %x_259_phi, %245
+                            exit_if  # if_13
+                          }
+                        }
+                        %246:f32 = load %x_259_phi
+                        store %x_259, %246
+                        exit_if  # if_12
+                      }
+                    }
+                    %247:f32 = load %x_259
+                    store %x_260_phi, %247
+                    exit_if  # if_11
+                  }
+                }
+                %248:f32 = load %x_260_phi
+                store %x_260, %248
+                %249:f32 = load %x_260
+                store %x_261_phi, %249
+                exit_if  # if_10
+              }
+            }
+            %250:f32 = load %x_261_phi
+            store %x_261, %250
+            %251:f32 = load %x_261
+            store %x_262_phi, %251
+            exit_if  # if_9
+          }
+        }
+        %252:f32 = load %x_262_phi
+        store %x_262, %252
+        %253:f32 = load %x_262
+        store %x_263_phi, %253
+        exit_if  # if_8
+      }
+    }
+    %x_263:f32 = load %x_263_phi
+    %255:vec4<f32> = construct %x_263, %x_263, %x_263, 1.0f
+    store %x_GLF_color, %255
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b60 {
+  %b60 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %258:void = call %main_1
+    %259:vec4<f32> = load %x_GLF_color
+    %260:main_out = construct %259
+    ret %260
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..18d1c87
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.spvasm.expected.ir.msl
@@ -0,0 +1,628 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, array<i32, 10>, read_write> = var
+    %data:ptr<function, array<i32, 10>, read_write> = var
+    %x_63:ptr<function, i32, read_write> = var
+    %x_102:ptr<function, i32, read_write> = var
+    %x_111:ptr<function, i32, read_write> = var
+    %x_189:ptr<function, f32, read_write> = var
+    %x_261:ptr<function, f32, read_write> = var
+    %x_262:ptr<function, f32, read_write> = var
+    %13:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %14:f32 = load_vector_element %13, 0u
+    %15:i32 = convert %14
+    store %x_63, %15
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_99:ptr<function, i32, read_write> = var
+        %x_97:ptr<function, i32, read_write> = var
+        %x_95:ptr<function, i32, read_write> = var
+        %x_93:ptr<function, i32, read_write> = var
+        %x_91:ptr<function, i32, read_write> = var
+        %x_89:ptr<function, i32, read_write> = var
+        %x_87:ptr<function, i32, read_write> = var
+        %x_85:ptr<function, i32, read_write> = var
+        %x_83:ptr<function, i32, read_write> = var
+        %x_81:ptr<function, i32, read_write> = var
+        %x_64:ptr<function, i32, read_write> = var
+        %27:i32 = load %x_63
+        %28:i32 = add %27, 1i
+        store %x_64, %28
+        %29:i32 = load %x_63
+        switch %29 [c: (9i, %b5), c: (8i, %b6), c: (7i, %b7), c: (6i, %b8), c: (5i, %b9), c: (4i, %b10), c: (3i, %b11), c: (2i, %b12), c: (1i, %b13), c: (0i, %b14), c: (default, %b15)] {  # switch_1
+          %b5 = block {  # case
+            %30:i32 = load %x_63
+            %31:ptr<function, i32, read_write> = access %data, %30
+            store %31, -5i
+            %32:i32 = load %x_63
+            %33:i32 = add %32, 1i
+            store %x_99, %33
+            %34:i32 = load %x_99
+            store %x_64, %34
+            exit_switch  # switch_1
+          }
+          %b6 = block {  # case
+            %35:i32 = load %x_63
+            %36:ptr<function, i32, read_write> = access %data, %35
+            store %36, -4i
+            %37:i32 = load %x_63
+            %38:i32 = add %37, 1i
+            store %x_97, %38
+            %39:i32 = load %x_97
+            store %x_64, %39
+            exit_switch  # switch_1
+          }
+          %b7 = block {  # case
+            %40:i32 = load %x_63
+            %41:ptr<function, i32, read_write> = access %data, %40
+            store %41, -3i
+            %42:i32 = load %x_63
+            %43:i32 = add %42, 1i
+            store %x_95, %43
+            %44:i32 = load %x_95
+            store %x_64, %44
+            exit_switch  # switch_1
+          }
+          %b8 = block {  # case
+            %45:i32 = load %x_63
+            %46:ptr<function, i32, read_write> = access %data, %45
+            store %46, -2i
+            %47:i32 = load %x_63
+            %48:i32 = add %47, 1i
+            store %x_93, %48
+            %49:i32 = load %x_93
+            store %x_64, %49
+            exit_switch  # switch_1
+          }
+          %b9 = block {  # case
+            %50:i32 = load %x_63
+            %51:ptr<function, i32, read_write> = access %data, %50
+            store %51, -1i
+            %52:i32 = load %x_63
+            %53:i32 = add %52, 1i
+            store %x_91, %53
+            %54:i32 = load %x_91
+            store %x_64, %54
+            exit_switch  # switch_1
+          }
+          %b10 = block {  # case
+            %55:i32 = load %x_63
+            %56:ptr<function, i32, read_write> = access %data, %55
+            store %56, 0i
+            %57:i32 = load %x_63
+            %58:i32 = add %57, 1i
+            store %x_89, %58
+            %59:i32 = load %x_89
+            store %x_64, %59
+            exit_switch  # switch_1
+          }
+          %b11 = block {  # case
+            %60:i32 = load %x_63
+            %61:ptr<function, i32, read_write> = access %data, %60
+            store %61, 1i
+            %62:i32 = load %x_63
+            %63:i32 = add %62, 1i
+            store %x_87, %63
+            %64:i32 = load %x_87
+            store %x_64, %64
+            exit_switch  # switch_1
+          }
+          %b12 = block {  # case
+            %65:i32 = load %x_63
+            %66:ptr<function, i32, read_write> = access %data, %65
+            store %66, 2i
+            %67:i32 = load %x_63
+            %68:i32 = add %67, 1i
+            store %x_85, %68
+            %69:i32 = load %x_85
+            store %x_64, %69
+            exit_switch  # switch_1
+          }
+          %b13 = block {  # case
+            %70:i32 = load %x_63
+            %71:ptr<function, i32, read_write> = access %data, %70
+            store %71, 3i
+            %72:i32 = load %x_63
+            %73:i32 = add %72, 1i
+            store %x_83, %73
+            %74:i32 = load %x_83
+            store %x_64, %74
+            exit_switch  # switch_1
+          }
+          %b14 = block {  # case
+            %75:i32 = load %x_63
+            %76:ptr<function, i32, read_write> = access %data, %75
+            store %76, 4i
+            %77:i32 = load %x_63
+            %78:i32 = add %77, 1i
+            store %x_81, %78
+            %79:i32 = load %x_81
+            store %x_64, %79
+            exit_switch  # switch_1
+          }
+          %b15 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %80:i32 = load %x_64
+        store %x_63, %80
+        %81:i32 = load %x_64
+        %82:bool = lt %81, 10i
+        %83:bool = eq %82, false
+        break_if %83 %b3
+      }
+    }
+    store %x_102, 0i
+    loop [b: %b16, c: %b17] {  # loop_2
+      %b16 = block {  # body
+        %x_103:ptr<function, i32, read_write> = var
+        %85:i32 = load %x_102
+        %86:bool = lt %85, 10i
+        if %86 [t: %b18, f: %b19] {  # if_1
+          %b18 = block {  # true
+            exit_if  # if_1
+          }
+          %b19 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b17
+      }
+      %b17 = block {  # continuing
+        %87:i32 = load %x_102
+        %88:ptr<function, i32, read_write> = access %temp, %87
+        %89:i32 = load %x_102
+        %90:ptr<function, i32, read_write> = access %data, %89
+        %91:i32 = load %90
+        store %88, %91
+        %92:i32 = load %x_102
+        %93:i32 = add %92, 1i
+        store %x_103, %93
+        %94:i32 = load %x_103
+        store %x_102, %94
+        next_iteration %b16
+      }
+    }
+    store %x_111, 1i
+    loop [b: %b20, c: %b21] {  # loop_3
+      %b20 = block {  # body
+        %x_118:ptr<function, i32, read_write> = var
+        %x_112:ptr<function, i32, read_write> = var
+        %97:i32 = load %x_111
+        %98:bool = lte %97, 9i
+        if %98 [t: %b22, f: %b23] {  # if_2
+          %b22 = block {  # true
+            exit_if  # if_2
+          }
+          %b23 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        store %x_118, 0i
+        loop [b: %b24, c: %b25] {  # loop_4
+          %b24 = block {  # body
+            %x_130:ptr<function, i32, read_write> = var
+            %x_133:ptr<function, i32, read_write> = var
+            %x_135:ptr<function, i32, read_write> = var
+            %x_157:ptr<function, i32, read_write> = var
+            %x_160:ptr<function, i32, read_write> = var
+            %x_170:ptr<function, i32, read_write> = var
+            %105:i32 = load %x_118
+            %106:bool = lt %105, 9i
+            if %106 [t: %b26, f: %b27] {  # if_3
+              %b26 = block {  # true
+                exit_if  # if_3
+              }
+              %b27 = block {  # false
+                exit_loop  # loop_4
+              }
+            }
+            %107:i32 = load %x_118
+            %108:i32 = load %x_111
+            %x_124:i32 = add %107, %108
+            %x_125:i32 = sub %x_124, 1i
+            %111:i32 = load %x_118
+            %112:i32 = load %x_111
+            %113:i32 = mul 2i, %112
+            %x_119:i32 = add %111, %113
+            %115:i32 = sub %x_119, 1i
+            %x_128:i32 = min %115, 9i
+            %117:i32 = load %x_118
+            store %x_130, %117
+            store %x_133, %x_124
+            %118:i32 = load %x_118
+            store %x_135, %118
+            loop [b: %b28, c: %b29] {  # loop_5
+              %b28 = block {  # body
+                %x_150:ptr<function, i32, read_write> = var
+                %x_153:ptr<function, i32, read_write> = var
+                %x_134:ptr<function, i32, read_write> = var
+                %x_136:ptr<function, i32, read_write> = var
+                %123:i32 = load %x_135
+                %124:bool = lte %123, %x_125
+                %125:i32 = load %x_133
+                %126:bool = lte %125, %x_128
+                %127:bool = and %124, %126
+                if %127 [t: %b30, f: %b31] {  # if_4
+                  %b30 = block {  # true
+                    exit_if  # if_4
+                  }
+                  %b31 = block {  # false
+                    exit_loop  # loop_5
+                  }
+                }
+                %x_142_save:i32 = load %x_135
+                %x_144_save:i32 = load %x_133
+                %130:i32 = load %x_130
+                %x_131:i32 = add %130, 1i
+                %132:i32 = load %x_135
+                %133:ptr<function, i32, read_write> = access %data, %132
+                %134:i32 = load %133
+                %135:i32 = load %x_133
+                %136:ptr<function, i32, read_write> = access %data, %135
+                %137:i32 = load %136
+                %138:bool = lt %134, %137
+                if %138 [t: %b32, f: %b33] {  # if_5
+                  %b32 = block {  # true
+                    %139:i32 = load %x_135
+                    %140:i32 = add %139, 1i
+                    store %x_150, %140
+                    %141:i32 = load %x_130
+                    %142:ptr<function, i32, read_write> = access %temp, %141
+                    %143:ptr<function, i32, read_write> = access %data, %x_142_save
+                    %144:i32 = load %143
+                    store %142, %144
+                    %145:i32 = load %x_133
+                    store %x_134, %145
+                    %146:i32 = load %x_150
+                    store %x_136, %146
+                    exit_if  # if_5
+                  }
+                  %b33 = block {  # false
+                    %147:i32 = load %x_133
+                    %148:i32 = add %147, 1i
+                    store %x_153, %148
+                    %149:i32 = load %x_130
+                    %150:ptr<function, i32, read_write> = access %temp, %149
+                    %151:ptr<function, i32, read_write> = access %data, %x_144_save
+                    %152:i32 = load %151
+                    store %150, %152
+                    %153:i32 = load %x_153
+                    store %x_134, %153
+                    %154:i32 = load %x_135
+                    store %x_136, %154
+                    exit_if  # if_5
+                  }
+                }
+                continue %b29
+              }
+              %b29 = block {  # continuing
+                store %x_130, %x_131
+                %155:i32 = load %x_134
+                store %x_133, %155
+                %156:i32 = load %x_136
+                store %x_135, %156
+                next_iteration %b28
+              }
+            }
+            %157:i32 = load %x_130
+            store %x_157, %157
+            %158:i32 = load %x_135
+            store %x_160, %158
+            loop [b: %b34, c: %b35] {  # loop_6
+              %b34 = block {  # body
+                %x_158:ptr<function, i32, read_write> = var
+                %x_161:ptr<function, i32, read_write> = var
+                %161:i32 = load %x_160
+                %162:bool = lt %161, 10i
+                %163:i32 = load %x_160
+                %164:bool = lte %163, %x_125
+                %165:bool = and %162, %164
+                if %165 [t: %b36, f: %b37] {  # if_6
+                  %b36 = block {  # true
+                    exit_if  # if_6
+                  }
+                  %b37 = block {  # false
+                    exit_loop  # loop_6
+                  }
+                }
+                continue %b35
+              }
+              %b35 = block {  # continuing
+                %166:i32 = load %x_157
+                %167:i32 = add %166, 1i
+                store %x_158, %167
+                %168:i32 = load %x_160
+                %169:i32 = add %168, 1i
+                store %x_161, %169
+                %170:i32 = load %x_157
+                %171:ptr<function, i32, read_write> = access %temp, %170
+                %172:i32 = load %x_160
+                %173:ptr<function, i32, read_write> = access %data, %172
+                %174:i32 = load %173
+                store %171, %174
+                %175:i32 = load %x_158
+                store %x_157, %175
+                %176:i32 = load %x_161
+                store %x_160, %176
+                next_iteration %b34
+              }
+            }
+            %177:i32 = load %x_118
+            store %x_170, %177
+            loop [b: %b38, c: %b39] {  # loop_7
+              %b38 = block {  # body
+                %x_171:ptr<function, i32, read_write> = var
+                %179:i32 = load %x_170
+                %180:bool = lte %179, %x_128
+                if %180 [t: %b40, f: %b41] {  # if_7
+                  %b40 = block {  # true
+                    exit_if  # if_7
+                  }
+                  %b41 = block {  # false
+                    exit_loop  # loop_7
+                  }
+                }
+                continue %b39
+              }
+              %b39 = block {  # continuing
+                %181:i32 = load %x_170
+                %182:ptr<function, i32, read_write> = access %data, %181
+                %183:i32 = load %x_170
+                %184:ptr<function, i32, read_write> = access %temp, %183
+                %185:i32 = load %184
+                store %182, %185
+                %186:i32 = load %x_170
+                %187:i32 = add %186, 1i
+                store %x_171, %187
+                %188:i32 = load %x_171
+                store %x_170, %188
+                next_iteration %b38
+              }
+            }
+            continue %b25
+          }
+          %b25 = block {  # continuing
+            store %x_118, %x_119
+            next_iteration %b24
+          }
+        }
+        continue %b21
+      }
+      %b21 = block {  # continuing
+        %189:i32 = load %x_111
+        %190:i32 = mul 2i, %189
+        store %x_112, %190
+        %191:i32 = load %x_112
+        store %x_111, %191
+        next_iteration %b20
+      }
+    }
+    %x_180:ptr<function, i32, read_write> = var
+    %x_198:ptr<function, f32, read_write> = var
+    %x_260:ptr<function, f32, read_write> = var
+    %195:f32 = load_vector_element %gl_FragCoord, 1u
+    %196:i32 = convert %195
+    store %x_180, %196
+    %197:i32 = load %x_180
+    %198:bool = lt %197, 30i
+    if %198 [t: %b42, f: %b43] {  # if_8
+      %b42 = block {  # true
+        %199:ptr<function, i32, read_write> = access %data, 0i
+        %200:i32 = load %199
+        %201:f32 = convert %200
+        %202:f32 = mul %201, 0.10000000149011611938f
+        %203:f32 = add 0.5f, %202
+        store %x_189, %203
+        %204:f32 = load %x_189
+        store %x_262, %204
+        exit_if  # if_8
+      }
+      %b43 = block {  # false
+        %x_207:ptr<function, f32, read_write> = var
+        %x_259:ptr<function, f32, read_write> = var
+        %207:i32 = load %x_180
+        %208:bool = lt %207, 60i
+        if %208 [t: %b44, f: %b45] {  # if_9
+          %b44 = block {  # true
+            %209:ptr<function, i32, read_write> = access %data, 1i
+            %210:i32 = load %209
+            %211:f32 = convert %210
+            %212:f32 = mul %211, 0.10000000149011611938f
+            %213:f32 = add 0.5f, %212
+            store %x_198, %213
+            %214:f32 = load %x_198
+            store %x_261, %214
+            exit_if  # if_9
+          }
+          %b45 = block {  # false
+            %x_216:ptr<function, f32, read_write> = var
+            %x_258:ptr<function, f32, read_write> = var
+            %217:i32 = load %x_180
+            %218:bool = lt %217, 90i
+            if %218 [t: %b46, f: %b47] {  # if_10
+              %b46 = block {  # true
+                %219:ptr<function, i32, read_write> = access %data, 2i
+                %220:i32 = load %219
+                %221:f32 = convert %220
+                %222:f32 = mul %221, 0.10000000149011611938f
+                %223:f32 = add 0.5f, %222
+                store %x_207, %223
+                %224:f32 = load %x_207
+                store %x_260, %224
+                exit_if  # if_10
+              }
+              %b47 = block {  # false
+                %225:i32 = load %x_180
+                %226:bool = lt %225, 120i
+                if %226 [t: %b48, f: %b49] {  # if_11
+                  %b48 = block {  # true
+                    %227:ptr<function, i32, read_write> = access %data, 3i
+                    %228:i32 = load %227
+                    %229:f32 = convert %228
+                    %230:f32 = mul %229, 0.10000000149011611938f
+                    %231:f32 = add 0.5f, %230
+                    store %x_216, %231
+                    %232:f32 = load %x_216
+                    store %x_259, %232
+                    exit_if  # if_11
+                  }
+                  %b49 = block {  # false
+                    %x_229:ptr<function, f32, read_write> = var
+                    %x_257:ptr<function, f32, read_write> = var
+                    %235:i32 = load %x_180
+                    %236:bool = lt %235, 150i
+                    if %236 [t: %b50, f: %b51] {  # if_12
+                      %b50 = block {  # true
+                        discard
+                        exit_if  # if_12
+                      }
+                      %b51 = block {  # false
+                        %x_238:ptr<function, f32, read_write> = var
+                        %x_256:ptr<function, f32, read_write> = var
+                        %239:i32 = load %x_180
+                        %240:bool = lt %239, 180i
+                        if %240 [t: %b52, f: %b53] {  # if_13
+                          %b52 = block {  # true
+                            %241:ptr<function, i32, read_write> = access %data, 5i
+                            %242:i32 = load %241
+                            %243:f32 = convert %242
+                            %244:f32 = mul %243, 0.10000000149011611938f
+                            %245:f32 = add 0.5f, %244
+                            store %x_229, %245
+                            %246:f32 = load %x_229
+                            store %x_258, %246
+                            exit_if  # if_13
+                          }
+                          %b53 = block {  # false
+                            %x_247:ptr<function, f32, read_write> = var
+                            %x_255:ptr<function, f32, read_write> = var
+                            %249:i32 = load %x_180
+                            %250:bool = lt %249, 210i
+                            if %250 [t: %b54, f: %b55] {  # if_14
+                              %b54 = block {  # true
+                                %251:ptr<function, i32, read_write> = access %data, 6i
+                                %252:i32 = load %251
+                                %253:f32 = convert %252
+                                %254:f32 = mul %253, 0.10000000149011611938f
+                                %255:f32 = add 0.5f, %254
+                                store %x_238, %255
+                                %256:f32 = load %x_238
+                                store %x_257, %256
+                                exit_if  # if_14
+                              }
+                              %b55 = block {  # false
+                                %257:i32 = load %x_180
+                                %258:bool = lt %257, 240i
+                                if %258 [t: %b56, f: %b57] {  # if_15
+                                  %b56 = block {  # true
+                                    %259:ptr<function, i32, read_write> = access %data, 7i
+                                    %260:i32 = load %259
+                                    %261:f32 = convert %260
+                                    %262:f32 = mul %261, 0.10000000149011611938f
+                                    %263:f32 = add 0.5f, %262
+                                    store %x_247, %263
+                                    %264:f32 = load %x_247
+                                    store %x_256, %264
+                                    exit_if  # if_15
+                                  }
+                                  %b57 = block {  # false
+                                    %265:i32 = load %x_180
+                                    %266:bool = lt %265, 270i
+                                    if %266 [t: %b58, f: %b59] {  # if_16
+                                      %b58 = block {  # true
+                                        exit_if  # if_16
+                                      }
+                                      %b59 = block {  # false
+                                        discard
+                                        exit_if  # if_16
+                                      }
+                                    }
+                                    %267:ptr<function, i32, read_write> = access %data, 8i
+                                    %268:i32 = load %267
+                                    %269:f32 = convert %268
+                                    %270:f32 = mul %269, 0.10000000149011611938f
+                                    %271:f32 = add 0.5f, %270
+                                    store %x_255, %271
+                                    %272:f32 = load %x_255
+                                    store %x_256, %272
+                                    exit_if  # if_15
+                                  }
+                                }
+                                %273:f32 = load %x_256
+                                store %x_257, %273
+                                exit_if  # if_14
+                              }
+                            }
+                            %274:f32 = load %x_257
+                            store %x_258, %274
+                            exit_if  # if_13
+                          }
+                        }
+                        exit_if  # if_12
+                      }
+                    }
+                    %275:f32 = load %x_258
+                    store %x_259, %275
+                    exit_if  # if_11
+                  }
+                }
+                %276:f32 = load %x_259
+                store %x_260, %276
+                exit_if  # if_10
+              }
+            }
+            %277:f32 = load %x_260
+            store %x_261, %277
+            exit_if  # if_9
+          }
+        }
+        %278:f32 = load %x_261
+        store %x_262, %278
+        exit_if  # if_8
+      }
+    }
+    %279:f32 = load %x_262
+    %280:f32 = load %x_262
+    %281:f32 = load %x_262
+    %282:vec4<f32> = construct %279, %280, %281, 1.0f
+    store %x_GLF_color, %282
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b60 {
+  %b60 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %285:void = call %main_1
+    %286:vec4<f32> = load %x_GLF_color
+    %287:main_out = construct %286
+    ret %287
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9c88446
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl.expected.ir.msl
@@ -0,0 +1,608 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, array<i32, 10>, read_write> = var
+    %data:ptr<function, array<i32, 10>, read_write> = var
+    %x_189:ptr<function, f32, read_write> = var
+    %x_261:ptr<function, f32, read_write> = var
+    %x_63_phi:ptr<function, i32, read_write> = var
+    %x_102_phi:ptr<function, i32, read_write> = var
+    %x_111_phi:ptr<function, i32, read_write> = var
+    %x_262_phi:ptr<function, f32, read_write> = var
+    %13:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %x_60:f32 = load_vector_element %13, 0u
+    %x_61:i32 = convert %x_60
+    store %x_63_phi, %x_61
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_99:ptr<function, i32, read_write> = var
+        %x_97:ptr<function, i32, read_write> = var
+        %x_95:ptr<function, i32, read_write> = var
+        %x_93:ptr<function, i32, read_write> = var
+        %x_91:ptr<function, i32, read_write> = var
+        %x_89:ptr<function, i32, read_write> = var
+        %x_87:ptr<function, i32, read_write> = var
+        %x_85:ptr<function, i32, read_write> = var
+        %x_83:ptr<function, i32, read_write> = var
+        %x_81:ptr<function, i32, read_write> = var
+        %x_64_phi:ptr<function, i32, read_write> = var
+        %x_63:i32 = load %x_63_phi
+        %x_68:i32 = add %x_63, 1i
+        store %x_64_phi, %x_68
+        switch %x_63 [c: (9i, %b5), c: (8i, %b6), c: (7i, %b7), c: (6i, %b8), c: (5i, %b9), c: (4i, %b10), c: (3i, %b11), c: (2i, %b12), c: (1i, %b13), c: (0i, %b14), c: (default, %b15)] {  # switch_1
+          %b5 = block {  # case
+            %29:ptr<function, i32, read_write> = access %data, %x_63
+            store %29, -5i
+            %30:i32 = add %x_63, 1i
+            store %x_99, %30
+            %31:i32 = load %x_99
+            store %x_64_phi, %31
+            exit_switch  # switch_1
+          }
+          %b6 = block {  # case
+            %32:ptr<function, i32, read_write> = access %data, %x_63
+            store %32, -4i
+            %33:i32 = add %x_63, 1i
+            store %x_97, %33
+            %34:i32 = load %x_97
+            store %x_64_phi, %34
+            exit_switch  # switch_1
+          }
+          %b7 = block {  # case
+            %35:ptr<function, i32, read_write> = access %data, %x_63
+            store %35, -3i
+            %36:i32 = add %x_63, 1i
+            store %x_95, %36
+            %37:i32 = load %x_95
+            store %x_64_phi, %37
+            exit_switch  # switch_1
+          }
+          %b8 = block {  # case
+            %38:ptr<function, i32, read_write> = access %data, %x_63
+            store %38, -2i
+            %39:i32 = add %x_63, 1i
+            store %x_93, %39
+            %40:i32 = load %x_93
+            store %x_64_phi, %40
+            exit_switch  # switch_1
+          }
+          %b9 = block {  # case
+            %41:ptr<function, i32, read_write> = access %data, %x_63
+            store %41, -1i
+            %42:i32 = add %x_63, 1i
+            store %x_91, %42
+            %43:i32 = load %x_91
+            store %x_64_phi, %43
+            exit_switch  # switch_1
+          }
+          %b10 = block {  # case
+            %44:ptr<function, i32, read_write> = access %data, %x_63
+            store %44, 0i
+            %45:i32 = add %x_63, 1i
+            store %x_89, %45
+            %46:i32 = load %x_89
+            store %x_64_phi, %46
+            exit_switch  # switch_1
+          }
+          %b11 = block {  # case
+            %47:ptr<function, i32, read_write> = access %data, %x_63
+            store %47, 1i
+            %48:i32 = add %x_63, 1i
+            store %x_87, %48
+            %49:i32 = load %x_87
+            store %x_64_phi, %49
+            exit_switch  # switch_1
+          }
+          %b12 = block {  # case
+            %50:ptr<function, i32, read_write> = access %data, %x_63
+            store %50, 2i
+            %51:i32 = add %x_63, 1i
+            store %x_85, %51
+            %52:i32 = load %x_85
+            store %x_64_phi, %52
+            exit_switch  # switch_1
+          }
+          %b13 = block {  # case
+            %53:ptr<function, i32, read_write> = access %data, %x_63
+            store %53, 3i
+            %54:i32 = add %x_63, 1i
+            store %x_83, %54
+            %55:i32 = load %x_83
+            store %x_64_phi, %55
+            exit_switch  # switch_1
+          }
+          %b14 = block {  # case
+            %56:ptr<function, i32, read_write> = access %data, %x_63
+            store %56, 4i
+            %57:i32 = add %x_63, 1i
+            store %x_81, %57
+            %58:i32 = load %x_81
+            store %x_64_phi, %58
+            exit_switch  # switch_1
+          }
+          %b15 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %x_64:i32 = load %x_64_phi
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        store %x_63_phi, %x_64
+        %60:bool = lt %x_64, 10i
+        %61:bool = eq %60, false
+        break_if %61 %b3
+      }
+    }
+    store %x_102_phi, 0i
+    loop [b: %b16, c: %b17] {  # loop_2
+      %b16 = block {  # body
+        %x_103:ptr<function, i32, read_write> = var
+        %x_102:i32 = load %x_102_phi
+        %64:bool = lt %x_102, 10i
+        if %64 [t: %b18, f: %b19] {  # if_1
+          %b18 = block {  # true
+            exit_if  # if_1
+          }
+          %b19 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b17
+      }
+      %b17 = block {  # continuing
+        %65:ptr<function, i32, read_write> = access %data, %x_102
+        %x_108:i32 = load %65
+        %67:ptr<function, i32, read_write> = access %temp, %x_102
+        store %67, %x_108
+        %68:i32 = add %x_102, 1i
+        store %x_103, %68
+        %69:i32 = load %x_103
+        store %x_102_phi, %69
+        next_iteration %b16
+      }
+    }
+    store %x_111_phi, 1i
+    loop [b: %b20, c: %b21] {  # loop_3
+      %b20 = block {  # body
+        %x_112:ptr<function, i32, read_write> = var
+        %x_118_phi:ptr<function, i32, read_write> = var
+        %x_111:i32 = load %x_111_phi
+        %73:bool = lte %x_111, 9i
+        if %73 [t: %b22, f: %b23] {  # if_2
+          %b22 = block {  # true
+            exit_if  # if_2
+          }
+          %b23 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        store %x_118_phi, 0i
+        loop [b: %b24, c: %b25] {  # loop_4
+          %b24 = block {  # body
+            %x_130:ptr<function, i32, read_write> = var
+            %x_135:ptr<function, i32, read_write> = var
+            %x_130_phi:ptr<function, i32, read_write> = var
+            %x_133_phi:ptr<function, i32, read_write> = var
+            %x_135_phi:ptr<function, i32, read_write> = var
+            %x_157_phi:ptr<function, i32, read_write> = var
+            %x_160_phi:ptr<function, i32, read_write> = var
+            %x_170_phi:ptr<function, i32, read_write> = var
+            %x_118:i32 = load %x_118_phi
+            %83:bool = lt %x_118, 9i
+            if %83 [t: %b26, f: %b27] {  # if_3
+              %b26 = block {  # true
+                exit_if  # if_3
+              }
+              %b27 = block {  # false
+                exit_loop  # loop_4
+              }
+            }
+            %x_124:i32 = add %x_118, %x_111
+            %x_125:i32 = sub %x_124, 1i
+            %86:i32 = mul 2i, %x_111
+            %x_119:i32 = add %x_118, %86
+            %88:i32 = sub %x_119, 1i
+            %x_128:i32 = min %88, 9i
+            store %x_130_phi, %x_118
+            store %x_133_phi, %x_124
+            store %x_135_phi, %x_118
+            loop [b: %b28, c: %b29] {  # loop_5
+              %b28 = block {  # body
+                %x_150:ptr<function, i32, read_write> = var
+                %x_153:ptr<function, i32, read_write> = var
+                %x_134_phi:ptr<function, i32, read_write> = var
+                %x_136_phi:ptr<function, i32, read_write> = var
+                %94:i32 = load %x_130_phi
+                store %x_130, %94
+                %x_133:i32 = load %x_133_phi
+                %96:i32 = load %x_135_phi
+                store %x_135, %96
+                %97:i32 = load %x_135
+                %98:bool = lte %97, %x_125
+                %99:bool = lte %x_133, %x_128
+                %100:bool = and %98, %99
+                if %100 [t: %b30, f: %b31] {  # if_4
+                  %b30 = block {  # true
+                    exit_if  # if_4
+                  }
+                  %b31 = block {  # false
+                    exit_loop  # loop_5
+                  }
+                }
+                %x_142_save:i32 = load %x_135
+                %102:ptr<function, i32, read_write> = access %data, %x_142_save
+                %x_143:i32 = load %102
+                %x_144_save:i32 = let %x_133
+                %105:ptr<function, i32, read_write> = access %data, %x_144_save
+                %x_145:i32 = load %105
+                %107:i32 = load %x_130
+                %108:i32 = add %107, 1i
+                %x_131:i32 = bitcast %108
+                %110:bool = lt %x_143, %x_145
+                if %110 [t: %b32, f: %b33] {  # if_5
+                  %b32 = block {  # true
+                    %111:i32 = load %x_135
+                    %112:i32 = add %111, 1i
+                    %113:i32 = bitcast %112
+                    store %x_150, %113
+                    %114:ptr<function, i32, read_write> = access %data, %x_142_save
+                    %x_151:i32 = load %114
+                    %116:i32 = load %x_130
+                    %117:ptr<function, i32, read_write> = access %temp, %116
+                    store %117, %x_151
+                    store %x_134_phi, %x_133
+                    %118:i32 = load %x_150
+                    store %x_136_phi, %118
+                    exit_if  # if_5
+                  }
+                  %b33 = block {  # false
+                    %119:i32 = add %x_133, 1i
+                    store %x_153, %119
+                    %120:ptr<function, i32, read_write> = access %data, %x_144_save
+                    %x_154:i32 = load %120
+                    %122:i32 = load %x_130
+                    %123:ptr<function, i32, read_write> = access %temp, %122
+                    store %123, %x_154
+                    %124:i32 = load %x_153
+                    store %x_134_phi, %124
+                    %125:i32 = load %x_135
+                    store %x_136_phi, %125
+                    exit_if  # if_5
+                  }
+                }
+                %x_134:i32 = load %x_134_phi
+                %x_136:i32 = load %x_136_phi
+                continue %b29
+              }
+              %b29 = block {  # continuing
+                store %x_130_phi, %x_131
+                store %x_133_phi, %x_134
+                store %x_135_phi, %x_136
+                next_iteration %b28
+              }
+            }
+            %128:i32 = load %x_130
+            store %x_157_phi, %128
+            %129:i32 = load %x_135
+            store %x_160_phi, %129
+            loop [b: %b34, c: %b35] {  # loop_6
+              %b34 = block {  # body
+                %x_158:ptr<function, i32, read_write> = var
+                %x_161:ptr<function, i32, read_write> = var
+                %x_157:i32 = load %x_157_phi
+                %x_160:i32 = load %x_160_phi
+                %134:bool = lt %x_160, 10i
+                %135:bool = lte %x_160, %x_125
+                %136:bool = and %134, %135
+                if %136 [t: %b36, f: %b37] {  # if_6
+                  %b36 = block {  # true
+                    exit_if  # if_6
+                  }
+                  %b37 = block {  # false
+                    exit_loop  # loop_6
+                  }
+                }
+                continue %b35
+              }
+              %b35 = block {  # continuing
+                %137:i32 = add %x_157, 1i
+                store %x_158, %137
+                %138:i32 = add %x_160, 1i
+                store %x_161, %138
+                %139:ptr<function, i32, read_write> = access %data, %x_160
+                %x_167:i32 = load %139
+                %141:ptr<function, i32, read_write> = access %temp, %x_157
+                store %141, %x_167
+                %142:i32 = load %x_158
+                store %x_157_phi, %142
+                %143:i32 = load %x_161
+                store %x_160_phi, %143
+                next_iteration %b34
+              }
+            }
+            store %x_170_phi, %x_118
+            loop [b: %b38, c: %b39] {  # loop_7
+              %b38 = block {  # body
+                %x_171:ptr<function, i32, read_write> = var
+                %x_170:i32 = load %x_170_phi
+                %146:bool = lte %x_170, %x_128
+                if %146 [t: %b40, f: %b41] {  # if_7
+                  %b40 = block {  # true
+                    exit_if  # if_7
+                  }
+                  %b41 = block {  # false
+                    exit_loop  # loop_7
+                  }
+                }
+                continue %b39
+              }
+              %b39 = block {  # continuing
+                %147:ptr<function, i32, read_write> = access %temp, %x_170
+                %x_176:i32 = load %147
+                %149:ptr<function, i32, read_write> = access %data, %x_170
+                store %149, %x_176
+                %150:i32 = add %x_170, 1i
+                store %x_171, %150
+                %151:i32 = load %x_171
+                store %x_170_phi, %151
+                next_iteration %b38
+              }
+            }
+            continue %b25
+          }
+          %b25 = block {  # continuing
+            store %x_118_phi, %x_119
+            next_iteration %b24
+          }
+        }
+        continue %b21
+      }
+      %b21 = block {  # continuing
+        %152:i32 = mul 2i, %x_111
+        store %x_112, %152
+        %153:i32 = load %x_112
+        store %x_111_phi, %153
+        next_iteration %b20
+      }
+    }
+    %x_180:ptr<function, i32, read_write> = var
+    %x_198:ptr<function, f32, read_write> = var
+    %x_260:ptr<function, f32, read_write> = var
+    %x_261_phi:ptr<function, f32, read_write> = var
+    %x_179:f32 = load_vector_element %gl_FragCoord, 1u
+    %159:i32 = convert %x_179
+    store %x_180, %159
+    %160:i32 = load %x_180
+    %161:bool = lt %160, 30i
+    if %161 [t: %b42, f: %b43] {  # if_8
+      %b42 = block {  # true
+        %162:ptr<function, i32, read_write> = access %data, 0i
+        %x_186:i32 = load %162
+        %164:f32 = convert %x_186
+        %165:f32 = mul %164, 0.10000000149011611938f
+        %166:f32 = add 0.5f, %165
+        store %x_189, %166
+        %167:f32 = load %x_189
+        store %x_262_phi, %167
+        exit_if  # if_8
+      }
+      %b43 = block {  # false
+        %x_207:ptr<function, f32, read_write> = var
+        %x_259:ptr<function, f32, read_write> = var
+        %x_260_phi:ptr<function, f32, read_write> = var
+        %171:i32 = load %x_180
+        %172:bool = lt %171, 60i
+        if %172 [t: %b44, f: %b45] {  # if_9
+          %b44 = block {  # true
+            %173:ptr<function, i32, read_write> = access %data, 1i
+            %x_195:i32 = load %173
+            %175:f32 = convert %x_195
+            %176:f32 = mul %175, 0.10000000149011611938f
+            %177:f32 = add 0.5f, %176
+            store %x_198, %177
+            %178:f32 = load %x_198
+            store %x_261_phi, %178
+            exit_if  # if_9
+          }
+          %b45 = block {  # false
+            %x_216:ptr<function, f32, read_write> = var
+            %x_258:ptr<function, f32, read_write> = var
+            %x_259_phi:ptr<function, f32, read_write> = var
+            %182:i32 = load %x_180
+            %183:bool = lt %182, 90i
+            if %183 [t: %b46, f: %b47] {  # if_10
+              %b46 = block {  # true
+                %184:ptr<function, i32, read_write> = access %data, 2i
+                %x_204:i32 = load %184
+                %186:f32 = convert %x_204
+                %187:f32 = mul %186, 0.10000000149011611938f
+                %188:f32 = add 0.5f, %187
+                store %x_207, %188
+                %189:f32 = load %x_207
+                store %x_260_phi, %189
+                exit_if  # if_10
+              }
+              %b47 = block {  # false
+                %190:i32 = load %x_180
+                %191:bool = lt %190, 120i
+                if %191 [t: %b48, f: %b49] {  # if_11
+                  %b48 = block {  # true
+                    %192:ptr<function, i32, read_write> = access %data, 3i
+                    %x_213:i32 = load %192
+                    %194:f32 = convert %x_213
+                    %195:f32 = mul %194, 0.10000000149011611938f
+                    %196:f32 = add 0.5f, %195
+                    store %x_216, %196
+                    %197:f32 = load %x_216
+                    store %x_259_phi, %197
+                    exit_if  # if_11
+                  }
+                  %b49 = block {  # false
+                    %x_229:ptr<function, f32, read_write> = var
+                    %x_257:ptr<function, f32, read_write> = var
+                    %x_258_phi:ptr<function, f32, read_write> = var
+                    %201:i32 = load %x_180
+                    %202:bool = lt %201, 150i
+                    if %202 [t: %b50, f: %b51] {  # if_12
+                      %b50 = block {  # true
+                        discard
+                        exit_if  # if_12
+                      }
+                      %b51 = block {  # false
+                        %x_238:ptr<function, f32, read_write> = var
+                        %x_256:ptr<function, f32, read_write> = var
+                        %x_257_phi:ptr<function, f32, read_write> = var
+                        %206:i32 = load %x_180
+                        %207:bool = lt %206, 180i
+                        if %207 [t: %b52, f: %b53] {  # if_13
+                          %b52 = block {  # true
+                            %208:ptr<function, i32, read_write> = access %data, 5i
+                            %x_226:i32 = load %208
+                            %210:f32 = convert %x_226
+                            %211:f32 = mul %210, 0.10000000149011611938f
+                            %212:f32 = add 0.5f, %211
+                            store %x_229, %212
+                            %213:f32 = load %x_229
+                            store %x_258_phi, %213
+                            exit_if  # if_13
+                          }
+                          %b53 = block {  # false
+                            %x_247:ptr<function, f32, read_write> = var
+                            %x_255:ptr<function, f32, read_write> = var
+                            %x_256_phi:ptr<function, f32, read_write> = var
+                            %217:i32 = load %x_180
+                            %218:bool = lt %217, 210i
+                            if %218 [t: %b54, f: %b55] {  # if_14
+                              %b54 = block {  # true
+                                %219:ptr<function, i32, read_write> = access %data, 6i
+                                %x_235:i32 = load %219
+                                %221:f32 = convert %x_235
+                                %222:f32 = mul %221, 0.10000000149011611938f
+                                %223:f32 = add 0.5f, %222
+                                store %x_238, %223
+                                %224:f32 = load %x_238
+                                store %x_257_phi, %224
+                                exit_if  # if_14
+                              }
+                              %b55 = block {  # false
+                                %225:i32 = load %x_180
+                                %226:bool = lt %225, 240i
+                                if %226 [t: %b56, f: %b57] {  # if_15
+                                  %b56 = block {  # true
+                                    %227:ptr<function, i32, read_write> = access %data, 7i
+                                    %x_244:i32 = load %227
+                                    %229:f32 = convert %x_244
+                                    %230:f32 = mul %229, 0.10000000149011611938f
+                                    %231:f32 = add 0.5f, %230
+                                    store %x_247, %231
+                                    %232:f32 = load %x_247
+                                    store %x_256_phi, %232
+                                    exit_if  # if_15
+                                  }
+                                  %b57 = block {  # false
+                                    %233:i32 = load %x_180
+                                    %234:bool = lt %233, 270i
+                                    if %234 [t: %b58, f: %b59] {  # if_16
+                                      %b58 = block {  # true
+                                        exit_if  # if_16
+                                      }
+                                      %b59 = block {  # false
+                                        discard
+                                        exit_if  # if_16
+                                      }
+                                    }
+                                    %235:ptr<function, i32, read_write> = access %data, 8i
+                                    %x_252:i32 = load %235
+                                    %237:f32 = convert %x_252
+                                    %238:f32 = mul %237, 0.10000000149011611938f
+                                    %239:f32 = add 0.5f, %238
+                                    store %x_255, %239
+                                    %240:f32 = load %x_255
+                                    store %x_256_phi, %240
+                                    exit_if  # if_15
+                                  }
+                                }
+                                %241:f32 = load %x_256_phi
+                                store %x_256, %241
+                                %242:f32 = load %x_256
+                                store %x_257_phi, %242
+                                exit_if  # if_14
+                              }
+                            }
+                            %243:f32 = load %x_257_phi
+                            store %x_257, %243
+                            %244:f32 = load %x_257
+                            store %x_258_phi, %244
+                            exit_if  # if_13
+                          }
+                        }
+                        %245:f32 = load %x_258_phi
+                        store %x_258, %245
+                        exit_if  # if_12
+                      }
+                    }
+                    %246:f32 = load %x_258
+                    store %x_259_phi, %246
+                    exit_if  # if_11
+                  }
+                }
+                %247:f32 = load %x_259_phi
+                store %x_259, %247
+                %248:f32 = load %x_259
+                store %x_260_phi, %248
+                exit_if  # if_10
+              }
+            }
+            %249:f32 = load %x_260_phi
+            store %x_260, %249
+            %250:f32 = load %x_260
+            store %x_261_phi, %250
+            exit_if  # if_9
+          }
+        }
+        %251:f32 = load %x_261_phi
+        store %x_261, %251
+        %252:f32 = load %x_261
+        store %x_262_phi, %252
+        exit_if  # if_8
+      }
+    }
+    %x_262:f32 = load %x_262_phi
+    %254:vec4<f32> = construct %x_262, %x_262, %x_262, 1.0f
+    store %x_GLF_color, %254
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b60 {
+  %b60 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %257:void = call %main_1
+    %258:vec4<f32> = load %x_GLF_color
+    %259:main_out = construct %258
+    ret %259
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1a5c34a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.spvasm.expected.ir.msl
@@ -0,0 +1,542 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %14:i32 = load %f
+    store %k, %14
+    %15:i32 = load %f
+    store %i, %15
+    %16:i32 = load %mid
+    %17:i32 = add %16, 1i
+    store %j, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %18:i32 = load %i
+        %19:i32 = load %mid
+        %20:bool = lte %18, %19
+        %21:i32 = load %j
+        %22:i32 = load %to
+        %23:bool = lte %21, %22
+        %24:bool = and %20, %23
+        if %24 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %25:i32 = load %i
+        %26:ptr<private, i32, read_write> = access %data, %25
+        %27:i32 = load %26
+        %28:i32 = load %j
+        %29:ptr<private, i32, read_write> = access %data, %28
+        %30:i32 = load %29
+        %31:bool = lt %27, %30
+        if %31 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_277:i32 = load %k
+            %33:i32 = load %k
+            %34:i32 = add %33, 1i
+            store %k, %34
+            %x_279:i32 = load %i
+            %36:i32 = load %i
+            %37:i32 = add %36, 1i
+            store %i, %37
+            %38:ptr<private, i32, read_write> = access %temp, %x_277
+            %39:ptr<private, i32, read_write> = access %data, %x_279
+            %40:i32 = load %39
+            store %38, %40
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_284:i32 = load %k
+            %42:i32 = load %k
+            %43:i32 = add %42, 1i
+            store %k, %43
+            %x_286:i32 = load %j
+            %45:i32 = load %j
+            %46:i32 = add %45, 1i
+            store %j, %46
+            %47:ptr<private, i32, read_write> = access %temp, %x_284
+            %48:ptr<private, i32, read_write> = access %data, %x_286
+            %49:i32 = load %48
+            store %47, %49
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %50:i32 = load %i
+        %51:bool = lt %50, 10i
+        %52:i32 = load %i
+        %53:i32 = load %mid
+        %54:bool = lte %52, %53
+        %55:bool = and %51, %54
+        if %55 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_302:i32 = load %k
+        %57:i32 = load %k
+        %58:i32 = add %57, 1i
+        store %k, %58
+        %x_304:i32 = load %i
+        %60:i32 = load %i
+        %61:i32 = add %60, 1i
+        store %i, %61
+        %62:ptr<private, i32, read_write> = access %temp, %x_302
+        %63:ptr<private, i32, read_write> = access %data, %x_304
+        %64:i32 = load %63
+        store %62, %64
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    %65:i32 = load %f
+    store %i_1, %65
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %66:i32 = load %i_1
+        %67:i32 = load %to
+        %68:bool = lte %66, %67
+        if %68 [t: %b15, f: %b16] {  # if_4
+          %b15 = block {  # true
+            exit_if  # if_4
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_318:i32 = load %i_1
+        %70:ptr<private, i32, read_write> = access %data, %x_318
+        %71:i32 = load %i_1
+        %72:ptr<private, i32, read_write> = access %temp, %71
+        %73:i32 = load %72
+        store %70, %73
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %74:i32 = load %i_1
+        %75:i32 = add %74, 1i
+        store %i_1, %75
+        next_iteration %b13
+      }
+    }
+    ret
+  }
+}
+%mergeSort_ = func():void -> %b17 {
+  %b17 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b18, c: %b19] {  # loop_4
+      %b18 = block {  # body
+        %87:i32 = load %m
+        %88:i32 = load %high
+        %89:bool = lte %87, %88
+        if %89 [t: %b20, f: %b21] {  # if_5
+          %b20 = block {  # true
+            exit_if  # if_5
+          }
+          %b21 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %90:i32 = load %low
+        store %i_2, %90
+        loop [b: %b22, c: %b23] {  # loop_5
+          %b22 = block {  # body
+            %91:i32 = load %i_2
+            %92:i32 = load %high
+            %93:bool = lt %91, %92
+            if %93 [t: %b24, f: %b25] {  # if_6
+              %b24 = block {  # true
+                exit_if  # if_6
+              }
+              %b25 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %94:i32 = load %i_2
+            store %f_1, %94
+            %95:i32 = load %i_2
+            %96:i32 = load %m
+            %97:i32 = add %95, %96
+            %98:i32 = sub %97, 1i
+            store %mid_1, %98
+            %99:i32 = load %i_2
+            %100:i32 = load %m
+            %101:i32 = mul 2i, %100
+            %102:i32 = add %99, %101
+            %103:i32 = sub %102, 1i
+            %104:i32 = load %high
+            %105:i32 = min %103, %104
+            store %to_1, %105
+            %106:i32 = load %f_1
+            store %param, %106
+            %107:i32 = load %mid_1
+            store %param_1, %107
+            %108:i32 = load %to_1
+            store %param_2, %108
+            %109:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b23
+          }
+          %b23 = block {  # continuing
+            %110:i32 = load %i_2
+            %111:i32 = load %m
+            %112:i32 = mul 2i, %111
+            %113:i32 = add %110, %112
+            store %i_2, %113
+            next_iteration %b22
+          }
+        }
+        continue %b19
+      }
+      %b19 = block {  # continuing
+        %114:i32 = load %m
+        %115:i32 = mul 2i, %114
+        store %m, %115
+        next_iteration %b18
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b26 {
+  %b26 = block {
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %120:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %121:f32 = load_vector_element %120, 0u
+    %122:i32 = convert %121
+    store %i_3, %122
+    loop [b: %b27, c: %b28] {  # loop_6
+      %b27 = block {  # body
+        %x_90:i32 = load %i_3
+        switch %x_90 [c: (9i, %b29), c: (8i, %b30), c: (7i, %b31), c: (6i, %b32), c: (5i, %b33), c: (4i, %b34), c: (3i, %b35), c: (2i, %b36), c: (1i, %b37), c: (0i, %b38), c: (default, %b39)] {  # switch_1
+          %b29 = block {  # case
+            %x_120:i32 = load %i_3
+            %125:ptr<private, i32, read_write> = access %data, %x_120
+            store %125, -5i
+            exit_switch  # switch_1
+          }
+          %b30 = block {  # case
+            %x_118:i32 = load %i_3
+            %127:ptr<private, i32, read_write> = access %data, %x_118
+            store %127, -4i
+            exit_switch  # switch_1
+          }
+          %b31 = block {  # case
+            %x_116:i32 = load %i_3
+            %129:ptr<private, i32, read_write> = access %data, %x_116
+            store %129, -3i
+            exit_switch  # switch_1
+          }
+          %b32 = block {  # case
+            %x_114:i32 = load %i_3
+            %131:ptr<private, i32, read_write> = access %data, %x_114
+            store %131, -2i
+            exit_switch  # switch_1
+          }
+          %b33 = block {  # case
+            %x_112:i32 = load %i_3
+            %133:ptr<private, i32, read_write> = access %data, %x_112
+            store %133, -1i
+            exit_switch  # switch_1
+          }
+          %b34 = block {  # case
+            %x_110:i32 = load %i_3
+            %135:ptr<private, i32, read_write> = access %data, %x_110
+            store %135, 0i
+            exit_switch  # switch_1
+          }
+          %b35 = block {  # case
+            %x_108:i32 = load %i_3
+            %137:ptr<private, i32, read_write> = access %data, %x_108
+            store %137, 1i
+            exit_switch  # switch_1
+          }
+          %b36 = block {  # case
+            %x_106:i32 = load %i_3
+            %139:ptr<private, i32, read_write> = access %data, %x_106
+            store %139, 2i
+            exit_switch  # switch_1
+          }
+          %b37 = block {  # case
+            %x_104:i32 = load %i_3
+            %141:ptr<private, i32, read_write> = access %data, %x_104
+            store %141, 3i
+            exit_switch  # switch_1
+          }
+          %b38 = block {  # case
+            %x_102:i32 = load %i_3
+            %143:ptr<private, i32, read_write> = access %data, %x_102
+            store %143, 4i
+            exit_switch  # switch_1
+          }
+          %b39 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %144:i32 = load %i_3
+        %145:i32 = add %144, 1i
+        store %i_3, %145
+        continue %b28
+      }
+      %b28 = block {  # continuing
+        %x_124:i32 = load %i_3
+        %147:bool = lt %x_124, 10i
+        %148:bool = eq %147, false
+        break_if %148 %b27
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b40, c: %b41] {  # loop_7
+      %b40 = block {  # body
+        %149:i32 = load %j_1
+        %150:bool = lt %149, 10i
+        if %150 [t: %b42, f: %b43] {  # if_7
+          %b42 = block {  # true
+            exit_if  # if_7
+          }
+          %b43 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %x_133:i32 = load %j_1
+        %152:ptr<private, i32, read_write> = access %temp, %x_133
+        %153:i32 = load %j_1
+        %154:ptr<private, i32, read_write> = access %data, %153
+        %155:i32 = load %154
+        store %152, %155
+        continue %b41
+      }
+      %b41 = block {  # continuing
+        %156:i32 = load %j_1
+        %157:i32 = add %156, 1i
+        store %j_1, %157
+        next_iteration %b40
+      }
+    }
+    %158:void = call %mergeSort_
+    %159:f32 = load_vector_element %gl_FragCoord, 1u
+    %160:i32 = convert %159
+    %161:bool = lt %160, 30i
+    if %161 [t: %b44, f: %b45] {  # if_8
+      %b44 = block {  # true
+        %162:ptr<private, i32, read_write> = access %data, 0i
+        %163:i32 = load %162
+        %164:f32 = convert %163
+        %165:f32 = div %164, 10.0f
+        %166:f32 = add 0.5f, %165
+        store %grey, %166
+        exit_if  # if_8
+      }
+      %b45 = block {  # false
+        %167:f32 = load_vector_element %gl_FragCoord, 1u
+        %168:i32 = convert %167
+        %169:bool = lt %168, 60i
+        if %169 [t: %b46, f: %b47] {  # if_9
+          %b46 = block {  # true
+            %170:ptr<private, i32, read_write> = access %data, 1i
+            %171:i32 = load %170
+            %172:f32 = convert %171
+            %173:f32 = div %172, 10.0f
+            %174:f32 = add 0.5f, %173
+            store %grey, %174
+            exit_if  # if_9
+          }
+          %b47 = block {  # false
+            %175:f32 = load_vector_element %gl_FragCoord, 1u
+            %176:i32 = convert %175
+            %177:bool = lt %176, 90i
+            if %177 [t: %b48, f: %b49] {  # if_10
+              %b48 = block {  # true
+                %178:ptr<private, i32, read_write> = access %data, 2i
+                %179:i32 = load %178
+                %180:f32 = convert %179
+                %181:f32 = div %180, 10.0f
+                %182:f32 = add 0.5f, %181
+                store %grey, %182
+                exit_if  # if_10
+              }
+              %b49 = block {  # false
+                %183:f32 = load_vector_element %gl_FragCoord, 1u
+                %184:i32 = convert %183
+                %185:bool = lt %184, 120i
+                if %185 [t: %b50, f: %b51] {  # if_11
+                  %b50 = block {  # true
+                    %186:ptr<private, i32, read_write> = access %data, 3i
+                    %187:i32 = load %186
+                    %188:f32 = convert %187
+                    %189:f32 = div %188, 10.0f
+                    %190:f32 = add 0.5f, %189
+                    store %grey, %190
+                    exit_if  # if_11
+                  }
+                  %b51 = block {  # false
+                    %191:f32 = load_vector_element %gl_FragCoord, 1u
+                    %192:i32 = convert %191
+                    %193:bool = lt %192, 150i
+                    if %193 [t: %b52, f: %b53] {  # if_12
+                      %b52 = block {  # true
+                        discard
+                        exit_if  # if_12
+                      }
+                      %b53 = block {  # false
+                        %194:f32 = load_vector_element %gl_FragCoord, 1u
+                        %195:i32 = convert %194
+                        %196:bool = lt %195, 180i
+                        if %196 [t: %b54, f: %b55] {  # if_13
+                          %b54 = block {  # true
+                            %197:ptr<private, i32, read_write> = access %data, 5i
+                            %198:i32 = load %197
+                            %199:f32 = convert %198
+                            %200:f32 = div %199, 10.0f
+                            %201:f32 = add 0.5f, %200
+                            store %grey, %201
+                            exit_if  # if_13
+                          }
+                          %b55 = block {  # false
+                            %202:f32 = load_vector_element %gl_FragCoord, 1u
+                            %203:i32 = convert %202
+                            %204:bool = lt %203, 210i
+                            if %204 [t: %b56, f: %b57] {  # if_14
+                              %b56 = block {  # true
+                                %205:ptr<private, i32, read_write> = access %data, 6i
+                                %206:i32 = load %205
+                                %207:f32 = convert %206
+                                %208:f32 = div %207, 10.0f
+                                %209:f32 = add 0.5f, %208
+                                store %grey, %209
+                                exit_if  # if_14
+                              }
+                              %b57 = block {  # false
+                                %210:f32 = load_vector_element %gl_FragCoord, 1u
+                                %211:i32 = convert %210
+                                %212:bool = lt %211, 240i
+                                if %212 [t: %b58, f: %b59] {  # if_15
+                                  %b58 = block {  # true
+                                    %213:ptr<private, i32, read_write> = access %data, 7i
+                                    %214:i32 = load %213
+                                    %215:f32 = convert %214
+                                    %216:f32 = div %215, 10.0f
+                                    %217:f32 = add 0.5f, %216
+                                    store %grey, %217
+                                    exit_if  # if_15
+                                  }
+                                  %b59 = block {  # false
+                                    %218:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %219:i32 = convert %218
+                                    %220:bool = lt %219, 270i
+                                    if %220 [t: %b60, f: %b61] {  # if_16
+                                      %b60 = block {  # true
+                                        %221:ptr<private, i32, read_write> = access %data, 8i
+                                        %222:i32 = load %221
+                                        %223:f32 = convert %222
+                                        %224:f32 = div %223, 10.0f
+                                        %225:f32 = add 0.5f, %224
+                                        store %grey, %225
+                                        exit_if  # if_16
+                                      }
+                                      %b61 = block {  # false
+                                        discard
+                                        exit_if  # if_16
+                                      }
+                                    }
+                                    exit_if  # if_15
+                                  }
+                                }
+                                exit_if  # if_14
+                              }
+                            }
+                            exit_if  # if_13
+                          }
+                        }
+                        exit_if  # if_12
+                      }
+                    }
+                    exit_if  # if_11
+                  }
+                }
+                exit_if  # if_10
+              }
+            }
+            exit_if  # if_9
+          }
+        }
+        exit_if  # if_8
+      }
+    }
+    %226:f32 = load %grey
+    %x_245:vec3<f32> = construct %226
+    %228:f32 = access %x_245, 0u
+    %229:f32 = access %x_245, 1u
+    %230:f32 = access %x_245, 2u
+    %231:vec4<f32> = construct %228, %229, %230, 1.0f
+    store %x_GLF_color, %231
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b62 {
+  %b62 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %234:void = call %main_1
+    %235:vec4<f32> = load %x_GLF_color
+    %236:main_out = construct %235
+    ret %236
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5763af40
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl.expected.ir.msl
@@ -0,0 +1,536 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %x_251:i32 = load %f
+    store %k, %x_251
+    %x_252:i32 = load %f
+    store %i, %x_252
+    %x_253:i32 = load %mid
+    %17:i32 = add %x_253, 1i
+    store %j, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_259:i32 = load %i
+        %x_260:i32 = load %mid
+        %x_262:i32 = load %j
+        %x_263:i32 = load %to
+        %22:bool = lte %x_259, %x_260
+        %23:bool = lte %x_262, %x_263
+        %24:bool = and %22, %23
+        if %24 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_267:i32 = load %i
+        %26:ptr<private, i32, read_write> = access %data, %x_267
+        %x_269:i32 = load %26
+        %x_270:i32 = load %j
+        %29:ptr<private, i32, read_write> = access %data, %x_270
+        %x_272:i32 = load %29
+        %31:bool = lt %x_269, %x_272
+        if %31 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_277:i32 = load %k
+            %33:i32 = add %x_277, 1i
+            store %k, %33
+            %x_279:i32 = load %i
+            %35:i32 = add %x_279, 1i
+            store %i, %35
+            %36:ptr<private, i32, read_write> = access %data, %x_279
+            %x_282:i32 = load %36
+            %38:ptr<private, i32, read_write> = access %temp, %x_277
+            store %38, %x_282
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_284:i32 = load %k
+            %40:i32 = add %x_284, 1i
+            store %k, %40
+            %x_286:i32 = load %j
+            %42:i32 = add %x_286, 1i
+            store %j, %42
+            %43:ptr<private, i32, read_write> = access %data, %x_286
+            %x_289:i32 = load %43
+            %45:ptr<private, i32, read_write> = access %temp, %x_284
+            store %45, %x_289
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %x_295:i32 = load %i
+        %x_297:i32 = load %i
+        %x_298:i32 = load %mid
+        %49:bool = lt %x_295, 10i
+        %50:bool = lte %x_297, %x_298
+        %51:bool = and %49, %50
+        if %51 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_302:i32 = load %k
+        %53:i32 = add %x_302, 1i
+        store %k, %53
+        %x_304:i32 = load %i
+        %55:i32 = add %x_304, 1i
+        store %i, %55
+        %56:ptr<private, i32, read_write> = access %data, %x_304
+        %x_307:i32 = load %56
+        %58:ptr<private, i32, read_write> = access %temp, %x_302
+        store %58, %x_307
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    %x_309:i32 = load %f
+    store %i_1, %x_309
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %x_314:i32 = load %i_1
+        %x_315:i32 = load %to
+        %62:bool = lte %x_314, %x_315
+        if %62 [t: %b15, f: %b16] {  # if_4
+          %b15 = block {  # true
+            exit_if  # if_4
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_318:i32 = load %i_1
+        %x_319:i32 = load %i_1
+        %65:ptr<private, i32, read_write> = access %temp, %x_319
+        %x_321:i32 = load %65
+        %67:ptr<private, i32, read_write> = access %data, %x_318
+        store %67, %x_321
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %x_323:i32 = load %i_1
+        %69:i32 = add %x_323, 1i
+        store %i_1, %69
+        next_iteration %b13
+      }
+    }
+    ret
+  }
+}
+%mergeSort_ = func():void -> %b17 {
+  %b17 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b18, c: %b19] {  # loop_4
+      %b18 = block {  # body
+        %x_330:i32 = load %m
+        %x_331:i32 = load %high
+        %83:bool = lte %x_330, %x_331
+        if %83 [t: %b20, f: %b21] {  # if_5
+          %b20 = block {  # true
+            exit_if  # if_5
+          }
+          %b21 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %x_334:i32 = load %low
+        store %i_2, %x_334
+        loop [b: %b22, c: %b23] {  # loop_5
+          %b22 = block {  # body
+            %x_339:i32 = load %i_2
+            %x_340:i32 = load %high
+            %87:bool = lt %x_339, %x_340
+            if %87 [t: %b24, f: %b25] {  # if_6
+              %b24 = block {  # true
+                exit_if  # if_6
+              }
+              %b25 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %x_343:i32 = load %i_2
+            store %f_1, %x_343
+            %x_344:i32 = load %i_2
+            %x_345:i32 = load %m
+            %91:i32 = add %x_344, %x_345
+            %92:i32 = sub %91, 1i
+            store %mid_1, %92
+            %x_348:i32 = load %i_2
+            %x_349:i32 = load %m
+            %x_353:i32 = load %high
+            %96:i32 = mul 2i, %x_349
+            %97:i32 = add %x_348, %96
+            %98:i32 = sub %97, 1i
+            %99:i32 = min %98, %x_353
+            store %to_1, %99
+            %x_355:i32 = load %f_1
+            store %param, %x_355
+            %x_356:i32 = load %mid_1
+            store %param_1, %x_356
+            %x_357:i32 = load %to_1
+            store %param_2, %x_357
+            %103:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b23
+          }
+          %b23 = block {  # continuing
+            %x_359:i32 = load %m
+            %x_361:i32 = load %i_2
+            %106:i32 = mul 2i, %x_359
+            %107:i32 = add %x_361, %106
+            store %i_2, %107
+            next_iteration %b22
+          }
+        }
+        continue %b19
+      }
+      %b19 = block {  # continuing
+        %x_363:i32 = load %m
+        %109:i32 = mul 2i, %x_363
+        store %m, %109
+        next_iteration %b18
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b26 {
+  %b26 = block {
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %114:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %x_84:f32 = load_vector_element %114, 0u
+    %116:i32 = convert %x_84
+    store %i_3, %116
+    loop [b: %b27, c: %b28] {  # loop_6
+      %b27 = block {  # body
+        %x_90:i32 = load %i_3
+        switch %x_90 [c: (9i, %b29), c: (8i, %b30), c: (7i, %b31), c: (6i, %b32), c: (5i, %b33), c: (4i, %b34), c: (3i, %b35), c: (2i, %b36), c: (1i, %b37), c: (0i, %b38), c: (default, %b39)] {  # switch_1
+          %b29 = block {  # case
+            %x_120:i32 = load %i_3
+            %119:ptr<private, i32, read_write> = access %data, %x_120
+            store %119, -5i
+            exit_switch  # switch_1
+          }
+          %b30 = block {  # case
+            %x_118:i32 = load %i_3
+            %121:ptr<private, i32, read_write> = access %data, %x_118
+            store %121, -4i
+            exit_switch  # switch_1
+          }
+          %b31 = block {  # case
+            %x_116:i32 = load %i_3
+            %123:ptr<private, i32, read_write> = access %data, %x_116
+            store %123, -3i
+            exit_switch  # switch_1
+          }
+          %b32 = block {  # case
+            %x_114:i32 = load %i_3
+            %125:ptr<private, i32, read_write> = access %data, %x_114
+            store %125, -2i
+            exit_switch  # switch_1
+          }
+          %b33 = block {  # case
+            %x_112:i32 = load %i_3
+            %127:ptr<private, i32, read_write> = access %data, %x_112
+            store %127, -1i
+            exit_switch  # switch_1
+          }
+          %b34 = block {  # case
+            %x_110:i32 = load %i_3
+            %129:ptr<private, i32, read_write> = access %data, %x_110
+            store %129, 0i
+            exit_switch  # switch_1
+          }
+          %b35 = block {  # case
+            %x_108:i32 = load %i_3
+            %131:ptr<private, i32, read_write> = access %data, %x_108
+            store %131, 1i
+            exit_switch  # switch_1
+          }
+          %b36 = block {  # case
+            %x_106:i32 = load %i_3
+            %133:ptr<private, i32, read_write> = access %data, %x_106
+            store %133, 2i
+            exit_switch  # switch_1
+          }
+          %b37 = block {  # case
+            %x_104:i32 = load %i_3
+            %135:ptr<private, i32, read_write> = access %data, %x_104
+            store %135, 3i
+            exit_switch  # switch_1
+          }
+          %b38 = block {  # case
+            %x_102:i32 = load %i_3
+            %137:ptr<private, i32, read_write> = access %data, %x_102
+            store %137, 4i
+            exit_switch  # switch_1
+          }
+          %b39 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %x_122:i32 = load %i_3
+        %139:i32 = add %x_122, 1i
+        store %i_3, %139
+        continue %b28
+      }
+      %b28 = block {  # continuing
+        %x_124:i32 = load %i_3
+        %141:bool = lt %x_124, 10i
+        %142:bool = eq %141, false
+        break_if %142 %b27
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b40, c: %b41] {  # loop_7
+      %b40 = block {  # body
+        %x_130:i32 = load %j_1
+        %144:bool = lt %x_130, 10i
+        if %144 [t: %b42, f: %b43] {  # if_7
+          %b42 = block {  # true
+            exit_if  # if_7
+          }
+          %b43 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %x_133:i32 = load %j_1
+        %x_134:i32 = load %j_1
+        %147:ptr<private, i32, read_write> = access %data, %x_134
+        %x_136:i32 = load %147
+        %149:ptr<private, i32, read_write> = access %temp, %x_133
+        store %149, %x_136
+        continue %b41
+      }
+      %b41 = block {  # continuing
+        %x_138:i32 = load %j_1
+        %151:i32 = add %x_138, 1i
+        store %j_1, %151
+        next_iteration %b40
+      }
+    }
+    %152:void = call %mergeSort_
+    %x_142:f32 = load_vector_element %gl_FragCoord, 1u
+    %154:i32 = convert %x_142
+    %155:bool = lt %154, 30i
+    if %155 [t: %b44, f: %b45] {  # if_8
+      %b44 = block {  # true
+        %156:ptr<private, i32, read_write> = access %data, 0i
+        %x_149:i32 = load %156
+        %158:f32 = convert %x_149
+        %159:f32 = div %158, 10.0f
+        %160:f32 = add 0.5f, %159
+        store %grey, %160
+        exit_if  # if_8
+      }
+      %b45 = block {  # false
+        %x_154:f32 = load_vector_element %gl_FragCoord, 1u
+        %162:i32 = convert %x_154
+        %163:bool = lt %162, 60i
+        if %163 [t: %b46, f: %b47] {  # if_9
+          %b46 = block {  # true
+            %164:ptr<private, i32, read_write> = access %data, 1i
+            %x_161:i32 = load %164
+            %166:f32 = convert %x_161
+            %167:f32 = div %166, 10.0f
+            %168:f32 = add 0.5f, %167
+            store %grey, %168
+            exit_if  # if_9
+          }
+          %b47 = block {  # false
+            %x_166:f32 = load_vector_element %gl_FragCoord, 1u
+            %170:i32 = convert %x_166
+            %171:bool = lt %170, 90i
+            if %171 [t: %b48, f: %b49] {  # if_10
+              %b48 = block {  # true
+                %172:ptr<private, i32, read_write> = access %data, 2i
+                %x_173:i32 = load %172
+                %174:f32 = convert %x_173
+                %175:f32 = div %174, 10.0f
+                %176:f32 = add 0.5f, %175
+                store %grey, %176
+                exit_if  # if_10
+              }
+              %b49 = block {  # false
+                %x_178:f32 = load_vector_element %gl_FragCoord, 1u
+                %178:i32 = convert %x_178
+                %179:bool = lt %178, 120i
+                if %179 [t: %b50, f: %b51] {  # if_11
+                  %b50 = block {  # true
+                    %180:ptr<private, i32, read_write> = access %data, 3i
+                    %x_185:i32 = load %180
+                    %182:f32 = convert %x_185
+                    %183:f32 = div %182, 10.0f
+                    %184:f32 = add 0.5f, %183
+                    store %grey, %184
+                    exit_if  # if_11
+                  }
+                  %b51 = block {  # false
+                    %x_190:f32 = load_vector_element %gl_FragCoord, 1u
+                    %186:i32 = convert %x_190
+                    %187:bool = lt %186, 150i
+                    if %187 [t: %b52, f: %b53] {  # if_12
+                      %b52 = block {  # true
+                        discard
+                        exit_if  # if_12
+                      }
+                      %b53 = block {  # false
+                        %x_197:f32 = load_vector_element %gl_FragCoord, 1u
+                        %189:i32 = convert %x_197
+                        %190:bool = lt %189, 180i
+                        if %190 [t: %b54, f: %b55] {  # if_13
+                          %b54 = block {  # true
+                            %191:ptr<private, i32, read_write> = access %data, 5i
+                            %x_204:i32 = load %191
+                            %193:f32 = convert %x_204
+                            %194:f32 = div %193, 10.0f
+                            %195:f32 = add 0.5f, %194
+                            store %grey, %195
+                            exit_if  # if_13
+                          }
+                          %b55 = block {  # false
+                            %x_209:f32 = load_vector_element %gl_FragCoord, 1u
+                            %197:i32 = convert %x_209
+                            %198:bool = lt %197, 210i
+                            if %198 [t: %b56, f: %b57] {  # if_14
+                              %b56 = block {  # true
+                                %199:ptr<private, i32, read_write> = access %data, 6i
+                                %x_216:i32 = load %199
+                                %201:f32 = convert %x_216
+                                %202:f32 = div %201, 10.0f
+                                %203:f32 = add 0.5f, %202
+                                store %grey, %203
+                                exit_if  # if_14
+                              }
+                              %b57 = block {  # false
+                                %x_221:f32 = load_vector_element %gl_FragCoord, 1u
+                                %205:i32 = convert %x_221
+                                %206:bool = lt %205, 240i
+                                if %206 [t: %b58, f: %b59] {  # if_15
+                                  %b58 = block {  # true
+                                    %207:ptr<private, i32, read_write> = access %data, 7i
+                                    %x_228:i32 = load %207
+                                    %209:f32 = convert %x_228
+                                    %210:f32 = div %209, 10.0f
+                                    %211:f32 = add 0.5f, %210
+                                    store %grey, %211
+                                    exit_if  # if_15
+                                  }
+                                  %b59 = block {  # false
+                                    %x_233:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %213:i32 = convert %x_233
+                                    %214:bool = lt %213, 270i
+                                    if %214 [t: %b60, f: %b61] {  # if_16
+                                      %b60 = block {  # true
+                                        %215:ptr<private, i32, read_write> = access %data, 8i
+                                        %x_240:i32 = load %215
+                                        %217:f32 = convert %x_240
+                                        %218:f32 = div %217, 10.0f
+                                        %219:f32 = add 0.5f, %218
+                                        store %grey, %219
+                                        exit_if  # if_16
+                                      }
+                                      %b61 = block {  # false
+                                        discard
+                                        exit_if  # if_16
+                                      }
+                                    }
+                                    exit_if  # if_15
+                                  }
+                                }
+                                exit_if  # if_14
+                              }
+                            }
+                            exit_if  # if_13
+                          }
+                        }
+                        exit_if  # if_12
+                      }
+                    }
+                    exit_if  # if_11
+                  }
+                }
+                exit_if  # if_10
+              }
+            }
+            exit_if  # if_9
+          }
+        }
+        exit_if  # if_8
+      }
+    }
+    %x_244:f32 = load %grey
+    %x_245:vec3<f32> = construct %x_244, %x_244, %x_244
+    %222:f32 = access %x_245, 0u
+    %223:f32 = access %x_245, 1u
+    %224:f32 = access %x_245, 2u
+    %225:vec4<f32> = construct %222, %223, %224, 1.0f
+    store %x_GLF_color, %225
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b62 {
+  %b62 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %228:void = call %main_1
+    %229:vec4<f32> = load %x_GLF_color
+    %230:main_out = construct %229
+    ret %230
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..098a59e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.spvasm.expected.ir.msl
@@ -0,0 +1,576 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %14:i32 = load %f
+    store %k, %14
+    %15:i32 = load %f
+    store %i, %15
+    %16:i32 = load %mid
+    %17:i32 = add %16, 1i
+    store %j, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %18:i32 = load %i
+        %19:i32 = load %mid
+        %20:bool = lte %18, %19
+        %21:i32 = load %j
+        %22:i32 = load %to
+        %23:bool = lte %21, %22
+        %24:bool = and %20, %23
+        if %24 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %25:i32 = load %i
+        %26:ptr<private, i32, read_write> = access %data, %25
+        %27:i32 = load %26
+        %28:i32 = load %j
+        %29:ptr<private, i32, read_write> = access %data, %28
+        %30:i32 = load %29
+        %31:bool = lt %27, %30
+        if %31 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_288:i32 = load %k
+            %33:i32 = load %k
+            %34:i32 = add %33, 1i
+            store %k, %34
+            %x_290:i32 = load %i
+            %36:i32 = load %i
+            %37:i32 = add %36, 1i
+            store %i, %37
+            %38:ptr<private, i32, read_write> = access %temp, %x_288
+            %39:ptr<private, i32, read_write> = access %data, %x_290
+            %40:i32 = load %39
+            store %38, %40
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_295:i32 = load %k
+            %42:i32 = load %k
+            %43:i32 = add %42, 1i
+            store %k, %43
+            %x_297:i32 = load %j
+            %45:i32 = load %j
+            %46:i32 = add %45, 1i
+            store %j, %46
+            %47:ptr<private, i32, read_write> = access %temp, %x_295
+            %48:ptr<private, i32, read_write> = access %data, %x_297
+            %49:i32 = load %48
+            store %47, %49
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %50:i32 = load %i
+        %51:bool = lt %50, 10i
+        %52:i32 = load %i
+        %53:i32 = load %mid
+        %54:bool = lte %52, %53
+        %55:bool = and %51, %54
+        if %55 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_313:i32 = load %k
+        %57:i32 = load %k
+        %58:i32 = add %57, 1i
+        store %k, %58
+        %x_315:i32 = load %i
+        %60:i32 = load %i
+        %61:i32 = add %60, 1i
+        store %i, %61
+        %62:ptr<private, i32, read_write> = access %temp, %x_313
+        %63:ptr<private, i32, read_write> = access %data, %x_315
+        %64:i32 = load %63
+        store %62, %64
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    %65:i32 = load %f
+    store %i_1, %65
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %66:i32 = load %i_1
+        %67:i32 = load %to
+        %68:bool = lte %66, %67
+        if %68 [t: %b15, f: %b16] {  # if_4
+          %b15 = block {  # true
+            exit_if  # if_4
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_329:i32 = load %i_1
+        %70:ptr<private, i32, read_write> = access %data, %x_329
+        %71:i32 = load %i_1
+        %72:ptr<private, i32, read_write> = access %temp, %71
+        %73:i32 = load %72
+        store %70, %73
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %74:i32 = load %i_1
+        %75:i32 = add %74, 1i
+        store %i_1, %75
+        next_iteration %b13
+      }
+    }
+    ret
+  }
+}
+%mergeSort_ = func():void -> %b17 {
+  %b17 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b18, c: %b19] {  # loop_4
+      %b18 = block {  # body
+        %87:i32 = load %m
+        %88:i32 = load %high
+        %89:bool = lte %87, %88
+        if %89 [t: %b20, f: %b21] {  # if_5
+          %b20 = block {  # true
+            exit_if  # if_5
+          }
+          %b21 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %90:i32 = load %low
+        store %i_2, %90
+        loop [b: %b22, c: %b23] {  # loop_5
+          %b22 = block {  # body
+            %91:i32 = load %i_2
+            %92:i32 = load %high
+            %93:bool = lt %91, %92
+            if %93 [t: %b24, f: %b25] {  # if_6
+              %b24 = block {  # true
+                exit_if  # if_6
+              }
+              %b25 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %94:i32 = load %i_2
+            store %f_1, %94
+            %95:i32 = load %i_2
+            %96:i32 = load %m
+            %97:i32 = add %95, %96
+            %98:i32 = sub %97, 1i
+            store %mid_1, %98
+            %99:i32 = load %i_2
+            %100:i32 = load %m
+            %101:i32 = mul 2i, %100
+            %102:i32 = add %99, %101
+            %103:i32 = sub %102, 1i
+            %104:i32 = load %high
+            %105:i32 = min %103, %104
+            store %to_1, %105
+            %106:i32 = load %f_1
+            store %param, %106
+            %107:i32 = load %mid_1
+            store %param_1, %107
+            %108:i32 = load %to_1
+            store %param_2, %108
+            %109:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b23
+          }
+          %b23 = block {  # continuing
+            %110:i32 = load %i_2
+            %111:i32 = load %m
+            %112:i32 = mul 2i, %111
+            %113:i32 = add %110, %112
+            store %i_2, %113
+            next_iteration %b22
+          }
+        }
+        continue %b19
+      }
+      %b19 = block {  # continuing
+        %114:i32 = load %m
+        %115:i32 = mul 2i, %114
+        store %m, %115
+        next_iteration %b18
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b26 {
+  %b26 = block {
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %120:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %121:f32 = load_vector_element %120, 0u
+    %122:i32 = convert %121
+    store %i_3, %122
+    loop [b: %b27, c: %b28] {  # loop_6
+      %b27 = block {  # body
+        %x_92:i32 = load %i_3
+        switch %x_92 [c: (9i, %b29), c: (8i, %b30), c: (7i, %b31), c: (6i, %b32), c: (5i, %b33), c: (4i, %b34), c: (3i, %b35), c: (2i, %b36), c: (1i, %b37), c: (0i, %b38), c: (default, %b39)] {  # switch_1
+          %b29 = block {  # case
+            %x_122:i32 = load %i_3
+            %125:ptr<private, i32, read_write> = access %data, %x_122
+            store %125, -5i
+            exit_switch  # switch_1
+          }
+          %b30 = block {  # case
+            %x_120:i32 = load %i_3
+            %127:ptr<private, i32, read_write> = access %data, %x_120
+            store %127, -4i
+            exit_switch  # switch_1
+          }
+          %b31 = block {  # case
+            %x_118:i32 = load %i_3
+            %129:ptr<private, i32, read_write> = access %data, %x_118
+            store %129, -3i
+            exit_switch  # switch_1
+          }
+          %b32 = block {  # case
+            %x_116:i32 = load %i_3
+            %131:ptr<private, i32, read_write> = access %data, %x_116
+            store %131, -2i
+            exit_switch  # switch_1
+          }
+          %b33 = block {  # case
+            %x_114:i32 = load %i_3
+            %133:ptr<private, i32, read_write> = access %data, %x_114
+            store %133, -1i
+            exit_switch  # switch_1
+          }
+          %b34 = block {  # case
+            %x_112:i32 = load %i_3
+            %135:ptr<private, i32, read_write> = access %data, %x_112
+            store %135, 0i
+            exit_switch  # switch_1
+          }
+          %b35 = block {  # case
+            %x_110:i32 = load %i_3
+            %137:ptr<private, i32, read_write> = access %data, %x_110
+            store %137, 1i
+            exit_switch  # switch_1
+          }
+          %b36 = block {  # case
+            %x_108:i32 = load %i_3
+            %139:ptr<private, i32, read_write> = access %data, %x_108
+            store %139, 2i
+            exit_switch  # switch_1
+          }
+          %b37 = block {  # case
+            %x_106:i32 = load %i_3
+            %141:ptr<private, i32, read_write> = access %data, %x_106
+            store %141, 3i
+            exit_switch  # switch_1
+          }
+          %b38 = block {  # case
+            %x_104:i32 = load %i_3
+            %143:ptr<private, i32, read_write> = access %data, %x_104
+            store %143, 4i
+            exit_switch  # switch_1
+          }
+          %b39 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %144:i32 = load %i_3
+        %145:i32 = add %144, 1i
+        store %i_3, %145
+        continue %b28
+      }
+      %b28 = block {  # continuing
+        %x_126:i32 = load %i_3
+        %147:bool = lt %x_126, 10i
+        %148:bool = eq %147, false
+        break_if %148 %b27
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b40, c: %b41] {  # loop_7
+      %b40 = block {  # body
+        %149:i32 = load %j_1
+        %x_133:bool = lt %149, 10i
+        %151:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+        %152:f32 = load_vector_element %151, 0u
+        %153:bool = lte %152, 1.0f
+        %154:bool = eq %153, false
+        if %154 [t: %b42] {  # if_7
+          %b42 = block {  # true
+            store %grey, 1.0f
+            exit_if  # if_7
+          }
+        }
+        if %x_133 [t: %b43, f: %b44] {  # if_8
+          %b43 = block {  # true
+            exit_if  # if_8
+          }
+          %b44 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %x_140:i32 = load %j_1
+        %156:ptr<private, i32, read_write> = access %temp, %x_140
+        %157:i32 = load %j_1
+        %158:ptr<private, i32, read_write> = access %data, %157
+        %159:i32 = load %158
+        store %156, %159
+        continue %b41
+      }
+      %b41 = block {  # continuing
+        %160:i32 = load %j_1
+        %161:i32 = add %160, 1i
+        store %j_1, %161
+        next_iteration %b40
+      }
+    }
+    %162:void = call %mergeSort_
+    %163:f32 = load_vector_element %gl_FragCoord, 1u
+    %164:i32 = convert %163
+    %165:bool = lt %164, 30i
+    if %165 [t: %b45, f: %b46] {  # if_9
+      %b45 = block {  # true
+        %166:ptr<private, i32, read_write> = access %data, 0i
+        %167:i32 = load %166
+        %168:f32 = convert %167
+        %169:f32 = div %168, 10.0f
+        %170:f32 = add 0.5f, %169
+        store %grey, %170
+        exit_if  # if_9
+      }
+      %b46 = block {  # false
+        %171:f32 = load_vector_element %gl_FragCoord, 1u
+        %172:i32 = convert %171
+        %173:bool = lt %172, 60i
+        if %173 [t: %b47, f: %b48] {  # if_10
+          %b47 = block {  # true
+            %174:ptr<private, i32, read_write> = access %data, 1i
+            %175:i32 = load %174
+            %176:f32 = convert %175
+            %177:f32 = div %176, 10.0f
+            %178:f32 = add 0.5f, %177
+            store %grey, %178
+            exit_if  # if_10
+          }
+          %b48 = block {  # false
+            %179:f32 = load_vector_element %gl_FragCoord, 1u
+            %180:i32 = convert %179
+            %181:bool = lt %180, 90i
+            if %181 [t: %b49, f: %b50] {  # if_11
+              %b49 = block {  # true
+                %182:ptr<private, i32, read_write> = access %data, 2i
+                %183:i32 = load %182
+                %184:f32 = convert %183
+                %185:f32 = div %184, 10.0f
+                %186:f32 = add 0.5f, %185
+                store %grey, %186
+                exit_if  # if_11
+              }
+              %b50 = block {  # false
+                %187:f32 = load_vector_element %gl_FragCoord, 1u
+                %188:i32 = convert %187
+                %189:bool = lt %188, 120i
+                if %189 [t: %b51, f: %b52] {  # if_12
+                  %b51 = block {  # true
+                    %190:ptr<private, i32, read_write> = access %data, 3i
+                    %191:i32 = load %190
+                    %192:f32 = convert %191
+                    %193:f32 = div %192, 10.0f
+                    %194:f32 = add 0.5f, %193
+                    store %grey, %194
+                    exit_if  # if_12
+                  }
+                  %b52 = block {  # false
+                    %195:f32 = load_vector_element %gl_FragCoord, 1u
+                    %196:i32 = convert %195
+                    %197:bool = lt %196, 150i
+                    if %197 [t: %b53, f: %b54] {  # if_13
+                      %b53 = block {  # true
+                        discard
+                        exit_if  # if_13
+                      }
+                      %b54 = block {  # false
+                        %198:f32 = load_vector_element %gl_FragCoord, 1u
+                        %199:i32 = convert %198
+                        %200:bool = lt %199, 180i
+                        if %200 [t: %b55, f: %b56] {  # if_14
+                          %b55 = block {  # true
+                            %201:ptr<private, i32, read_write> = access %data, 5i
+                            %202:i32 = load %201
+                            %203:f32 = convert %202
+                            %204:f32 = div %203, 10.0f
+                            %205:f32 = add 0.5f, %204
+                            store %grey, %205
+                            exit_if  # if_14
+                          }
+                          %b56 = block {  # false
+                            %206:f32 = load_vector_element %gl_FragCoord, 1u
+                            %207:i32 = convert %206
+                            %208:bool = lt %207, 210i
+                            if %208 [t: %b57, f: %b58] {  # if_15
+                              %b57 = block {  # true
+                                %209:ptr<private, i32, read_write> = access %data, 6i
+                                %210:i32 = load %209
+                                %211:f32 = convert %210
+                                %212:f32 = div %211, 10.0f
+                                %213:f32 = add 0.5f, %212
+                                store %grey, %213
+                                exit_if  # if_15
+                              }
+                              %b58 = block {  # false
+                                %214:f32 = load_vector_element %gl_FragCoord, 1u
+                                %215:i32 = convert %214
+                                %216:bool = lt %215, 240i
+                                if %216 [t: %b59, f: %b60] {  # if_16
+                                  %b59 = block {  # true
+                                    %217:ptr<private, i32, read_write> = access %data, 7i
+                                    %218:i32 = load %217
+                                    %219:f32 = convert %218
+                                    %220:f32 = div %219, 10.0f
+                                    %221:f32 = add 0.5f, %220
+                                    store %grey, %221
+                                    exit_if  # if_16
+                                  }
+                                  %b60 = block {  # false
+                                    %x_240:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %guard233:ptr<function, bool, read_write> = var, true
+                                    %224:i32 = convert %x_240
+                                    %225:bool = lt %224, 270i
+                                    if %225 [t: %b61, f: %b62] {  # if_17
+                                      %b61 = block {  # true
+                                        %226:ptr<private, i32, read_write> = access %data, 8i
+                                        %227:i32 = load %226
+                                        %228:f32 = convert %227
+                                        %229:f32 = div %228, 10.0f
+                                        %230:f32 = add 0.5f, %229
+                                        store %grey, %230
+                                        store %guard233, false
+                                        exit_if  # if_17
+                                      }
+                                      %b62 = block {  # false
+                                        %231:bool = load %guard233
+                                        if %231 [t: %b63] {  # if_18
+                                          %b63 = block {  # true
+                                            %232:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+                                            %233:f32 = load_vector_element %232, 1u
+                                            %234:bool = lt 0.0f, %233
+                                            %235:bool = eq %234, false
+                                            if %235 [t: %b64] {  # if_19
+                                              %b64 = block {  # true
+                                                store %guard233, false
+                                                exit_if  # if_19
+                                              }
+                                            }
+                                            %236:bool = load %guard233
+                                            if %236 [t: %b65] {  # if_20
+                                              %b65 = block {  # true
+                                                discard
+                                                exit_if  # if_20
+                                              }
+                                            }
+                                            exit_if  # if_18
+                                          }
+                                        }
+                                        exit_if  # if_17
+                                      }
+                                    }
+                                    exit_if  # if_16
+                                  }
+                                }
+                                exit_if  # if_15
+                              }
+                            }
+                            exit_if  # if_14
+                          }
+                        }
+                        exit_if  # if_13
+                      }
+                    }
+                    exit_if  # if_12
+                  }
+                }
+                exit_if  # if_11
+              }
+            }
+            exit_if  # if_10
+          }
+        }
+        exit_if  # if_9
+      }
+    }
+    %237:f32 = load %grey
+    %x_256:vec3<f32> = construct %237
+    %239:f32 = access %x_256, 0u
+    %240:f32 = access %x_256, 1u
+    %241:f32 = access %x_256, 2u
+    %242:vec4<f32> = construct %239, %240, %241, 1.0f
+    store %x_GLF_color, %242
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b66 {
+  %b66 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %245:void = call %main_1
+    %246:vec4<f32> = load %x_GLF_color
+    %247:main_out = construct %246
+    ret %247
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3ce10a9
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl.expected.ir.msl
@@ -0,0 +1,570 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %x_262:i32 = load %f
+    store %k, %x_262
+    %x_263:i32 = load %f
+    store %i, %x_263
+    %x_264:i32 = load %mid
+    %17:i32 = add %x_264, 1i
+    store %j, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_270:i32 = load %i
+        %x_271:i32 = load %mid
+        %x_273:i32 = load %j
+        %x_274:i32 = load %to
+        %22:bool = lte %x_270, %x_271
+        %23:bool = lte %x_273, %x_274
+        %24:bool = and %22, %23
+        if %24 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_278:i32 = load %i
+        %26:ptr<private, i32, read_write> = access %data, %x_278
+        %x_280:i32 = load %26
+        %x_281:i32 = load %j
+        %29:ptr<private, i32, read_write> = access %data, %x_281
+        %x_283:i32 = load %29
+        %31:bool = lt %x_280, %x_283
+        if %31 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_288:i32 = load %k
+            %33:i32 = add %x_288, 1i
+            store %k, %33
+            %x_290:i32 = load %i
+            %35:i32 = add %x_290, 1i
+            store %i, %35
+            %36:ptr<private, i32, read_write> = access %data, %x_290
+            %x_293:i32 = load %36
+            %38:ptr<private, i32, read_write> = access %temp, %x_288
+            store %38, %x_293
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_295:i32 = load %k
+            %40:i32 = add %x_295, 1i
+            store %k, %40
+            %x_297:i32 = load %j
+            %42:i32 = add %x_297, 1i
+            store %j, %42
+            %43:ptr<private, i32, read_write> = access %data, %x_297
+            %x_300:i32 = load %43
+            %45:ptr<private, i32, read_write> = access %temp, %x_295
+            store %45, %x_300
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %x_306:i32 = load %i
+        %x_308:i32 = load %i
+        %x_309:i32 = load %mid
+        %49:bool = lt %x_306, 10i
+        %50:bool = lte %x_308, %x_309
+        %51:bool = and %49, %50
+        if %51 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_313:i32 = load %k
+        %53:i32 = add %x_313, 1i
+        store %k, %53
+        %x_315:i32 = load %i
+        %55:i32 = add %x_315, 1i
+        store %i, %55
+        %56:ptr<private, i32, read_write> = access %data, %x_315
+        %x_318:i32 = load %56
+        %58:ptr<private, i32, read_write> = access %temp, %x_313
+        store %58, %x_318
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    %x_320:i32 = load %f
+    store %i_1, %x_320
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %x_325:i32 = load %i_1
+        %x_326:i32 = load %to
+        %62:bool = lte %x_325, %x_326
+        if %62 [t: %b15, f: %b16] {  # if_4
+          %b15 = block {  # true
+            exit_if  # if_4
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_329:i32 = load %i_1
+        %x_330:i32 = load %i_1
+        %65:ptr<private, i32, read_write> = access %temp, %x_330
+        %x_332:i32 = load %65
+        %67:ptr<private, i32, read_write> = access %data, %x_329
+        store %67, %x_332
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %x_334:i32 = load %i_1
+        %69:i32 = add %x_334, 1i
+        store %i_1, %69
+        next_iteration %b13
+      }
+    }
+    ret
+  }
+}
+%mergeSort_ = func():void -> %b17 {
+  %b17 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b18, c: %b19] {  # loop_4
+      %b18 = block {  # body
+        %x_341:i32 = load %m
+        %x_342:i32 = load %high
+        %83:bool = lte %x_341, %x_342
+        if %83 [t: %b20, f: %b21] {  # if_5
+          %b20 = block {  # true
+            exit_if  # if_5
+          }
+          %b21 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %x_345:i32 = load %low
+        store %i_2, %x_345
+        loop [b: %b22, c: %b23] {  # loop_5
+          %b22 = block {  # body
+            %x_350:i32 = load %i_2
+            %x_351:i32 = load %high
+            %87:bool = lt %x_350, %x_351
+            if %87 [t: %b24, f: %b25] {  # if_6
+              %b24 = block {  # true
+                exit_if  # if_6
+              }
+              %b25 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %x_354:i32 = load %i_2
+            store %f_1, %x_354
+            %x_355:i32 = load %i_2
+            %x_356:i32 = load %m
+            %91:i32 = add %x_355, %x_356
+            %92:i32 = sub %91, 1i
+            store %mid_1, %92
+            %x_359:i32 = load %i_2
+            %x_360:i32 = load %m
+            %x_364:i32 = load %high
+            %96:i32 = mul 2i, %x_360
+            %97:i32 = add %x_359, %96
+            %98:i32 = sub %97, 1i
+            %99:i32 = min %98, %x_364
+            store %to_1, %99
+            %x_366:i32 = load %f_1
+            store %param, %x_366
+            %x_367:i32 = load %mid_1
+            store %param_1, %x_367
+            %x_368:i32 = load %to_1
+            store %param_2, %x_368
+            %103:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b23
+          }
+          %b23 = block {  # continuing
+            %x_370:i32 = load %m
+            %x_372:i32 = load %i_2
+            %106:i32 = mul 2i, %x_370
+            %107:i32 = add %x_372, %106
+            store %i_2, %107
+            next_iteration %b22
+          }
+        }
+        continue %b19
+      }
+      %b19 = block {  # continuing
+        %x_374:i32 = load %m
+        %109:i32 = mul 2i, %x_374
+        store %m, %109
+        next_iteration %b18
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b26 {
+  %b26 = block {
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %114:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %x_86:f32 = load_vector_element %114, 0u
+    %116:i32 = convert %x_86
+    store %i_3, %116
+    loop [b: %b27, c: %b28] {  # loop_6
+      %b27 = block {  # body
+        %x_92:i32 = load %i_3
+        switch %x_92 [c: (9i, %b29), c: (8i, %b30), c: (7i, %b31), c: (6i, %b32), c: (5i, %b33), c: (4i, %b34), c: (3i, %b35), c: (2i, %b36), c: (1i, %b37), c: (0i, %b38), c: (default, %b39)] {  # switch_1
+          %b29 = block {  # case
+            %x_122:i32 = load %i_3
+            %119:ptr<private, i32, read_write> = access %data, %x_122
+            store %119, -5i
+            exit_switch  # switch_1
+          }
+          %b30 = block {  # case
+            %x_120:i32 = load %i_3
+            %121:ptr<private, i32, read_write> = access %data, %x_120
+            store %121, -4i
+            exit_switch  # switch_1
+          }
+          %b31 = block {  # case
+            %x_118:i32 = load %i_3
+            %123:ptr<private, i32, read_write> = access %data, %x_118
+            store %123, -3i
+            exit_switch  # switch_1
+          }
+          %b32 = block {  # case
+            %x_116:i32 = load %i_3
+            %125:ptr<private, i32, read_write> = access %data, %x_116
+            store %125, -2i
+            exit_switch  # switch_1
+          }
+          %b33 = block {  # case
+            %x_114:i32 = load %i_3
+            %127:ptr<private, i32, read_write> = access %data, %x_114
+            store %127, -1i
+            exit_switch  # switch_1
+          }
+          %b34 = block {  # case
+            %x_112:i32 = load %i_3
+            %129:ptr<private, i32, read_write> = access %data, %x_112
+            store %129, 0i
+            exit_switch  # switch_1
+          }
+          %b35 = block {  # case
+            %x_110:i32 = load %i_3
+            %131:ptr<private, i32, read_write> = access %data, %x_110
+            store %131, 1i
+            exit_switch  # switch_1
+          }
+          %b36 = block {  # case
+            %x_108:i32 = load %i_3
+            %133:ptr<private, i32, read_write> = access %data, %x_108
+            store %133, 2i
+            exit_switch  # switch_1
+          }
+          %b37 = block {  # case
+            %x_106:i32 = load %i_3
+            %135:ptr<private, i32, read_write> = access %data, %x_106
+            store %135, 3i
+            exit_switch  # switch_1
+          }
+          %b38 = block {  # case
+            %x_104:i32 = load %i_3
+            %137:ptr<private, i32, read_write> = access %data, %x_104
+            store %137, 4i
+            exit_switch  # switch_1
+          }
+          %b39 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %x_124:i32 = load %i_3
+        %139:i32 = add %x_124, 1i
+        store %i_3, %139
+        continue %b28
+      }
+      %b28 = block {  # continuing
+        %x_126:i32 = load %i_3
+        %141:bool = lt %x_126, 10i
+        %142:bool = eq %141, false
+        break_if %142 %b27
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b40, c: %b41] {  # loop_7
+      %b40 = block {  # body
+        %x_132:i32 = load %j_1
+        %x_133:bool = lt %x_132, 10i
+        %145:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+        %x_135:f32 = load_vector_element %145, 0u
+        %147:bool = lte %x_135, 1.0f
+        %148:bool = eq %147, false
+        if %148 [t: %b42] {  # if_7
+          %b42 = block {  # true
+            store %grey, 1.0f
+            exit_if  # if_7
+          }
+        }
+        if %x_133 [t: %b43, f: %b44] {  # if_8
+          %b43 = block {  # true
+            exit_if  # if_8
+          }
+          %b44 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %x_140:i32 = load %j_1
+        %x_141:i32 = load %j_1
+        %151:ptr<private, i32, read_write> = access %data, %x_141
+        %x_143:i32 = load %151
+        %153:ptr<private, i32, read_write> = access %temp, %x_140
+        store %153, %x_143
+        continue %b41
+      }
+      %b41 = block {  # continuing
+        %x_145:i32 = load %j_1
+        %155:i32 = add %x_145, 1i
+        store %j_1, %155
+        next_iteration %b40
+      }
+    }
+    %156:void = call %mergeSort_
+    %x_149:f32 = load_vector_element %gl_FragCoord, 1u
+    %158:i32 = convert %x_149
+    %159:bool = lt %158, 30i
+    if %159 [t: %b45, f: %b46] {  # if_9
+      %b45 = block {  # true
+        %160:ptr<private, i32, read_write> = access %data, 0i
+        %x_156:i32 = load %160
+        %162:f32 = convert %x_156
+        %163:f32 = div %162, 10.0f
+        %164:f32 = add 0.5f, %163
+        store %grey, %164
+        exit_if  # if_9
+      }
+      %b46 = block {  # false
+        %x_161:f32 = load_vector_element %gl_FragCoord, 1u
+        %166:i32 = convert %x_161
+        %167:bool = lt %166, 60i
+        if %167 [t: %b47, f: %b48] {  # if_10
+          %b47 = block {  # true
+            %168:ptr<private, i32, read_write> = access %data, 1i
+            %x_168:i32 = load %168
+            %170:f32 = convert %x_168
+            %171:f32 = div %170, 10.0f
+            %172:f32 = add 0.5f, %171
+            store %grey, %172
+            exit_if  # if_10
+          }
+          %b48 = block {  # false
+            %x_173:f32 = load_vector_element %gl_FragCoord, 1u
+            %174:i32 = convert %x_173
+            %175:bool = lt %174, 90i
+            if %175 [t: %b49, f: %b50] {  # if_11
+              %b49 = block {  # true
+                %176:ptr<private, i32, read_write> = access %data, 2i
+                %x_180:i32 = load %176
+                %178:f32 = convert %x_180
+                %179:f32 = div %178, 10.0f
+                %180:f32 = add 0.5f, %179
+                store %grey, %180
+                exit_if  # if_11
+              }
+              %b50 = block {  # false
+                %x_185:f32 = load_vector_element %gl_FragCoord, 1u
+                %182:i32 = convert %x_185
+                %183:bool = lt %182, 120i
+                if %183 [t: %b51, f: %b52] {  # if_12
+                  %b51 = block {  # true
+                    %184:ptr<private, i32, read_write> = access %data, 3i
+                    %x_192:i32 = load %184
+                    %186:f32 = convert %x_192
+                    %187:f32 = div %186, 10.0f
+                    %188:f32 = add 0.5f, %187
+                    store %grey, %188
+                    exit_if  # if_12
+                  }
+                  %b52 = block {  # false
+                    %x_197:f32 = load_vector_element %gl_FragCoord, 1u
+                    %190:i32 = convert %x_197
+                    %191:bool = lt %190, 150i
+                    if %191 [t: %b53, f: %b54] {  # if_13
+                      %b53 = block {  # true
+                        discard
+                        exit_if  # if_13
+                      }
+                      %b54 = block {  # false
+                        %x_204:f32 = load_vector_element %gl_FragCoord, 1u
+                        %193:i32 = convert %x_204
+                        %194:bool = lt %193, 180i
+                        if %194 [t: %b55, f: %b56] {  # if_14
+                          %b55 = block {  # true
+                            %195:ptr<private, i32, read_write> = access %data, 5i
+                            %x_211:i32 = load %195
+                            %197:f32 = convert %x_211
+                            %198:f32 = div %197, 10.0f
+                            %199:f32 = add 0.5f, %198
+                            store %grey, %199
+                            exit_if  # if_14
+                          }
+                          %b56 = block {  # false
+                            %x_216:f32 = load_vector_element %gl_FragCoord, 1u
+                            %201:i32 = convert %x_216
+                            %202:bool = lt %201, 210i
+                            if %202 [t: %b57, f: %b58] {  # if_15
+                              %b57 = block {  # true
+                                %203:ptr<private, i32, read_write> = access %data, 6i
+                                %x_223:i32 = load %203
+                                %205:f32 = convert %x_223
+                                %206:f32 = div %205, 10.0f
+                                %207:f32 = add 0.5f, %206
+                                store %grey, %207
+                                exit_if  # if_15
+                              }
+                              %b58 = block {  # false
+                                %x_228:f32 = load_vector_element %gl_FragCoord, 1u
+                                %209:i32 = convert %x_228
+                                %210:bool = lt %209, 240i
+                                if %210 [t: %b59, f: %b60] {  # if_16
+                                  %b59 = block {  # true
+                                    %211:ptr<private, i32, read_write> = access %data, 7i
+                                    %x_235:i32 = load %211
+                                    %213:f32 = convert %x_235
+                                    %214:f32 = div %213, 10.0f
+                                    %215:f32 = add 0.5f, %214
+                                    store %grey, %215
+                                    exit_if  # if_16
+                                  }
+                                  %b60 = block {  # false
+                                    %x_240:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %guard233:ptr<function, bool, read_write> = var, true
+                                    %218:i32 = convert %x_240
+                                    %219:bool = lt %218, 270i
+                                    if %219 [t: %b61, f: %b62] {  # if_17
+                                      %b61 = block {  # true
+                                        %220:ptr<private, i32, read_write> = access %data, 8i
+                                        %x_247:i32 = load %220
+                                        %222:f32 = convert %x_247
+                                        %223:f32 = div %222, 10.0f
+                                        %224:f32 = add 0.5f, %223
+                                        store %grey, %224
+                                        store %guard233, false
+                                        exit_if  # if_17
+                                      }
+                                      %b62 = block {  # false
+                                        %225:bool = load %guard233
+                                        if %225 [t: %b63] {  # if_18
+                                          %b63 = block {  # true
+                                            %226:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+                                            %x_252:f32 = load_vector_element %226, 1u
+                                            %228:bool = lt 0.0f, %x_252
+                                            %229:bool = eq %228, false
+                                            if %229 [t: %b64] {  # if_19
+                                              %b64 = block {  # true
+                                                store %guard233, false
+                                                exit_if  # if_19
+                                              }
+                                            }
+                                            %230:bool = load %guard233
+                                            if %230 [t: %b65] {  # if_20
+                                              %b65 = block {  # true
+                                                discard
+                                                exit_if  # if_20
+                                              }
+                                            }
+                                            exit_if  # if_18
+                                          }
+                                        }
+                                        exit_if  # if_17
+                                      }
+                                    }
+                                    exit_if  # if_16
+                                  }
+                                }
+                                exit_if  # if_15
+                              }
+                            }
+                            exit_if  # if_14
+                          }
+                        }
+                        exit_if  # if_13
+                      }
+                    }
+                    exit_if  # if_12
+                  }
+                }
+                exit_if  # if_11
+              }
+            }
+            exit_if  # if_10
+          }
+        }
+        exit_if  # if_9
+      }
+    }
+    %x_255:f32 = load %grey
+    %x_256:vec3<f32> = construct %x_255, %x_255, %x_255
+    %233:f32 = access %x_256, 0u
+    %234:f32 = access %x_256, 1u
+    %235:f32 = access %x_256, 2u
+    %236:vec4<f32> = construct %233, %234, %235, 1.0f
+    store %x_GLF_color, %236
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b66 {
+  %b66 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %239:void = call %main_1
+    %240:vec4<f32> = load %x_GLF_color
+    %241:main_out = construct %240
+    ret %241
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..a2ee86f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm.expected.ir.msl
@@ -0,0 +1,751 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %14:i32 = load %f
+    store %k, %14
+    %15:i32 = load %f
+    store %i, %15
+    %16:i32 = load %mid
+    %17:i32 = add %16, 1i
+    store %j, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_285:ptr<function, i32, read_write> = var
+        %x_286:ptr<function, i32, read_write> = var
+        %x_287:ptr<function, i32, read_write> = var
+        %x_305:ptr<function, i32, read_write> = var
+        %x_306:ptr<function, i32, read_write> = var
+        %x_307:ptr<function, i32, read_write> = var
+        %x_320:ptr<function, i32, read_write> = var
+        %x_324:ptr<function, i32, read_write> = var
+        %x_328:ptr<function, i32, read_write> = var
+        %x_339:ptr<function, i32, read_write> = var
+        %x_338:ptr<function, i32, read_write> = var
+        %x_340:ptr<function, i32, read_write> = var
+        %x_352:ptr<function, i32, read_write> = var
+        %x_351:ptr<function, i32, read_write> = var
+        %x_353:ptr<function, i32, read_write> = var
+        %x_366:ptr<function, i32, read_write> = var
+        %x_365:ptr<function, i32, read_write> = var
+        %x_367:ptr<function, i32, read_write> = var
+        %36:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+        %37:f32 = load_vector_element %36, 0u
+        %38:bool = gte 1.0f, %37
+        if %38 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            continue %b4
+          }
+        }
+        %39:i32 = load %i
+        %40:i32 = load %mid
+        %41:bool = lte %39, %40
+        %42:i32 = load %j
+        %43:i32 = load %to
+        %44:bool = lte %42, %43
+        %45:bool = and %41, %44
+        if %45 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %46:i32 = load %i
+        %47:ptr<private, i32, read_write> = access %data, %46
+        %48:i32 = load %47
+        %49:i32 = load %j
+        %50:ptr<private, i32, read_write> = access %data, %49
+        %51:i32 = load %50
+        %x_280:bool = lt %48, %51
+        if %x_280 [t: %b9, f: %b10] {  # if_3
+          %b9 = block {  # true
+            %53:i32 = load %k
+            store %x_285, %53
+            %54:i32 = load %x_285
+            store %x_287, %54
+            exit_if  # if_3
+          }
+          %b10 = block {  # false
+            store %x_286, 0i
+            %55:i32 = load %x_286
+            store %x_287, %55
+            exit_if  # if_3
+          }
+        }
+        %56:i32 = load %x_287
+        %x_288:i32 = add %56, 1i
+        if %x_280 [t: %b11] {  # if_4
+          %b11 = block {  # true
+            store %k, %x_288
+            %58:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+            %59:f32 = load_vector_element %58, 0u
+            %60:bool = lte 1.0f, %59
+            %61:bool = eq %60, false
+            if %61 [t: %b12, f: %b13] {  # if_5
+              %b12 = block {  # true
+                exit_if  # if_5
+              }
+              %b13 = block {  # false
+                continue %b4
+              }
+            }
+            exit_if  # if_4
+          }
+        }
+        %62:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+        %63:f32 = load_vector_element %62, 1u
+        %64:bool = gte %63, 0.0f
+        if %64 [t: %b14, f: %b15] {  # if_6
+          %b14 = block {  # true
+            exit_if  # if_6
+          }
+          %b15 = block {  # false
+            continue %b4
+          }
+        }
+        %x_300:i32 = let 0i
+        if %x_280 [t: %b16, f: %b17] {  # if_7
+          %b16 = block {  # true
+            %66:i32 = load %i
+            store %x_305, %66
+            %67:i32 = load %x_305
+            store %x_307, %67
+            exit_if  # if_7
+          }
+          %b17 = block {  # false
+            store %x_306, 0i
+            %68:i32 = load %x_306
+            store %x_307, %68
+            exit_if  # if_7
+          }
+        }
+        %69:i32 = load %x_307
+        %x_309:i32 = select %x_300, %69, %x_280
+        if %x_280 [t: %b18] {  # if_8
+          %b18 = block {  # true
+            %71:i32 = add %x_309, 1i
+            store %i, %71
+            exit_if  # if_8
+          }
+        }
+        %x_315:i32 = let 0i
+        if %x_280 [t: %b19, f: %b20] {  # if_9
+          %b19 = block {  # true
+            %73:ptr<private, i32, read_write> = access %data, %x_309
+            %74:i32 = load %73
+            store %x_320, %74
+            %75:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+            %x_322:f32 = load_vector_element %75, 1u
+            %77:i32 = load %x_320
+            store %x_328, %77
+            %78:bool = lte 0.0f, %x_322
+            %79:bool = eq %78, false
+            if %79 [t: %b21] {  # if_10
+              %b21 = block {  # true
+                continue %b4
+              }
+            }
+            exit_if  # if_9
+          }
+          %b20 = block {  # false
+            store %x_324, 0i
+            %80:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+            %x_326:f32 = load_vector_element %80, 1u
+            %82:i32 = load %x_324
+            store %x_328, %82
+            %83:bool = lt %x_326, 0.0f
+            %84:bool = eq %83, false
+            if %84 [t: %b22, f: %b23] {  # if_11
+              %b22 = block {  # true
+                exit_if  # if_11
+              }
+              %b23 = block {  # false
+                continue %b4
+              }
+            }
+            exit_if  # if_9
+          }
+        }
+        if %x_280 [t: %b24] {  # if_12
+          %b24 = block {  # true
+            %85:i32 = load %x_287
+            %86:ptr<private, i32, read_write> = access %temp, %85
+            %87:i32 = load %x_328
+            %88:i32 = select %x_315, %87, %x_280
+            store %86, %88
+            exit_if  # if_12
+          }
+        }
+        if %x_280 [t: %b25, f: %b26] {  # if_13
+          %b25 = block {  # true
+            store %x_339, 0i
+            %89:i32 = load %x_339
+            store %x_340, %89
+            exit_if  # if_13
+          }
+          %b26 = block {  # false
+            %90:i32 = load %k
+            store %x_338, %90
+            %91:i32 = load %x_338
+            store %x_340, %91
+            exit_if  # if_13
+          }
+        }
+        if %x_280 [t: %b27, f: %b28] {  # if_14
+          %b27 = block {  # true
+            exit_if  # if_14
+          }
+          %b28 = block {  # false
+            %92:i32 = load %x_340
+            %93:i32 = add %92, 1i
+            store %k, %93
+            exit_if  # if_14
+          }
+        }
+        %94:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+        %95:f32 = load_vector_element %94, 0u
+        %96:bool = lte 1.0f, %95
+        %97:bool = eq %96, false
+        if %97 [t: %b29, f: %b30] {  # if_15
+          %b29 = block {  # true
+            exit_if  # if_15
+          }
+          %b30 = block {  # false
+            continue %b4
+          }
+        }
+        if %x_280 [t: %b31, f: %b32] {  # if_16
+          %b31 = block {  # true
+            store %x_352, 0i
+            %98:i32 = load %x_352
+            store %x_353, %98
+            exit_if  # if_16
+          }
+          %b32 = block {  # false
+            %99:i32 = load %j
+            store %x_351, %99
+            %100:i32 = load %x_351
+            store %x_353, %100
+            exit_if  # if_16
+          }
+        }
+        %101:i32 = load %x_353
+        %x_357:i32 = select %101, 0i, %x_280
+        if %x_280 [t: %b33, f: %b34] {  # if_17
+          %b33 = block {  # true
+            exit_if  # if_17
+          }
+          %b34 = block {  # false
+            %103:i32 = add %x_357, 1i
+            store %j, %103
+            exit_if  # if_17
+          }
+        }
+        if %x_280 [t: %b35, f: %b36] {  # if_18
+          %b35 = block {  # true
+            store %x_366, 0i
+            %104:i32 = load %x_366
+            store %x_367, %104
+            exit_if  # if_18
+          }
+          %b36 = block {  # false
+            %105:ptr<private, i32, read_write> = access %data, %x_357
+            %106:i32 = load %105
+            store %x_365, %106
+            %107:i32 = load %x_365
+            store %x_367, %107
+            exit_if  # if_18
+          }
+        }
+        if %x_280 [t: %b37, f: %b38] {  # if_19
+          %b37 = block {  # true
+            exit_if  # if_19
+          }
+          %b38 = block {  # false
+            %108:i32 = load %x_340
+            %109:ptr<private, i32, read_write> = access %temp, %108
+            %110:i32 = load %x_367
+            store %109, %110
+            exit_if  # if_19
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b39, c: %b40] {  # loop_2
+      %b39 = block {  # body
+        %111:i32 = load %i
+        %112:bool = lt %111, 10i
+        %113:i32 = load %i
+        %114:i32 = load %mid
+        %115:bool = lte %113, %114
+        %116:bool = and %112, %115
+        if %116 [t: %b41, f: %b42] {  # if_20
+          %b41 = block {  # true
+            exit_if  # if_20
+          }
+          %b42 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_383:i32 = load %k
+        %118:i32 = load %k
+        %119:i32 = add %118, 1i
+        store %k, %119
+        %x_385:i32 = load %i
+        %121:i32 = load %i
+        %122:i32 = add %121, 1i
+        store %i, %122
+        %123:ptr<private, i32, read_write> = access %temp, %x_383
+        %124:ptr<private, i32, read_write> = access %data, %x_385
+        %125:i32 = load %124
+        store %123, %125
+        continue %b40
+      }
+      %b40 = block {  # continuing
+        next_iteration %b39
+      }
+    }
+    %126:i32 = load %f
+    store %i_1, %126
+    loop [b: %b43, c: %b44] {  # loop_3
+      %b43 = block {  # body
+        %127:i32 = load %i_1
+        %128:i32 = load %to
+        %129:bool = lte %127, %128
+        if %129 [t: %b45, f: %b46] {  # if_21
+          %b45 = block {  # true
+            exit_if  # if_21
+          }
+          %b46 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_399:i32 = load %i_1
+        %131:ptr<private, i32, read_write> = access %data, %x_399
+        %132:i32 = load %i_1
+        %133:ptr<private, i32, read_write> = access %temp, %132
+        %134:i32 = load %133
+        store %131, %134
+        continue %b44
+      }
+      %b44 = block {  # continuing
+        %135:i32 = load %i_1
+        %136:i32 = add %135, 1i
+        store %i_1, %136
+        next_iteration %b43
+      }
+    }
+    ret
+  }
+}
+%mergeSort_ = func():void -> %b47 {
+  %b47 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b48, c: %b49] {  # loop_4
+      %b48 = block {  # body
+        %148:i32 = load %m
+        %149:i32 = load %high
+        %150:bool = lte %148, %149
+        if %150 [t: %b50, f: %b51] {  # if_22
+          %b50 = block {  # true
+            exit_if  # if_22
+          }
+          %b51 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %151:i32 = load %low
+        store %i_2, %151
+        loop [b: %b52, c: %b53] {  # loop_5
+          %b52 = block {  # body
+            %152:i32 = load %i_2
+            %153:i32 = load %high
+            %154:bool = lt %152, %153
+            if %154 [t: %b54, f: %b55] {  # if_23
+              %b54 = block {  # true
+                exit_if  # if_23
+              }
+              %b55 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %155:i32 = load %i_2
+            store %f_1, %155
+            %156:i32 = load %i_2
+            %157:i32 = load %m
+            %158:i32 = add %156, %157
+            %159:i32 = sub %158, 1i
+            store %mid_1, %159
+            %160:i32 = load %i_2
+            %161:i32 = load %m
+            %162:i32 = mul 2i, %161
+            %163:i32 = add %160, %162
+            %164:i32 = sub %163, 1i
+            %165:i32 = load %high
+            %166:i32 = min %164, %165
+            store %to_1, %166
+            %167:i32 = load %f_1
+            store %param, %167
+            %168:i32 = load %mid_1
+            store %param_1, %168
+            %169:i32 = load %to_1
+            store %param_2, %169
+            %170:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b53
+          }
+          %b53 = block {  # continuing
+            %171:i32 = load %i_2
+            %172:i32 = load %m
+            %173:i32 = mul 2i, %172
+            %174:i32 = add %171, %173
+            store %i_2, %174
+            next_iteration %b52
+          }
+        }
+        continue %b49
+      }
+      %b49 = block {  # continuing
+        %175:i32 = load %m
+        %176:i32 = mul 2i, %175
+        store %m, %176
+        next_iteration %b48
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b56 {
+  %b56 = block {
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %181:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %182:f32 = load_vector_element %181, 0u
+    %183:i32 = convert %182
+    store %i_3, %183
+    loop [b: %b57, c: %b58] {  # loop_6
+      %b57 = block {  # body
+        %x_94:i32 = load %i_3
+        switch %x_94 [c: (9i, %b59), c: (8i, %b60), c: (7i, %b61), c: (6i, %b62), c: (5i, %b63), c: (4i, %b64), c: (3i, %b65), c: (2i, %b66), c: (1i, %b67), c: (0i, %b68), c: (default, %b69)] {  # switch_1
+          %b59 = block {  # case
+            %x_124:i32 = load %i_3
+            %186:ptr<private, i32, read_write> = access %data, %x_124
+            store %186, -5i
+            exit_switch  # switch_1
+          }
+          %b60 = block {  # case
+            %x_122:i32 = load %i_3
+            %188:ptr<private, i32, read_write> = access %data, %x_122
+            store %188, -4i
+            exit_switch  # switch_1
+          }
+          %b61 = block {  # case
+            %x_120:i32 = load %i_3
+            %190:ptr<private, i32, read_write> = access %data, %x_120
+            store %190, -3i
+            exit_switch  # switch_1
+          }
+          %b62 = block {  # case
+            %x_118:i32 = load %i_3
+            %192:ptr<private, i32, read_write> = access %data, %x_118
+            store %192, -2i
+            exit_switch  # switch_1
+          }
+          %b63 = block {  # case
+            %x_116:i32 = load %i_3
+            %194:ptr<private, i32, read_write> = access %data, %x_116
+            store %194, -1i
+            exit_switch  # switch_1
+          }
+          %b64 = block {  # case
+            %x_114:i32 = load %i_3
+            %196:ptr<private, i32, read_write> = access %data, %x_114
+            store %196, 0i
+            exit_switch  # switch_1
+          }
+          %b65 = block {  # case
+            %x_112:i32 = load %i_3
+            %198:ptr<private, i32, read_write> = access %data, %x_112
+            store %198, 1i
+            exit_switch  # switch_1
+          }
+          %b66 = block {  # case
+            %x_110:i32 = load %i_3
+            %200:ptr<private, i32, read_write> = access %data, %x_110
+            store %200, 2i
+            exit_switch  # switch_1
+          }
+          %b67 = block {  # case
+            %x_108:i32 = load %i_3
+            %202:ptr<private, i32, read_write> = access %data, %x_108
+            store %202, 3i
+            exit_switch  # switch_1
+          }
+          %b68 = block {  # case
+            %x_106:i32 = load %i_3
+            %204:ptr<private, i32, read_write> = access %data, %x_106
+            store %204, 4i
+            exit_switch  # switch_1
+          }
+          %b69 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %205:i32 = load %i_3
+        %206:i32 = add %205, 1i
+        store %i_3, %206
+        continue %b58
+      }
+      %b58 = block {  # continuing
+        %x_128:i32 = load %i_3
+        %208:bool = lt %x_128, 10i
+        %209:bool = eq %208, false
+        break_if %209 %b57
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b70, c: %b71] {  # loop_7
+      %b70 = block {  # body
+        %210:i32 = load %j_1
+        %211:bool = lt %210, 10i
+        if %211 [t: %b72, f: %b73] {  # if_24
+          %b72 = block {  # true
+            exit_if  # if_24
+          }
+          %b73 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %x_137:i32 = load %j_1
+        %213:ptr<private, i32, read_write> = access %temp, %x_137
+        %214:i32 = load %j_1
+        %215:ptr<private, i32, read_write> = access %data, %214
+        %216:i32 = load %215
+        store %213, %216
+        continue %b71
+      }
+      %b71 = block {  # continuing
+        %217:i32 = load %j_1
+        %218:i32 = add %217, 1i
+        store %j_1, %218
+        next_iteration %b70
+      }
+    }
+    %219:void = call %mergeSort_
+    %220:f32 = load_vector_element %gl_FragCoord, 1u
+    %221:i32 = convert %220
+    %222:bool = lt %221, 30i
+    if %222 [t: %b74, f: %b75] {  # if_25
+      %b74 = block {  # true
+        %223:ptr<private, i32, read_write> = access %data, 0i
+        %224:i32 = load %223
+        %225:f32 = convert %224
+        %226:f32 = div %225, 10.0f
+        %227:f32 = add 0.5f, %226
+        store %grey, %227
+        exit_if  # if_25
+      }
+      %b75 = block {  # false
+        %228:f32 = load_vector_element %gl_FragCoord, 1u
+        %229:i32 = convert %228
+        %230:bool = lt %229, 60i
+        if %230 [t: %b76, f: %b77] {  # if_26
+          %b76 = block {  # true
+            %231:ptr<private, i32, read_write> = access %data, 1i
+            %232:i32 = load %231
+            %233:f32 = convert %232
+            %234:f32 = div %233, 10.0f
+            %235:f32 = add 0.5f, %234
+            store %grey, %235
+            exit_if  # if_26
+          }
+          %b77 = block {  # false
+            %236:f32 = load_vector_element %gl_FragCoord, 1u
+            %237:i32 = convert %236
+            %238:bool = lt %237, 90i
+            if %238 [t: %b78, f: %b79] {  # if_27
+              %b78 = block {  # true
+                %239:ptr<private, i32, read_write> = access %data, 2i
+                %240:i32 = load %239
+                %241:f32 = convert %240
+                %242:f32 = div %241, 10.0f
+                %243:f32 = add 0.5f, %242
+                store %grey, %243
+                exit_if  # if_27
+              }
+              %b79 = block {  # false
+                %244:f32 = load_vector_element %gl_FragCoord, 1u
+                %245:i32 = convert %244
+                %246:bool = lt %245, 120i
+                if %246 [t: %b80, f: %b81] {  # if_28
+                  %b80 = block {  # true
+                    %247:ptr<private, i32, read_write> = access %data, 3i
+                    %248:i32 = load %247
+                    %249:f32 = convert %248
+                    %250:f32 = div %249, 10.0f
+                    %251:f32 = add 0.5f, %250
+                    store %grey, %251
+                    exit_if  # if_28
+                  }
+                  %b81 = block {  # false
+                    %252:f32 = load_vector_element %gl_FragCoord, 1u
+                    %253:i32 = convert %252
+                    %254:bool = lt %253, 150i
+                    if %254 [t: %b82, f: %b83] {  # if_29
+                      %b82 = block {  # true
+                        discard
+                        exit_if  # if_29
+                      }
+                      %b83 = block {  # false
+                        %255:f32 = load_vector_element %gl_FragCoord, 1u
+                        %256:i32 = convert %255
+                        %257:bool = lt %256, 180i
+                        if %257 [t: %b84, f: %b85] {  # if_30
+                          %b84 = block {  # true
+                            %258:ptr<private, i32, read_write> = access %data, 5i
+                            %259:i32 = load %258
+                            %260:f32 = convert %259
+                            %261:f32 = div %260, 10.0f
+                            %262:f32 = add 0.5f, %261
+                            store %grey, %262
+                            exit_if  # if_30
+                          }
+                          %b85 = block {  # false
+                            %263:f32 = load_vector_element %gl_FragCoord, 1u
+                            %264:i32 = convert %263
+                            %265:bool = lt %264, 210i
+                            if %265 [t: %b86, f: %b87] {  # if_31
+                              %b86 = block {  # true
+                                %266:ptr<private, i32, read_write> = access %data, 6i
+                                %267:i32 = load %266
+                                %268:f32 = convert %267
+                                %269:f32 = div %268, 10.0f
+                                %270:f32 = add 0.5f, %269
+                                store %grey, %270
+                                exit_if  # if_31
+                              }
+                              %b87 = block {  # false
+                                %271:f32 = load_vector_element %gl_FragCoord, 1u
+                                %272:i32 = convert %271
+                                %273:bool = lt %272, 240i
+                                if %273 [t: %b88, f: %b89] {  # if_32
+                                  %b88 = block {  # true
+                                    %274:ptr<private, i32, read_write> = access %data, 7i
+                                    %275:i32 = load %274
+                                    %276:f32 = convert %275
+                                    %277:f32 = div %276, 10.0f
+                                    %278:f32 = add 0.5f, %277
+                                    store %grey, %278
+                                    exit_if  # if_32
+                                  }
+                                  %b89 = block {  # false
+                                    %279:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %280:i32 = convert %279
+                                    %281:bool = lt %280, 270i
+                                    if %281 [t: %b90, f: %b91] {  # if_33
+                                      %b90 = block {  # true
+                                        %282:ptr<private, i32, read_write> = access %data, 8i
+                                        %283:i32 = load %282
+                                        %284:f32 = convert %283
+                                        %285:f32 = div %284, 10.0f
+                                        %286:f32 = add 0.5f, %285
+                                        store %grey, %286
+                                        exit_if  # if_33
+                                      }
+                                      %b91 = block {  # false
+                                        discard
+                                        exit_if  # if_33
+                                      }
+                                    }
+                                    exit_if  # if_32
+                                  }
+                                }
+                                exit_if  # if_31
+                              }
+                            }
+                            exit_if  # if_30
+                          }
+                        }
+                        exit_if  # if_29
+                      }
+                    }
+                    exit_if  # if_28
+                  }
+                }
+                exit_if  # if_27
+              }
+            }
+            exit_if  # if_26
+          }
+        }
+        exit_if  # if_25
+      }
+    }
+    %287:f32 = load %grey
+    %x_249:vec3<f32> = construct %287
+    %289:f32 = access %x_249, 0u
+    %290:f32 = access %x_249, 1u
+    %291:f32 = access %x_249, 2u
+    %292:vec4<f32> = construct %289, %290, %291, 1.0f
+    store %x_GLF_color, %292
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b92 {
+  %b92 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %295:void = call %main_1
+    %296:vec4<f32> = load %x_GLF_color
+    %297:main_out = construct %296
+    ret %297
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7b7ac34
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl.expected.ir.msl
@@ -0,0 +1,748 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %x_255:i32 = load %f
+    store %k, %x_255
+    %x_256:i32 = load %f
+    store %i, %x_256
+    %x_257:i32 = load %mid
+    %17:i32 = add %x_257, 1i
+    store %j, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_285:ptr<function, i32, read_write> = var
+        %x_286:ptr<function, i32, read_write> = var
+        %x_305:ptr<function, i32, read_write> = var
+        %x_306:ptr<function, i32, read_write> = var
+        %x_320:ptr<function, i32, read_write> = var
+        %x_324:ptr<function, i32, read_write> = var
+        %x_339:ptr<function, i32, read_write> = var
+        %x_338:ptr<function, i32, read_write> = var
+        %x_352:ptr<function, i32, read_write> = var
+        %x_351:ptr<function, i32, read_write> = var
+        %x_366:ptr<function, i32, read_write> = var
+        %x_365:ptr<function, i32, read_write> = var
+        %x_287_phi:ptr<function, i32, read_write> = var
+        %x_307_phi:ptr<function, i32, read_write> = var
+        %x_328_phi:ptr<function, i32, read_write> = var
+        %x_340_phi:ptr<function, i32, read_write> = var
+        %x_353_phi:ptr<function, i32, read_write> = var
+        %x_367_phi:ptr<function, i32, read_write> = var
+        %36:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+        %x_261:f32 = load_vector_element %36, 0u
+        %38:bool = gte 1.0f, %x_261
+        if %38 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            continue %b4
+          }
+        }
+        %x_266:i32 = load %i
+        %x_267:i32 = load %mid
+        %x_269:i32 = load %j
+        %x_270:i32 = load %to
+        %43:bool = lte %x_266, %x_267
+        %44:bool = lte %x_269, %x_270
+        %45:bool = and %43, %44
+        if %45 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_274:i32 = load %i
+        %47:ptr<private, i32, read_write> = access %data, %x_274
+        %x_276:i32 = load %47
+        %x_277:i32 = load %j
+        %50:ptr<private, i32, read_write> = access %data, %x_277
+        %x_279:i32 = load %50
+        %x_280:bool = lt %x_276, %x_279
+        if %x_280 [t: %b9, f: %b10] {  # if_3
+          %b9 = block {  # true
+            %53:i32 = load %k
+            store %x_285, %53
+            %54:i32 = load %x_285
+            store %x_287_phi, %54
+            exit_if  # if_3
+          }
+          %b10 = block {  # false
+            store %x_286, 0i
+            %55:i32 = load %x_286
+            store %x_287_phi, %55
+            exit_if  # if_3
+          }
+        }
+        %x_287:i32 = load %x_287_phi
+        %x_288:i32 = add %x_287, 1i
+        if %x_280 [t: %b11] {  # if_4
+          %b11 = block {  # true
+            store %k, %x_288
+            %58:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+            %x_293:f32 = load_vector_element %58, 0u
+            %60:bool = lte 1.0f, %x_293
+            %61:bool = eq %60, false
+            if %61 [t: %b12, f: %b13] {  # if_5
+              %b12 = block {  # true
+                exit_if  # if_5
+              }
+              %b13 = block {  # false
+                continue %b4
+              }
+            }
+            exit_if  # if_4
+          }
+        }
+        %62:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+        %x_297:f32 = load_vector_element %62, 1u
+        %64:bool = gte %x_297, 0.0f
+        if %64 [t: %b14, f: %b15] {  # if_6
+          %b14 = block {  # true
+            exit_if  # if_6
+          }
+          %b15 = block {  # false
+            continue %b4
+          }
+        }
+        %x_300:i32 = let 0i
+        if %x_280 [t: %b16, f: %b17] {  # if_7
+          %b16 = block {  # true
+            %66:i32 = load %i
+            store %x_305, %66
+            %67:i32 = load %x_305
+            store %x_307_phi, %67
+            exit_if  # if_7
+          }
+          %b17 = block {  # false
+            store %x_306, 0i
+            %68:i32 = load %x_306
+            store %x_307_phi, %68
+            exit_if  # if_7
+          }
+        }
+        %x_307:i32 = load %x_307_phi
+        %x_309:i32 = select %x_300, %x_307, %x_280
+        if %x_280 [t: %b18] {  # if_8
+          %b18 = block {  # true
+            %71:i32 = add %x_309, 1i
+            store %i, %71
+            exit_if  # if_8
+          }
+        }
+        %x_315:i32 = let 0i
+        if %x_280 [t: %b19, f: %b20] {  # if_9
+          %b19 = block {  # true
+            %73:ptr<private, i32, read_write> = access %data, %x_309
+            %74:i32 = load %73
+            store %x_320, %74
+            %75:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+            %x_322:f32 = load_vector_element %75, 1u
+            %77:i32 = load %x_320
+            store %x_328_phi, %77
+            %78:bool = lte 0.0f, %x_322
+            %79:bool = eq %78, false
+            if %79 [t: %b21] {  # if_10
+              %b21 = block {  # true
+                continue %b4
+              }
+            }
+            exit_if  # if_9
+          }
+          %b20 = block {  # false
+            store %x_324, 0i
+            %80:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+            %x_326:f32 = load_vector_element %80, 1u
+            %82:i32 = load %x_324
+            store %x_328_phi, %82
+            %83:bool = lt %x_326, 0.0f
+            %84:bool = eq %83, false
+            if %84 [t: %b22, f: %b23] {  # if_11
+              %b22 = block {  # true
+                exit_if  # if_11
+              }
+              %b23 = block {  # false
+                continue %b4
+              }
+            }
+            exit_if  # if_9
+          }
+        }
+        %x_328:i32 = load %x_328_phi
+        if %x_280 [t: %b24] {  # if_12
+          %b24 = block {  # true
+            %86:ptr<private, i32, read_write> = access %temp, %x_287
+            %87:i32 = select %x_315, %x_328, %x_280
+            store %86, %87
+            exit_if  # if_12
+          }
+        }
+        if %x_280 [t: %b25, f: %b26] {  # if_13
+          %b25 = block {  # true
+            store %x_339, 0i
+            %88:i32 = load %x_339
+            store %x_340_phi, %88
+            exit_if  # if_13
+          }
+          %b26 = block {  # false
+            %89:i32 = load %k
+            store %x_338, %89
+            %90:i32 = load %x_338
+            store %x_340_phi, %90
+            exit_if  # if_13
+          }
+        }
+        %x_340:i32 = load %x_340_phi
+        if %x_280 [t: %b27, f: %b28] {  # if_14
+          %b27 = block {  # true
+            exit_if  # if_14
+          }
+          %b28 = block {  # false
+            %92:i32 = add %x_340, 1i
+            store %k, %92
+            exit_if  # if_14
+          }
+        }
+        %93:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+        %x_345:f32 = load_vector_element %93, 0u
+        %95:bool = lte 1.0f, %x_345
+        %96:bool = eq %95, false
+        if %96 [t: %b29, f: %b30] {  # if_15
+          %b29 = block {  # true
+            exit_if  # if_15
+          }
+          %b30 = block {  # false
+            continue %b4
+          }
+        }
+        if %x_280 [t: %b31, f: %b32] {  # if_16
+          %b31 = block {  # true
+            store %x_352, 0i
+            %97:i32 = load %x_352
+            store %x_353_phi, %97
+            exit_if  # if_16
+          }
+          %b32 = block {  # false
+            %98:i32 = load %j
+            store %x_351, %98
+            %99:i32 = load %x_351
+            store %x_353_phi, %99
+            exit_if  # if_16
+          }
+        }
+        %x_353:i32 = load %x_353_phi
+        %x_355:i32 = let 0i
+        %x_357:i32 = select %x_353, %x_355, %x_280
+        if %x_280 [t: %b33, f: %b34] {  # if_17
+          %b33 = block {  # true
+            exit_if  # if_17
+          }
+          %b34 = block {  # false
+            %103:i32 = add %x_357, 1i
+            store %j, %103
+            exit_if  # if_17
+          }
+        }
+        if %x_280 [t: %b35, f: %b36] {  # if_18
+          %b35 = block {  # true
+            store %x_366, 0i
+            %104:i32 = load %x_366
+            store %x_367_phi, %104
+            exit_if  # if_18
+          }
+          %b36 = block {  # false
+            %105:ptr<private, i32, read_write> = access %data, %x_357
+            %106:i32 = load %105
+            store %x_365, %106
+            %107:i32 = load %x_365
+            store %x_367_phi, %107
+            exit_if  # if_18
+          }
+        }
+        %x_367:i32 = load %x_367_phi
+        if %x_280 [t: %b37, f: %b38] {  # if_19
+          %b37 = block {  # true
+            exit_if  # if_19
+          }
+          %b38 = block {  # false
+            %109:ptr<private, i32, read_write> = access %temp, %x_340
+            store %109, %x_367
+            exit_if  # if_19
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b39, c: %b40] {  # loop_2
+      %b39 = block {  # body
+        %x_376:i32 = load %i
+        %x_378:i32 = load %i
+        %x_379:i32 = load %mid
+        %113:bool = lt %x_376, 10i
+        %114:bool = lte %x_378, %x_379
+        %115:bool = and %113, %114
+        if %115 [t: %b41, f: %b42] {  # if_20
+          %b41 = block {  # true
+            exit_if  # if_20
+          }
+          %b42 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_383:i32 = load %k
+        %117:i32 = add %x_383, 1i
+        store %k, %117
+        %x_385:i32 = load %i
+        %119:i32 = add %x_385, 1i
+        store %i, %119
+        %120:ptr<private, i32, read_write> = access %data, %x_385
+        %x_388:i32 = load %120
+        %122:ptr<private, i32, read_write> = access %temp, %x_383
+        store %122, %x_388
+        continue %b40
+      }
+      %b40 = block {  # continuing
+        next_iteration %b39
+      }
+    }
+    %x_390:i32 = load %f
+    store %i_1, %x_390
+    loop [b: %b43, c: %b44] {  # loop_3
+      %b43 = block {  # body
+        %x_395:i32 = load %i_1
+        %x_396:i32 = load %to
+        %126:bool = lte %x_395, %x_396
+        if %126 [t: %b45, f: %b46] {  # if_21
+          %b45 = block {  # true
+            exit_if  # if_21
+          }
+          %b46 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_399:i32 = load %i_1
+        %x_400:i32 = load %i_1
+        %129:ptr<private, i32, read_write> = access %temp, %x_400
+        %x_402:i32 = load %129
+        %131:ptr<private, i32, read_write> = access %data, %x_399
+        store %131, %x_402
+        continue %b44
+      }
+      %b44 = block {  # continuing
+        %x_404:i32 = load %i_1
+        %133:i32 = add %x_404, 1i
+        store %i_1, %133
+        next_iteration %b43
+      }
+    }
+    ret
+  }
+}
+%mergeSort_ = func():void -> %b47 {
+  %b47 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b48, c: %b49] {  # loop_4
+      %b48 = block {  # body
+        %x_411:i32 = load %m
+        %x_412:i32 = load %high
+        %147:bool = lte %x_411, %x_412
+        if %147 [t: %b50, f: %b51] {  # if_22
+          %b50 = block {  # true
+            exit_if  # if_22
+          }
+          %b51 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %x_415:i32 = load %low
+        store %i_2, %x_415
+        loop [b: %b52, c: %b53] {  # loop_5
+          %b52 = block {  # body
+            %x_420:i32 = load %i_2
+            %x_421:i32 = load %high
+            %151:bool = lt %x_420, %x_421
+            if %151 [t: %b54, f: %b55] {  # if_23
+              %b54 = block {  # true
+                exit_if  # if_23
+              }
+              %b55 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %x_424:i32 = load %i_2
+            store %f_1, %x_424
+            %x_425:i32 = load %i_2
+            %x_426:i32 = load %m
+            %155:i32 = add %x_425, %x_426
+            %156:i32 = sub %155, 1i
+            store %mid_1, %156
+            %x_429:i32 = load %i_2
+            %x_430:i32 = load %m
+            %x_434:i32 = load %high
+            %160:i32 = mul 2i, %x_430
+            %161:i32 = add %x_429, %160
+            %162:i32 = sub %161, 1i
+            %163:i32 = min %162, %x_434
+            store %to_1, %163
+            %x_436:i32 = load %f_1
+            store %param, %x_436
+            %x_437:i32 = load %mid_1
+            store %param_1, %x_437
+            %x_438:i32 = load %to_1
+            store %param_2, %x_438
+            %167:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b53
+          }
+          %b53 = block {  # continuing
+            %x_440:i32 = load %m
+            %x_442:i32 = load %i_2
+            %170:i32 = mul 2i, %x_440
+            %171:i32 = add %x_442, %170
+            store %i_2, %171
+            next_iteration %b52
+          }
+        }
+        continue %b49
+      }
+      %b49 = block {  # continuing
+        %x_444:i32 = load %m
+        %173:i32 = mul 2i, %x_444
+        store %m, %173
+        next_iteration %b48
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b56 {
+  %b56 = block {
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %178:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %x_88:f32 = load_vector_element %178, 0u
+    %180:i32 = convert %x_88
+    store %i_3, %180
+    loop [b: %b57, c: %b58] {  # loop_6
+      %b57 = block {  # body
+        %x_94:i32 = load %i_3
+        switch %x_94 [c: (9i, %b59), c: (8i, %b60), c: (7i, %b61), c: (6i, %b62), c: (5i, %b63), c: (4i, %b64), c: (3i, %b65), c: (2i, %b66), c: (1i, %b67), c: (0i, %b68), c: (default, %b69)] {  # switch_1
+          %b59 = block {  # case
+            %x_124:i32 = load %i_3
+            %183:ptr<private, i32, read_write> = access %data, %x_124
+            store %183, -5i
+            exit_switch  # switch_1
+          }
+          %b60 = block {  # case
+            %x_122:i32 = load %i_3
+            %185:ptr<private, i32, read_write> = access %data, %x_122
+            store %185, -4i
+            exit_switch  # switch_1
+          }
+          %b61 = block {  # case
+            %x_120:i32 = load %i_3
+            %187:ptr<private, i32, read_write> = access %data, %x_120
+            store %187, -3i
+            exit_switch  # switch_1
+          }
+          %b62 = block {  # case
+            %x_118:i32 = load %i_3
+            %189:ptr<private, i32, read_write> = access %data, %x_118
+            store %189, -2i
+            exit_switch  # switch_1
+          }
+          %b63 = block {  # case
+            %x_116:i32 = load %i_3
+            %191:ptr<private, i32, read_write> = access %data, %x_116
+            store %191, -1i
+            exit_switch  # switch_1
+          }
+          %b64 = block {  # case
+            %x_114:i32 = load %i_3
+            %193:ptr<private, i32, read_write> = access %data, %x_114
+            store %193, 0i
+            exit_switch  # switch_1
+          }
+          %b65 = block {  # case
+            %x_112:i32 = load %i_3
+            %195:ptr<private, i32, read_write> = access %data, %x_112
+            store %195, 1i
+            exit_switch  # switch_1
+          }
+          %b66 = block {  # case
+            %x_110:i32 = load %i_3
+            %197:ptr<private, i32, read_write> = access %data, %x_110
+            store %197, 2i
+            exit_switch  # switch_1
+          }
+          %b67 = block {  # case
+            %x_108:i32 = load %i_3
+            %199:ptr<private, i32, read_write> = access %data, %x_108
+            store %199, 3i
+            exit_switch  # switch_1
+          }
+          %b68 = block {  # case
+            %x_106:i32 = load %i_3
+            %201:ptr<private, i32, read_write> = access %data, %x_106
+            store %201, 4i
+            exit_switch  # switch_1
+          }
+          %b69 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %x_126:i32 = load %i_3
+        %203:i32 = add %x_126, 1i
+        store %i_3, %203
+        continue %b58
+      }
+      %b58 = block {  # continuing
+        %x_128:i32 = load %i_3
+        %205:bool = lt %x_128, 10i
+        %206:bool = eq %205, false
+        break_if %206 %b57
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b70, c: %b71] {  # loop_7
+      %b70 = block {  # body
+        %x_134:i32 = load %j_1
+        %208:bool = lt %x_134, 10i
+        if %208 [t: %b72, f: %b73] {  # if_24
+          %b72 = block {  # true
+            exit_if  # if_24
+          }
+          %b73 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %x_137:i32 = load %j_1
+        %x_138:i32 = load %j_1
+        %211:ptr<private, i32, read_write> = access %data, %x_138
+        %x_140:i32 = load %211
+        %213:ptr<private, i32, read_write> = access %temp, %x_137
+        store %213, %x_140
+        continue %b71
+      }
+      %b71 = block {  # continuing
+        %x_142:i32 = load %j_1
+        %215:i32 = add %x_142, 1i
+        store %j_1, %215
+        next_iteration %b70
+      }
+    }
+    %216:void = call %mergeSort_
+    %x_146:f32 = load_vector_element %gl_FragCoord, 1u
+    %218:i32 = convert %x_146
+    %219:bool = lt %218, 30i
+    if %219 [t: %b74, f: %b75] {  # if_25
+      %b74 = block {  # true
+        %220:ptr<private, i32, read_write> = access %data, 0i
+        %x_153:i32 = load %220
+        %222:f32 = convert %x_153
+        %223:f32 = div %222, 10.0f
+        %224:f32 = add 0.5f, %223
+        store %grey, %224
+        exit_if  # if_25
+      }
+      %b75 = block {  # false
+        %x_158:f32 = load_vector_element %gl_FragCoord, 1u
+        %226:i32 = convert %x_158
+        %227:bool = lt %226, 60i
+        if %227 [t: %b76, f: %b77] {  # if_26
+          %b76 = block {  # true
+            %228:ptr<private, i32, read_write> = access %data, 1i
+            %x_165:i32 = load %228
+            %230:f32 = convert %x_165
+            %231:f32 = div %230, 10.0f
+            %232:f32 = add 0.5f, %231
+            store %grey, %232
+            exit_if  # if_26
+          }
+          %b77 = block {  # false
+            %x_170:f32 = load_vector_element %gl_FragCoord, 1u
+            %234:i32 = convert %x_170
+            %235:bool = lt %234, 90i
+            if %235 [t: %b78, f: %b79] {  # if_27
+              %b78 = block {  # true
+                %236:ptr<private, i32, read_write> = access %data, 2i
+                %x_177:i32 = load %236
+                %238:f32 = convert %x_177
+                %239:f32 = div %238, 10.0f
+                %240:f32 = add 0.5f, %239
+                store %grey, %240
+                exit_if  # if_27
+              }
+              %b79 = block {  # false
+                %x_182:f32 = load_vector_element %gl_FragCoord, 1u
+                %242:i32 = convert %x_182
+                %243:bool = lt %242, 120i
+                if %243 [t: %b80, f: %b81] {  # if_28
+                  %b80 = block {  # true
+                    %244:ptr<private, i32, read_write> = access %data, 3i
+                    %x_189:i32 = load %244
+                    %246:f32 = convert %x_189
+                    %247:f32 = div %246, 10.0f
+                    %248:f32 = add 0.5f, %247
+                    store %grey, %248
+                    exit_if  # if_28
+                  }
+                  %b81 = block {  # false
+                    %x_194:f32 = load_vector_element %gl_FragCoord, 1u
+                    %250:i32 = convert %x_194
+                    %251:bool = lt %250, 150i
+                    if %251 [t: %b82, f: %b83] {  # if_29
+                      %b82 = block {  # true
+                        discard
+                        exit_if  # if_29
+                      }
+                      %b83 = block {  # false
+                        %x_201:f32 = load_vector_element %gl_FragCoord, 1u
+                        %253:i32 = convert %x_201
+                        %254:bool = lt %253, 180i
+                        if %254 [t: %b84, f: %b85] {  # if_30
+                          %b84 = block {  # true
+                            %255:ptr<private, i32, read_write> = access %data, 5i
+                            %x_208:i32 = load %255
+                            %257:f32 = convert %x_208
+                            %258:f32 = div %257, 10.0f
+                            %259:f32 = add 0.5f, %258
+                            store %grey, %259
+                            exit_if  # if_30
+                          }
+                          %b85 = block {  # false
+                            %x_213:f32 = load_vector_element %gl_FragCoord, 1u
+                            %261:i32 = convert %x_213
+                            %262:bool = lt %261, 210i
+                            if %262 [t: %b86, f: %b87] {  # if_31
+                              %b86 = block {  # true
+                                %263:ptr<private, i32, read_write> = access %data, 6i
+                                %x_220:i32 = load %263
+                                %265:f32 = convert %x_220
+                                %266:f32 = div %265, 10.0f
+                                %267:f32 = add 0.5f, %266
+                                store %grey, %267
+                                exit_if  # if_31
+                              }
+                              %b87 = block {  # false
+                                %x_225:f32 = load_vector_element %gl_FragCoord, 1u
+                                %269:i32 = convert %x_225
+                                %270:bool = lt %269, 240i
+                                if %270 [t: %b88, f: %b89] {  # if_32
+                                  %b88 = block {  # true
+                                    %271:ptr<private, i32, read_write> = access %data, 7i
+                                    %x_232:i32 = load %271
+                                    %273:f32 = convert %x_232
+                                    %274:f32 = div %273, 10.0f
+                                    %275:f32 = add 0.5f, %274
+                                    store %grey, %275
+                                    exit_if  # if_32
+                                  }
+                                  %b89 = block {  # false
+                                    %x_237:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %277:i32 = convert %x_237
+                                    %278:bool = lt %277, 270i
+                                    if %278 [t: %b90, f: %b91] {  # if_33
+                                      %b90 = block {  # true
+                                        %279:ptr<private, i32, read_write> = access %data, 8i
+                                        %x_244:i32 = load %279
+                                        %281:f32 = convert %x_244
+                                        %282:f32 = div %281, 10.0f
+                                        %283:f32 = add 0.5f, %282
+                                        store %grey, %283
+                                        exit_if  # if_33
+                                      }
+                                      %b91 = block {  # false
+                                        discard
+                                        exit_if  # if_33
+                                      }
+                                    }
+                                    exit_if  # if_32
+                                  }
+                                }
+                                exit_if  # if_31
+                              }
+                            }
+                            exit_if  # if_30
+                          }
+                        }
+                        exit_if  # if_29
+                      }
+                    }
+                    exit_if  # if_28
+                  }
+                }
+                exit_if  # if_27
+              }
+            }
+            exit_if  # if_26
+          }
+        }
+        exit_if  # if_25
+      }
+    }
+    %x_248:f32 = load %grey
+    %x_249:vec3<f32> = construct %x_248, %x_248, %x_248
+    %286:f32 = access %x_249, 0u
+    %287:f32 = access %x_249, 1u
+    %288:f32 = access %x_249, 2u
+    %289:vec4<f32> = construct %286, %287, %288, 1.0f
+    store %x_GLF_color, %289
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b92 {
+  %b92 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %292:void = call %main_1
+    %293:vec4<f32> = load %x_GLF_color
+    %294:main_out = construct %293
+    ret %294
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..deefa9c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm.expected.ir.msl
@@ -0,0 +1,748 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %14:i32 = load %f
+    store %k, %14
+    %15:i32 = load %f
+    store %i, %15
+    %16:i32 = load %mid
+    %17:i32 = add %16, 1i
+    store %j, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_283:ptr<function, i32, read_write> = var
+        %x_284:ptr<function, i32, read_write> = var
+        %x_285:ptr<function, i32, read_write> = var
+        %x_303:ptr<function, i32, read_write> = var
+        %x_304:ptr<function, i32, read_write> = var
+        %x_305:ptr<function, i32, read_write> = var
+        %x_318:ptr<function, i32, read_write> = var
+        %x_322:ptr<function, i32, read_write> = var
+        %x_326:ptr<function, i32, read_write> = var
+        %x_337:ptr<function, i32, read_write> = var
+        %x_336:ptr<function, i32, read_write> = var
+        %x_338:ptr<function, i32, read_write> = var
+        %x_350:ptr<function, i32, read_write> = var
+        %x_349:ptr<function, i32, read_write> = var
+        %x_351:ptr<function, i32, read_write> = var
+        %x_364:ptr<function, i32, read_write> = var
+        %x_363:ptr<function, i32, read_write> = var
+        %x_365:ptr<function, i32, read_write> = var
+        if true [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            continue %b4
+          }
+        }
+        %36:i32 = load %i
+        %37:i32 = load %mid
+        %38:bool = lte %36, %37
+        %39:i32 = load %j
+        %40:i32 = load %to
+        %41:bool = lte %39, %40
+        %42:bool = and %38, %41
+        if %42 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %43:i32 = load %i
+        %44:ptr<private, i32, read_write> = access %data, %43
+        %45:i32 = load %44
+        %46:i32 = load %j
+        %47:ptr<private, i32, read_write> = access %data, %46
+        %48:i32 = load %47
+        %x_278:bool = lt %45, %48
+        if %x_278 [t: %b9, f: %b10] {  # if_3
+          %b9 = block {  # true
+            %50:i32 = load %k
+            store %x_283, %50
+            %51:i32 = load %x_283
+            store %x_285, %51
+            exit_if  # if_3
+          }
+          %b10 = block {  # false
+            store %x_284, 0i
+            %52:i32 = load %x_284
+            store %x_285, %52
+            exit_if  # if_3
+          }
+        }
+        %53:i32 = load %x_285
+        %x_286:i32 = add %53, 1i
+        if %x_278 [t: %b11] {  # if_4
+          %b11 = block {  # true
+            store %k, %x_286
+            %55:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+            %56:f32 = load_vector_element %55, 0u
+            %57:bool = lte 1.0f, %56
+            %58:bool = eq %57, false
+            if %58 [t: %b12, f: %b13] {  # if_5
+              %b12 = block {  # true
+                exit_if  # if_5
+              }
+              %b13 = block {  # false
+                continue %b4
+              }
+            }
+            exit_if  # if_4
+          }
+        }
+        %59:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+        %60:f32 = load_vector_element %59, 1u
+        %61:bool = gte %60, 0.0f
+        if %61 [t: %b14, f: %b15] {  # if_6
+          %b14 = block {  # true
+            exit_if  # if_6
+          }
+          %b15 = block {  # false
+            continue %b4
+          }
+        }
+        %x_298:i32 = let 0i
+        if %x_278 [t: %b16, f: %b17] {  # if_7
+          %b16 = block {  # true
+            %63:i32 = load %i
+            store %x_303, %63
+            %64:i32 = load %x_303
+            store %x_305, %64
+            exit_if  # if_7
+          }
+          %b17 = block {  # false
+            store %x_304, 0i
+            %65:i32 = load %x_304
+            store %x_305, %65
+            exit_if  # if_7
+          }
+        }
+        %66:i32 = load %x_305
+        %x_307:i32 = select %x_298, %66, %x_278
+        if %x_278 [t: %b18] {  # if_8
+          %b18 = block {  # true
+            %68:i32 = add %x_307, 1i
+            store %i, %68
+            exit_if  # if_8
+          }
+        }
+        %x_313:i32 = let 0i
+        if %x_278 [t: %b19, f: %b20] {  # if_9
+          %b19 = block {  # true
+            %70:ptr<private, i32, read_write> = access %data, %x_307
+            %71:i32 = load %70
+            store %x_318, %71
+            %72:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+            %x_320:f32 = load_vector_element %72, 1u
+            %74:i32 = load %x_318
+            store %x_326, %74
+            %75:bool = lte 0.0f, %x_320
+            %76:bool = eq %75, false
+            if %76 [t: %b21] {  # if_10
+              %b21 = block {  # true
+                continue %b4
+              }
+            }
+            exit_if  # if_9
+          }
+          %b20 = block {  # false
+            store %x_322, 0i
+            %77:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+            %x_324:f32 = load_vector_element %77, 1u
+            %79:i32 = load %x_322
+            store %x_326, %79
+            %80:bool = lt %x_324, 0.0f
+            %81:bool = eq %80, false
+            if %81 [t: %b22, f: %b23] {  # if_11
+              %b22 = block {  # true
+                exit_if  # if_11
+              }
+              %b23 = block {  # false
+                continue %b4
+              }
+            }
+            exit_if  # if_9
+          }
+        }
+        if %x_278 [t: %b24] {  # if_12
+          %b24 = block {  # true
+            %82:i32 = load %x_285
+            %83:ptr<private, i32, read_write> = access %temp, %82
+            %84:i32 = load %x_326
+            %85:i32 = select %x_313, %84, %x_278
+            store %83, %85
+            exit_if  # if_12
+          }
+        }
+        if %x_278 [t: %b25, f: %b26] {  # if_13
+          %b25 = block {  # true
+            store %x_337, 0i
+            %86:i32 = load %x_337
+            store %x_338, %86
+            exit_if  # if_13
+          }
+          %b26 = block {  # false
+            %87:i32 = load %k
+            store %x_336, %87
+            %88:i32 = load %x_336
+            store %x_338, %88
+            exit_if  # if_13
+          }
+        }
+        if %x_278 [t: %b27, f: %b28] {  # if_14
+          %b27 = block {  # true
+            exit_if  # if_14
+          }
+          %b28 = block {  # false
+            %89:i32 = load %x_338
+            %90:i32 = add %89, 1i
+            store %k, %90
+            exit_if  # if_14
+          }
+        }
+        %91:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+        %92:f32 = load_vector_element %91, 0u
+        %93:bool = lte 1.0f, %92
+        %94:bool = eq %93, false
+        if %94 [t: %b29, f: %b30] {  # if_15
+          %b29 = block {  # true
+            exit_if  # if_15
+          }
+          %b30 = block {  # false
+            continue %b4
+          }
+        }
+        if %x_278 [t: %b31, f: %b32] {  # if_16
+          %b31 = block {  # true
+            store %x_350, 0i
+            %95:i32 = load %x_350
+            store %x_351, %95
+            exit_if  # if_16
+          }
+          %b32 = block {  # false
+            %96:i32 = load %j
+            store %x_349, %96
+            %97:i32 = load %x_349
+            store %x_351, %97
+            exit_if  # if_16
+          }
+        }
+        %98:i32 = load %x_351
+        %x_355:i32 = select %98, 0i, %x_278
+        if %x_278 [t: %b33, f: %b34] {  # if_17
+          %b33 = block {  # true
+            exit_if  # if_17
+          }
+          %b34 = block {  # false
+            %100:i32 = add %x_355, 1i
+            store %j, %100
+            exit_if  # if_17
+          }
+        }
+        if %x_278 [t: %b35, f: %b36] {  # if_18
+          %b35 = block {  # true
+            store %x_364, 0i
+            %101:i32 = load %x_364
+            store %x_365, %101
+            exit_if  # if_18
+          }
+          %b36 = block {  # false
+            %102:ptr<private, i32, read_write> = access %data, %x_355
+            %103:i32 = load %102
+            store %x_363, %103
+            %104:i32 = load %x_363
+            store %x_365, %104
+            exit_if  # if_18
+          }
+        }
+        if %x_278 [t: %b37, f: %b38] {  # if_19
+          %b37 = block {  # true
+            exit_if  # if_19
+          }
+          %b38 = block {  # false
+            %105:i32 = load %x_338
+            %106:ptr<private, i32, read_write> = access %temp, %105
+            %107:i32 = load %x_365
+            store %106, %107
+            exit_if  # if_19
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b39, c: %b40] {  # loop_2
+      %b39 = block {  # body
+        %108:i32 = load %i
+        %109:bool = lt %108, 10i
+        %110:i32 = load %i
+        %111:i32 = load %mid
+        %112:bool = lte %110, %111
+        %113:bool = and %109, %112
+        if %113 [t: %b41, f: %b42] {  # if_20
+          %b41 = block {  # true
+            exit_if  # if_20
+          }
+          %b42 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_381:i32 = load %k
+        %115:i32 = load %k
+        %116:i32 = add %115, 1i
+        store %k, %116
+        %x_383:i32 = load %i
+        %118:i32 = load %i
+        %119:i32 = add %118, 1i
+        store %i, %119
+        %120:ptr<private, i32, read_write> = access %temp, %x_381
+        %121:ptr<private, i32, read_write> = access %data, %x_383
+        %122:i32 = load %121
+        store %120, %122
+        continue %b40
+      }
+      %b40 = block {  # continuing
+        next_iteration %b39
+      }
+    }
+    %123:i32 = load %f
+    store %i_1, %123
+    loop [b: %b43, c: %b44] {  # loop_3
+      %b43 = block {  # body
+        %124:i32 = load %i_1
+        %125:i32 = load %to
+        %126:bool = lte %124, %125
+        if %126 [t: %b45, f: %b46] {  # if_21
+          %b45 = block {  # true
+            exit_if  # if_21
+          }
+          %b46 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_397:i32 = load %i_1
+        %128:ptr<private, i32, read_write> = access %data, %x_397
+        %129:i32 = load %i_1
+        %130:ptr<private, i32, read_write> = access %temp, %129
+        %131:i32 = load %130
+        store %128, %131
+        continue %b44
+      }
+      %b44 = block {  # continuing
+        %132:i32 = load %i_1
+        %133:i32 = add %132, 1i
+        store %i_1, %133
+        next_iteration %b43
+      }
+    }
+    ret
+  }
+}
+%mergeSort_ = func():void -> %b47 {
+  %b47 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b48, c: %b49] {  # loop_4
+      %b48 = block {  # body
+        %145:i32 = load %m
+        %146:i32 = load %high
+        %147:bool = lte %145, %146
+        if %147 [t: %b50, f: %b51] {  # if_22
+          %b50 = block {  # true
+            exit_if  # if_22
+          }
+          %b51 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %148:i32 = load %low
+        store %i_2, %148
+        loop [b: %b52, c: %b53] {  # loop_5
+          %b52 = block {  # body
+            %149:i32 = load %i_2
+            %150:i32 = load %high
+            %151:bool = lt %149, %150
+            if %151 [t: %b54, f: %b55] {  # if_23
+              %b54 = block {  # true
+                exit_if  # if_23
+              }
+              %b55 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %152:i32 = load %i_2
+            store %f_1, %152
+            %153:i32 = load %i_2
+            %154:i32 = load %m
+            %155:i32 = add %153, %154
+            %156:i32 = sub %155, 1i
+            store %mid_1, %156
+            %157:i32 = load %i_2
+            %158:i32 = load %m
+            %159:i32 = mul 2i, %158
+            %160:i32 = add %157, %159
+            %161:i32 = sub %160, 1i
+            %162:i32 = load %high
+            %163:i32 = min %161, %162
+            store %to_1, %163
+            %164:i32 = load %f_1
+            store %param, %164
+            %165:i32 = load %mid_1
+            store %param_1, %165
+            %166:i32 = load %to_1
+            store %param_2, %166
+            %167:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b53
+          }
+          %b53 = block {  # continuing
+            %168:i32 = load %i_2
+            %169:i32 = load %m
+            %170:i32 = mul 2i, %169
+            %171:i32 = add %168, %170
+            store %i_2, %171
+            next_iteration %b52
+          }
+        }
+        continue %b49
+      }
+      %b49 = block {  # continuing
+        %172:i32 = load %m
+        %173:i32 = mul 2i, %172
+        store %m, %173
+        next_iteration %b48
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b56 {
+  %b56 = block {
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %178:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %179:f32 = load_vector_element %178, 0u
+    %180:i32 = convert %179
+    store %i_3, %180
+    loop [b: %b57, c: %b58] {  # loop_6
+      %b57 = block {  # body
+        %x_94:i32 = load %i_3
+        switch %x_94 [c: (9i, %b59), c: (8i, %b60), c: (7i, %b61), c: (6i, %b62), c: (5i, %b63), c: (4i, %b64), c: (3i, %b65), c: (2i, %b66), c: (1i, %b67), c: (0i, %b68), c: (default, %b69)] {  # switch_1
+          %b59 = block {  # case
+            %x_124:i32 = load %i_3
+            %183:ptr<private, i32, read_write> = access %data, %x_124
+            store %183, -5i
+            exit_switch  # switch_1
+          }
+          %b60 = block {  # case
+            %x_122:i32 = load %i_3
+            %185:ptr<private, i32, read_write> = access %data, %x_122
+            store %185, -4i
+            exit_switch  # switch_1
+          }
+          %b61 = block {  # case
+            %x_120:i32 = load %i_3
+            %187:ptr<private, i32, read_write> = access %data, %x_120
+            store %187, -3i
+            exit_switch  # switch_1
+          }
+          %b62 = block {  # case
+            %x_118:i32 = load %i_3
+            %189:ptr<private, i32, read_write> = access %data, %x_118
+            store %189, -2i
+            exit_switch  # switch_1
+          }
+          %b63 = block {  # case
+            %x_116:i32 = load %i_3
+            %191:ptr<private, i32, read_write> = access %data, %x_116
+            store %191, -1i
+            exit_switch  # switch_1
+          }
+          %b64 = block {  # case
+            %x_114:i32 = load %i_3
+            %193:ptr<private, i32, read_write> = access %data, %x_114
+            store %193, 0i
+            exit_switch  # switch_1
+          }
+          %b65 = block {  # case
+            %x_112:i32 = load %i_3
+            %195:ptr<private, i32, read_write> = access %data, %x_112
+            store %195, 1i
+            exit_switch  # switch_1
+          }
+          %b66 = block {  # case
+            %x_110:i32 = load %i_3
+            %197:ptr<private, i32, read_write> = access %data, %x_110
+            store %197, 2i
+            exit_switch  # switch_1
+          }
+          %b67 = block {  # case
+            %x_108:i32 = load %i_3
+            %199:ptr<private, i32, read_write> = access %data, %x_108
+            store %199, 3i
+            exit_switch  # switch_1
+          }
+          %b68 = block {  # case
+            %x_106:i32 = load %i_3
+            %201:ptr<private, i32, read_write> = access %data, %x_106
+            store %201, 4i
+            exit_switch  # switch_1
+          }
+          %b69 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %202:i32 = load %i_3
+        %203:i32 = add %202, 1i
+        store %i_3, %203
+        continue %b58
+      }
+      %b58 = block {  # continuing
+        %x_128:i32 = load %i_3
+        %205:bool = lt %x_128, 10i
+        %206:bool = eq %205, false
+        break_if %206 %b57
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b70, c: %b71] {  # loop_7
+      %b70 = block {  # body
+        %207:i32 = load %j_1
+        %208:bool = lt %207, 10i
+        if %208 [t: %b72, f: %b73] {  # if_24
+          %b72 = block {  # true
+            exit_if  # if_24
+          }
+          %b73 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %x_137:i32 = load %j_1
+        %210:ptr<private, i32, read_write> = access %temp, %x_137
+        %211:i32 = load %j_1
+        %212:ptr<private, i32, read_write> = access %data, %211
+        %213:i32 = load %212
+        store %210, %213
+        continue %b71
+      }
+      %b71 = block {  # continuing
+        %214:i32 = load %j_1
+        %215:i32 = add %214, 1i
+        store %j_1, %215
+        next_iteration %b70
+      }
+    }
+    %216:void = call %mergeSort_
+    %217:f32 = load_vector_element %gl_FragCoord, 1u
+    %218:i32 = convert %217
+    %219:bool = lt %218, 30i
+    if %219 [t: %b74, f: %b75] {  # if_25
+      %b74 = block {  # true
+        %220:ptr<private, i32, read_write> = access %data, 0i
+        %221:i32 = load %220
+        %222:f32 = convert %221
+        %223:f32 = div %222, 10.0f
+        %224:f32 = add 0.5f, %223
+        store %grey, %224
+        exit_if  # if_25
+      }
+      %b75 = block {  # false
+        %225:f32 = load_vector_element %gl_FragCoord, 1u
+        %226:i32 = convert %225
+        %227:bool = lt %226, 60i
+        if %227 [t: %b76, f: %b77] {  # if_26
+          %b76 = block {  # true
+            %228:ptr<private, i32, read_write> = access %data, 1i
+            %229:i32 = load %228
+            %230:f32 = convert %229
+            %231:f32 = div %230, 10.0f
+            %232:f32 = add 0.5f, %231
+            store %grey, %232
+            exit_if  # if_26
+          }
+          %b77 = block {  # false
+            %233:f32 = load_vector_element %gl_FragCoord, 1u
+            %234:i32 = convert %233
+            %235:bool = lt %234, 90i
+            if %235 [t: %b78, f: %b79] {  # if_27
+              %b78 = block {  # true
+                %236:ptr<private, i32, read_write> = access %data, 2i
+                %237:i32 = load %236
+                %238:f32 = convert %237
+                %239:f32 = div %238, 10.0f
+                %240:f32 = add 0.5f, %239
+                store %grey, %240
+                exit_if  # if_27
+              }
+              %b79 = block {  # false
+                %241:f32 = load_vector_element %gl_FragCoord, 1u
+                %242:i32 = convert %241
+                %243:bool = lt %242, 120i
+                if %243 [t: %b80, f: %b81] {  # if_28
+                  %b80 = block {  # true
+                    %244:ptr<private, i32, read_write> = access %data, 3i
+                    %245:i32 = load %244
+                    %246:f32 = convert %245
+                    %247:f32 = div %246, 10.0f
+                    %248:f32 = add 0.5f, %247
+                    store %grey, %248
+                    exit_if  # if_28
+                  }
+                  %b81 = block {  # false
+                    %249:f32 = load_vector_element %gl_FragCoord, 1u
+                    %250:i32 = convert %249
+                    %251:bool = lt %250, 150i
+                    if %251 [t: %b82, f: %b83] {  # if_29
+                      %b82 = block {  # true
+                        discard
+                        exit_if  # if_29
+                      }
+                      %b83 = block {  # false
+                        %252:f32 = load_vector_element %gl_FragCoord, 1u
+                        %253:i32 = convert %252
+                        %254:bool = lt %253, 180i
+                        if %254 [t: %b84, f: %b85] {  # if_30
+                          %b84 = block {  # true
+                            %255:ptr<private, i32, read_write> = access %data, 5i
+                            %256:i32 = load %255
+                            %257:f32 = convert %256
+                            %258:f32 = div %257, 10.0f
+                            %259:f32 = add 0.5f, %258
+                            store %grey, %259
+                            exit_if  # if_30
+                          }
+                          %b85 = block {  # false
+                            %260:f32 = load_vector_element %gl_FragCoord, 1u
+                            %261:i32 = convert %260
+                            %262:bool = lt %261, 210i
+                            if %262 [t: %b86, f: %b87] {  # if_31
+                              %b86 = block {  # true
+                                %263:ptr<private, i32, read_write> = access %data, 6i
+                                %264:i32 = load %263
+                                %265:f32 = convert %264
+                                %266:f32 = div %265, 10.0f
+                                %267:f32 = add 0.5f, %266
+                                store %grey, %267
+                                exit_if  # if_31
+                              }
+                              %b87 = block {  # false
+                                %268:f32 = load_vector_element %gl_FragCoord, 1u
+                                %269:i32 = convert %268
+                                %270:bool = lt %269, 240i
+                                if %270 [t: %b88, f: %b89] {  # if_32
+                                  %b88 = block {  # true
+                                    %271:ptr<private, i32, read_write> = access %data, 7i
+                                    %272:i32 = load %271
+                                    %273:f32 = convert %272
+                                    %274:f32 = div %273, 10.0f
+                                    %275:f32 = add 0.5f, %274
+                                    store %grey, %275
+                                    exit_if  # if_32
+                                  }
+                                  %b89 = block {  # false
+                                    %276:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %277:i32 = convert %276
+                                    %278:bool = lt %277, 270i
+                                    if %278 [t: %b90, f: %b91] {  # if_33
+                                      %b90 = block {  # true
+                                        %279:ptr<private, i32, read_write> = access %data, 8i
+                                        %280:i32 = load %279
+                                        %281:f32 = convert %280
+                                        %282:f32 = div %281, 10.0f
+                                        %283:f32 = add 0.5f, %282
+                                        store %grey, %283
+                                        exit_if  # if_33
+                                      }
+                                      %b91 = block {  # false
+                                        discard
+                                        exit_if  # if_33
+                                      }
+                                    }
+                                    exit_if  # if_32
+                                  }
+                                }
+                                exit_if  # if_31
+                              }
+                            }
+                            exit_if  # if_30
+                          }
+                        }
+                        exit_if  # if_29
+                      }
+                    }
+                    exit_if  # if_28
+                  }
+                }
+                exit_if  # if_27
+              }
+            }
+            exit_if  # if_26
+          }
+        }
+        exit_if  # if_25
+      }
+    }
+    %284:f32 = load %grey
+    %x_249:vec3<f32> = construct %284
+    %286:f32 = access %x_249, 0u
+    %287:f32 = access %x_249, 1u
+    %288:f32 = access %x_249, 2u
+    %289:vec4<f32> = construct %286, %287, %288, 1.0f
+    store %x_GLF_color, %289
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b92 {
+  %b92 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %292:void = call %main_1
+    %293:vec4<f32> = load %x_GLF_color
+    %294:main_out = construct %293
+    ret %294
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..64b59ee
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl.expected.ir.msl
@@ -0,0 +1,745 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %x_255:i32 = load %f
+    store %k, %x_255
+    %x_256:i32 = load %f
+    store %i, %x_256
+    %x_257:i32 = load %mid
+    %17:i32 = add %x_257, 1i
+    store %j, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_283:ptr<function, i32, read_write> = var
+        %x_284:ptr<function, i32, read_write> = var
+        %x_303:ptr<function, i32, read_write> = var
+        %x_304:ptr<function, i32, read_write> = var
+        %x_318:ptr<function, i32, read_write> = var
+        %x_322:ptr<function, i32, read_write> = var
+        %x_337:ptr<function, i32, read_write> = var
+        %x_336:ptr<function, i32, read_write> = var
+        %x_350:ptr<function, i32, read_write> = var
+        %x_349:ptr<function, i32, read_write> = var
+        %x_364:ptr<function, i32, read_write> = var
+        %x_363:ptr<function, i32, read_write> = var
+        %x_285_phi:ptr<function, i32, read_write> = var
+        %x_305_phi:ptr<function, i32, read_write> = var
+        %x_326_phi:ptr<function, i32, read_write> = var
+        %x_338_phi:ptr<function, i32, read_write> = var
+        %x_351_phi:ptr<function, i32, read_write> = var
+        %x_365_phi:ptr<function, i32, read_write> = var
+        if true [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            continue %b4
+          }
+        }
+        %x_264:i32 = load %i
+        %x_265:i32 = load %mid
+        %x_267:i32 = load %j
+        %x_268:i32 = load %to
+        %40:bool = lte %x_264, %x_265
+        %41:bool = lte %x_267, %x_268
+        %42:bool = and %40, %41
+        if %42 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_272:i32 = load %i
+        %44:ptr<private, i32, read_write> = access %data, %x_272
+        %x_274:i32 = load %44
+        %x_275:i32 = load %j
+        %47:ptr<private, i32, read_write> = access %data, %x_275
+        %x_277:i32 = load %47
+        %x_278:bool = lt %x_274, %x_277
+        if %x_278 [t: %b9, f: %b10] {  # if_3
+          %b9 = block {  # true
+            %50:i32 = load %k
+            store %x_283, %50
+            %51:i32 = load %x_283
+            store %x_285_phi, %51
+            exit_if  # if_3
+          }
+          %b10 = block {  # false
+            store %x_284, 0i
+            %52:i32 = load %x_284
+            store %x_285_phi, %52
+            exit_if  # if_3
+          }
+        }
+        %x_285:i32 = load %x_285_phi
+        %x_286:i32 = add %x_285, 1i
+        if %x_278 [t: %b11] {  # if_4
+          %b11 = block {  # true
+            store %k, %x_286
+            %55:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+            %x_291:f32 = load_vector_element %55, 0u
+            %57:bool = lte 1.0f, %x_291
+            %58:bool = eq %57, false
+            if %58 [t: %b12, f: %b13] {  # if_5
+              %b12 = block {  # true
+                exit_if  # if_5
+              }
+              %b13 = block {  # false
+                continue %b4
+              }
+            }
+            exit_if  # if_4
+          }
+        }
+        %59:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+        %x_295:f32 = load_vector_element %59, 1u
+        %61:bool = gte %x_295, 0.0f
+        if %61 [t: %b14, f: %b15] {  # if_6
+          %b14 = block {  # true
+            exit_if  # if_6
+          }
+          %b15 = block {  # false
+            continue %b4
+          }
+        }
+        %x_298:i32 = let 0i
+        if %x_278 [t: %b16, f: %b17] {  # if_7
+          %b16 = block {  # true
+            %63:i32 = load %i
+            store %x_303, %63
+            %64:i32 = load %x_303
+            store %x_305_phi, %64
+            exit_if  # if_7
+          }
+          %b17 = block {  # false
+            store %x_304, 0i
+            %65:i32 = load %x_304
+            store %x_305_phi, %65
+            exit_if  # if_7
+          }
+        }
+        %x_305:i32 = load %x_305_phi
+        %x_307:i32 = select %x_298, %x_305, %x_278
+        if %x_278 [t: %b18] {  # if_8
+          %b18 = block {  # true
+            %68:i32 = add %x_307, 1i
+            store %i, %68
+            exit_if  # if_8
+          }
+        }
+        %x_313:i32 = let 0i
+        if %x_278 [t: %b19, f: %b20] {  # if_9
+          %b19 = block {  # true
+            %70:ptr<private, i32, read_write> = access %data, %x_307
+            %71:i32 = load %70
+            store %x_318, %71
+            %72:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+            %x_320:f32 = load_vector_element %72, 1u
+            %74:i32 = load %x_318
+            store %x_326_phi, %74
+            %75:bool = lte 0.0f, %x_320
+            %76:bool = eq %75, false
+            if %76 [t: %b21] {  # if_10
+              %b21 = block {  # true
+                continue %b4
+              }
+            }
+            exit_if  # if_9
+          }
+          %b20 = block {  # false
+            store %x_322, 0i
+            %77:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+            %x_324:f32 = load_vector_element %77, 1u
+            %79:i32 = load %x_322
+            store %x_326_phi, %79
+            %80:bool = lt %x_324, 0.0f
+            %81:bool = eq %80, false
+            if %81 [t: %b22, f: %b23] {  # if_11
+              %b22 = block {  # true
+                exit_if  # if_11
+              }
+              %b23 = block {  # false
+                continue %b4
+              }
+            }
+            exit_if  # if_9
+          }
+        }
+        %x_326:i32 = load %x_326_phi
+        if %x_278 [t: %b24] {  # if_12
+          %b24 = block {  # true
+            %83:ptr<private, i32, read_write> = access %temp, %x_285
+            %84:i32 = select %x_313, %x_326, %x_278
+            store %83, %84
+            exit_if  # if_12
+          }
+        }
+        if %x_278 [t: %b25, f: %b26] {  # if_13
+          %b25 = block {  # true
+            store %x_337, 0i
+            %85:i32 = load %x_337
+            store %x_338_phi, %85
+            exit_if  # if_13
+          }
+          %b26 = block {  # false
+            %86:i32 = load %k
+            store %x_336, %86
+            %87:i32 = load %x_336
+            store %x_338_phi, %87
+            exit_if  # if_13
+          }
+        }
+        %x_338:i32 = load %x_338_phi
+        if %x_278 [t: %b27, f: %b28] {  # if_14
+          %b27 = block {  # true
+            exit_if  # if_14
+          }
+          %b28 = block {  # false
+            %89:i32 = add %x_338, 1i
+            store %k, %89
+            exit_if  # if_14
+          }
+        }
+        %90:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+        %x_343:f32 = load_vector_element %90, 0u
+        %92:bool = lte 1.0f, %x_343
+        %93:bool = eq %92, false
+        if %93 [t: %b29, f: %b30] {  # if_15
+          %b29 = block {  # true
+            exit_if  # if_15
+          }
+          %b30 = block {  # false
+            continue %b4
+          }
+        }
+        if %x_278 [t: %b31, f: %b32] {  # if_16
+          %b31 = block {  # true
+            store %x_350, 0i
+            %94:i32 = load %x_350
+            store %x_351_phi, %94
+            exit_if  # if_16
+          }
+          %b32 = block {  # false
+            %95:i32 = load %j
+            store %x_349, %95
+            %96:i32 = load %x_349
+            store %x_351_phi, %96
+            exit_if  # if_16
+          }
+        }
+        %x_351:i32 = load %x_351_phi
+        %x_353:i32 = let 0i
+        %x_355:i32 = select %x_351, %x_353, %x_278
+        if %x_278 [t: %b33, f: %b34] {  # if_17
+          %b33 = block {  # true
+            exit_if  # if_17
+          }
+          %b34 = block {  # false
+            %100:i32 = add %x_355, 1i
+            store %j, %100
+            exit_if  # if_17
+          }
+        }
+        if %x_278 [t: %b35, f: %b36] {  # if_18
+          %b35 = block {  # true
+            store %x_364, 0i
+            %101:i32 = load %x_364
+            store %x_365_phi, %101
+            exit_if  # if_18
+          }
+          %b36 = block {  # false
+            %102:ptr<private, i32, read_write> = access %data, %x_355
+            %103:i32 = load %102
+            store %x_363, %103
+            %104:i32 = load %x_363
+            store %x_365_phi, %104
+            exit_if  # if_18
+          }
+        }
+        %x_365:i32 = load %x_365_phi
+        if %x_278 [t: %b37, f: %b38] {  # if_19
+          %b37 = block {  # true
+            exit_if  # if_19
+          }
+          %b38 = block {  # false
+            %106:ptr<private, i32, read_write> = access %temp, %x_338
+            store %106, %x_365
+            exit_if  # if_19
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b39, c: %b40] {  # loop_2
+      %b39 = block {  # body
+        %x_374:i32 = load %i
+        %x_376:i32 = load %i
+        %x_377:i32 = load %mid
+        %110:bool = lt %x_374, 10i
+        %111:bool = lte %x_376, %x_377
+        %112:bool = and %110, %111
+        if %112 [t: %b41, f: %b42] {  # if_20
+          %b41 = block {  # true
+            exit_if  # if_20
+          }
+          %b42 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_381:i32 = load %k
+        %114:i32 = add %x_381, 1i
+        store %k, %114
+        %x_383:i32 = load %i
+        %116:i32 = add %x_383, 1i
+        store %i, %116
+        %117:ptr<private, i32, read_write> = access %data, %x_383
+        %x_386:i32 = load %117
+        %119:ptr<private, i32, read_write> = access %temp, %x_381
+        store %119, %x_386
+        continue %b40
+      }
+      %b40 = block {  # continuing
+        next_iteration %b39
+      }
+    }
+    %x_388:i32 = load %f
+    store %i_1, %x_388
+    loop [b: %b43, c: %b44] {  # loop_3
+      %b43 = block {  # body
+        %x_393:i32 = load %i_1
+        %x_394:i32 = load %to
+        %123:bool = lte %x_393, %x_394
+        if %123 [t: %b45, f: %b46] {  # if_21
+          %b45 = block {  # true
+            exit_if  # if_21
+          }
+          %b46 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_397:i32 = load %i_1
+        %x_398:i32 = load %i_1
+        %126:ptr<private, i32, read_write> = access %temp, %x_398
+        %x_400:i32 = load %126
+        %128:ptr<private, i32, read_write> = access %data, %x_397
+        store %128, %x_400
+        continue %b44
+      }
+      %b44 = block {  # continuing
+        %x_402:i32 = load %i_1
+        %130:i32 = add %x_402, 1i
+        store %i_1, %130
+        next_iteration %b43
+      }
+    }
+    ret
+  }
+}
+%mergeSort_ = func():void -> %b47 {
+  %b47 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b48, c: %b49] {  # loop_4
+      %b48 = block {  # body
+        %x_409:i32 = load %m
+        %x_410:i32 = load %high
+        %144:bool = lte %x_409, %x_410
+        if %144 [t: %b50, f: %b51] {  # if_22
+          %b50 = block {  # true
+            exit_if  # if_22
+          }
+          %b51 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %x_413:i32 = load %low
+        store %i_2, %x_413
+        loop [b: %b52, c: %b53] {  # loop_5
+          %b52 = block {  # body
+            %x_418:i32 = load %i_2
+            %x_419:i32 = load %high
+            %148:bool = lt %x_418, %x_419
+            if %148 [t: %b54, f: %b55] {  # if_23
+              %b54 = block {  # true
+                exit_if  # if_23
+              }
+              %b55 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %x_422:i32 = load %i_2
+            store %f_1, %x_422
+            %x_423:i32 = load %i_2
+            %x_424:i32 = load %m
+            %152:i32 = add %x_423, %x_424
+            %153:i32 = sub %152, 1i
+            store %mid_1, %153
+            %x_427:i32 = load %i_2
+            %x_428:i32 = load %m
+            %x_432:i32 = load %high
+            %157:i32 = mul 2i, %x_428
+            %158:i32 = add %x_427, %157
+            %159:i32 = sub %158, 1i
+            %160:i32 = min %159, %x_432
+            store %to_1, %160
+            %x_434:i32 = load %f_1
+            store %param, %x_434
+            %x_435:i32 = load %mid_1
+            store %param_1, %x_435
+            %x_436:i32 = load %to_1
+            store %param_2, %x_436
+            %164:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b53
+          }
+          %b53 = block {  # continuing
+            %x_438:i32 = load %m
+            %x_440:i32 = load %i_2
+            %167:i32 = mul 2i, %x_438
+            %168:i32 = add %x_440, %167
+            store %i_2, %168
+            next_iteration %b52
+          }
+        }
+        continue %b49
+      }
+      %b49 = block {  # continuing
+        %x_442:i32 = load %m
+        %170:i32 = mul 2i, %x_442
+        store %m, %170
+        next_iteration %b48
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b56 {
+  %b56 = block {
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %175:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %x_88:f32 = load_vector_element %175, 0u
+    %177:i32 = convert %x_88
+    store %i_3, %177
+    loop [b: %b57, c: %b58] {  # loop_6
+      %b57 = block {  # body
+        %x_94:i32 = load %i_3
+        switch %x_94 [c: (9i, %b59), c: (8i, %b60), c: (7i, %b61), c: (6i, %b62), c: (5i, %b63), c: (4i, %b64), c: (3i, %b65), c: (2i, %b66), c: (1i, %b67), c: (0i, %b68), c: (default, %b69)] {  # switch_1
+          %b59 = block {  # case
+            %x_124:i32 = load %i_3
+            %180:ptr<private, i32, read_write> = access %data, %x_124
+            store %180, -5i
+            exit_switch  # switch_1
+          }
+          %b60 = block {  # case
+            %x_122:i32 = load %i_3
+            %182:ptr<private, i32, read_write> = access %data, %x_122
+            store %182, -4i
+            exit_switch  # switch_1
+          }
+          %b61 = block {  # case
+            %x_120:i32 = load %i_3
+            %184:ptr<private, i32, read_write> = access %data, %x_120
+            store %184, -3i
+            exit_switch  # switch_1
+          }
+          %b62 = block {  # case
+            %x_118:i32 = load %i_3
+            %186:ptr<private, i32, read_write> = access %data, %x_118
+            store %186, -2i
+            exit_switch  # switch_1
+          }
+          %b63 = block {  # case
+            %x_116:i32 = load %i_3
+            %188:ptr<private, i32, read_write> = access %data, %x_116
+            store %188, -1i
+            exit_switch  # switch_1
+          }
+          %b64 = block {  # case
+            %x_114:i32 = load %i_3
+            %190:ptr<private, i32, read_write> = access %data, %x_114
+            store %190, 0i
+            exit_switch  # switch_1
+          }
+          %b65 = block {  # case
+            %x_112:i32 = load %i_3
+            %192:ptr<private, i32, read_write> = access %data, %x_112
+            store %192, 1i
+            exit_switch  # switch_1
+          }
+          %b66 = block {  # case
+            %x_110:i32 = load %i_3
+            %194:ptr<private, i32, read_write> = access %data, %x_110
+            store %194, 2i
+            exit_switch  # switch_1
+          }
+          %b67 = block {  # case
+            %x_108:i32 = load %i_3
+            %196:ptr<private, i32, read_write> = access %data, %x_108
+            store %196, 3i
+            exit_switch  # switch_1
+          }
+          %b68 = block {  # case
+            %x_106:i32 = load %i_3
+            %198:ptr<private, i32, read_write> = access %data, %x_106
+            store %198, 4i
+            exit_switch  # switch_1
+          }
+          %b69 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %x_126:i32 = load %i_3
+        %200:i32 = add %x_126, 1i
+        store %i_3, %200
+        continue %b58
+      }
+      %b58 = block {  # continuing
+        %x_128:i32 = load %i_3
+        %202:bool = lt %x_128, 10i
+        %203:bool = eq %202, false
+        break_if %203 %b57
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b70, c: %b71] {  # loop_7
+      %b70 = block {  # body
+        %x_134:i32 = load %j_1
+        %205:bool = lt %x_134, 10i
+        if %205 [t: %b72, f: %b73] {  # if_24
+          %b72 = block {  # true
+            exit_if  # if_24
+          }
+          %b73 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %x_137:i32 = load %j_1
+        %x_138:i32 = load %j_1
+        %208:ptr<private, i32, read_write> = access %data, %x_138
+        %x_140:i32 = load %208
+        %210:ptr<private, i32, read_write> = access %temp, %x_137
+        store %210, %x_140
+        continue %b71
+      }
+      %b71 = block {  # continuing
+        %x_142:i32 = load %j_1
+        %212:i32 = add %x_142, 1i
+        store %j_1, %212
+        next_iteration %b70
+      }
+    }
+    %213:void = call %mergeSort_
+    %x_146:f32 = load_vector_element %gl_FragCoord, 1u
+    %215:i32 = convert %x_146
+    %216:bool = lt %215, 30i
+    if %216 [t: %b74, f: %b75] {  # if_25
+      %b74 = block {  # true
+        %217:ptr<private, i32, read_write> = access %data, 0i
+        %x_153:i32 = load %217
+        %219:f32 = convert %x_153
+        %220:f32 = div %219, 10.0f
+        %221:f32 = add 0.5f, %220
+        store %grey, %221
+        exit_if  # if_25
+      }
+      %b75 = block {  # false
+        %x_158:f32 = load_vector_element %gl_FragCoord, 1u
+        %223:i32 = convert %x_158
+        %224:bool = lt %223, 60i
+        if %224 [t: %b76, f: %b77] {  # if_26
+          %b76 = block {  # true
+            %225:ptr<private, i32, read_write> = access %data, 1i
+            %x_165:i32 = load %225
+            %227:f32 = convert %x_165
+            %228:f32 = div %227, 10.0f
+            %229:f32 = add 0.5f, %228
+            store %grey, %229
+            exit_if  # if_26
+          }
+          %b77 = block {  # false
+            %x_170:f32 = load_vector_element %gl_FragCoord, 1u
+            %231:i32 = convert %x_170
+            %232:bool = lt %231, 90i
+            if %232 [t: %b78, f: %b79] {  # if_27
+              %b78 = block {  # true
+                %233:ptr<private, i32, read_write> = access %data, 2i
+                %x_177:i32 = load %233
+                %235:f32 = convert %x_177
+                %236:f32 = div %235, 10.0f
+                %237:f32 = add 0.5f, %236
+                store %grey, %237
+                exit_if  # if_27
+              }
+              %b79 = block {  # false
+                %x_182:f32 = load_vector_element %gl_FragCoord, 1u
+                %239:i32 = convert %x_182
+                %240:bool = lt %239, 120i
+                if %240 [t: %b80, f: %b81] {  # if_28
+                  %b80 = block {  # true
+                    %241:ptr<private, i32, read_write> = access %data, 3i
+                    %x_189:i32 = load %241
+                    %243:f32 = convert %x_189
+                    %244:f32 = div %243, 10.0f
+                    %245:f32 = add 0.5f, %244
+                    store %grey, %245
+                    exit_if  # if_28
+                  }
+                  %b81 = block {  # false
+                    %x_194:f32 = load_vector_element %gl_FragCoord, 1u
+                    %247:i32 = convert %x_194
+                    %248:bool = lt %247, 150i
+                    if %248 [t: %b82, f: %b83] {  # if_29
+                      %b82 = block {  # true
+                        discard
+                        exit_if  # if_29
+                      }
+                      %b83 = block {  # false
+                        %x_201:f32 = load_vector_element %gl_FragCoord, 1u
+                        %250:i32 = convert %x_201
+                        %251:bool = lt %250, 180i
+                        if %251 [t: %b84, f: %b85] {  # if_30
+                          %b84 = block {  # true
+                            %252:ptr<private, i32, read_write> = access %data, 5i
+                            %x_208:i32 = load %252
+                            %254:f32 = convert %x_208
+                            %255:f32 = div %254, 10.0f
+                            %256:f32 = add 0.5f, %255
+                            store %grey, %256
+                            exit_if  # if_30
+                          }
+                          %b85 = block {  # false
+                            %x_213:f32 = load_vector_element %gl_FragCoord, 1u
+                            %258:i32 = convert %x_213
+                            %259:bool = lt %258, 210i
+                            if %259 [t: %b86, f: %b87] {  # if_31
+                              %b86 = block {  # true
+                                %260:ptr<private, i32, read_write> = access %data, 6i
+                                %x_220:i32 = load %260
+                                %262:f32 = convert %x_220
+                                %263:f32 = div %262, 10.0f
+                                %264:f32 = add 0.5f, %263
+                                store %grey, %264
+                                exit_if  # if_31
+                              }
+                              %b87 = block {  # false
+                                %x_225:f32 = load_vector_element %gl_FragCoord, 1u
+                                %266:i32 = convert %x_225
+                                %267:bool = lt %266, 240i
+                                if %267 [t: %b88, f: %b89] {  # if_32
+                                  %b88 = block {  # true
+                                    %268:ptr<private, i32, read_write> = access %data, 7i
+                                    %x_232:i32 = load %268
+                                    %270:f32 = convert %x_232
+                                    %271:f32 = div %270, 10.0f
+                                    %272:f32 = add 0.5f, %271
+                                    store %grey, %272
+                                    exit_if  # if_32
+                                  }
+                                  %b89 = block {  # false
+                                    %x_237:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %274:i32 = convert %x_237
+                                    %275:bool = lt %274, 270i
+                                    if %275 [t: %b90, f: %b91] {  # if_33
+                                      %b90 = block {  # true
+                                        %276:ptr<private, i32, read_write> = access %data, 8i
+                                        %x_244:i32 = load %276
+                                        %278:f32 = convert %x_244
+                                        %279:f32 = div %278, 10.0f
+                                        %280:f32 = add 0.5f, %279
+                                        store %grey, %280
+                                        exit_if  # if_33
+                                      }
+                                      %b91 = block {  # false
+                                        discard
+                                        exit_if  # if_33
+                                      }
+                                    }
+                                    exit_if  # if_32
+                                  }
+                                }
+                                exit_if  # if_31
+                              }
+                            }
+                            exit_if  # if_30
+                          }
+                        }
+                        exit_if  # if_29
+                      }
+                    }
+                    exit_if  # if_28
+                  }
+                }
+                exit_if  # if_27
+              }
+            }
+            exit_if  # if_26
+          }
+        }
+        exit_if  # if_25
+      }
+    }
+    %x_248:f32 = load %grey
+    %x_249:vec3<f32> = construct %x_248, %x_248, %x_248
+    %283:f32 = access %x_249, 0u
+    %284:f32 = access %x_249, 1u
+    %285:f32 = access %x_249, 2u
+    %286:vec4<f32> = construct %283, %284, %285, 1.0f
+    store %x_GLF_color, %286
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b92 {
+  %b92 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %289:void = call %main_1
+    %290:vec4<f32> = load %x_GLF_color
+    %291:main_out = construct %290
+    ret %291
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..6e8d8a0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.spvasm.expected.ir.msl
@@ -0,0 +1,627 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %14:i32 = load %f
+    store %k, %14
+    %15:i32 = load %f
+    store %i, %15
+    %16:i32 = load %mid
+    %17:i32 = add %16, 1i
+    store %j, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %18:i32 = load %i
+        %19:i32 = load %mid
+        %20:bool = lte %18, %19
+        %21:i32 = load %j
+        %22:i32 = load %to
+        %23:bool = lte %21, %22
+        %24:bool = and %20, %23
+        if %24 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %25:i32 = load %i
+        %26:ptr<private, i32, read_write> = access %data, %25
+        %27:i32 = load %26
+        %28:i32 = load %j
+        %29:ptr<private, i32, read_write> = access %data, %28
+        %30:i32 = load %29
+        %31:bool = lt %27, %30
+        if %31 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_329:i32 = load %k
+            %33:i32 = load %k
+            %34:i32 = add %33, 1i
+            store %k, %34
+            %x_331:i32 = load %i
+            %36:i32 = load %i
+            %37:i32 = add %36, 1i
+            store %i, %37
+            %38:ptr<private, i32, read_write> = access %temp, %x_329
+            %39:ptr<private, i32, read_write> = access %data, %x_331
+            %40:i32 = load %39
+            store %38, %40
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_336:i32 = load %k
+            %42:i32 = load %k
+            %43:i32 = add %42, 1i
+            store %k, %43
+            %x_338:i32 = load %j
+            %45:i32 = load %j
+            %46:i32 = add %45, 1i
+            store %j, %46
+            %47:ptr<private, i32, read_write> = access %temp, %x_336
+            %48:ptr<private, i32, read_write> = access %data, %x_338
+            %49:i32 = load %48
+            store %47, %49
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %50:i32 = load %i
+        %51:bool = lt %50, 10i
+        %52:i32 = load %i
+        %53:i32 = load %mid
+        %54:bool = lte %52, %53
+        %55:bool = and %51, %54
+        if %55 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_354:i32 = load %k
+        %57:i32 = load %k
+        %58:i32 = add %57, 1i
+        store %k, %58
+        %x_356:i32 = load %i
+        %60:i32 = load %i
+        %61:i32 = add %60, 1i
+        store %i, %61
+        %62:ptr<private, i32, read_write> = access %temp, %x_354
+        %63:ptr<private, i32, read_write> = access %data, %x_356
+        %64:i32 = load %63
+        store %62, %64
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    %65:i32 = load %f
+    store %i_1, %65
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %66:i32 = load %i_1
+        %67:i32 = load %to
+        %68:bool = lte %66, %67
+        if %68 [t: %b15, f: %b16] {  # if_4
+          %b15 = block {  # true
+            exit_if  # if_4
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_370:i32 = load %i_1
+        %70:ptr<private, i32, read_write> = access %data, %x_370
+        %71:i32 = load %i_1
+        %72:ptr<private, i32, read_write> = access %temp, %71
+        %73:i32 = load %72
+        store %70, %73
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %74:i32 = load %i_1
+        %75:i32 = add %74, 1i
+        store %i_1, %75
+        next_iteration %b13
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b17 {
+  %b17 = block {
+    %x_85:ptr<function, i32, read_write> = var
+    %x_86:ptr<function, i32, read_write> = var
+    %x_87:ptr<function, i32, read_write> = var
+    %x_88:ptr<function, i32, read_write> = var
+    %x_89:ptr<function, i32, read_write> = var
+    %x_90:ptr<function, i32, read_write> = var
+    %x_91:ptr<function, i32, read_write> = var
+    %x_92:ptr<function, i32, read_write> = var
+    %x_93:ptr<function, i32, read_write> = var
+    %x_94:ptr<function, i32, read_write> = var
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %90:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %91:f32 = load_vector_element %90, 0u
+    %92:i32 = convert %91
+    store %i_3, %92
+    loop [b: %b18, c: %b19] {  # loop_4
+      %b18 = block {  # body
+        %x_102:i32 = load %i_3
+        switch %x_102 [c: (9i, %b20), c: (8i, %b21), c: (7i, %b22), c: (6i, %b23), c: (5i, %b24), c: (4i, %b25), c: (3i, %b26), c: (2i, %b27), c: (1i, %b28), c: (0i, %b29), c: (default, %b30)] {  # switch_1
+          %b20 = block {  # case
+            %x_132:i32 = load %i_3
+            %95:ptr<private, i32, read_write> = access %data, %x_132
+            store %95, -5i
+            exit_switch  # switch_1
+          }
+          %b21 = block {  # case
+            %x_130:i32 = load %i_3
+            %97:ptr<private, i32, read_write> = access %data, %x_130
+            store %97, -4i
+            exit_switch  # switch_1
+          }
+          %b22 = block {  # case
+            %x_128:i32 = load %i_3
+            %99:ptr<private, i32, read_write> = access %data, %x_128
+            store %99, -3i
+            exit_switch  # switch_1
+          }
+          %b23 = block {  # case
+            %x_126:i32 = load %i_3
+            %101:ptr<private, i32, read_write> = access %data, %x_126
+            store %101, -2i
+            exit_switch  # switch_1
+          }
+          %b24 = block {  # case
+            %x_124:i32 = load %i_3
+            %103:ptr<private, i32, read_write> = access %data, %x_124
+            store %103, -1i
+            exit_switch  # switch_1
+          }
+          %b25 = block {  # case
+            %x_122:i32 = load %i_3
+            %105:ptr<private, i32, read_write> = access %data, %x_122
+            store %105, 0i
+            exit_switch  # switch_1
+          }
+          %b26 = block {  # case
+            %x_120:i32 = load %i_3
+            %107:ptr<private, i32, read_write> = access %data, %x_120
+            store %107, 1i
+            exit_switch  # switch_1
+          }
+          %b27 = block {  # case
+            %x_118:i32 = load %i_3
+            %109:ptr<private, i32, read_write> = access %data, %x_118
+            store %109, 2i
+            exit_switch  # switch_1
+          }
+          %b28 = block {  # case
+            %x_116:i32 = load %i_3
+            %111:ptr<private, i32, read_write> = access %data, %x_116
+            store %111, 3i
+            exit_switch  # switch_1
+          }
+          %b29 = block {  # case
+            %x_114:i32 = load %i_3
+            %113:ptr<private, i32, read_write> = access %data, %x_114
+            store %113, 4i
+            exit_switch  # switch_1
+          }
+          %b30 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %114:i32 = load %i_3
+        %115:i32 = add %114, 1i
+        store %i_3, %115
+        continue %b19
+      }
+      %b19 = block {  # continuing
+        %x_136:i32 = load %i_3
+        %117:bool = lt %x_136, 10i
+        %118:bool = eq %117, false
+        break_if %118 %b18
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b31, c: %b32] {  # loop_5
+      %b31 = block {  # body
+        %119:i32 = load %j_1
+        %120:bool = lt %119, 10i
+        if %120 [t: %b33, f: %b34] {  # if_5
+          %b33 = block {  # true
+            exit_if  # if_5
+          }
+          %b34 = block {  # false
+            exit_loop  # loop_5
+          }
+        }
+        %x_145:i32 = load %j_1
+        %122:ptr<private, i32, read_write> = access %temp, %x_145
+        %123:i32 = load %j_1
+        %124:ptr<private, i32, read_write> = access %data, %123
+        %125:i32 = load %124
+        store %122, %125
+        continue %b32
+      }
+      %b32 = block {  # continuing
+        %126:i32 = load %j_1
+        %127:i32 = add %126, 1i
+        store %j_1, %127
+        next_iteration %b31
+      }
+    }
+    store %x_94, 0i
+    store %x_93, 9i
+    store %x_92, 1i
+    loop [b: %b35, c: %b36] {  # loop_6
+      %b35 = block {  # body
+        %128:i32 = load %x_92
+        %129:i32 = load %x_93
+        %130:bool = lte %128, %129
+        if %130 [t: %b37, f: %b38] {  # if_6
+          %b37 = block {  # true
+            exit_if  # if_6
+          }
+          %b38 = block {  # false
+            exit_loop  # loop_6
+          }
+        }
+        %131:i32 = load %x_94
+        store %x_91, %131
+        loop [b: %b39, c: %b40] {  # loop_7
+          %b39 = block {  # body
+            %132:i32 = load %x_91
+            %133:i32 = load %x_93
+            %134:bool = lt %132, %133
+            if %134 [t: %b41, f: %b42] {  # if_7
+              %b41 = block {  # true
+                exit_if  # if_7
+              }
+              %b42 = block {  # false
+                exit_loop  # loop_7
+              }
+            }
+            %135:i32 = load %x_91
+            store %x_90, %135
+            %x_170:i32 = load %x_91
+            %x_171:i32 = load %x_92
+            %x_173:array<i32, 10> = load %data
+            store %data, array<i32, 10>(0i)
+            store %data, %x_173
+            %139:i32 = add %x_170, %x_171
+            %140:i32 = sub %139, 1i
+            store %x_89, %140
+            %141:i32 = load %x_91
+            %142:i32 = load %x_92
+            %143:i32 = mul 2i, %142
+            %144:i32 = add %141, %143
+            %145:i32 = sub %144, 1i
+            %146:i32 = load %x_93
+            %147:i32 = min %145, %146
+            store %x_88, %147
+            %148:i32 = load %x_90
+            store %x_87, %148
+            %149:i32 = load %x_89
+            store %x_86, %149
+            %150:i32 = load %x_88
+            store %x_85, %150
+            %151:void = call %merge_i1_i1_i1_, %x_87, %x_86, %x_85
+            continue %b40
+          }
+          %b40 = block {  # continuing
+            %152:i32 = load %x_91
+            %153:i32 = load %x_92
+            %154:i32 = mul 2i, %153
+            %155:i32 = add %152, %154
+            store %x_91, %155
+            next_iteration %b39
+          }
+        }
+        continue %b36
+      }
+      %b36 = block {  # continuing
+        %156:i32 = load %x_92
+        %157:i32 = mul 2i, %156
+        store %x_92, %157
+        next_iteration %b35
+      }
+    }
+    %158:f32 = load_vector_element %gl_FragCoord, 1u
+    %159:i32 = convert %158
+    %160:bool = lt %159, 30i
+    if %160 [t: %b43, f: %b44] {  # if_8
+      %b43 = block {  # true
+        %161:ptr<private, i32, read_write> = access %data, 0i
+        %162:i32 = load %161
+        %163:f32 = convert %162
+        %164:f32 = div %163, 10.0f
+        %165:f32 = add 0.5f, %164
+        store %grey, %165
+        exit_if  # if_8
+      }
+      %b44 = block {  # false
+        %166:f32 = load_vector_element %gl_FragCoord, 1u
+        %167:i32 = convert %166
+        %168:bool = lt %167, 60i
+        if %168 [t: %b45, f: %b46] {  # if_9
+          %b45 = block {  # true
+            %169:ptr<private, i32, read_write> = access %data, 1i
+            %170:i32 = load %169
+            %171:f32 = convert %170
+            %172:f32 = div %171, 10.0f
+            %173:f32 = add 0.5f, %172
+            store %grey, %173
+            exit_if  # if_9
+          }
+          %b46 = block {  # false
+            %174:f32 = load_vector_element %gl_FragCoord, 1u
+            %175:i32 = convert %174
+            %176:bool = lt %175, 90i
+            if %176 [t: %b47, f: %b48] {  # if_10
+              %b47 = block {  # true
+                %177:ptr<private, i32, read_write> = access %data, 2i
+                %178:i32 = load %177
+                %179:f32 = convert %178
+                %180:f32 = div %179, 10.0f
+                %181:f32 = add 0.5f, %180
+                store %grey, %181
+                exit_if  # if_10
+              }
+              %b48 = block {  # false
+                %182:f32 = load_vector_element %gl_FragCoord, 1u
+                %183:i32 = convert %182
+                %184:bool = lt %183, 120i
+                if %184 [t: %b49, f: %b50] {  # if_11
+                  %b49 = block {  # true
+                    %185:ptr<private, i32, read_write> = access %data, 3i
+                    %186:i32 = load %185
+                    %187:f32 = convert %186
+                    %188:f32 = div %187, 10.0f
+                    %189:f32 = add 0.5f, %188
+                    store %grey, %189
+                    exit_if  # if_11
+                  }
+                  %b50 = block {  # false
+                    %190:f32 = load_vector_element %gl_FragCoord, 1u
+                    %191:i32 = convert %190
+                    %192:bool = lt %191, 150i
+                    if %192 [t: %b51, f: %b52] {  # if_12
+                      %b51 = block {  # true
+                        discard
+                        exit_if  # if_12
+                      }
+                      %b52 = block {  # false
+                        %193:f32 = load_vector_element %gl_FragCoord, 1u
+                        %194:i32 = convert %193
+                        %195:bool = lt %194, 180i
+                        if %195 [t: %b53, f: %b54] {  # if_13
+                          %b53 = block {  # true
+                            %196:ptr<private, i32, read_write> = access %data, 5i
+                            %197:i32 = load %196
+                            %198:f32 = convert %197
+                            %199:f32 = div %198, 10.0f
+                            %200:f32 = add 0.5f, %199
+                            store %grey, %200
+                            exit_if  # if_13
+                          }
+                          %b54 = block {  # false
+                            %201:f32 = load_vector_element %gl_FragCoord, 1u
+                            %202:i32 = convert %201
+                            %203:bool = lt %202, 210i
+                            if %203 [t: %b55, f: %b56] {  # if_14
+                              %b55 = block {  # true
+                                %204:ptr<private, i32, read_write> = access %data, 6i
+                                %205:i32 = load %204
+                                %206:f32 = convert %205
+                                %207:f32 = div %206, 10.0f
+                                %208:f32 = add 0.5f, %207
+                                store %grey, %208
+                                exit_if  # if_14
+                              }
+                              %b56 = block {  # false
+                                %209:f32 = load_vector_element %gl_FragCoord, 1u
+                                %210:i32 = convert %209
+                                %211:bool = lt %210, 240i
+                                if %211 [t: %b57, f: %b58] {  # if_15
+                                  %b57 = block {  # true
+                                    %212:ptr<private, i32, read_write> = access %data, 7i
+                                    %213:i32 = load %212
+                                    %214:f32 = convert %213
+                                    %215:f32 = div %214, 10.0f
+                                    %216:f32 = add 0.5f, %215
+                                    store %grey, %216
+                                    exit_if  # if_15
+                                  }
+                                  %b58 = block {  # false
+                                    %217:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %218:i32 = convert %217
+                                    %219:bool = lt %218, 270i
+                                    if %219 [t: %b59, f: %b60] {  # if_16
+                                      %b59 = block {  # true
+                                        %220:ptr<private, i32, read_write> = access %data, 8i
+                                        %221:i32 = load %220
+                                        %222:f32 = convert %221
+                                        %223:f32 = div %222, 10.0f
+                                        %224:f32 = add 0.5f, %223
+                                        store %grey, %224
+                                        exit_if  # if_16
+                                      }
+                                      %b60 = block {  # false
+                                        discard
+                                        exit_if  # if_16
+                                      }
+                                    }
+                                    exit_if  # if_15
+                                  }
+                                }
+                                exit_if  # if_14
+                              }
+                            }
+                            exit_if  # if_13
+                          }
+                        }
+                        exit_if  # if_12
+                      }
+                    }
+                    exit_if  # if_11
+                  }
+                }
+                exit_if  # if_10
+              }
+            }
+            exit_if  # if_9
+          }
+        }
+        exit_if  # if_8
+      }
+    }
+    %225:f32 = load %grey
+    %x_297:vec3<f32> = construct %225
+    %227:f32 = access %x_297, 0u
+    %228:f32 = access %x_297, 1u
+    %229:f32 = access %x_297, 2u
+    %230:vec4<f32> = construct %227, %228, %229, 1.0f
+    store %x_GLF_color, %230
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b61 {
+  %b61 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %233:void = call %main_1
+    %234:vec4<f32> = load %x_GLF_color
+    %235:main_out = construct %234
+    ret %235
+  }
+}
+%mergeSort_ = func():void -> %b62 {
+  %b62 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b63, c: %b64] {  # loop_8
+      %b63 = block {  # body
+        %247:i32 = load %m
+        %248:i32 = load %high
+        %249:bool = lte %247, %248
+        if %249 [t: %b65, f: %b66] {  # if_17
+          %b65 = block {  # true
+            exit_if  # if_17
+          }
+          %b66 = block {  # false
+            exit_loop  # loop_8
+          }
+        }
+        %250:i32 = load %low
+        store %i_2, %250
+        loop [b: %b67, c: %b68] {  # loop_9
+          %b67 = block {  # body
+            %251:i32 = load %i_2
+            %252:i32 = load %high
+            %253:bool = lt %251, %252
+            if %253 [t: %b69, f: %b70] {  # if_18
+              %b69 = block {  # true
+                exit_if  # if_18
+              }
+              %b70 = block {  # false
+                exit_loop  # loop_9
+              }
+            }
+            %254:i32 = load %i_2
+            store %f_1, %254
+            %255:i32 = load %i_2
+            %256:i32 = load %m
+            %257:i32 = add %255, %256
+            %258:i32 = sub %257, 1i
+            store %mid_1, %258
+            %259:i32 = load %i_2
+            %260:i32 = load %m
+            %261:i32 = mul 2i, %260
+            %262:i32 = add %259, %261
+            %263:i32 = sub %262, 1i
+            %264:i32 = load %high
+            %265:i32 = min %263, %264
+            store %to_1, %265
+            %266:i32 = load %f_1
+            store %param, %266
+            %267:i32 = load %mid_1
+            store %param_1, %267
+            %268:i32 = load %to_1
+            store %param_2, %268
+            %269:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b68
+          }
+          %b68 = block {  # continuing
+            %270:i32 = load %i_2
+            %271:i32 = load %m
+            %272:i32 = mul 2i, %271
+            %273:i32 = add %270, %272
+            store %i_2, %273
+            next_iteration %b67
+          }
+        }
+        continue %b64
+      }
+      %b64 = block {  # continuing
+        %274:i32 = load %m
+        %275:i32 = mul 2i, %274
+        store %m, %275
+        next_iteration %b63
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2f38fb7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl.expected.ir.msl
@@ -0,0 +1,621 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %x_303:i32 = load %f
+    store %k, %x_303
+    %x_304:i32 = load %f
+    store %i, %x_304
+    %x_305:i32 = load %mid
+    %17:i32 = add %x_305, 1i
+    store %j, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_311:i32 = load %i
+        %x_312:i32 = load %mid
+        %x_314:i32 = load %j
+        %x_315:i32 = load %to
+        %22:bool = lte %x_311, %x_312
+        %23:bool = lte %x_314, %x_315
+        %24:bool = and %22, %23
+        if %24 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_319:i32 = load %i
+        %26:ptr<private, i32, read_write> = access %data, %x_319
+        %x_321:i32 = load %26
+        %x_322:i32 = load %j
+        %29:ptr<private, i32, read_write> = access %data, %x_322
+        %x_324:i32 = load %29
+        %31:bool = lt %x_321, %x_324
+        if %31 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_329:i32 = load %k
+            %33:i32 = add %x_329, 1i
+            store %k, %33
+            %x_331:i32 = load %i
+            %35:i32 = add %x_331, 1i
+            store %i, %35
+            %36:ptr<private, i32, read_write> = access %data, %x_331
+            %x_334:i32 = load %36
+            %38:ptr<private, i32, read_write> = access %temp, %x_329
+            store %38, %x_334
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_336:i32 = load %k
+            %40:i32 = add %x_336, 1i
+            store %k, %40
+            %x_338:i32 = load %j
+            %42:i32 = add %x_338, 1i
+            store %j, %42
+            %43:ptr<private, i32, read_write> = access %data, %x_338
+            %x_341:i32 = load %43
+            %45:ptr<private, i32, read_write> = access %temp, %x_336
+            store %45, %x_341
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %x_347:i32 = load %i
+        %x_349:i32 = load %i
+        %x_350:i32 = load %mid
+        %49:bool = lt %x_347, 10i
+        %50:bool = lte %x_349, %x_350
+        %51:bool = and %49, %50
+        if %51 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_354:i32 = load %k
+        %53:i32 = add %x_354, 1i
+        store %k, %53
+        %x_356:i32 = load %i
+        %55:i32 = add %x_356, 1i
+        store %i, %55
+        %56:ptr<private, i32, read_write> = access %data, %x_356
+        %x_359:i32 = load %56
+        %58:ptr<private, i32, read_write> = access %temp, %x_354
+        store %58, %x_359
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    %x_361:i32 = load %f
+    store %i_1, %x_361
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %x_366:i32 = load %i_1
+        %x_367:i32 = load %to
+        %62:bool = lte %x_366, %x_367
+        if %62 [t: %b15, f: %b16] {  # if_4
+          %b15 = block {  # true
+            exit_if  # if_4
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_370:i32 = load %i_1
+        %x_371:i32 = load %i_1
+        %65:ptr<private, i32, read_write> = access %temp, %x_371
+        %x_373:i32 = load %65
+        %67:ptr<private, i32, read_write> = access %data, %x_370
+        store %67, %x_373
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %x_375:i32 = load %i_1
+        %69:i32 = add %x_375, 1i
+        store %i_1, %69
+        next_iteration %b13
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b17 {
+  %b17 = block {
+    %x_85:ptr<function, i32, read_write> = var
+    %x_86:ptr<function, i32, read_write> = var
+    %x_87:ptr<function, i32, read_write> = var
+    %x_88:ptr<function, i32, read_write> = var
+    %x_89:ptr<function, i32, read_write> = var
+    %x_90:ptr<function, i32, read_write> = var
+    %x_91:ptr<function, i32, read_write> = var
+    %x_92:ptr<function, i32, read_write> = var
+    %x_93:ptr<function, i32, read_write> = var
+    %x_94:ptr<function, i32, read_write> = var
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %84:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %x_96:f32 = load_vector_element %84, 0u
+    %86:i32 = convert %x_96
+    store %i_3, %86
+    loop [b: %b18, c: %b19] {  # loop_4
+      %b18 = block {  # body
+        %x_102:i32 = load %i_3
+        switch %x_102 [c: (9i, %b20), c: (8i, %b21), c: (7i, %b22), c: (6i, %b23), c: (5i, %b24), c: (4i, %b25), c: (3i, %b26), c: (2i, %b27), c: (1i, %b28), c: (0i, %b29), c: (default, %b30)] {  # switch_1
+          %b20 = block {  # case
+            %x_132:i32 = load %i_3
+            %89:ptr<private, i32, read_write> = access %data, %x_132
+            store %89, -5i
+            exit_switch  # switch_1
+          }
+          %b21 = block {  # case
+            %x_130:i32 = load %i_3
+            %91:ptr<private, i32, read_write> = access %data, %x_130
+            store %91, -4i
+            exit_switch  # switch_1
+          }
+          %b22 = block {  # case
+            %x_128:i32 = load %i_3
+            %93:ptr<private, i32, read_write> = access %data, %x_128
+            store %93, -3i
+            exit_switch  # switch_1
+          }
+          %b23 = block {  # case
+            %x_126:i32 = load %i_3
+            %95:ptr<private, i32, read_write> = access %data, %x_126
+            store %95, -2i
+            exit_switch  # switch_1
+          }
+          %b24 = block {  # case
+            %x_124:i32 = load %i_3
+            %97:ptr<private, i32, read_write> = access %data, %x_124
+            store %97, -1i
+            exit_switch  # switch_1
+          }
+          %b25 = block {  # case
+            %x_122:i32 = load %i_3
+            %99:ptr<private, i32, read_write> = access %data, %x_122
+            store %99, 0i
+            exit_switch  # switch_1
+          }
+          %b26 = block {  # case
+            %x_120:i32 = load %i_3
+            %101:ptr<private, i32, read_write> = access %data, %x_120
+            store %101, 1i
+            exit_switch  # switch_1
+          }
+          %b27 = block {  # case
+            %x_118:i32 = load %i_3
+            %103:ptr<private, i32, read_write> = access %data, %x_118
+            store %103, 2i
+            exit_switch  # switch_1
+          }
+          %b28 = block {  # case
+            %x_116:i32 = load %i_3
+            %105:ptr<private, i32, read_write> = access %data, %x_116
+            store %105, 3i
+            exit_switch  # switch_1
+          }
+          %b29 = block {  # case
+            %x_114:i32 = load %i_3
+            %107:ptr<private, i32, read_write> = access %data, %x_114
+            store %107, 4i
+            exit_switch  # switch_1
+          }
+          %b30 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %x_134:i32 = load %i_3
+        %109:i32 = add %x_134, 1i
+        store %i_3, %109
+        continue %b19
+      }
+      %b19 = block {  # continuing
+        %x_136:i32 = load %i_3
+        %111:bool = lt %x_136, 10i
+        %112:bool = eq %111, false
+        break_if %112 %b18
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b31, c: %b32] {  # loop_5
+      %b31 = block {  # body
+        %x_142:i32 = load %j_1
+        %114:bool = lt %x_142, 10i
+        if %114 [t: %b33, f: %b34] {  # if_5
+          %b33 = block {  # true
+            exit_if  # if_5
+          }
+          %b34 = block {  # false
+            exit_loop  # loop_5
+          }
+        }
+        %x_145:i32 = load %j_1
+        %x_146:i32 = load %j_1
+        %117:ptr<private, i32, read_write> = access %data, %x_146
+        %x_148:i32 = load %117
+        %119:ptr<private, i32, read_write> = access %temp, %x_145
+        store %119, %x_148
+        continue %b32
+      }
+      %b32 = block {  # continuing
+        %x_150:i32 = load %j_1
+        %121:i32 = add %x_150, 1i
+        store %j_1, %121
+        next_iteration %b31
+      }
+    }
+    store %x_94, 0i
+    store %x_93, 9i
+    store %x_92, 1i
+    loop [b: %b35, c: %b36] {  # loop_6
+      %b35 = block {  # body
+        %x_156:i32 = load %x_92
+        %x_157:i32 = load %x_93
+        %124:bool = lte %x_156, %x_157
+        if %124 [t: %b37, f: %b38] {  # if_6
+          %b37 = block {  # true
+            exit_if  # if_6
+          }
+          %b38 = block {  # false
+            exit_loop  # loop_6
+          }
+        }
+        %x_160:i32 = load %x_94
+        store %x_91, %x_160
+        loop [b: %b39, c: %b40] {  # loop_7
+          %b39 = block {  # body
+            %x_165:i32 = load %x_91
+            %x_166:i32 = load %x_93
+            %128:bool = lt %x_165, %x_166
+            if %128 [t: %b41, f: %b42] {  # if_7
+              %b41 = block {  # true
+                exit_if  # if_7
+              }
+              %b42 = block {  # false
+                exit_loop  # loop_7
+              }
+            }
+            %x_169:i32 = load %x_91
+            store %x_90, %x_169
+            %x_170:i32 = load %x_91
+            %x_171:i32 = load %x_92
+            %x_173:array<i32, 10> = load %data
+            store %data, array<i32, 10>(0i)
+            store %data, %x_173
+            %133:i32 = add %x_170, %x_171
+            %134:i32 = sub %133, 1i
+            store %x_89, %134
+            %x_175:i32 = load %x_91
+            %x_176:i32 = load %x_92
+            %x_180:i32 = load %x_93
+            %138:i32 = mul 2i, %x_176
+            %139:i32 = add %x_175, %138
+            %140:i32 = sub %139, 1i
+            %141:i32 = min %140, %x_180
+            store %x_88, %141
+            %x_182:i32 = load %x_90
+            store %x_87, %x_182
+            %x_183:i32 = load %x_89
+            store %x_86, %x_183
+            %x_184:i32 = load %x_88
+            store %x_85, %x_184
+            %145:void = call %merge_i1_i1_i1_, %x_87, %x_86, %x_85
+            continue %b40
+          }
+          %b40 = block {  # continuing
+            %x_186:i32 = load %x_92
+            %x_188:i32 = load %x_91
+            %148:i32 = mul 2i, %x_186
+            %149:i32 = add %x_188, %148
+            store %x_91, %149
+            next_iteration %b39
+          }
+        }
+        continue %b36
+      }
+      %b36 = block {  # continuing
+        %x_190:i32 = load %x_92
+        %151:i32 = mul 2i, %x_190
+        store %x_92, %151
+        next_iteration %b35
+      }
+    }
+    %x_194:f32 = load_vector_element %gl_FragCoord, 1u
+    %153:i32 = convert %x_194
+    %154:bool = lt %153, 30i
+    if %154 [t: %b43, f: %b44] {  # if_8
+      %b43 = block {  # true
+        %155:ptr<private, i32, read_write> = access %data, 0i
+        %x_201:i32 = load %155
+        %157:f32 = convert %x_201
+        %158:f32 = div %157, 10.0f
+        %159:f32 = add 0.5f, %158
+        store %grey, %159
+        exit_if  # if_8
+      }
+      %b44 = block {  # false
+        %x_206:f32 = load_vector_element %gl_FragCoord, 1u
+        %161:i32 = convert %x_206
+        %162:bool = lt %161, 60i
+        if %162 [t: %b45, f: %b46] {  # if_9
+          %b45 = block {  # true
+            %163:ptr<private, i32, read_write> = access %data, 1i
+            %x_213:i32 = load %163
+            %165:f32 = convert %x_213
+            %166:f32 = div %165, 10.0f
+            %167:f32 = add 0.5f, %166
+            store %grey, %167
+            exit_if  # if_9
+          }
+          %b46 = block {  # false
+            %x_218:f32 = load_vector_element %gl_FragCoord, 1u
+            %169:i32 = convert %x_218
+            %170:bool = lt %169, 90i
+            if %170 [t: %b47, f: %b48] {  # if_10
+              %b47 = block {  # true
+                %171:ptr<private, i32, read_write> = access %data, 2i
+                %x_225:i32 = load %171
+                %173:f32 = convert %x_225
+                %174:f32 = div %173, 10.0f
+                %175:f32 = add 0.5f, %174
+                store %grey, %175
+                exit_if  # if_10
+              }
+              %b48 = block {  # false
+                %x_230:f32 = load_vector_element %gl_FragCoord, 1u
+                %177:i32 = convert %x_230
+                %178:bool = lt %177, 120i
+                if %178 [t: %b49, f: %b50] {  # if_11
+                  %b49 = block {  # true
+                    %179:ptr<private, i32, read_write> = access %data, 3i
+                    %x_237:i32 = load %179
+                    %181:f32 = convert %x_237
+                    %182:f32 = div %181, 10.0f
+                    %183:f32 = add 0.5f, %182
+                    store %grey, %183
+                    exit_if  # if_11
+                  }
+                  %b50 = block {  # false
+                    %x_242:f32 = load_vector_element %gl_FragCoord, 1u
+                    %185:i32 = convert %x_242
+                    %186:bool = lt %185, 150i
+                    if %186 [t: %b51, f: %b52] {  # if_12
+                      %b51 = block {  # true
+                        discard
+                        exit_if  # if_12
+                      }
+                      %b52 = block {  # false
+                        %x_249:f32 = load_vector_element %gl_FragCoord, 1u
+                        %188:i32 = convert %x_249
+                        %189:bool = lt %188, 180i
+                        if %189 [t: %b53, f: %b54] {  # if_13
+                          %b53 = block {  # true
+                            %190:ptr<private, i32, read_write> = access %data, 5i
+                            %x_256:i32 = load %190
+                            %192:f32 = convert %x_256
+                            %193:f32 = div %192, 10.0f
+                            %194:f32 = add 0.5f, %193
+                            store %grey, %194
+                            exit_if  # if_13
+                          }
+                          %b54 = block {  # false
+                            %x_261:f32 = load_vector_element %gl_FragCoord, 1u
+                            %196:i32 = convert %x_261
+                            %197:bool = lt %196, 210i
+                            if %197 [t: %b55, f: %b56] {  # if_14
+                              %b55 = block {  # true
+                                %198:ptr<private, i32, read_write> = access %data, 6i
+                                %x_268:i32 = load %198
+                                %200:f32 = convert %x_268
+                                %201:f32 = div %200, 10.0f
+                                %202:f32 = add 0.5f, %201
+                                store %grey, %202
+                                exit_if  # if_14
+                              }
+                              %b56 = block {  # false
+                                %x_273:f32 = load_vector_element %gl_FragCoord, 1u
+                                %204:i32 = convert %x_273
+                                %205:bool = lt %204, 240i
+                                if %205 [t: %b57, f: %b58] {  # if_15
+                                  %b57 = block {  # true
+                                    %206:ptr<private, i32, read_write> = access %data, 7i
+                                    %x_280:i32 = load %206
+                                    %208:f32 = convert %x_280
+                                    %209:f32 = div %208, 10.0f
+                                    %210:f32 = add 0.5f, %209
+                                    store %grey, %210
+                                    exit_if  # if_15
+                                  }
+                                  %b58 = block {  # false
+                                    %x_285:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %212:i32 = convert %x_285
+                                    %213:bool = lt %212, 270i
+                                    if %213 [t: %b59, f: %b60] {  # if_16
+                                      %b59 = block {  # true
+                                        %214:ptr<private, i32, read_write> = access %data, 8i
+                                        %x_292:i32 = load %214
+                                        %216:f32 = convert %x_292
+                                        %217:f32 = div %216, 10.0f
+                                        %218:f32 = add 0.5f, %217
+                                        store %grey, %218
+                                        exit_if  # if_16
+                                      }
+                                      %b60 = block {  # false
+                                        discard
+                                        exit_if  # if_16
+                                      }
+                                    }
+                                    exit_if  # if_15
+                                  }
+                                }
+                                exit_if  # if_14
+                              }
+                            }
+                            exit_if  # if_13
+                          }
+                        }
+                        exit_if  # if_12
+                      }
+                    }
+                    exit_if  # if_11
+                  }
+                }
+                exit_if  # if_10
+              }
+            }
+            exit_if  # if_9
+          }
+        }
+        exit_if  # if_8
+      }
+    }
+    %x_296:f32 = load %grey
+    %x_297:vec3<f32> = construct %x_296, %x_296, %x_296
+    %221:f32 = access %x_297, 0u
+    %222:f32 = access %x_297, 1u
+    %223:f32 = access %x_297, 2u
+    %224:vec4<f32> = construct %221, %222, %223, 1.0f
+    store %x_GLF_color, %224
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b61 {
+  %b61 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %227:void = call %main_1
+    %228:vec4<f32> = load %x_GLF_color
+    %229:main_out = construct %228
+    ret %229
+  }
+}
+%mergeSort_ = func():void -> %b62 {
+  %b62 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b63, c: %b64] {  # loop_8
+      %b63 = block {  # body
+        %x_382:i32 = load %m
+        %x_383:i32 = load %high
+        %243:bool = lte %x_382, %x_383
+        if %243 [t: %b65, f: %b66] {  # if_17
+          %b65 = block {  # true
+            exit_if  # if_17
+          }
+          %b66 = block {  # false
+            exit_loop  # loop_8
+          }
+        }
+        %x_386:i32 = load %low
+        store %i_2, %x_386
+        loop [b: %b67, c: %b68] {  # loop_9
+          %b67 = block {  # body
+            %x_391:i32 = load %i_2
+            %x_392:i32 = load %high
+            %247:bool = lt %x_391, %x_392
+            if %247 [t: %b69, f: %b70] {  # if_18
+              %b69 = block {  # true
+                exit_if  # if_18
+              }
+              %b70 = block {  # false
+                exit_loop  # loop_9
+              }
+            }
+            %x_395:i32 = load %i_2
+            store %f_1, %x_395
+            %x_396:i32 = load %i_2
+            %x_397:i32 = load %m
+            %251:i32 = add %x_396, %x_397
+            %252:i32 = sub %251, 1i
+            store %mid_1, %252
+            %x_400:i32 = load %i_2
+            %x_401:i32 = load %m
+            %x_405:i32 = load %high
+            %256:i32 = mul 2i, %x_401
+            %257:i32 = add %x_400, %256
+            %258:i32 = sub %257, 1i
+            %259:i32 = min %258, %x_405
+            store %to_1, %259
+            %x_407:i32 = load %f_1
+            store %param, %x_407
+            %x_408:i32 = load %mid_1
+            store %param_1, %x_408
+            %x_409:i32 = load %to_1
+            store %param_2, %x_409
+            %263:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b68
+          }
+          %b68 = block {  # continuing
+            %x_411:i32 = load %m
+            %x_413:i32 = load %i_2
+            %266:i32 = mul 2i, %x_411
+            %267:i32 = add %x_413, %266
+            store %i_2, %267
+            next_iteration %b67
+          }
+        }
+        continue %b64
+      }
+      %b64 = block {  # continuing
+        %x_415:i32 = load %m
+        %269:i32 = mul 2i, %x_415
+        store %m, %269
+        next_iteration %b63
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..5904e30
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.spvasm.expected.ir.msl
@@ -0,0 +1,624 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %14:i32 = load %f
+    store %k, %14
+    %15:i32 = load %f
+    store %i, %15
+    %16:i32 = load %mid
+    %17:i32 = add %16, 1i
+    store %j, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %18:i32 = load %i
+        %19:i32 = load %mid
+        %20:bool = lte %18, %19
+        %21:i32 = load %j
+        %22:i32 = load %to
+        %23:bool = lte %21, %22
+        %24:bool = and %20, %23
+        if %24 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %25:i32 = load %i
+        %26:ptr<private, i32, read_write> = access %data, %25
+        %27:i32 = load %26
+        %28:i32 = load %j
+        %29:ptr<private, i32, read_write> = access %data, %28
+        %30:i32 = load %29
+        %31:bool = lt %27, %30
+        if %31 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_328:i32 = load %k
+            %33:i32 = load %k
+            %34:i32 = add %33, 1i
+            store %k, %34
+            %x_330:i32 = load %i
+            %36:i32 = load %i
+            %37:i32 = add %36, 1i
+            store %i, %37
+            %38:ptr<private, i32, read_write> = access %temp, %x_328
+            %39:ptr<private, i32, read_write> = access %data, %x_330
+            %40:i32 = load %39
+            store %38, %40
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_335:i32 = load %k
+            %42:i32 = load %k
+            %43:i32 = add %42, 1i
+            store %k, %43
+            %x_337:i32 = load %j
+            %45:i32 = load %j
+            %46:i32 = add %45, 1i
+            store %j, %46
+            %47:ptr<private, i32, read_write> = access %temp, %x_335
+            %48:ptr<private, i32, read_write> = access %data, %x_337
+            %49:i32 = load %48
+            store %47, %49
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %50:i32 = load %i
+        %51:bool = lt %50, 10i
+        %52:i32 = load %i
+        %53:i32 = load %mid
+        %54:bool = lte %52, %53
+        %55:bool = and %51, %54
+        if %55 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_353:i32 = load %k
+        %57:i32 = load %k
+        %58:i32 = add %57, 1i
+        store %k, %58
+        %x_355:i32 = load %i
+        %60:i32 = load %i
+        %61:i32 = add %60, 1i
+        store %i, %61
+        %62:ptr<private, i32, read_write> = access %temp, %x_353
+        %63:ptr<private, i32, read_write> = access %data, %x_355
+        %64:i32 = load %63
+        store %62, %64
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    %65:i32 = load %f
+    store %i_1, %65
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %66:i32 = load %i_1
+        %67:i32 = load %to
+        %68:bool = lte %66, %67
+        if %68 [t: %b15, f: %b16] {  # if_4
+          %b15 = block {  # true
+            exit_if  # if_4
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_369:i32 = load %i_1
+        %70:ptr<private, i32, read_write> = access %data, %x_369
+        %71:i32 = load %i_1
+        %72:ptr<private, i32, read_write> = access %temp, %71
+        %73:i32 = load %72
+        store %70, %73
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %74:i32 = load %i_1
+        %75:i32 = add %74, 1i
+        store %i_1, %75
+        next_iteration %b13
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b17 {
+  %b17 = block {
+    %x_85:ptr<function, i32, read_write> = var
+    %x_86:ptr<function, i32, read_write> = var
+    %x_87:ptr<function, i32, read_write> = var
+    %x_88:ptr<function, i32, read_write> = var
+    %x_89:ptr<function, i32, read_write> = var
+    %x_90:ptr<function, i32, read_write> = var
+    %x_91:ptr<function, i32, read_write> = var
+    %x_92:ptr<function, i32, read_write> = var
+    %x_93:ptr<function, i32, read_write> = var
+    %x_94:ptr<function, i32, read_write> = var
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %90:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %91:f32 = load_vector_element %90, 0u
+    %92:i32 = convert %91
+    store %i_3, %92
+    loop [b: %b18, c: %b19] {  # loop_4
+      %b18 = block {  # body
+        %x_102:i32 = load %i_3
+        switch %x_102 [c: (9i, %b20), c: (8i, %b21), c: (7i, %b22), c: (6i, %b23), c: (5i, %b24), c: (4i, %b25), c: (3i, %b26), c: (2i, %b27), c: (1i, %b28), c: (0i, %b29), c: (default, %b30)] {  # switch_1
+          %b20 = block {  # case
+            %x_132:i32 = load %i_3
+            %95:ptr<private, i32, read_write> = access %data, %x_132
+            store %95, -5i
+            exit_switch  # switch_1
+          }
+          %b21 = block {  # case
+            %x_130:i32 = load %i_3
+            %97:ptr<private, i32, read_write> = access %data, %x_130
+            store %97, -4i
+            exit_switch  # switch_1
+          }
+          %b22 = block {  # case
+            %x_128:i32 = load %i_3
+            %99:ptr<private, i32, read_write> = access %data, %x_128
+            store %99, -3i
+            exit_switch  # switch_1
+          }
+          %b23 = block {  # case
+            %x_126:i32 = load %i_3
+            %101:ptr<private, i32, read_write> = access %data, %x_126
+            store %101, -2i
+            exit_switch  # switch_1
+          }
+          %b24 = block {  # case
+            %x_124:i32 = load %i_3
+            %103:ptr<private, i32, read_write> = access %data, %x_124
+            store %103, -1i
+            exit_switch  # switch_1
+          }
+          %b25 = block {  # case
+            %x_122:i32 = load %i_3
+            %105:ptr<private, i32, read_write> = access %data, %x_122
+            store %105, 0i
+            exit_switch  # switch_1
+          }
+          %b26 = block {  # case
+            %x_120:i32 = load %i_3
+            %107:ptr<private, i32, read_write> = access %data, %x_120
+            store %107, 1i
+            exit_switch  # switch_1
+          }
+          %b27 = block {  # case
+            %x_118:i32 = load %i_3
+            %109:ptr<private, i32, read_write> = access %data, %x_118
+            store %109, 2i
+            exit_switch  # switch_1
+          }
+          %b28 = block {  # case
+            %x_116:i32 = load %i_3
+            %111:ptr<private, i32, read_write> = access %data, %x_116
+            store %111, 3i
+            exit_switch  # switch_1
+          }
+          %b29 = block {  # case
+            %x_114:i32 = load %i_3
+            %113:ptr<private, i32, read_write> = access %data, %x_114
+            store %113, 4i
+            exit_switch  # switch_1
+          }
+          %b30 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %114:i32 = load %i_3
+        %115:i32 = add %114, 1i
+        store %i_3, %115
+        continue %b19
+      }
+      %b19 = block {  # continuing
+        %x_136:i32 = load %i_3
+        %117:bool = lt %x_136, 10i
+        %118:bool = eq %117, false
+        break_if %118 %b18
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b31, c: %b32] {  # loop_5
+      %b31 = block {  # body
+        %119:i32 = load %j_1
+        %120:bool = lt %119, 10i
+        if %120 [t: %b33, f: %b34] {  # if_5
+          %b33 = block {  # true
+            exit_if  # if_5
+          }
+          %b34 = block {  # false
+            exit_loop  # loop_5
+          }
+        }
+        %x_145:i32 = load %j_1
+        %122:ptr<private, i32, read_write> = access %temp, %x_145
+        %123:i32 = load %j_1
+        %124:ptr<private, i32, read_write> = access %data, %123
+        %125:i32 = load %124
+        store %122, %125
+        continue %b32
+      }
+      %b32 = block {  # continuing
+        %126:i32 = load %j_1
+        %127:i32 = add %126, 1i
+        store %j_1, %127
+        next_iteration %b31
+      }
+    }
+    store %x_94, 0i
+    store %x_93, 9i
+    store %x_92, 1i
+    loop [b: %b35, c: %b36] {  # loop_6
+      %b35 = block {  # body
+        %128:i32 = load %x_92
+        %129:i32 = load %x_93
+        %130:bool = lte %128, %129
+        if %130 [t: %b37, f: %b38] {  # if_6
+          %b37 = block {  # true
+            exit_if  # if_6
+          }
+          %b38 = block {  # false
+            exit_loop  # loop_6
+          }
+        }
+        %131:i32 = load %x_94
+        store %x_91, %131
+        loop [b: %b39, c: %b40] {  # loop_7
+          %b39 = block {  # body
+            %132:i32 = load %x_91
+            %133:i32 = load %x_93
+            %134:bool = lt %132, %133
+            if %134 [t: %b41, f: %b42] {  # if_7
+              %b41 = block {  # true
+                exit_if  # if_7
+              }
+              %b42 = block {  # false
+                exit_loop  # loop_7
+              }
+            }
+            %135:i32 = load %x_91
+            store %x_90, %135
+            %136:i32 = load %x_91
+            %137:i32 = load %x_92
+            %138:i32 = add %136, %137
+            %139:i32 = sub %138, 1i
+            store %x_89, %139
+            %140:i32 = load %x_91
+            %141:i32 = load %x_92
+            %142:i32 = mul 2i, %141
+            %143:i32 = add %140, %142
+            %144:i32 = sub %143, 1i
+            %145:i32 = load %x_93
+            %146:i32 = min %144, %145
+            store %x_88, %146
+            %147:i32 = load %x_90
+            store %x_87, %147
+            %148:i32 = load %x_89
+            store %x_86, %148
+            %149:i32 = load %x_88
+            store %x_85, %149
+            %150:void = call %merge_i1_i1_i1_, %x_87, %x_86, %x_85
+            continue %b40
+          }
+          %b40 = block {  # continuing
+            %151:i32 = load %x_91
+            %152:i32 = load %x_92
+            %153:i32 = mul 2i, %152
+            %154:i32 = add %151, %153
+            store %x_91, %154
+            next_iteration %b39
+          }
+        }
+        continue %b36
+      }
+      %b36 = block {  # continuing
+        %155:i32 = load %x_92
+        %156:i32 = mul 2i, %155
+        store %x_92, %156
+        next_iteration %b35
+      }
+    }
+    %157:f32 = load_vector_element %gl_FragCoord, 1u
+    %158:i32 = convert %157
+    %159:bool = lt %158, 30i
+    if %159 [t: %b43, f: %b44] {  # if_8
+      %b43 = block {  # true
+        %160:ptr<private, i32, read_write> = access %data, 0i
+        %161:i32 = load %160
+        %162:f32 = convert %161
+        %163:f32 = div %162, 10.0f
+        %164:f32 = add 0.5f, %163
+        store %grey, %164
+        exit_if  # if_8
+      }
+      %b44 = block {  # false
+        %165:f32 = load_vector_element %gl_FragCoord, 1u
+        %166:i32 = convert %165
+        %167:bool = lt %166, 60i
+        if %167 [t: %b45, f: %b46] {  # if_9
+          %b45 = block {  # true
+            %168:ptr<private, i32, read_write> = access %data, 1i
+            %169:i32 = load %168
+            %170:f32 = convert %169
+            %171:f32 = div %170, 10.0f
+            %172:f32 = add 0.5f, %171
+            store %grey, %172
+            exit_if  # if_9
+          }
+          %b46 = block {  # false
+            %173:f32 = load_vector_element %gl_FragCoord, 1u
+            %174:i32 = convert %173
+            %175:bool = lt %174, 90i
+            if %175 [t: %b47, f: %b48] {  # if_10
+              %b47 = block {  # true
+                %176:ptr<private, i32, read_write> = access %data, 2i
+                %177:i32 = load %176
+                %178:f32 = convert %177
+                %179:f32 = div %178, 10.0f
+                %180:f32 = add 0.5f, %179
+                store %grey, %180
+                exit_if  # if_10
+              }
+              %b48 = block {  # false
+                %181:f32 = load_vector_element %gl_FragCoord, 1u
+                %182:i32 = convert %181
+                %183:bool = lt %182, 120i
+                if %183 [t: %b49, f: %b50] {  # if_11
+                  %b49 = block {  # true
+                    %184:ptr<private, i32, read_write> = access %data, 3i
+                    %185:i32 = load %184
+                    %186:f32 = convert %185
+                    %187:f32 = div %186, 10.0f
+                    %188:f32 = add 0.5f, %187
+                    store %grey, %188
+                    exit_if  # if_11
+                  }
+                  %b50 = block {  # false
+                    %189:f32 = load_vector_element %gl_FragCoord, 1u
+                    %190:i32 = convert %189
+                    %191:bool = lt %190, 150i
+                    if %191 [t: %b51, f: %b52] {  # if_12
+                      %b51 = block {  # true
+                        discard
+                        exit_if  # if_12
+                      }
+                      %b52 = block {  # false
+                        %192:f32 = load_vector_element %gl_FragCoord, 1u
+                        %193:i32 = convert %192
+                        %194:bool = lt %193, 180i
+                        if %194 [t: %b53, f: %b54] {  # if_13
+                          %b53 = block {  # true
+                            %195:ptr<private, i32, read_write> = access %data, 5i
+                            %196:i32 = load %195
+                            %197:f32 = convert %196
+                            %198:f32 = div %197, 10.0f
+                            %199:f32 = add 0.5f, %198
+                            store %grey, %199
+                            exit_if  # if_13
+                          }
+                          %b54 = block {  # false
+                            %200:f32 = load_vector_element %gl_FragCoord, 1u
+                            %201:i32 = convert %200
+                            %202:bool = lt %201, 210i
+                            if %202 [t: %b55, f: %b56] {  # if_14
+                              %b55 = block {  # true
+                                %203:ptr<private, i32, read_write> = access %data, 6i
+                                %204:i32 = load %203
+                                %205:f32 = convert %204
+                                %206:f32 = div %205, 10.0f
+                                %207:f32 = add 0.5f, %206
+                                store %grey, %207
+                                exit_if  # if_14
+                              }
+                              %b56 = block {  # false
+                                %208:f32 = load_vector_element %gl_FragCoord, 1u
+                                %209:i32 = convert %208
+                                %210:bool = lt %209, 240i
+                                if %210 [t: %b57, f: %b58] {  # if_15
+                                  %b57 = block {  # true
+                                    %211:ptr<private, i32, read_write> = access %data, 7i
+                                    %212:i32 = load %211
+                                    %213:f32 = convert %212
+                                    %214:f32 = div %213, 10.0f
+                                    %215:f32 = add 0.5f, %214
+                                    store %grey, %215
+                                    exit_if  # if_15
+                                  }
+                                  %b58 = block {  # false
+                                    %216:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %217:i32 = convert %216
+                                    %218:bool = lt %217, 270i
+                                    if %218 [t: %b59, f: %b60] {  # if_16
+                                      %b59 = block {  # true
+                                        %219:ptr<private, i32, read_write> = access %data, 8i
+                                        %220:i32 = load %219
+                                        %221:f32 = convert %220
+                                        %222:f32 = div %221, 10.0f
+                                        %223:f32 = add 0.5f, %222
+                                        store %grey, %223
+                                        exit_if  # if_16
+                                      }
+                                      %b60 = block {  # false
+                                        discard
+                                        exit_if  # if_16
+                                      }
+                                    }
+                                    exit_if  # if_15
+                                  }
+                                }
+                                exit_if  # if_14
+                              }
+                            }
+                            exit_if  # if_13
+                          }
+                        }
+                        exit_if  # if_12
+                      }
+                    }
+                    exit_if  # if_11
+                  }
+                }
+                exit_if  # if_10
+              }
+            }
+            exit_if  # if_9
+          }
+        }
+        exit_if  # if_8
+      }
+    }
+    %224:f32 = load %grey
+    %x_296:vec3<f32> = construct %224
+    %226:f32 = access %x_296, 0u
+    %227:f32 = access %x_296, 1u
+    %228:f32 = access %x_296, 2u
+    %229:vec4<f32> = construct %226, %227, %228, 1.0f
+    store %x_GLF_color, %229
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b61 {
+  %b61 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %232:void = call %main_1
+    %233:vec4<f32> = load %x_GLF_color
+    %234:main_out = construct %233
+    ret %234
+  }
+}
+%mergeSort_ = func():void -> %b62 {
+  %b62 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b63, c: %b64] {  # loop_8
+      %b63 = block {  # body
+        %246:i32 = load %m
+        %247:i32 = load %high
+        %248:bool = lte %246, %247
+        if %248 [t: %b65, f: %b66] {  # if_17
+          %b65 = block {  # true
+            exit_if  # if_17
+          }
+          %b66 = block {  # false
+            exit_loop  # loop_8
+          }
+        }
+        %249:i32 = load %low
+        store %i_2, %249
+        loop [b: %b67, c: %b68] {  # loop_9
+          %b67 = block {  # body
+            %250:i32 = load %i_2
+            %251:i32 = load %high
+            %252:bool = lt %250, %251
+            if %252 [t: %b69, f: %b70] {  # if_18
+              %b69 = block {  # true
+                exit_if  # if_18
+              }
+              %b70 = block {  # false
+                exit_loop  # loop_9
+              }
+            }
+            %253:i32 = load %i_2
+            store %f_1, %253
+            %254:i32 = load %i_2
+            %255:i32 = load %m
+            %256:i32 = add %254, %255
+            %257:i32 = sub %256, 1i
+            store %mid_1, %257
+            %258:i32 = load %i_2
+            %259:i32 = load %m
+            %260:i32 = mul 2i, %259
+            %261:i32 = add %258, %260
+            %262:i32 = sub %261, 1i
+            %263:i32 = load %high
+            %264:i32 = min %262, %263
+            store %to_1, %264
+            %265:i32 = load %f_1
+            store %param, %265
+            %266:i32 = load %mid_1
+            store %param_1, %266
+            %267:i32 = load %to_1
+            store %param_2, %267
+            %268:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b68
+          }
+          %b68 = block {  # continuing
+            %269:i32 = load %i_2
+            %270:i32 = load %m
+            %271:i32 = mul 2i, %270
+            %272:i32 = add %269, %271
+            store %i_2, %272
+            next_iteration %b67
+          }
+        }
+        continue %b64
+      }
+      %b64 = block {  # continuing
+        %273:i32 = load %m
+        %274:i32 = mul 2i, %273
+        store %m, %274
+        next_iteration %b63
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..68e4cd0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl.expected.ir.msl
@@ -0,0 +1,618 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %x_302:i32 = load %f
+    store %k, %x_302
+    %x_303:i32 = load %f
+    store %i, %x_303
+    %x_304:i32 = load %mid
+    %17:i32 = add %x_304, 1i
+    store %j, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_310:i32 = load %i
+        %x_311:i32 = load %mid
+        %x_313:i32 = load %j
+        %x_314:i32 = load %to
+        %22:bool = lte %x_310, %x_311
+        %23:bool = lte %x_313, %x_314
+        %24:bool = and %22, %23
+        if %24 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_318:i32 = load %i
+        %26:ptr<private, i32, read_write> = access %data, %x_318
+        %x_320:i32 = load %26
+        %x_321:i32 = load %j
+        %29:ptr<private, i32, read_write> = access %data, %x_321
+        %x_323:i32 = load %29
+        %31:bool = lt %x_320, %x_323
+        if %31 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_328:i32 = load %k
+            %33:i32 = add %x_328, 1i
+            store %k, %33
+            %x_330:i32 = load %i
+            %35:i32 = add %x_330, 1i
+            store %i, %35
+            %36:ptr<private, i32, read_write> = access %data, %x_330
+            %x_333:i32 = load %36
+            %38:ptr<private, i32, read_write> = access %temp, %x_328
+            store %38, %x_333
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_335:i32 = load %k
+            %40:i32 = add %x_335, 1i
+            store %k, %40
+            %x_337:i32 = load %j
+            %42:i32 = add %x_337, 1i
+            store %j, %42
+            %43:ptr<private, i32, read_write> = access %data, %x_337
+            %x_340:i32 = load %43
+            %45:ptr<private, i32, read_write> = access %temp, %x_335
+            store %45, %x_340
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %x_346:i32 = load %i
+        %x_348:i32 = load %i
+        %x_349:i32 = load %mid
+        %49:bool = lt %x_346, 10i
+        %50:bool = lte %x_348, %x_349
+        %51:bool = and %49, %50
+        if %51 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_353:i32 = load %k
+        %53:i32 = add %x_353, 1i
+        store %k, %53
+        %x_355:i32 = load %i
+        %55:i32 = add %x_355, 1i
+        store %i, %55
+        %56:ptr<private, i32, read_write> = access %data, %x_355
+        %x_358:i32 = load %56
+        %58:ptr<private, i32, read_write> = access %temp, %x_353
+        store %58, %x_358
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    %x_360:i32 = load %f
+    store %i_1, %x_360
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %x_365:i32 = load %i_1
+        %x_366:i32 = load %to
+        %62:bool = lte %x_365, %x_366
+        if %62 [t: %b15, f: %b16] {  # if_4
+          %b15 = block {  # true
+            exit_if  # if_4
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_369:i32 = load %i_1
+        %x_370:i32 = load %i_1
+        %65:ptr<private, i32, read_write> = access %temp, %x_370
+        %x_372:i32 = load %65
+        %67:ptr<private, i32, read_write> = access %data, %x_369
+        store %67, %x_372
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %x_374:i32 = load %i_1
+        %69:i32 = add %x_374, 1i
+        store %i_1, %69
+        next_iteration %b13
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b17 {
+  %b17 = block {
+    %x_85:ptr<function, i32, read_write> = var
+    %x_86:ptr<function, i32, read_write> = var
+    %x_87:ptr<function, i32, read_write> = var
+    %x_88:ptr<function, i32, read_write> = var
+    %x_89:ptr<function, i32, read_write> = var
+    %x_90:ptr<function, i32, read_write> = var
+    %x_91:ptr<function, i32, read_write> = var
+    %x_92:ptr<function, i32, read_write> = var
+    %x_93:ptr<function, i32, read_write> = var
+    %x_94:ptr<function, i32, read_write> = var
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %84:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %x_96:f32 = load_vector_element %84, 0u
+    %86:i32 = convert %x_96
+    store %i_3, %86
+    loop [b: %b18, c: %b19] {  # loop_4
+      %b18 = block {  # body
+        %x_102:i32 = load %i_3
+        switch %x_102 [c: (9i, %b20), c: (8i, %b21), c: (7i, %b22), c: (6i, %b23), c: (5i, %b24), c: (4i, %b25), c: (3i, %b26), c: (2i, %b27), c: (1i, %b28), c: (0i, %b29), c: (default, %b30)] {  # switch_1
+          %b20 = block {  # case
+            %x_132:i32 = load %i_3
+            %89:ptr<private, i32, read_write> = access %data, %x_132
+            store %89, -5i
+            exit_switch  # switch_1
+          }
+          %b21 = block {  # case
+            %x_130:i32 = load %i_3
+            %91:ptr<private, i32, read_write> = access %data, %x_130
+            store %91, -4i
+            exit_switch  # switch_1
+          }
+          %b22 = block {  # case
+            %x_128:i32 = load %i_3
+            %93:ptr<private, i32, read_write> = access %data, %x_128
+            store %93, -3i
+            exit_switch  # switch_1
+          }
+          %b23 = block {  # case
+            %x_126:i32 = load %i_3
+            %95:ptr<private, i32, read_write> = access %data, %x_126
+            store %95, -2i
+            exit_switch  # switch_1
+          }
+          %b24 = block {  # case
+            %x_124:i32 = load %i_3
+            %97:ptr<private, i32, read_write> = access %data, %x_124
+            store %97, -1i
+            exit_switch  # switch_1
+          }
+          %b25 = block {  # case
+            %x_122:i32 = load %i_3
+            %99:ptr<private, i32, read_write> = access %data, %x_122
+            store %99, 0i
+            exit_switch  # switch_1
+          }
+          %b26 = block {  # case
+            %x_120:i32 = load %i_3
+            %101:ptr<private, i32, read_write> = access %data, %x_120
+            store %101, 1i
+            exit_switch  # switch_1
+          }
+          %b27 = block {  # case
+            %x_118:i32 = load %i_3
+            %103:ptr<private, i32, read_write> = access %data, %x_118
+            store %103, 2i
+            exit_switch  # switch_1
+          }
+          %b28 = block {  # case
+            %x_116:i32 = load %i_3
+            %105:ptr<private, i32, read_write> = access %data, %x_116
+            store %105, 3i
+            exit_switch  # switch_1
+          }
+          %b29 = block {  # case
+            %x_114:i32 = load %i_3
+            %107:ptr<private, i32, read_write> = access %data, %x_114
+            store %107, 4i
+            exit_switch  # switch_1
+          }
+          %b30 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %x_134:i32 = load %i_3
+        %109:i32 = add %x_134, 1i
+        store %i_3, %109
+        continue %b19
+      }
+      %b19 = block {  # continuing
+        %x_136:i32 = load %i_3
+        %111:bool = lt %x_136, 10i
+        %112:bool = eq %111, false
+        break_if %112 %b18
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b31, c: %b32] {  # loop_5
+      %b31 = block {  # body
+        %x_142:i32 = load %j_1
+        %114:bool = lt %x_142, 10i
+        if %114 [t: %b33, f: %b34] {  # if_5
+          %b33 = block {  # true
+            exit_if  # if_5
+          }
+          %b34 = block {  # false
+            exit_loop  # loop_5
+          }
+        }
+        %x_145:i32 = load %j_1
+        %x_146:i32 = load %j_1
+        %117:ptr<private, i32, read_write> = access %data, %x_146
+        %x_148:i32 = load %117
+        %119:ptr<private, i32, read_write> = access %temp, %x_145
+        store %119, %x_148
+        continue %b32
+      }
+      %b32 = block {  # continuing
+        %x_150:i32 = load %j_1
+        %121:i32 = add %x_150, 1i
+        store %j_1, %121
+        next_iteration %b31
+      }
+    }
+    store %x_94, 0i
+    store %x_93, 9i
+    store %x_92, 1i
+    loop [b: %b35, c: %b36] {  # loop_6
+      %b35 = block {  # body
+        %x_156:i32 = load %x_92
+        %x_157:i32 = load %x_93
+        %124:bool = lte %x_156, %x_157
+        if %124 [t: %b37, f: %b38] {  # if_6
+          %b37 = block {  # true
+            exit_if  # if_6
+          }
+          %b38 = block {  # false
+            exit_loop  # loop_6
+          }
+        }
+        %x_160:i32 = load %x_94
+        store %x_91, %x_160
+        loop [b: %b39, c: %b40] {  # loop_7
+          %b39 = block {  # body
+            %x_165:i32 = load %x_91
+            %x_166:i32 = load %x_93
+            %128:bool = lt %x_165, %x_166
+            if %128 [t: %b41, f: %b42] {  # if_7
+              %b41 = block {  # true
+                exit_if  # if_7
+              }
+              %b42 = block {  # false
+                exit_loop  # loop_7
+              }
+            }
+            %x_169:i32 = load %x_91
+            store %x_90, %x_169
+            %x_170:i32 = load %x_91
+            %x_171:i32 = load %x_92
+            %132:i32 = add %x_170, %x_171
+            %133:i32 = sub %132, 1i
+            store %x_89, %133
+            %x_174:i32 = load %x_91
+            %x_175:i32 = load %x_92
+            %x_179:i32 = load %x_93
+            %137:i32 = mul 2i, %x_175
+            %138:i32 = add %x_174, %137
+            %139:i32 = sub %138, 1i
+            %140:i32 = min %139, %x_179
+            store %x_88, %140
+            %x_181:i32 = load %x_90
+            store %x_87, %x_181
+            %x_182:i32 = load %x_89
+            store %x_86, %x_182
+            %x_183:i32 = load %x_88
+            store %x_85, %x_183
+            %144:void = call %merge_i1_i1_i1_, %x_87, %x_86, %x_85
+            continue %b40
+          }
+          %b40 = block {  # continuing
+            %x_185:i32 = load %x_92
+            %x_187:i32 = load %x_91
+            %147:i32 = mul 2i, %x_185
+            %148:i32 = add %x_187, %147
+            store %x_91, %148
+            next_iteration %b39
+          }
+        }
+        continue %b36
+      }
+      %b36 = block {  # continuing
+        %x_189:i32 = load %x_92
+        %150:i32 = mul 2i, %x_189
+        store %x_92, %150
+        next_iteration %b35
+      }
+    }
+    %x_193:f32 = load_vector_element %gl_FragCoord, 1u
+    %152:i32 = convert %x_193
+    %153:bool = lt %152, 30i
+    if %153 [t: %b43, f: %b44] {  # if_8
+      %b43 = block {  # true
+        %154:ptr<private, i32, read_write> = access %data, 0i
+        %x_200:i32 = load %154
+        %156:f32 = convert %x_200
+        %157:f32 = div %156, 10.0f
+        %158:f32 = add 0.5f, %157
+        store %grey, %158
+        exit_if  # if_8
+      }
+      %b44 = block {  # false
+        %x_205:f32 = load_vector_element %gl_FragCoord, 1u
+        %160:i32 = convert %x_205
+        %161:bool = lt %160, 60i
+        if %161 [t: %b45, f: %b46] {  # if_9
+          %b45 = block {  # true
+            %162:ptr<private, i32, read_write> = access %data, 1i
+            %x_212:i32 = load %162
+            %164:f32 = convert %x_212
+            %165:f32 = div %164, 10.0f
+            %166:f32 = add 0.5f, %165
+            store %grey, %166
+            exit_if  # if_9
+          }
+          %b46 = block {  # false
+            %x_217:f32 = load_vector_element %gl_FragCoord, 1u
+            %168:i32 = convert %x_217
+            %169:bool = lt %168, 90i
+            if %169 [t: %b47, f: %b48] {  # if_10
+              %b47 = block {  # true
+                %170:ptr<private, i32, read_write> = access %data, 2i
+                %x_224:i32 = load %170
+                %172:f32 = convert %x_224
+                %173:f32 = div %172, 10.0f
+                %174:f32 = add 0.5f, %173
+                store %grey, %174
+                exit_if  # if_10
+              }
+              %b48 = block {  # false
+                %x_229:f32 = load_vector_element %gl_FragCoord, 1u
+                %176:i32 = convert %x_229
+                %177:bool = lt %176, 120i
+                if %177 [t: %b49, f: %b50] {  # if_11
+                  %b49 = block {  # true
+                    %178:ptr<private, i32, read_write> = access %data, 3i
+                    %x_236:i32 = load %178
+                    %180:f32 = convert %x_236
+                    %181:f32 = div %180, 10.0f
+                    %182:f32 = add 0.5f, %181
+                    store %grey, %182
+                    exit_if  # if_11
+                  }
+                  %b50 = block {  # false
+                    %x_241:f32 = load_vector_element %gl_FragCoord, 1u
+                    %184:i32 = convert %x_241
+                    %185:bool = lt %184, 150i
+                    if %185 [t: %b51, f: %b52] {  # if_12
+                      %b51 = block {  # true
+                        discard
+                        exit_if  # if_12
+                      }
+                      %b52 = block {  # false
+                        %x_248:f32 = load_vector_element %gl_FragCoord, 1u
+                        %187:i32 = convert %x_248
+                        %188:bool = lt %187, 180i
+                        if %188 [t: %b53, f: %b54] {  # if_13
+                          %b53 = block {  # true
+                            %189:ptr<private, i32, read_write> = access %data, 5i
+                            %x_255:i32 = load %189
+                            %191:f32 = convert %x_255
+                            %192:f32 = div %191, 10.0f
+                            %193:f32 = add 0.5f, %192
+                            store %grey, %193
+                            exit_if  # if_13
+                          }
+                          %b54 = block {  # false
+                            %x_260:f32 = load_vector_element %gl_FragCoord, 1u
+                            %195:i32 = convert %x_260
+                            %196:bool = lt %195, 210i
+                            if %196 [t: %b55, f: %b56] {  # if_14
+                              %b55 = block {  # true
+                                %197:ptr<private, i32, read_write> = access %data, 6i
+                                %x_267:i32 = load %197
+                                %199:f32 = convert %x_267
+                                %200:f32 = div %199, 10.0f
+                                %201:f32 = add 0.5f, %200
+                                store %grey, %201
+                                exit_if  # if_14
+                              }
+                              %b56 = block {  # false
+                                %x_272:f32 = load_vector_element %gl_FragCoord, 1u
+                                %203:i32 = convert %x_272
+                                %204:bool = lt %203, 240i
+                                if %204 [t: %b57, f: %b58] {  # if_15
+                                  %b57 = block {  # true
+                                    %205:ptr<private, i32, read_write> = access %data, 7i
+                                    %x_279:i32 = load %205
+                                    %207:f32 = convert %x_279
+                                    %208:f32 = div %207, 10.0f
+                                    %209:f32 = add 0.5f, %208
+                                    store %grey, %209
+                                    exit_if  # if_15
+                                  }
+                                  %b58 = block {  # false
+                                    %x_284:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %211:i32 = convert %x_284
+                                    %212:bool = lt %211, 270i
+                                    if %212 [t: %b59, f: %b60] {  # if_16
+                                      %b59 = block {  # true
+                                        %213:ptr<private, i32, read_write> = access %data, 8i
+                                        %x_291:i32 = load %213
+                                        %215:f32 = convert %x_291
+                                        %216:f32 = div %215, 10.0f
+                                        %217:f32 = add 0.5f, %216
+                                        store %grey, %217
+                                        exit_if  # if_16
+                                      }
+                                      %b60 = block {  # false
+                                        discard
+                                        exit_if  # if_16
+                                      }
+                                    }
+                                    exit_if  # if_15
+                                  }
+                                }
+                                exit_if  # if_14
+                              }
+                            }
+                            exit_if  # if_13
+                          }
+                        }
+                        exit_if  # if_12
+                      }
+                    }
+                    exit_if  # if_11
+                  }
+                }
+                exit_if  # if_10
+              }
+            }
+            exit_if  # if_9
+          }
+        }
+        exit_if  # if_8
+      }
+    }
+    %x_295:f32 = load %grey
+    %x_296:vec3<f32> = construct %x_295, %x_295, %x_295
+    %220:f32 = access %x_296, 0u
+    %221:f32 = access %x_296, 1u
+    %222:f32 = access %x_296, 2u
+    %223:vec4<f32> = construct %220, %221, %222, 1.0f
+    store %x_GLF_color, %223
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b61 {
+  %b61 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %226:void = call %main_1
+    %227:vec4<f32> = load %x_GLF_color
+    %228:main_out = construct %227
+    ret %228
+  }
+}
+%mergeSort_ = func():void -> %b62 {
+  %b62 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b63, c: %b64] {  # loop_8
+      %b63 = block {  # body
+        %x_381:i32 = load %m
+        %x_382:i32 = load %high
+        %242:bool = lte %x_381, %x_382
+        if %242 [t: %b65, f: %b66] {  # if_17
+          %b65 = block {  # true
+            exit_if  # if_17
+          }
+          %b66 = block {  # false
+            exit_loop  # loop_8
+          }
+        }
+        %x_385:i32 = load %low
+        store %i_2, %x_385
+        loop [b: %b67, c: %b68] {  # loop_9
+          %b67 = block {  # body
+            %x_390:i32 = load %i_2
+            %x_391:i32 = load %high
+            %246:bool = lt %x_390, %x_391
+            if %246 [t: %b69, f: %b70] {  # if_18
+              %b69 = block {  # true
+                exit_if  # if_18
+              }
+              %b70 = block {  # false
+                exit_loop  # loop_9
+              }
+            }
+            %x_394:i32 = load %i_2
+            store %f_1, %x_394
+            %x_395:i32 = load %i_2
+            %x_396:i32 = load %m
+            %250:i32 = add %x_395, %x_396
+            %251:i32 = sub %250, 1i
+            store %mid_1, %251
+            %x_399:i32 = load %i_2
+            %x_400:i32 = load %m
+            %x_404:i32 = load %high
+            %255:i32 = mul 2i, %x_400
+            %256:i32 = add %x_399, %255
+            %257:i32 = sub %256, 1i
+            %258:i32 = min %257, %x_404
+            store %to_1, %258
+            %x_406:i32 = load %f_1
+            store %param, %x_406
+            %x_407:i32 = load %mid_1
+            store %param_1, %x_407
+            %x_408:i32 = load %to_1
+            store %param_2, %x_408
+            %262:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b68
+          }
+          %b68 = block {  # continuing
+            %x_410:i32 = load %m
+            %x_412:i32 = load %i_2
+            %265:i32 = mul 2i, %x_410
+            %266:i32 = add %x_412, %265
+            store %i_2, %266
+            next_iteration %b67
+          }
+        }
+        continue %b64
+      }
+      %b64 = block {  # continuing
+        %x_414:i32 = load %m
+        %268:i32 = mul 2i, %x_414
+        store %m, %268
+        next_iteration %b63
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..5c08107
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm.expected.ir.msl
@@ -0,0 +1,184 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_77:ptr<function, vec2<i32>, read_write> = var
+    %x_80:ptr<function, i32, read_write> = var
+    %x_110:ptr<function, vec2<i32>, read_write> = var
+    %x_111:ptr<function, vec2<i32>, read_write> = var
+    %x_113:ptr<function, vec2<i32>, read_write> = var
+    %x_116:ptr<function, i32, read_write> = var
+    %12:vec4<f32> = load %gl_FragCoord
+    %13:vec2<f32> = swizzle %12, xy
+    %14:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %15:vec2<f32> = load %14
+    %x_60:vec2<f32> = div %13, %15
+    %17:f32 = access %x_60, 0u
+    %18:f32 = mul %17, 8.0f
+    %x_63:i32 = convert %18
+    %20:f32 = access %x_60, 1u
+    %21:f32 = mul %20, 8.0f
+    %x_66:i32 = convert %21
+    %23:i32 = and %x_63, 5i
+    %24:i32 = and %x_66, 10i
+    %25:i32 = or %23, %24
+    %26:i32 = mul %25, 8i
+    %27:i32 = and %x_66, 5i
+    %28:i32 = and %x_63, 10i
+    %29:i32 = or %27, %28
+    %30:i32 = add %26, %29
+    %31:vec2<i32> = construct %30, 0i
+    store %x_77, %31
+    store %x_80, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_91:ptr<function, vec2<i32>, read_write> = var
+        %x_92:ptr<function, vec2<i32>, read_write> = var
+        %x_99:ptr<function, vec2<i32>, read_write> = var
+        %x_100:ptr<function, vec2<i32>, read_write> = var
+        %x_81:ptr<function, i32, read_write> = var
+        %37:i32 = load %x_80
+        %38:bool = lt %37, 100i
+        if %38 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %39:vec2<i32> = load %x_77
+        store %x_92, %39
+        %40:i32 = load_vector_element %x_77, 0u
+        %41:bool = gt %40, 0i
+        if %41 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %42:vec2<i32> = load %x_77
+            store %x_91, %42
+            %43:i32 = load_vector_element %x_77, 1u
+            %44:i32 = sub %43, 1i
+            store_vector_element %x_91, 1u, %44
+            %45:vec2<i32> = load %x_91
+            store %x_92, %45
+            exit_if  # if_2
+          }
+        }
+        %46:vec2<i32> = load %x_92
+        store %x_100, %46
+        %47:i32 = load_vector_element %x_92, 0u
+        %48:bool = lt %47, 0i
+        if %48 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            %49:vec2<i32> = load %x_92
+            store %x_99, %49
+            %50:i32 = load_vector_element %x_92, 1u
+            %51:i32 = add %50, 1i
+            store_vector_element %x_99, 1u, %51
+            %52:vec2<i32> = load %x_99
+            store %x_100, %52
+            exit_if  # if_3
+          }
+        }
+        %53:vec2<i32> = load %x_100
+        %x_78_1:ptr<function, vec2<i32>, read_write> = var, %53
+        %55:i32 = load_vector_element %x_100, 0u
+        %56:i32 = load_vector_element %x_100, 1u
+        %57:i32 = div %56, 2i
+        %58:i32 = add %55, %57
+        store_vector_element %x_78_1, 0u, %58
+        %x_78:vec2<i32> = load %x_78_1
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %60:i32 = load %x_80
+        %61:i32 = add %60, 1i
+        store %x_81, %61
+        store %x_77, %x_78
+        %62:i32 = load %x_81
+        store %x_80, %62
+        next_iteration %b3
+      }
+    }
+    %x_105:i32 = load_vector_element %x_77, 0u
+    %64:vec2<i32> = load %x_77
+    store %x_111, %64
+    %65:bool = lt %x_105, 0i
+    if %65 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        store %x_110, vec2<i32>(0i)
+        %66:i32 = negation %x_105
+        store_vector_element %x_110, 0u, %66
+        %67:vec2<i32> = load %x_110
+        store %x_111, %67
+        exit_if  # if_4
+      }
+    }
+    %68:vec2<i32> = load %x_111
+    store %x_113, %68
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %x_114:ptr<function, vec2<i32>, read_write> = var
+        %70:i32 = load_vector_element %x_113, 0u
+        store %x_116, %70
+        %71:i32 = load %x_116
+        %72:bool = gt %71, 15i
+        if %72 [t: %b12, f: %b13] {  # if_5
+          %b12 = block {  # true
+            exit_if  # if_5
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        store %x_114, vec2<i32>(0i)
+        %73:i32 = load %x_116
+        %74:i32 = sub %73, 16i
+        store_vector_element %x_114, 0u, %74
+        %75:vec2<i32> = load %x_114
+        store %x_113, %75
+        next_iteration %b10
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %76:i32 = load %x_116
+    %77:ptr<function, vec4<f32>, read_write> = access %indexable, %76
+    %78:vec4<f32> = load %77
+    store %x_GLF_color, %78
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b14 {
+  %b14 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %81:void = call %main_1
+    %82:vec4<f32> = load %x_GLF_color
+    %83:main_out = construct %82
+    ret %83
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a222196
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl.expected.ir.msl
@@ -0,0 +1,189 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_77:ptr<function, vec2<i32>, read_write> = var
+    %x_110:ptr<function, vec2<i32>, read_write> = var
+    %x_116:ptr<function, i32, read_write> = var
+    %x_77_phi:ptr<function, vec2<i32>, read_write> = var
+    %x_80_phi:ptr<function, i32, read_write> = var
+    %x_111_phi:ptr<function, vec2<i32>, read_write> = var
+    %x_113_phi:ptr<function, vec2<i32>, read_write> = var
+    %x_56:vec4<f32> = load %gl_FragCoord
+    %14:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_59:vec2<f32> = load %14
+    %16:f32 = access %x_56, 0u
+    %17:f32 = access %x_56, 1u
+    %18:vec2<f32> = construct %16, %17
+    %x_60:vec2<f32> = div %18, %x_59
+    %20:f32 = access %x_60, 0u
+    %21:f32 = mul %20, 8.0f
+    %x_63:i32 = convert %21
+    %23:f32 = access %x_60, 1u
+    %24:f32 = mul %23, 8.0f
+    %x_66:i32 = convert %24
+    %26:i32 = and %x_63, 5i
+    %27:i32 = and %x_66, 10i
+    %28:i32 = or %26, %27
+    %29:i32 = mul %28, 8i
+    %30:i32 = and %x_66, 5i
+    %31:i32 = and %x_63, 10i
+    %32:i32 = or %30, %31
+    %33:i32 = add %29, %32
+    %x_75:vec2<i32> = construct %33, 0i
+    store %x_77_phi, %x_75
+    store %x_80_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_91:ptr<function, vec2<i32>, read_write> = var
+        %x_99:ptr<function, vec2<i32>, read_write> = var
+        %x_81:ptr<function, i32, read_write> = var
+        %x_92_phi:ptr<function, vec2<i32>, read_write> = var
+        %x_100_phi:ptr<function, vec2<i32>, read_write> = var
+        %40:vec2<i32> = load %x_77_phi
+        store %x_77, %40
+        %x_80:i32 = load %x_80_phi
+        %42:bool = lt %x_80, 100i
+        if %42 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %43:vec2<i32> = load %x_77
+        store %x_92_phi, %43
+        %44:i32 = load_vector_element %x_77, 0u
+        %45:bool = gt %44, 0i
+        if %45 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %46:vec2<i32> = load %x_77
+            store %x_91, %46
+            %47:i32 = load_vector_element %x_77, 1u
+            %48:i32 = sub %47, 1i
+            store_vector_element %x_91, 1u, %48
+            %49:vec2<i32> = load %x_91
+            store %x_92_phi, %49
+            exit_if  # if_2
+          }
+        }
+        %x_92:vec2<i32> = load %x_92_phi
+        store %x_100_phi, %x_92
+        %51:i32 = access %x_92, 0u
+        %52:bool = lt %51, 0i
+        if %52 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            store %x_99, %x_92
+            %53:i32 = access %x_92, 1u
+            %54:i32 = add %53, 1i
+            store_vector_element %x_99, 1u, %54
+            %55:vec2<i32> = load %x_99
+            store %x_100_phi, %55
+            exit_if  # if_3
+          }
+        }
+        %x_100:vec2<i32> = load %x_100_phi
+        %x_78_1:ptr<function, vec2<i32>, read_write> = var, %x_100
+        %58:i32 = access %x_100, 0u
+        %59:i32 = access %x_100, 1u
+        %60:i32 = div %59, 2i
+        %61:i32 = add %58, %60
+        store_vector_element %x_78_1, 0u, %61
+        %x_78:vec2<i32> = load %x_78_1
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %63:i32 = add %x_80, 1i
+        store %x_81, %63
+        store %x_77_phi, %x_78
+        %64:i32 = load %x_81
+        store %x_80_phi, %64
+        next_iteration %b3
+      }
+    }
+    %x_105:i32 = load_vector_element %x_77, 0u
+    %66:vec2<i32> = load %x_77
+    store %x_111_phi, %66
+    %67:bool = lt %x_105, 0i
+    if %67 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        store %x_110, vec2<i32>(0i)
+        %68:i32 = negation %x_105
+        store_vector_element %x_110, 0u, %68
+        %69:vec2<i32> = load %x_110
+        store %x_111_phi, %69
+        exit_if  # if_4
+      }
+    }
+    %x_111:vec2<i32> = load %x_111_phi
+    store %x_113_phi, %x_111
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %x_114:ptr<function, vec2<i32>, read_write> = var
+        %x_113:vec2<i32> = load %x_113_phi
+        %73:i32 = access %x_113, 0u
+        store %x_116, %73
+        %74:i32 = load %x_116
+        %75:bool = gt %74, 15i
+        if %75 [t: %b12, f: %b13] {  # if_5
+          %b12 = block {  # true
+            exit_if  # if_5
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        store %x_114, vec2<i32>(0i)
+        %76:i32 = load %x_116
+        %77:i32 = sub %76, 16i
+        %78:i32 = bitcast %77
+        store_vector_element %x_114, 0u, %78
+        %79:vec2<i32> = load %x_114
+        store %x_113_phi, %79
+        next_iteration %b10
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %80:i32 = load %x_116
+    %81:ptr<function, vec4<f32>, read_write> = access %indexable, %80
+    %x_121:vec4<f32> = load %81
+    store %x_GLF_color, %x_121
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b14 {
+  %b14 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %85:void = call %main_1
+    %86:vec4<f32> = load %x_GLF_color
+    %87:main_out = construct %86
+    ret %87
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..0a710b9
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm.expected.ir.msl
@@ -0,0 +1,187 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_80:ptr<function, vec2<i32>, read_write> = var
+    %x_83:ptr<function, i32, read_write> = var
+    %x_113:ptr<function, vec2<i32>, read_write> = var
+    %x_114:ptr<function, vec2<i32>, read_write> = var
+    %x_116:ptr<function, vec2<i32>, read_write> = var
+    %x_119:ptr<function, i32, read_write> = var
+    %12:vec4<f32> = load %gl_FragCoord
+    %13:vec2<f32> = swizzle %12, xy
+    %14:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %15:vec2<f32> = load %14
+    %x_63:vec2<f32> = div %13, %15
+    %17:f32 = access %x_63, 0u
+    %18:f32 = mul %17, 8.0f
+    %x_66:i32 = convert %18
+    %20:f32 = access %x_63, 1u
+    %21:f32 = mul %20, 8.0f
+    %x_69:i32 = convert %21
+    %23:i32 = and %x_66, 5i
+    %24:i32 = and %x_69, 10i
+    %25:i32 = or %23, %24
+    %26:i32 = mul %25, 8i
+    %27:i32 = and %x_69, 5i
+    %28:i32 = and %x_66, 10i
+    %29:i32 = or %27, %28
+    %30:i32 = add %26, %29
+    %31:vec2<i32> = construct %30, 0i
+    store %x_80, %31
+    store %x_83, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_94:ptr<function, vec2<i32>, read_write> = var
+        %x_95:ptr<function, vec2<i32>, read_write> = var
+        %x_102:ptr<function, vec2<i32>, read_write> = var
+        %x_103:ptr<function, vec2<i32>, read_write> = var
+        %x_84:ptr<function, i32, read_write> = var
+        %37:i32 = load %x_83
+        %38:bool = lt %37, 100i
+        if %38 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %39:vec2<i32> = load %x_80
+        store %x_95, %39
+        %40:i32 = load_vector_element %x_80, 0u
+        %41:bool = gt %40, 0i
+        if %41 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %42:vec2<i32> = load %x_80
+            store %x_94, %42
+            %43:i32 = load_vector_element %x_80, 1u
+            %44:i32 = sub %43, 1i
+            store_vector_element %x_94, 1u, %44
+            %45:vec2<i32> = load %x_94
+            store %x_95, %45
+            exit_if  # if_2
+          }
+        }
+        %46:vec2<i32> = load %x_95
+        store %x_103, %46
+        %47:i32 = load_vector_element %x_95, 0u
+        %48:bool = lt %47, 0i
+        if %48 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            %49:vec2<i32> = load %x_95
+            store %x_102, %49
+            %50:i32 = load_vector_element %x_95, 1u
+            %51:i32 = add %50, 1i
+            store_vector_element %x_102, 1u, %51
+            %52:vec2<i32> = load %x_102
+            store %x_103, %52
+            exit_if  # if_3
+          }
+        }
+        %53:vec2<i32> = load %x_103
+        %x_81_1:ptr<function, vec2<i32>, read_write> = var, %53
+        %55:i32 = load_vector_element %x_103, 0u
+        %56:i32 = load_vector_element %x_103, 1u
+        %57:i32 = div %56, 2i
+        %58:i32 = add %55, %57
+        store_vector_element %x_81_1, 0u, %58
+        %x_81:vec2<i32> = load %x_81_1
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %60:i32 = load %x_83
+        %61:i32 = add %60, 1i
+        store %x_84, %61
+        store %x_80, %x_81
+        %62:i32 = load %x_84
+        store %x_83, %62
+        next_iteration %b3
+      }
+    }
+    %x_108:i32 = load_vector_element %x_80, 0u
+    %64:vec2<i32> = load %x_80
+    store %x_114, %64
+    %65:bool = lt %x_108, 0i
+    if %65 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        store %x_113, vec2<i32>(0i)
+        %66:i32 = negation %x_108
+        store_vector_element %x_113, 0u, %66
+        %67:vec2<i32> = load %x_113
+        store %x_114, %67
+        exit_if  # if_4
+      }
+    }
+    %68:vec2<i32> = load %x_114
+    store %x_116, %68
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %x_117:ptr<function, vec2<i32>, read_write> = var
+        %70:i32 = load_vector_element %x_116, 0u
+        store %x_119, %70
+        %71:i32 = load %x_119
+        %72:bool = gt %71, 15i
+        if %72 [t: %b12, f: %b13] {  # if_5
+          %b12 = block {  # true
+            exit_if  # if_5
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        store %x_117, vec2<i32>(0i)
+        %73:i32 = load %x_119
+        %74:i32 = sub %73, 16i
+        store_vector_element %x_117, 0u, %74
+        %75:vec2<i32> = load %x_117
+        store %x_116, %75
+        next_iteration %b10
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %x_123:array<vec4<f32>, 16> = load %indexable
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f))
+    store %indexable, %x_123
+    %77:i32 = load %x_119
+    %78:ptr<function, vec4<f32>, read_write> = access %indexable, %77
+    %79:vec4<f32> = load %78
+    store %x_GLF_color, %79
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b14 {
+  %b14 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %82:void = call %main_1
+    %83:vec4<f32> = load %x_GLF_color
+    %84:main_out = construct %83
+    ret %84
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..453db69
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl.expected.ir.msl
@@ -0,0 +1,192 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_80:ptr<function, vec2<i32>, read_write> = var
+    %x_113:ptr<function, vec2<i32>, read_write> = var
+    %x_119:ptr<function, i32, read_write> = var
+    %x_80_phi:ptr<function, vec2<i32>, read_write> = var
+    %x_83_phi:ptr<function, i32, read_write> = var
+    %x_114_phi:ptr<function, vec2<i32>, read_write> = var
+    %x_116_phi:ptr<function, vec2<i32>, read_write> = var
+    %x_59:vec4<f32> = load %gl_FragCoord
+    %14:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_62:vec2<f32> = load %14
+    %16:f32 = access %x_59, 0u
+    %17:f32 = access %x_59, 1u
+    %18:vec2<f32> = construct %16, %17
+    %x_63:vec2<f32> = div %18, %x_62
+    %20:f32 = access %x_63, 0u
+    %21:f32 = mul %20, 8.0f
+    %x_66:i32 = convert %21
+    %23:f32 = access %x_63, 1u
+    %24:f32 = mul %23, 8.0f
+    %x_69:i32 = convert %24
+    %26:i32 = and %x_66, 5i
+    %27:i32 = and %x_69, 10i
+    %28:i32 = or %26, %27
+    %29:i32 = mul %28, 8i
+    %30:i32 = and %x_69, 5i
+    %31:i32 = and %x_66, 10i
+    %32:i32 = or %30, %31
+    %33:i32 = add %29, %32
+    %x_78:vec2<i32> = construct %33, 0i
+    store %x_80_phi, %x_78
+    store %x_83_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_94:ptr<function, vec2<i32>, read_write> = var
+        %x_102:ptr<function, vec2<i32>, read_write> = var
+        %x_84:ptr<function, i32, read_write> = var
+        %x_95_phi:ptr<function, vec2<i32>, read_write> = var
+        %x_103_phi:ptr<function, vec2<i32>, read_write> = var
+        %40:vec2<i32> = load %x_80_phi
+        store %x_80, %40
+        %x_83:i32 = load %x_83_phi
+        %42:bool = lt %x_83, 100i
+        if %42 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %43:vec2<i32> = load %x_80
+        store %x_95_phi, %43
+        %44:i32 = load_vector_element %x_80, 0u
+        %45:bool = gt %44, 0i
+        if %45 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %46:vec2<i32> = load %x_80
+            store %x_94, %46
+            %47:i32 = load_vector_element %x_80, 1u
+            %48:i32 = sub %47, 1i
+            store_vector_element %x_94, 1u, %48
+            %49:vec2<i32> = load %x_94
+            store %x_95_phi, %49
+            exit_if  # if_2
+          }
+        }
+        %x_95:vec2<i32> = load %x_95_phi
+        store %x_103_phi, %x_95
+        %51:i32 = access %x_95, 0u
+        %52:bool = lt %51, 0i
+        if %52 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            store %x_102, %x_95
+            %53:i32 = access %x_95, 1u
+            %54:i32 = add %53, 1i
+            store_vector_element %x_102, 1u, %54
+            %55:vec2<i32> = load %x_102
+            store %x_103_phi, %55
+            exit_if  # if_3
+          }
+        }
+        %x_103:vec2<i32> = load %x_103_phi
+        %x_81_1:ptr<function, vec2<i32>, read_write> = var, %x_103
+        %58:i32 = access %x_103, 0u
+        %59:i32 = access %x_103, 1u
+        %60:i32 = div %59, 2i
+        %61:i32 = add %58, %60
+        store_vector_element %x_81_1, 0u, %61
+        %x_81:vec2<i32> = load %x_81_1
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %63:i32 = add %x_83, 1i
+        store %x_84, %63
+        store %x_80_phi, %x_81
+        %64:i32 = load %x_84
+        store %x_83_phi, %64
+        next_iteration %b3
+      }
+    }
+    %x_108:i32 = load_vector_element %x_80, 0u
+    %66:vec2<i32> = load %x_80
+    store %x_114_phi, %66
+    %67:bool = lt %x_108, 0i
+    if %67 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        store %x_113, vec2<i32>(0i)
+        %68:i32 = negation %x_108
+        store_vector_element %x_113, 0u, %68
+        %69:vec2<i32> = load %x_113
+        store %x_114_phi, %69
+        exit_if  # if_4
+      }
+    }
+    %x_114:vec2<i32> = load %x_114_phi
+    store %x_116_phi, %x_114
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %x_117:ptr<function, vec2<i32>, read_write> = var
+        %x_116:vec2<i32> = load %x_116_phi
+        %73:i32 = access %x_116, 0u
+        store %x_119, %73
+        %74:i32 = load %x_119
+        %75:bool = gt %74, 15i
+        if %75 [t: %b12, f: %b13] {  # if_5
+          %b12 = block {  # true
+            exit_if  # if_5
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        store %x_117, vec2<i32>(0i)
+        %76:i32 = load %x_119
+        %77:i32 = sub %76, 16i
+        %78:i32 = bitcast %77
+        store_vector_element %x_117, 0u, %78
+        %79:vec2<i32> = load %x_117
+        store %x_116_phi, %79
+        next_iteration %b10
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %x_123:array<vec4<f32>, 16> = load %indexable
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f))
+    store %indexable, %x_123
+    %81:i32 = load %x_119
+    %82:ptr<function, vec4<f32>, read_write> = access %indexable, %81
+    %x_125:vec4<f32> = load %82
+    store %x_GLF_color, %x_125
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b14 {
+  %b14 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %86:void = call %main_1
+    %87:vec4<f32> = load %x_GLF_color
+    %88:main_out = construct %87
+    ret %88
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..a6e3807
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm.expected.ir.msl
@@ -0,0 +1,186 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_76:ptr<function, vec2<i32>, read_write> = var
+    %x_79:ptr<function, i32, read_write> = var
+    %x_109:ptr<function, vec2<i32>, read_write> = var
+    %x_110:ptr<function, vec2<i32>, read_write> = var
+    %x_112:ptr<function, vec2<i32>, read_write> = var
+    %x_115:ptr<function, i32, read_write> = var
+    %12:vec4<f32> = load %gl_FragCoord
+    %13:vec2<f32> = swizzle %12, xy
+    %14:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %15:vec2<f32> = load %14
+    %x_59:vec2<f32> = div %13, %15
+    %17:f32 = access %x_59, 0u
+    %18:f32 = mul %17, 8.0f
+    %x_62:i32 = convert %18
+    %20:f32 = access %x_59, 1u
+    %21:f32 = mul %20, 8.0f
+    %x_65:i32 = convert %21
+    %23:i32 = and %x_62, 5i
+    %24:i32 = and %x_65, 10i
+    %25:i32 = or %23, %24
+    %26:i32 = mul %25, 8i
+    %27:i32 = and %x_65, 5i
+    %28:i32 = and %x_62, 10i
+    %29:i32 = or %27, %28
+    %30:i32 = add %26, %29
+    %31:vec2<i32> = construct %30, 0i
+    store %x_76, %31
+    store %x_79, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_90:ptr<function, vec2<i32>, read_write> = var
+        %x_91:ptr<function, vec2<i32>, read_write> = var
+        %x_98:ptr<function, vec2<i32>, read_write> = var
+        %x_99:ptr<function, vec2<i32>, read_write> = var
+        %x_80:ptr<function, i32, read_write> = var
+        %37:i32 = load %x_79
+        %38:bool = lt %37, 100i
+        if %38 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %39:vec2<i32> = load %x_76
+        store %x_91, %39
+        %40:i32 = load_vector_element %x_76, 0u
+        %41:bool = gt %40, 0i
+        if %41 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %42:vec2<i32> = load %x_76
+            store %x_90, %42
+            %43:i32 = load_vector_element %x_76, 1u
+            %44:i32 = sub %43, 1i
+            store_vector_element %x_90, 1u, %44
+            %45:vec2<i32> = load %x_90
+            store %x_91, %45
+            exit_if  # if_2
+          }
+        }
+        %46:vec2<i32> = load %x_91
+        store %x_99, %46
+        %47:i32 = load_vector_element %x_91, 0u
+        %48:bool = lt %47, 0i
+        if %48 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            %49:vec2<i32> = load %x_91
+            store %x_98, %49
+            %50:i32 = load_vector_element %x_91, 1u
+            %51:i32 = add %50, 1i
+            store_vector_element %x_98, 1u, %51
+            %52:vec2<i32> = load %x_98
+            store %x_99, %52
+            exit_if  # if_3
+          }
+        }
+        %53:vec2<i32> = load %x_99
+        %x_77_1:ptr<function, vec2<i32>, read_write> = var, %53
+        %55:i32 = load_vector_element %x_99, 0u
+        %56:i32 = load_vector_element %x_99, 1u
+        %57:i32 = div %56, 2i
+        %58:i32 = add %55, %57
+        store_vector_element %x_77_1, 0u, %58
+        %x_77:vec2<i32> = load %x_77_1
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %60:i32 = load %x_79
+        %61:i32 = add %60, 1i
+        store %x_80, %61
+        store %x_76, %x_77
+        %62:i32 = load %x_80
+        store %x_79, %62
+        next_iteration %b3
+      }
+    }
+    %x_104:i32 = load_vector_element %x_76, 0u
+    %64:vec2<i32> = load %x_76
+    store %x_110, %64
+    %65:bool = lt %x_104, 0i
+    if %65 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        %66:vec2<i32> = load %x_76
+        store %x_109, %66
+        %67:i32 = negation %x_104
+        store_vector_element %x_109, 0u, %67
+        %68:vec2<i32> = load %x_109
+        store %x_110, %68
+        exit_if  # if_4
+      }
+    }
+    %69:vec2<i32> = load %x_110
+    store %x_112, %69
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %x_113:ptr<function, vec2<i32>, read_write> = var
+        %71:i32 = load_vector_element %x_112, 0u
+        store %x_115, %71
+        %72:i32 = load %x_115
+        %73:bool = gt %72, 15i
+        if %73 [t: %b12, f: %b13] {  # if_5
+          %b12 = block {  # true
+            exit_if  # if_5
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        %74:vec2<i32> = load %x_112
+        store %x_113, %74
+        %75:i32 = load %x_115
+        %76:i32 = sub %75, 16i
+        store_vector_element %x_113, 0u, %76
+        %77:vec2<i32> = load %x_113
+        store %x_112, %77
+        next_iteration %b10
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %78:i32 = load %x_115
+    %79:ptr<function, vec4<f32>, read_write> = access %indexable, %78
+    %80:vec4<f32> = load %79
+    store %x_GLF_color, %80
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b14 {
+  %b14 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %83:void = call %main_1
+    %84:vec4<f32> = load %x_GLF_color
+    %85:main_out = construct %84
+    ret %85
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fb26df0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl.expected.ir.msl
@@ -0,0 +1,190 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_76:ptr<function, vec2<i32>, read_write> = var
+    %x_109:ptr<function, vec2<i32>, read_write> = var
+    %x_115:ptr<function, i32, read_write> = var
+    %x_76_phi:ptr<function, vec2<i32>, read_write> = var
+    %x_79_phi:ptr<function, i32, read_write> = var
+    %x_110_phi:ptr<function, vec2<i32>, read_write> = var
+    %x_112_phi:ptr<function, vec2<i32>, read_write> = var
+    %x_55:vec4<f32> = load %gl_FragCoord
+    %14:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_58:vec2<f32> = load %14
+    %16:f32 = access %x_55, 0u
+    %17:f32 = access %x_55, 1u
+    %18:vec2<f32> = construct %16, %17
+    %x_59:vec2<f32> = div %18, %x_58
+    %20:f32 = access %x_59, 0u
+    %21:f32 = mul %20, 8.0f
+    %x_62:i32 = convert %21
+    %23:f32 = access %x_59, 1u
+    %24:f32 = mul %23, 8.0f
+    %x_65:i32 = convert %24
+    %26:i32 = and %x_62, 5i
+    %27:i32 = and %x_65, 10i
+    %28:i32 = or %26, %27
+    %29:i32 = mul %28, 8i
+    %30:i32 = and %x_65, 5i
+    %31:i32 = and %x_62, 10i
+    %32:i32 = or %30, %31
+    %33:i32 = add %29, %32
+    %x_74:vec2<i32> = construct %33, 0i
+    store %x_76_phi, %x_74
+    store %x_79_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_90:ptr<function, vec2<i32>, read_write> = var
+        %x_98:ptr<function, vec2<i32>, read_write> = var
+        %x_80:ptr<function, i32, read_write> = var
+        %x_91_phi:ptr<function, vec2<i32>, read_write> = var
+        %x_99_phi:ptr<function, vec2<i32>, read_write> = var
+        %40:vec2<i32> = load %x_76_phi
+        store %x_76, %40
+        %x_79:i32 = load %x_79_phi
+        %42:bool = lt %x_79, 100i
+        if %42 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %43:vec2<i32> = load %x_76
+        store %x_91_phi, %43
+        %44:i32 = load_vector_element %x_76, 0u
+        %45:bool = gt %44, 0i
+        if %45 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %46:vec2<i32> = load %x_76
+            store %x_90, %46
+            %47:i32 = load_vector_element %x_76, 1u
+            %48:i32 = sub %47, 1i
+            store_vector_element %x_90, 1u, %48
+            %49:vec2<i32> = load %x_90
+            store %x_91_phi, %49
+            exit_if  # if_2
+          }
+        }
+        %x_91:vec2<i32> = load %x_91_phi
+        store %x_99_phi, %x_91
+        %51:i32 = access %x_91, 0u
+        %52:bool = lt %51, 0i
+        if %52 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            store %x_98, %x_91
+            %53:i32 = access %x_91, 1u
+            %54:i32 = add %53, 1i
+            store_vector_element %x_98, 1u, %54
+            %55:vec2<i32> = load %x_98
+            store %x_99_phi, %55
+            exit_if  # if_3
+          }
+        }
+        %x_99:vec2<i32> = load %x_99_phi
+        %x_77_1:ptr<function, vec2<i32>, read_write> = var, %x_99
+        %58:i32 = access %x_99, 0u
+        %59:i32 = access %x_99, 1u
+        %60:i32 = div %59, 2i
+        %61:i32 = add %58, %60
+        store_vector_element %x_77_1, 0u, %61
+        %x_77:vec2<i32> = load %x_77_1
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %63:i32 = add %x_79, 1i
+        store %x_80, %63
+        store %x_76_phi, %x_77
+        %64:i32 = load %x_80
+        store %x_79_phi, %64
+        next_iteration %b3
+      }
+    }
+    %x_104:i32 = load_vector_element %x_76, 0u
+    %66:vec2<i32> = load %x_76
+    store %x_110_phi, %66
+    %67:bool = lt %x_104, 0i
+    if %67 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        %68:vec2<i32> = load %x_76
+        store %x_109, %68
+        %69:i32 = negation %x_104
+        store_vector_element %x_109, 0u, %69
+        %70:vec2<i32> = load %x_109
+        store %x_110_phi, %70
+        exit_if  # if_4
+      }
+    }
+    %x_110:vec2<i32> = load %x_110_phi
+    store %x_112_phi, %x_110
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %x_113:ptr<function, vec2<i32>, read_write> = var
+        %x_112:vec2<i32> = load %x_112_phi
+        %74:i32 = access %x_112, 0u
+        store %x_115, %74
+        %75:i32 = load %x_115
+        %76:bool = gt %75, 15i
+        if %76 [t: %b12, f: %b13] {  # if_5
+          %b12 = block {  # true
+            exit_if  # if_5
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        store %x_113, %x_112
+        %77:i32 = load %x_115
+        %78:i32 = sub %77, 16i
+        %79:i32 = bitcast %78
+        store_vector_element %x_113, 0u, %79
+        %80:vec2<i32> = load %x_113
+        store %x_112_phi, %80
+        next_iteration %b10
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %81:i32 = load %x_115
+    %82:ptr<function, vec4<f32>, read_write> = access %indexable, %81
+    %x_120:vec4<f32> = load %82
+    store %x_GLF_color, %x_120
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b14 {
+  %b14 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %86:void = call %main_1
+    %87:vec4<f32> = load %x_GLF_color
+    %88:main_out = construct %87
+    ret %88
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f6efa9e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm.expected.ir.msl
@@ -0,0 +1,189 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_80:ptr<function, vec2<i32>, read_write> = var
+    %x_83:ptr<function, i32, read_write> = var
+    %x_113:ptr<function, vec2<i32>, read_write> = var
+    %x_114:ptr<function, vec2<i32>, read_write> = var
+    %x_116:ptr<function, vec2<i32>, read_write> = var
+    %x_119:ptr<function, i32, read_write> = var
+    %12:vec4<f32> = load %gl_FragCoord
+    %13:vec2<f32> = swizzle %12, xy
+    %14:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %15:vec2<f32> = load %14
+    %x_62:vec2<f32> = div %13, %15
+    %17:f32 = access %x_62, 0u
+    %18:f32 = mul %17, 8.0f
+    %x_65:i32 = convert %18
+    %20:f32 = access %x_62, 1u
+    %21:f32 = mul %20, 8.0f
+    %x_69:i32 = convert %21
+    %23:i32 = and %x_65, 5i
+    %24:i32 = and %x_69, 10i
+    %25:i32 = or %23, %24
+    %26:i32 = mul %25, 8i
+    %27:i32 = and %x_69, 5i
+    %28:i32 = and %x_65, 10i
+    %29:i32 = or %27, %28
+    %30:i32 = add %26, %29
+    %31:vec2<i32> = construct %30, 0i
+    store %x_80, %31
+    store %x_83, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_94:ptr<function, vec2<i32>, read_write> = var
+        %x_95:ptr<function, vec2<i32>, read_write> = var
+        %x_102:ptr<function, vec2<i32>, read_write> = var
+        %x_103:ptr<function, vec2<i32>, read_write> = var
+        %x_84:ptr<function, i32, read_write> = var
+        %37:i32 = load %x_83
+        %38:bool = lt %37, 100i
+        if %38 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %39:vec2<i32> = load %x_80
+        store %x_95, %39
+        %40:i32 = load_vector_element %x_80, 0u
+        %41:bool = gt %40, 0i
+        if %41 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %42:vec2<i32> = load %x_80
+            store %x_94, %42
+            %43:i32 = load_vector_element %x_80, 1u
+            %44:i32 = sub %43, 1i
+            store_vector_element %x_94, 1u, %44
+            %45:vec2<i32> = load %x_94
+            store %x_95, %45
+            exit_if  # if_2
+          }
+        }
+        %46:vec2<i32> = load %x_95
+        store %x_103, %46
+        %47:i32 = load_vector_element %x_95, 0u
+        %48:bool = lt %47, 0i
+        if %48 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            %49:vec2<i32> = load %x_95
+            store %x_102, %49
+            %50:i32 = load_vector_element %x_95, 1u
+            %51:i32 = add %50, 1i
+            store_vector_element %x_102, 1u, %51
+            %52:vec2<i32> = load %x_102
+            store %x_103, %52
+            exit_if  # if_3
+          }
+        }
+        %53:vec2<i32> = load %x_103
+        %x_81_1:ptr<function, vec2<i32>, read_write> = var, %53
+        %55:i32 = load_vector_element %x_103, 0u
+        %56:i32 = load_vector_element %x_103, 1u
+        %57:i32 = div %56, 2i
+        %58:i32 = add %55, %57
+        store_vector_element %x_81_1, 0u, %58
+        %x_81:vec2<i32> = load %x_81_1
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %60:i32 = load %x_83
+        %61:i32 = add %60, 1i
+        store %x_84, %61
+        store %x_80, %x_81
+        %62:i32 = load %x_84
+        store %x_83, %62
+        next_iteration %b3
+      }
+    }
+    %x_108:i32 = load_vector_element %x_80, 0u
+    %64:vec2<i32> = load %x_80
+    store %x_114, %64
+    %65:bool = lt %x_108, 0i
+    if %65 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        %66:vec2<i32> = load %x_80
+        store %x_113, %66
+        %67:i32 = negation %x_108
+        store_vector_element %x_113, 0u, %67
+        %68:vec2<i32> = load %x_113
+        store %x_114, %68
+        exit_if  # if_4
+      }
+    }
+    %69:vec2<i32> = load %x_114
+    store %x_116, %69
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %x_117:ptr<function, vec2<i32>, read_write> = var
+        %71:i32 = load_vector_element %x_116, 0u
+        store %x_119, %71
+        %72:i32 = load %x_119
+        %73:bool = gt %72, 15i
+        if %73 [t: %b12, f: %b13] {  # if_5
+          %b12 = block {  # true
+            exit_if  # if_5
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        %74:vec2<i32> = load %x_116
+        store %x_117, %74
+        %75:i32 = load %x_119
+        %76:i32 = sub %75, 16i
+        store_vector_element %x_117, 0u, %76
+        %77:vec2<i32> = load %x_117
+        store %x_116, %77
+        next_iteration %b10
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %x_124:array<vec4<f32>, 16> = load %indexable
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f))
+    store %indexable, %x_124
+    %79:i32 = load %x_119
+    %80:ptr<function, vec4<f32>, read_write> = access %indexable, %79
+    %81:vec4<f32> = load %80
+    store %x_GLF_color, %81
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b14 {
+  %b14 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %84:void = call %main_1
+    %85:vec4<f32> = load %x_GLF_color
+    %86:main_out = construct %85
+    ret %86
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..699169d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl.expected.ir.msl
@@ -0,0 +1,193 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_80:ptr<function, vec2<i32>, read_write> = var
+    %x_113:ptr<function, vec2<i32>, read_write> = var
+    %x_119:ptr<function, i32, read_write> = var
+    %x_80_phi:ptr<function, vec2<i32>, read_write> = var
+    %x_83_phi:ptr<function, i32, read_write> = var
+    %x_114_phi:ptr<function, vec2<i32>, read_write> = var
+    %x_116_phi:ptr<function, vec2<i32>, read_write> = var
+    %x_58:vec4<f32> = load %gl_FragCoord
+    %14:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_61:vec2<f32> = load %14
+    %16:f32 = access %x_58, 0u
+    %17:f32 = access %x_58, 1u
+    %18:vec2<f32> = construct %16, %17
+    %x_62:vec2<f32> = div %18, %x_61
+    %20:f32 = access %x_62, 0u
+    %21:f32 = mul %20, 8.0f
+    %x_65:i32 = convert %21
+    %23:f32 = access %x_62, 1u
+    %24:f32 = mul %23, 8.0f
+    %x_69:i32 = convert %24
+    %26:i32 = and %x_65, 5i
+    %27:i32 = and %x_69, 10i
+    %28:i32 = or %26, %27
+    %29:i32 = mul %28, 8i
+    %30:i32 = and %x_69, 5i
+    %31:i32 = and %x_65, 10i
+    %32:i32 = or %30, %31
+    %33:i32 = add %29, %32
+    %x_78:vec2<i32> = construct %33, 0i
+    store %x_80_phi, %x_78
+    store %x_83_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_94:ptr<function, vec2<i32>, read_write> = var
+        %x_102:ptr<function, vec2<i32>, read_write> = var
+        %x_84:ptr<function, i32, read_write> = var
+        %x_95_phi:ptr<function, vec2<i32>, read_write> = var
+        %x_103_phi:ptr<function, vec2<i32>, read_write> = var
+        %40:vec2<i32> = load %x_80_phi
+        store %x_80, %40
+        %x_83:i32 = load %x_83_phi
+        %42:bool = lt %x_83, 100i
+        if %42 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %43:vec2<i32> = load %x_80
+        store %x_95_phi, %43
+        %44:i32 = load_vector_element %x_80, 0u
+        %45:bool = gt %44, 0i
+        if %45 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %46:vec2<i32> = load %x_80
+            store %x_94, %46
+            %47:i32 = load_vector_element %x_80, 1u
+            %48:i32 = sub %47, 1i
+            store_vector_element %x_94, 1u, %48
+            %49:vec2<i32> = load %x_94
+            store %x_95_phi, %49
+            exit_if  # if_2
+          }
+        }
+        %x_95:vec2<i32> = load %x_95_phi
+        store %x_103_phi, %x_95
+        %51:i32 = access %x_95, 0u
+        %52:bool = lt %51, 0i
+        if %52 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            store %x_102, %x_95
+            %53:i32 = access %x_95, 1u
+            %54:i32 = add %53, 1i
+            store_vector_element %x_102, 1u, %54
+            %55:vec2<i32> = load %x_102
+            store %x_103_phi, %55
+            exit_if  # if_3
+          }
+        }
+        %x_103:vec2<i32> = load %x_103_phi
+        %x_81_1:ptr<function, vec2<i32>, read_write> = var, %x_103
+        %58:i32 = access %x_103, 0u
+        %59:i32 = access %x_103, 1u
+        %60:i32 = div %59, 2i
+        %61:i32 = add %58, %60
+        store_vector_element %x_81_1, 0u, %61
+        %x_81:vec2<i32> = load %x_81_1
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %63:i32 = add %x_83, 1i
+        store %x_84, %63
+        store %x_80_phi, %x_81
+        %64:i32 = load %x_84
+        store %x_83_phi, %64
+        next_iteration %b3
+      }
+    }
+    %x_108:i32 = load_vector_element %x_80, 0u
+    %66:vec2<i32> = load %x_80
+    store %x_114_phi, %66
+    %67:bool = lt %x_108, 0i
+    if %67 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        %68:vec2<i32> = load %x_80
+        store %x_113, %68
+        %69:i32 = negation %x_108
+        store_vector_element %x_113, 0u, %69
+        %70:vec2<i32> = load %x_113
+        store %x_114_phi, %70
+        exit_if  # if_4
+      }
+    }
+    %x_114:vec2<i32> = load %x_114_phi
+    store %x_116_phi, %x_114
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %x_117:ptr<function, vec2<i32>, read_write> = var
+        %x_116:vec2<i32> = load %x_116_phi
+        %74:i32 = access %x_116, 0u
+        store %x_119, %74
+        %75:i32 = load %x_119
+        %76:bool = gt %75, 15i
+        if %76 [t: %b12, f: %b13] {  # if_5
+          %b12 = block {  # true
+            exit_if  # if_5
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        store %x_117, %x_116
+        %77:i32 = load %x_119
+        %78:i32 = sub %77, 16i
+        %79:i32 = bitcast %78
+        store_vector_element %x_117, 0u, %79
+        %80:vec2<i32> = load %x_117
+        store %x_116_phi, %80
+        next_iteration %b10
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %x_124:array<vec4<f32>, 16> = load %indexable
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f))
+    store %indexable, %x_124
+    %82:i32 = load %x_119
+    %83:ptr<function, vec4<f32>, read_write> = access %indexable, %82
+    %x_125:vec4<f32> = load %83
+    store %x_GLF_color, %x_125
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b14 {
+  %b14 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %87:void = call %main_1
+    %88:vec4<f32> = load %x_GLF_color
+    %89:main_out = construct %88
+    ret %89
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..46959eb
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm.expected.ir.msl
@@ -0,0 +1,186 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_80:ptr<function, vec2<i32>, read_write> = var
+    %x_83:ptr<function, i32, read_write> = var
+    %x_113:ptr<function, vec2<i32>, read_write> = var
+    %x_114:ptr<function, vec2<i32>, read_write> = var
+    %x_116:ptr<function, vec2<i32>, read_write> = var
+    %x_119:ptr<function, i32, read_write> = var
+    %12:vec4<f32> = load %gl_FragCoord
+    %13:vec2<f32> = swizzle %12, xy
+    %14:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %15:vec2<f32> = load %14
+    %x_62:vec2<f32> = div %13, %15
+    %17:f32 = access %x_62, 0u
+    %18:f32 = mul %17, 8.0f
+    %x_65:i32 = convert %18
+    %20:f32 = access %x_62, 1u
+    %21:f32 = mul %20, 8.0f
+    %x_69:i32 = convert %21
+    %23:i32 = and %x_65, 5i
+    %24:i32 = and %x_69, 10i
+    %25:i32 = or %23, %24
+    %26:i32 = mul %25, 8i
+    %27:i32 = and %x_69, 5i
+    %28:i32 = and %x_65, 10i
+    %29:i32 = or %27, %28
+    %30:i32 = add %26, %29
+    %31:vec2<i32> = construct %30, 0i
+    store %x_80, %31
+    store %x_83, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_94:ptr<function, vec2<i32>, read_write> = var
+        %x_95:ptr<function, vec2<i32>, read_write> = var
+        %x_102:ptr<function, vec2<i32>, read_write> = var
+        %x_103:ptr<function, vec2<i32>, read_write> = var
+        %x_84:ptr<function, i32, read_write> = var
+        %37:i32 = load %x_83
+        %38:bool = lt %37, 100i
+        if %38 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %39:vec2<i32> = load %x_80
+        store %x_95, %39
+        %40:i32 = load_vector_element %x_80, 0u
+        %41:bool = gt %40, 0i
+        if %41 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %42:vec2<i32> = load %x_80
+            store %x_94, %42
+            %43:i32 = load_vector_element %x_80, 1u
+            %44:i32 = sub %43, 1i
+            store_vector_element %x_94, 1u, %44
+            %45:vec2<i32> = load %x_94
+            store %x_95, %45
+            exit_if  # if_2
+          }
+        }
+        %46:vec2<i32> = load %x_95
+        store %x_103, %46
+        %47:i32 = load_vector_element %x_95, 0u
+        %48:bool = lt %47, 0i
+        if %48 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            %49:vec2<i32> = load %x_95
+            store %x_102, %49
+            %50:i32 = load_vector_element %x_95, 1u
+            %51:i32 = add %50, 1i
+            store_vector_element %x_102, 1u, %51
+            %52:vec2<i32> = load %x_102
+            store %x_103, %52
+            exit_if  # if_3
+          }
+        }
+        %53:vec2<i32> = load %x_103
+        %x_81_1:ptr<function, vec2<i32>, read_write> = var, %53
+        %55:i32 = load_vector_element %x_103, 0u
+        %56:i32 = load_vector_element %x_103, 1u
+        %57:i32 = div %56, 2i
+        %58:i32 = add %55, %57
+        store_vector_element %x_81_1, 0u, %58
+        %x_81:vec2<i32> = load %x_81_1
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %60:i32 = load %x_83
+        %61:i32 = add %60, 1i
+        store %x_84, %61
+        store %x_80, %x_81
+        %62:i32 = load %x_84
+        store %x_83, %62
+        next_iteration %b3
+      }
+    }
+    %x_108:i32 = load_vector_element %x_80, 0u
+    %64:vec2<i32> = load %x_80
+    store %x_114, %64
+    %65:bool = lt %x_108, 0i
+    if %65 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        %66:vec2<i32> = load %x_80
+        store %x_113, %66
+        %67:i32 = negation %x_108
+        store_vector_element %x_113, 0u, %67
+        %68:vec2<i32> = load %x_113
+        store %x_114, %68
+        exit_if  # if_4
+      }
+    }
+    %69:vec2<i32> = load %x_114
+    store %x_116, %69
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %x_117:ptr<function, vec2<i32>, read_write> = var
+        %71:i32 = load_vector_element %x_116, 0u
+        store %x_119, %71
+        %72:i32 = load %x_119
+        %73:bool = gt %72, 15i
+        if %73 [t: %b12, f: %b13] {  # if_5
+          %b12 = block {  # true
+            exit_if  # if_5
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        %74:vec2<i32> = load %x_116
+        store %x_117, %74
+        %75:i32 = load %x_119
+        %76:i32 = sub %75, 16i
+        store_vector_element %x_117, 0u, %76
+        %77:vec2<i32> = load %x_117
+        store %x_116, %77
+        next_iteration %b10
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %78:i32 = load %x_119
+    %79:ptr<function, vec4<f32>, read_write> = access %indexable, %78
+    %80:vec4<f32> = load %79
+    store %x_GLF_color, %80
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b14 {
+  %b14 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %83:void = call %main_1
+    %84:vec4<f32> = load %x_GLF_color
+    %85:main_out = construct %84
+    ret %85
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..78b6bb1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl.expected.ir.msl
@@ -0,0 +1,190 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_80:ptr<function, vec2<i32>, read_write> = var
+    %x_113:ptr<function, vec2<i32>, read_write> = var
+    %x_119:ptr<function, i32, read_write> = var
+    %x_80_phi:ptr<function, vec2<i32>, read_write> = var
+    %x_83_phi:ptr<function, i32, read_write> = var
+    %x_114_phi:ptr<function, vec2<i32>, read_write> = var
+    %x_116_phi:ptr<function, vec2<i32>, read_write> = var
+    %x_58:vec4<f32> = load %gl_FragCoord
+    %14:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_61:vec2<f32> = load %14
+    %16:f32 = access %x_58, 0u
+    %17:f32 = access %x_58, 1u
+    %18:vec2<f32> = construct %16, %17
+    %x_62:vec2<f32> = div %18, %x_61
+    %20:f32 = access %x_62, 0u
+    %21:f32 = mul %20, 8.0f
+    %x_65:i32 = convert %21
+    %23:f32 = access %x_62, 1u
+    %24:f32 = mul %23, 8.0f
+    %x_69:i32 = convert %24
+    %26:i32 = and %x_65, 5i
+    %27:i32 = and %x_69, 10i
+    %28:i32 = or %26, %27
+    %29:i32 = mul %28, 8i
+    %30:i32 = and %x_69, 5i
+    %31:i32 = and %x_65, 10i
+    %32:i32 = or %30, %31
+    %33:i32 = add %29, %32
+    %x_78:vec2<i32> = construct %33, 0i
+    store %x_80_phi, %x_78
+    store %x_83_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_94:ptr<function, vec2<i32>, read_write> = var
+        %x_102:ptr<function, vec2<i32>, read_write> = var
+        %x_84:ptr<function, i32, read_write> = var
+        %x_95_phi:ptr<function, vec2<i32>, read_write> = var
+        %x_103_phi:ptr<function, vec2<i32>, read_write> = var
+        %40:vec2<i32> = load %x_80_phi
+        store %x_80, %40
+        %x_83:i32 = load %x_83_phi
+        %42:bool = lt %x_83, 100i
+        if %42 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %43:vec2<i32> = load %x_80
+        store %x_95_phi, %43
+        %44:i32 = load_vector_element %x_80, 0u
+        %45:bool = gt %44, 0i
+        if %45 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %46:vec2<i32> = load %x_80
+            store %x_94, %46
+            %47:i32 = load_vector_element %x_80, 1u
+            %48:i32 = sub %47, 1i
+            store_vector_element %x_94, 1u, %48
+            %49:vec2<i32> = load %x_94
+            store %x_95_phi, %49
+            exit_if  # if_2
+          }
+        }
+        %x_95:vec2<i32> = load %x_95_phi
+        store %x_103_phi, %x_95
+        %51:i32 = access %x_95, 0u
+        %52:bool = lt %51, 0i
+        if %52 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            store %x_102, %x_95
+            %53:i32 = access %x_95, 1u
+            %54:i32 = add %53, 1i
+            store_vector_element %x_102, 1u, %54
+            %55:vec2<i32> = load %x_102
+            store %x_103_phi, %55
+            exit_if  # if_3
+          }
+        }
+        %x_103:vec2<i32> = load %x_103_phi
+        %x_81_1:ptr<function, vec2<i32>, read_write> = var, %x_103
+        %58:i32 = access %x_103, 0u
+        %59:i32 = access %x_103, 1u
+        %60:i32 = div %59, 2i
+        %61:i32 = add %58, %60
+        store_vector_element %x_81_1, 0u, %61
+        %x_81:vec2<i32> = load %x_81_1
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %63:i32 = add %x_83, 1i
+        store %x_84, %63
+        store %x_80_phi, %x_81
+        %64:i32 = load %x_84
+        store %x_83_phi, %64
+        next_iteration %b3
+      }
+    }
+    %x_108:i32 = load_vector_element %x_80, 0u
+    %66:vec2<i32> = load %x_80
+    store %x_114_phi, %66
+    %67:bool = lt %x_108, 0i
+    if %67 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        %68:vec2<i32> = load %x_80
+        store %x_113, %68
+        %69:i32 = negation %x_108
+        store_vector_element %x_113, 0u, %69
+        %70:vec2<i32> = load %x_113
+        store %x_114_phi, %70
+        exit_if  # if_4
+      }
+    }
+    %x_114:vec2<i32> = load %x_114_phi
+    store %x_116_phi, %x_114
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %x_117:ptr<function, vec2<i32>, read_write> = var
+        %x_116:vec2<i32> = load %x_116_phi
+        %74:i32 = access %x_116, 0u
+        store %x_119, %74
+        %75:i32 = load %x_119
+        %76:bool = gt %75, 15i
+        if %76 [t: %b12, f: %b13] {  # if_5
+          %b12 = block {  # true
+            exit_if  # if_5
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        store %x_117, %x_116
+        %77:i32 = load %x_119
+        %78:i32 = sub %77, 16i
+        %79:i32 = bitcast %78
+        store_vector_element %x_117, 0u, %79
+        %80:vec2<i32> = load %x_117
+        store %x_116_phi, %80
+        next_iteration %b10
+      }
+    }
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %81:i32 = load %x_119
+    %82:ptr<function, vec4<f32>, read_write> = access %indexable, %81
+    %x_124:vec4<f32> = load %82
+    store %x_GLF_color, %x_124
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b14 {
+  %b14 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %86:void = call %main_1
+    %87:vec4<f32> = load %x_GLF_color
+    %88:main_out = construct %87
+    ret %88
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..a7092fa
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.spvasm.expected.ir.msl
@@ -0,0 +1,168 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_196:ptr<function, array<i32, 256>, read_write> = var
+    %x_197:ptr<function, array<i32, 256>, read_write> = var
+    %x_198:ptr<function, array<i32, 256>, read_write> = var
+    %x_210:ptr<function, vec2<i32>, read_write> = var
+    %x_214:ptr<function, vec2<i32>, read_write> = var
+    %x_251:ptr<function, vec4<f32>, read_write> = var
+    %x_253:ptr<function, vec4<f32>, read_write> = var
+    %x_254:ptr<function, bool, read_write> = var
+    %x_256:ptr<function, vec4<f32>, read_write> = var
+    %14:vec4<f32> = load %gl_FragCoord
+    %15:vec2<f32> = swizzle %14, xy
+    %16:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %17:vec2<f32> = load %16
+    %x_203:vec2<f32> = div %15, %17
+    %19:f32 = access %x_203, 0u
+    %20:f32 = mul %19, 256.0f
+    %21:i32 = convert %20
+    %22:f32 = access %x_203, 1u
+    %23:f32 = mul %22, 256.0f
+    %24:i32 = convert %23
+    %25:vec2<i32> = construct %21, %24
+    store %x_210, %25
+    switch 0u [c: (default, %b3)] {  # switch_1
+      %b3 = block {  # case
+        %26:vec2<i32> = load %x_210
+        store %x_214, %26
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %x_233:ptr<function, i32, read_write> = var
+            %x_234:ptr<function, i32, read_write> = var
+            %x_235:ptr<function, i32, read_write> = var
+            %x_241:ptr<function, bool, read_write> = var
+            %x_217:i32 = load_vector_element %x_214, 1u
+            store %x_253, vec4<f32>(0.0f)
+            store %x_254, false
+            %32:bool = neq %x_217, 256i
+            if %32 [t: %b6, f: %b7] {  # if_1
+              %b6 = block {  # true
+                exit_if  # if_1
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            %x_221:i32 = load_vector_element %x_214, 0u
+            store %x_196, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+            %34:ptr<function, i32, read_write> = access %x_196, %x_217
+            %35:i32 = load %34
+            %36:i32 = add %35, 15i
+            %x_225:bool = lt %x_221, %36
+            if %x_225 [t: %b8] {  # if_2
+              %b8 = block {  # true
+                store %x_197, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+                exit_if  # if_2
+              }
+            }
+            if %x_225 [t: %b9, f: %b10] {  # if_3
+              %b9 = block {  # true
+                %38:ptr<function, i32, read_write> = access %x_197, %x_217
+                %39:i32 = load %38
+                store %x_233, %39
+                %40:i32 = load %x_233
+                store %x_235, %40
+                exit_if  # if_3
+              }
+              %b10 = block {  # false
+                store %x_234, 0i
+                %41:i32 = load %x_234
+                store %x_235, %41
+                exit_if  # if_3
+              }
+            }
+            %42:i32 = load %x_235
+            %43:i32 = sub %42, 15i
+            %x_237:bool = gt %x_221, %43
+            if %x_225 [t: %b11, f: %b12] {  # if_4
+              %b11 = block {  # true
+                store %x_241, %x_237
+                exit_if  # if_4
+              }
+              %b12 = block {  # false
+                store %x_241, %x_225
+                exit_if  # if_4
+              }
+            }
+            %45:bool = load %x_241
+            if %45 [t: %b13] {  # if_5
+              %b13 = block {  # true
+                store %x_198, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+                %46:ptr<function, i32, read_write> = access %x_198, %x_217
+                %47:i32 = load %46
+                %48:i32 = sub %x_221, %47
+                %49:f32 = convert %48
+                %50:f32 = abs %49
+                %51:f32 = sub 15.0f, %50
+                %x_250:f32 = mul %51, 0.06666667014360427856f
+                %53:vec4<f32> = construct %x_250, %x_250, %x_250, 1.0f
+                store %x_251, %53
+                %54:vec4<f32> = load %x_251
+                store %x_253, %54
+                store %x_254, true
+                exit_loop  # loop_1
+              }
+            }
+            %55:vec2<i32> = load %x_214
+            %x_215_1:ptr<function, vec2<i32>, read_write> = var, %55
+            %57:i32 = add %x_217, 1i
+            store_vector_element %x_215_1, 1u, %57
+            %x_215:vec2<i32> = load %x_215_1
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            store %x_214, %x_215
+            next_iteration %b4
+          }
+        }
+        %59:vec4<f32> = load %x_253
+        store %x_256, %59
+        %60:bool = load %x_254
+        if %60 [t: %b14] {  # if_6
+          %b14 = block {  # true
+            exit_switch  # switch_1
+          }
+        }
+        store %x_256, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_switch  # switch_1
+      }
+    }
+    %61:vec4<f32> = load %x_256
+    store %x_GLF_color, %61
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b15 {
+  %b15 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %64:void = call %main_1
+    %65:vec4<f32> = load %x_GLF_color
+    %66:main_out = construct %65
+    ret %66
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e720d06
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl.expected.ir.msl
@@ -0,0 +1,173 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_196:ptr<function, array<i32, 256>, read_write> = var
+    %x_197:ptr<function, array<i32, 256>, read_write> = var
+    %x_198:ptr<function, array<i32, 256>, read_write> = var
+    %x_210:ptr<function, vec2<i32>, read_write> = var
+    %x_251:ptr<function, vec4<f32>, read_write> = var
+    %x_253:ptr<function, vec4<f32>, read_write> = var
+    %x_214_phi:ptr<function, vec2<i32>, read_write> = var
+    %x_253_phi:ptr<function, vec4<f32>, read_write> = var
+    %x_254_phi:ptr<function, bool, read_write> = var
+    %x_256_phi:ptr<function, vec4<f32>, read_write> = var
+    %x_199:vec4<f32> = load %gl_FragCoord
+    %16:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_202:vec2<f32> = load %16
+    %18:f32 = access %x_199, 0u
+    %19:f32 = access %x_199, 1u
+    %20:vec2<f32> = construct %18, %19
+    %x_203:vec2<f32> = div %20, %x_202
+    %22:f32 = access %x_203, 0u
+    %23:f32 = mul %22, 256.0f
+    %24:i32 = convert %23
+    %25:f32 = access %x_203, 1u
+    %26:f32 = mul %25, 256.0f
+    %27:i32 = convert %26
+    %28:vec2<i32> = construct %24, %27
+    store %x_210, %28
+    switch 0u [c: (default, %b3)] {  # switch_1
+      %b3 = block {  # case
+        %29:vec2<i32> = load %x_210
+        store %x_214_phi, %29
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %x_233:ptr<function, i32, read_write> = var
+            %x_234:ptr<function, i32, read_write> = var
+            %x_235_phi:ptr<function, i32, read_write> = var
+            %x_241_phi:ptr<function, bool, read_write> = var
+            %x_214:vec2<i32> = load %x_214_phi
+            %x_217:i32 = access %x_214, 1u
+            store %x_253_phi, vec4<f32>(0.0f)
+            store %x_254_phi, false
+            %36:bool = neq %x_217, 256i
+            if %36 [t: %b6, f: %b7] {  # if_1
+              %b6 = block {  # true
+                exit_if  # if_1
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            %x_221:i32 = access %x_214, 0u
+            store %x_196, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+            %38:ptr<function, i32, read_write> = access %x_196, %x_217
+            %x_223:i32 = load %38
+            %40:i32 = add %x_223, 15i
+            %x_225:bool = lt %x_221, %40
+            if %x_225 [t: %b8] {  # if_2
+              %b8 = block {  # true
+                store %x_197, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+                exit_if  # if_2
+              }
+            }
+            if %x_225 [t: %b9, f: %b10] {  # if_3
+              %b9 = block {  # true
+                %42:ptr<function, i32, read_write> = access %x_197, %x_217
+                %43:i32 = load %42
+                store %x_233, %43
+                %44:i32 = load %x_233
+                store %x_235_phi, %44
+                exit_if  # if_3
+              }
+              %b10 = block {  # false
+                store %x_234, 0i
+                %45:i32 = load %x_234
+                store %x_235_phi, %45
+                exit_if  # if_3
+              }
+            }
+            %x_235:i32 = load %x_235_phi
+            %47:i32 = sub %x_235, 15i
+            %x_237:bool = gt %x_221, %47
+            if %x_225 [t: %b11, f: %b12] {  # if_4
+              %b11 = block {  # true
+                store %x_241_phi, %x_237
+                exit_if  # if_4
+              }
+              %b12 = block {  # false
+                store %x_241_phi, %x_225
+                exit_if  # if_4
+              }
+            }
+            %x_241:bool = load %x_241_phi
+            if %x_241 [t: %b13] {  # if_5
+              %b13 = block {  # true
+                store %x_198, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+                %50:ptr<function, i32, read_write> = access %x_198, %x_217
+                %x_245:i32 = load %50
+                %52:i32 = sub %x_221, %x_245
+                %53:f32 = convert %52
+                %54:f32 = abs %53
+                %55:f32 = sub 15.0f, %54
+                %x_250:f32 = mul %55, 0.06666667014360427856f
+                %57:vec4<f32> = construct %x_250, %x_250, %x_250, 1.0f
+                store %x_251, %57
+                %58:vec4<f32> = load %x_251
+                store %x_253_phi, %58
+                store %x_254_phi, true
+                exit_loop  # loop_1
+              }
+            }
+            %x_215_1:ptr<function, vec2<i32>, read_write> = var, %x_214
+            %60:i32 = add %x_217, 1i
+            store_vector_element %x_215_1, 1u, %60
+            %x_215:vec2<i32> = load %x_215_1
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            store %x_214_phi, %x_215
+            next_iteration %b4
+          }
+        }
+        %62:vec4<f32> = load %x_253_phi
+        store %x_253, %62
+        %x_254:bool = load %x_254_phi
+        %64:vec4<f32> = load %x_253
+        store %x_256_phi, %64
+        if %x_254 [t: %b14] {  # if_6
+          %b14 = block {  # true
+            exit_switch  # switch_1
+          }
+        }
+        store %x_256_phi, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_switch  # switch_1
+      }
+    }
+    %x_256:vec4<f32> = load %x_256_phi
+    store %x_GLF_color, %x_256
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b15 {
+  %b15 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %68:void = call %main_1
+    %69:vec4<f32> = load %x_GLF_color
+    %70:main_out = construct %69
+    ret %70
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..8696d3b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.spvasm.expected.ir.msl
@@ -0,0 +1,157 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_196:ptr<function, array<i32, 256>, read_write> = var
+    %x_197:ptr<function, array<i32, 256>, read_write> = var
+    %x_198:ptr<function, array<i32, 256>, read_write> = var
+    %x_210:ptr<function, vec2<i32>, read_write> = var
+    %x_214:ptr<function, vec2<i32>, read_write> = var
+    %x_249:ptr<function, vec4<f32>, read_write> = var
+    %x_251:ptr<function, vec4<f32>, read_write> = var
+    %x_252:ptr<function, bool, read_write> = var
+    %x_254:ptr<function, vec4<f32>, read_write> = var
+    %14:vec4<f32> = load %gl_FragCoord
+    %15:vec2<f32> = swizzle %14, xy
+    %16:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %17:vec2<f32> = load %16
+    %x_203:vec2<f32> = div %15, %17
+    %19:f32 = access %x_203, 0u
+    %20:f32 = mul %19, 256.0f
+    %21:i32 = convert %20
+    %22:f32 = access %x_203, 1u
+    %23:f32 = mul %22, 256.0f
+    %24:i32 = convert %23
+    %25:vec2<i32> = construct %21, %24
+    store %x_210, %25
+    switch 0u [c: (default, %b3)] {  # switch_1
+      %b3 = block {  # case
+        %26:vec2<i32> = load %x_210
+        store %x_214, %26
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %x_233:ptr<function, i32, read_write> = var
+            %x_234:ptr<function, i32, read_write> = var
+            %x_235:ptr<function, i32, read_write> = var
+            %x_217:i32 = load_vector_element %x_214, 1u
+            store %x_251, vec4<f32>(0.0f)
+            store %x_252, false
+            %31:bool = neq %x_217, 256i
+            if %31 [t: %b6, f: %b7] {  # if_1
+              %b6 = block {  # true
+                exit_if  # if_1
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            %x_221:i32 = load_vector_element %x_214, 0u
+            store %x_196, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+            %33:ptr<function, i32, read_write> = access %x_196, %x_217
+            %34:i32 = load %33
+            %35:i32 = add %34, 15i
+            %x_225:bool = lt %x_221, %35
+            if %x_225 [t: %b8] {  # if_2
+              %b8 = block {  # true
+                store %x_197, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+                exit_if  # if_2
+              }
+            }
+            if %x_225 [t: %b9, f: %b10] {  # if_3
+              %b9 = block {  # true
+                %37:ptr<function, i32, read_write> = access %x_197, %x_217
+                %38:i32 = load %37
+                store %x_233, %38
+                %39:i32 = load %x_233
+                store %x_235, %39
+                exit_if  # if_3
+              }
+              %b10 = block {  # false
+                store %x_234, 0i
+                %40:i32 = load %x_234
+                store %x_235, %40
+                exit_if  # if_3
+              }
+            }
+            %41:i32 = load %x_235
+            %42:i32 = sub %41, 15i
+            %43:bool = gt %x_221, %42
+            %44:bool = select %x_225, %43, %x_225
+            if %44 [t: %b11] {  # if_4
+              %b11 = block {  # true
+                store %x_198, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+                %45:ptr<function, i32, read_write> = access %x_198, %x_217
+                %46:i32 = load %45
+                %47:i32 = sub %x_221, %46
+                %48:f32 = convert %47
+                %49:f32 = abs %48
+                %50:f32 = sub 15.0f, %49
+                %x_248:f32 = mul %50, 0.06666667014360427856f
+                %52:vec4<f32> = construct %x_248, %x_248, %x_248, 1.0f
+                store %x_249, %52
+                %53:vec4<f32> = load %x_249
+                store %x_251, %53
+                store %x_252, true
+                exit_loop  # loop_1
+              }
+            }
+            %54:vec2<i32> = load %x_214
+            %x_215_1:ptr<function, vec2<i32>, read_write> = var, %54
+            %56:i32 = add %x_217, 1i
+            store_vector_element %x_215_1, 1u, %56
+            %x_215:vec2<i32> = load %x_215_1
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            store %x_214, %x_215
+            next_iteration %b4
+          }
+        }
+        %58:vec4<f32> = load %x_251
+        store %x_254, %58
+        %59:bool = load %x_252
+        if %59 [t: %b12] {  # if_5
+          %b12 = block {  # true
+            exit_switch  # switch_1
+          }
+        }
+        store %x_254, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_switch  # switch_1
+      }
+    }
+    %60:vec4<f32> = load %x_254
+    store %x_GLF_color, %60
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b13 {
+  %b13 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %63:void = call %main_1
+    %64:vec4<f32> = load %x_GLF_color
+    %65:main_out = construct %64
+    ret %65
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..63e701d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl.expected.ir.msl
@@ -0,0 +1,162 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_196:ptr<function, array<i32, 256>, read_write> = var
+    %x_197:ptr<function, array<i32, 256>, read_write> = var
+    %x_198:ptr<function, array<i32, 256>, read_write> = var
+    %x_210:ptr<function, vec2<i32>, read_write> = var
+    %x_249:ptr<function, vec4<f32>, read_write> = var
+    %x_251:ptr<function, vec4<f32>, read_write> = var
+    %x_214_phi:ptr<function, vec2<i32>, read_write> = var
+    %x_251_phi:ptr<function, vec4<f32>, read_write> = var
+    %x_252_phi:ptr<function, bool, read_write> = var
+    %x_254_phi:ptr<function, vec4<f32>, read_write> = var
+    %x_199:vec4<f32> = load %gl_FragCoord
+    %16:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_202:vec2<f32> = load %16
+    %18:f32 = access %x_199, 0u
+    %19:f32 = access %x_199, 1u
+    %20:vec2<f32> = construct %18, %19
+    %x_203:vec2<f32> = div %20, %x_202
+    %22:f32 = access %x_203, 0u
+    %23:f32 = mul %22, 256.0f
+    %24:i32 = convert %23
+    %25:f32 = access %x_203, 1u
+    %26:f32 = mul %25, 256.0f
+    %27:i32 = convert %26
+    %28:vec2<i32> = construct %24, %27
+    store %x_210, %28
+    switch 0u [c: (default, %b3)] {  # switch_1
+      %b3 = block {  # case
+        %29:vec2<i32> = load %x_210
+        store %x_214_phi, %29
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %x_233:ptr<function, i32, read_write> = var
+            %x_234:ptr<function, i32, read_write> = var
+            %x_235_phi:ptr<function, i32, read_write> = var
+            %x_214:vec2<i32> = load %x_214_phi
+            %x_217:i32 = access %x_214, 1u
+            store %x_251_phi, vec4<f32>(0.0f)
+            store %x_252_phi, false
+            %35:bool = neq %x_217, 256i
+            if %35 [t: %b6, f: %b7] {  # if_1
+              %b6 = block {  # true
+                exit_if  # if_1
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            %x_221:i32 = access %x_214, 0u
+            store %x_196, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+            %37:ptr<function, i32, read_write> = access %x_196, %x_217
+            %x_223:i32 = load %37
+            %39:i32 = add %x_223, 15i
+            %x_225:bool = lt %x_221, %39
+            if %x_225 [t: %b8] {  # if_2
+              %b8 = block {  # true
+                store %x_197, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+                exit_if  # if_2
+              }
+            }
+            if %x_225 [t: %b9, f: %b10] {  # if_3
+              %b9 = block {  # true
+                %41:ptr<function, i32, read_write> = access %x_197, %x_217
+                %42:i32 = load %41
+                store %x_233, %42
+                %43:i32 = load %x_233
+                store %x_235_phi, %43
+                exit_if  # if_3
+              }
+              %b10 = block {  # false
+                store %x_234, 0i
+                %44:i32 = load %x_234
+                store %x_235_phi, %44
+                exit_if  # if_3
+              }
+            }
+            %x_235:i32 = load %x_235_phi
+            %46:i32 = sub %x_235, 15i
+            %x_237:bool = gt %x_221, %46
+            %48:bool = select %x_225, %x_237, %x_225
+            if %48 [t: %b11] {  # if_4
+              %b11 = block {  # true
+                store %x_198, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+                %49:ptr<function, i32, read_write> = access %x_198, %x_217
+                %x_243:i32 = load %49
+                %51:i32 = sub %x_221, %x_243
+                %52:f32 = convert %51
+                %53:f32 = abs %52
+                %54:f32 = sub 15.0f, %53
+                %x_248:f32 = mul %54, 0.06666667014360427856f
+                %56:vec4<f32> = construct %x_248, %x_248, %x_248, 1.0f
+                store %x_249, %56
+                %57:vec4<f32> = load %x_249
+                store %x_251_phi, %57
+                store %x_252_phi, true
+                exit_loop  # loop_1
+              }
+            }
+            %x_215_1:ptr<function, vec2<i32>, read_write> = var, %x_214
+            %59:i32 = add %x_217, 1i
+            store_vector_element %x_215_1, 1u, %59
+            %x_215:vec2<i32> = load %x_215_1
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            store %x_214_phi, %x_215
+            next_iteration %b4
+          }
+        }
+        %61:vec4<f32> = load %x_251_phi
+        store %x_251, %61
+        %x_252:bool = load %x_252_phi
+        %63:vec4<f32> = load %x_251
+        store %x_254_phi, %63
+        if %x_252 [t: %b12] {  # if_5
+          %b12 = block {  # true
+            exit_switch  # switch_1
+          }
+        }
+        store %x_254_phi, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_switch  # switch_1
+      }
+    }
+    %x_254:vec4<f32> = load %x_254_phi
+    store %x_GLF_color, %x_254
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b13 {
+  %b13 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %67:void = call %main_1
+    %68:vec4<f32> = load %x_GLF_color
+    %69:main_out = construct %68
+    ret %69
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b31089a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.spvasm.expected.ir.msl
@@ -0,0 +1,135 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_13:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%trace_vi2_ = func(%pos:ptr<function, vec2<i32>, read_write>):vec4<f32> -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<i32, 256>, read_write> = var
+    %indexable_1:ptr<function, array<i32, 256>, read_write> = var
+    %p:ptr<function, f32, read_write> = var
+    %indexable_2:ptr<function, array<i32, 256>, read_write> = var
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_247:ptr<function, bool, read_write> = var
+        %x_248:ptr<function, bool, read_write> = var
+        %12:i32 = load_vector_element %pos, 1u
+        %13:bool = neq %12, 256i
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_231:i32 = load_vector_element %pos, 0u
+        %x_233:i32 = load_vector_element %pos, 1u
+        store %indexable, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+        %16:ptr<function, i32, read_write> = access %indexable, %x_233
+        %17:i32 = load %16
+        %18:i32 = add %17, 15i
+        %x_237:bool = lt %x_231, %18
+        store %x_248, %x_237
+        if %x_237 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %x_241:i32 = load_vector_element %pos, 0u
+            %x_243:i32 = load_vector_element %pos, 1u
+            store %indexable_1, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+            %22:ptr<function, i32, read_write> = access %indexable_1, %x_243
+            %23:i32 = load %22
+            %24:i32 = sub %23, 15i
+            %25:bool = gt %x_241, %24
+            store %x_247, %25
+            %26:bool = load %x_247
+            store %x_248, %26
+            exit_if  # if_2
+          }
+        }
+        %27:bool = load %x_248
+        if %27 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            %x_252:i32 = load_vector_element %pos, 0u
+            %x_254:i32 = load_vector_element %pos, 1u
+            store %indexable_2, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+            %30:ptr<function, i32, read_write> = access %indexable_2, %x_254
+            %31:i32 = load %30
+            %32:i32 = sub %x_252, %31
+            %33:f32 = convert %32
+            %34:f32 = abs %33
+            %35:f32 = sub 15.0f, %34
+            %36:f32 = div %35, 15.0f
+            store %p, %36
+            %x_262:f32 = load %p
+            %x_263:f32 = load %p
+            %x_264:f32 = load %p
+            %40:vec4<f32> = construct %x_262, %x_263, %x_264, 1.0f
+            ret %40
+          }
+        }
+        %41:i32 = load_vector_element %pos, 1u
+        %42:i32 = add %41, 1i
+        store_vector_element %pos, 1u, %42
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+  }
+}
+%main_1 = func():void -> %b9 {
+  %b9 = block {
+    %pos_1:ptr<function, vec2<f32>, read_write> = var
+    %ipos:ptr<function, vec2<i32>, read_write> = var
+    %param:ptr<function, vec2<i32>, read_write> = var
+    %47:vec4<f32> = load %gl_FragCoord
+    %48:vec2<f32> = swizzle %47, xy
+    %49:ptr<uniform, vec2<f32>, read> = access %x_13, 0u
+    %50:vec2<f32> = load %49
+    %51:vec2<f32> = div %48, %50
+    store %pos_1, %51
+    %52:f32 = load_vector_element %pos_1, 0u
+    %53:f32 = mul %52, 256.0f
+    %54:i32 = convert %53
+    %55:f32 = load_vector_element %pos_1, 1u
+    %56:f32 = mul %55, 256.0f
+    %57:i32 = convert %56
+    %58:vec2<i32> = construct %54, %57
+    store %ipos, %58
+    %59:vec2<i32> = load %ipos
+    store %param, %59
+    %x_220:vec4<f32> = call %trace_vi2_, %param
+    store %x_GLF_color, %x_220
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b10 {
+  %b10 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %63:void = call %main_1
+    %64:vec4<f32> = load %x_GLF_color
+    %65:main_out = construct %64
+    ret %65
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4eb6774
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl.expected.ir.msl
@@ -0,0 +1,137 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_13:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%trace_vi2_ = func(%pos:ptr<function, vec2<i32>, read_write>):vec4<f32> -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<i32, 256>, read_write> = var
+    %indexable_1:ptr<function, array<i32, 256>, read_write> = var
+    %p:ptr<function, f32, read_write> = var
+    %indexable_2:ptr<function, array<i32, 256>, read_write> = var
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_247:ptr<function, bool, read_write> = var
+        %x_248_phi:ptr<function, bool, read_write> = var
+        %x_227:i32 = load_vector_element %pos, 1u
+        %13:bool = neq %x_227, 256i
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_231:i32 = load_vector_element %pos, 0u
+        %x_233:i32 = load_vector_element %pos, 1u
+        store %indexable, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+        %16:ptr<function, i32, read_write> = access %indexable, %x_233
+        %x_235:i32 = load %16
+        %18:i32 = add %x_235, 15i
+        %x_237:bool = lt %x_231, %18
+        store %x_248_phi, %x_237
+        if %x_237 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %x_241:i32 = load_vector_element %pos, 0u
+            %x_243:i32 = load_vector_element %pos, 1u
+            store %indexable_1, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+            %22:ptr<function, i32, read_write> = access %indexable_1, %x_243
+            %x_245:i32 = load %22
+            %24:i32 = sub %x_245, 15i
+            %25:bool = gt %x_241, %24
+            store %x_247, %25
+            %26:bool = load %x_247
+            store %x_248_phi, %26
+            exit_if  # if_2
+          }
+        }
+        %x_248:bool = load %x_248_phi
+        if %x_248 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            %x_252:i32 = load_vector_element %pos, 0u
+            %x_254:i32 = load_vector_element %pos, 1u
+            store %indexable_2, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+            %30:ptr<function, i32, read_write> = access %indexable_2, %x_254
+            %x_256:i32 = load %30
+            %32:i32 = sub %x_252, %x_256
+            %33:f32 = convert %32
+            %34:f32 = abs %33
+            %35:f32 = sub 15.0f, %34
+            %36:f32 = div %35, 15.0f
+            store %p, %36
+            %x_262:f32 = load %p
+            %x_263:f32 = load %p
+            %x_264:f32 = load %p
+            %40:vec4<f32> = construct %x_262, %x_263, %x_264, 1.0f
+            ret %40
+          }
+        }
+        %x_267:i32 = load_vector_element %pos, 1u
+        %42:i32 = add %x_267, 1i
+        store_vector_element %pos, 1u, %42
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+  }
+}
+%main_1 = func():void -> %b9 {
+  %b9 = block {
+    %pos_1:ptr<function, vec2<f32>, read_write> = var
+    %ipos:ptr<function, vec2<i32>, read_write> = var
+    %param:ptr<function, vec2<i32>, read_write> = var
+    %x_205:vec4<f32> = load %gl_FragCoord
+    %48:ptr<uniform, vec2<f32>, read> = access %x_13, 0u
+    %x_208:vec2<f32> = load %48
+    %50:f32 = access %x_205, 0u
+    %51:f32 = access %x_205, 1u
+    %52:vec2<f32> = construct %50, %51
+    %53:vec2<f32> = div %52, %x_208
+    store %pos_1, %53
+    %x_211:f32 = load_vector_element %pos_1, 0u
+    %x_215:f32 = load_vector_element %pos_1, 1u
+    %56:f32 = mul %x_211, 256.0f
+    %57:i32 = convert %56
+    %58:f32 = mul %x_215, 256.0f
+    %59:i32 = convert %58
+    %60:vec2<i32> = construct %57, %59
+    store %ipos, %60
+    %x_219:vec2<i32> = load %ipos
+    store %param, %x_219
+    %x_220:vec4<f32> = call %trace_vi2_, %param
+    store %x_GLF_color, %x_220
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b10 {
+  %b10 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %65:void = call %main_1
+    %66:vec4<f32> = load %x_GLF_color
+    %67:main_out = construct %66
+    ret %67
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..269c27f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.spvasm.expected.ir.msl
@@ -0,0 +1,141 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_13:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%trace_vi2_ = func(%pos:ptr<function, vec2<i32>, read_write>):vec4<f32> -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<i32, 256>, read_write> = var
+    %indexable_1:ptr<function, array<i32, 256>, read_write> = var
+    %p:ptr<function, f32, read_write> = var
+    %indexable_2:ptr<function, array<i32, 256>, read_write> = var
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_251:ptr<function, bool, read_write> = var
+        %x_252:ptr<function, bool, read_write> = var
+        %12:i32 = load_vector_element %pos, 1u
+        %13:bool = neq %12, 256i
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_233:i32 = load_vector_element %pos, 0u
+        %x_235:i32 = load_vector_element %pos, 1u
+        store %indexable, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+        %16:ptr<function, i32, read_write> = access %indexable, %x_235
+        %x_237:i32 = load %16
+        %x_238:array<i32, 256> = load %indexable
+        store %indexable, array<i32, 256>(0i)
+        %x_239:i32 = load_vector_element %pos, 1u
+        store_vector_element %pos, 1u, 0i
+        store_vector_element %pos, 1u, %x_239
+        store %indexable, %x_238
+        %20:i32 = add %x_237, 15i
+        %x_241:bool = lt %x_233, %20
+        store %x_252, %x_241
+        if %x_241 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %x_245:i32 = load_vector_element %pos, 0u
+            %x_247:i32 = load_vector_element %pos, 1u
+            store %indexable_1, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+            %24:ptr<function, i32, read_write> = access %indexable_1, %x_247
+            %25:i32 = load %24
+            %26:i32 = sub %25, 15i
+            %27:bool = gt %x_245, %26
+            store %x_251, %27
+            %28:bool = load %x_251
+            store %x_252, %28
+            exit_if  # if_2
+          }
+        }
+        %29:bool = load %x_252
+        if %29 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            %x_256:i32 = load_vector_element %pos, 0u
+            %x_258:i32 = load_vector_element %pos, 1u
+            store %indexable_2, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+            %32:ptr<function, i32, read_write> = access %indexable_2, %x_258
+            %33:i32 = load %32
+            %34:i32 = sub %x_256, %33
+            %35:f32 = convert %34
+            %36:f32 = abs %35
+            %37:f32 = sub 15.0f, %36
+            %38:f32 = div %37, 15.0f
+            store %p, %38
+            %x_266:f32 = load %p
+            %x_267:f32 = load %p
+            %x_268:f32 = load %p
+            %42:vec4<f32> = construct %x_266, %x_267, %x_268, 1.0f
+            ret %42
+          }
+        }
+        %43:i32 = load_vector_element %pos, 1u
+        %44:i32 = add %43, 1i
+        store_vector_element %pos, 1u, %44
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+  }
+}
+%main_1 = func():void -> %b9 {
+  %b9 = block {
+    %pos_1:ptr<function, vec2<f32>, read_write> = var
+    %ipos:ptr<function, vec2<i32>, read_write> = var
+    %param:ptr<function, vec2<i32>, read_write> = var
+    %49:vec4<f32> = load %gl_FragCoord
+    %50:vec2<f32> = swizzle %49, xy
+    %51:ptr<uniform, vec2<f32>, read> = access %x_13, 0u
+    %52:vec2<f32> = load %51
+    %53:vec2<f32> = div %50, %52
+    store %pos_1, %53
+    %54:f32 = load_vector_element %pos_1, 0u
+    %55:f32 = mul %54, 256.0f
+    %56:i32 = convert %55
+    %57:f32 = load_vector_element %pos_1, 1u
+    %58:f32 = mul %57, 256.0f
+    %59:i32 = convert %58
+    %60:vec2<i32> = construct %56, %59
+    store %ipos, %60
+    %61:vec2<i32> = load %ipos
+    store %param, %61
+    %x_222:vec4<f32> = call %trace_vi2_, %param
+    store %x_GLF_color, %x_222
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b10 {
+  %b10 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %65:void = call %main_1
+    %66:vec4<f32> = load %x_GLF_color
+    %67:main_out = construct %66
+    ret %67
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..32ddd86
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl.expected.ir.msl
@@ -0,0 +1,143 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_13:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%trace_vi2_ = func(%pos:ptr<function, vec2<i32>, read_write>):vec4<f32> -> %b2 {
+  %b2 = block {
+    %indexable:ptr<function, array<i32, 256>, read_write> = var
+    %indexable_1:ptr<function, array<i32, 256>, read_write> = var
+    %p:ptr<function, f32, read_write> = var
+    %indexable_2:ptr<function, array<i32, 256>, read_write> = var
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_251:ptr<function, bool, read_write> = var
+        %x_252_phi:ptr<function, bool, read_write> = var
+        %x_229:i32 = load_vector_element %pos, 1u
+        %13:bool = neq %x_229, 256i
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_233:i32 = load_vector_element %pos, 0u
+        %x_235:i32 = load_vector_element %pos, 1u
+        store %indexable, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+        %16:ptr<function, i32, read_write> = access %indexable, %x_235
+        %x_237:i32 = load %16
+        %x_238:array<i32, 256> = load %indexable
+        store %indexable, array<i32, 256>(0i)
+        %x_239:i32 = load_vector_element %pos, 1u
+        store_vector_element %pos, 1u, 0i
+        store_vector_element %pos, 1u, %x_239
+        store %indexable, %x_238
+        %20:i32 = add %x_237, 15i
+        %x_241:bool = lt %x_233, %20
+        store %x_252_phi, %x_241
+        if %x_241 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %x_245:i32 = load_vector_element %pos, 0u
+            %x_247:i32 = load_vector_element %pos, 1u
+            store %indexable_1, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+            %24:ptr<function, i32, read_write> = access %indexable_1, %x_247
+            %x_249:i32 = load %24
+            %26:i32 = sub %x_249, 15i
+            %27:bool = gt %x_245, %26
+            store %x_251, %27
+            %28:bool = load %x_251
+            store %x_252_phi, %28
+            exit_if  # if_2
+          }
+        }
+        %x_252:bool = load %x_252_phi
+        if %x_252 [t: %b8] {  # if_3
+          %b8 = block {  # true
+            %x_256:i32 = load_vector_element %pos, 0u
+            %x_258:i32 = load_vector_element %pos, 1u
+            store %indexable_2, array<i32, 256>(115i, 133i, 150i, 164i, 176i, 184i, 190i, 192i, 191i, 187i, 181i, 172i, 163i, 153i, 143i, 134i, 126i, 120i, 116i, 114i, 114i, 117i, 121i, 127i, 134i, 141i, 148i, 154i, 159i, 162i, 163i, 161i, 157i, 151i, 143i, 134i, 124i, 113i, 103i, 94i, 87i, 82i, 79i, 80i, 84i, 91i, 101i, 114i, 130i, 146i, 164i, 182i, 199i, 215i, 229i, 240i, 249i, 254i, 256i, 254i, 250i, 243i, 233i, 223i, 212i, 200i, 190i, 180i, 172i, 166i, 163i, 161i, 162i, 164i, 169i, 174i, 179i, 185i, 190i, 193i, 195i, 195i, 192i, 188i, 180i, 171i, 161i, 149i, 137i, 125i, 114i, 105i, 97i, 93i, 91i, 93i, 98i, 106i, 117i, 130i, 145i, 161i, 177i, 193i, 208i, 221i, 231i, 239i, 243i, 244i, 242i, 236i, 228i, 218i, 207i, 194i, 181i, 169i, 158i, 148i, 141i, 135i, 132i, 131i, 132i, 135i, 138i, 143i, 147i, 151i, 154i, 155i, 155i, 152i, 146i, 139i, 129i, 118i, 106i, 93i, 80i, 68i, 58i, 49i, 43i, 40i, 41i, 44i, 51i, 61i, 73i, 87i, 103i, 119i, 134i, 149i, 162i, 173i, 181i, 186i, 188i, 186i, 181i, 174i, 164i, 153i, 141i, 128i, 116i, 104i, 94i, 86i, 81i, 77i, 76i, 77i, 80i, 84i, 89i, 94i, 98i, 102i, 104i, 104i, 102i, 98i, 92i, 83i, 73i, 62i, 50i, 38i, 26i, 16i, 8i, 2i, 0i, 0i, 4i, 11i, 21i, 33i, 48i, 64i, 81i, 98i, 114i, 129i, 141i, 151i, 158i, 161i, 161i, 158i, 152i, 144i, 134i, 123i, 112i, 100i, 90i, 81i, 73i, 68i, 65i, 65i, 67i, 70i, 75i, 81i, 87i, 92i, 97i, 101i, 103i, 102i, 100i, 95i, 88i, 79i, 69i, 58i, 47i, 36i, 26i, 18i, 13i, 11i, 11i, 15i, 22i, 32i, 45i, 60i, 77i, 94i)
+            %32:ptr<function, i32, read_write> = access %indexable_2, %x_258
+            %x_260:i32 = load %32
+            %34:i32 = sub %x_256, %x_260
+            %35:f32 = convert %34
+            %36:f32 = abs %35
+            %37:f32 = sub 15.0f, %36
+            %38:f32 = div %37, 15.0f
+            store %p, %38
+            %x_266:f32 = load %p
+            %x_267:f32 = load %p
+            %x_268:f32 = load %p
+            %42:vec4<f32> = construct %x_266, %x_267, %x_268, 1.0f
+            ret %42
+          }
+        }
+        %x_271:i32 = load_vector_element %pos, 1u
+        %44:i32 = add %x_271, 1i
+        store_vector_element %pos, 1u, %44
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+  }
+}
+%main_1 = func():void -> %b9 {
+  %b9 = block {
+    %pos_1:ptr<function, vec2<f32>, read_write> = var
+    %ipos:ptr<function, vec2<i32>, read_write> = var
+    %param:ptr<function, vec2<i32>, read_write> = var
+    %x_207:vec4<f32> = load %gl_FragCoord
+    %50:ptr<uniform, vec2<f32>, read> = access %x_13, 0u
+    %x_210:vec2<f32> = load %50
+    %52:f32 = access %x_207, 0u
+    %53:f32 = access %x_207, 1u
+    %54:vec2<f32> = construct %52, %53
+    %55:vec2<f32> = div %54, %x_210
+    store %pos_1, %55
+    %x_213:f32 = load_vector_element %pos_1, 0u
+    %x_217:f32 = load_vector_element %pos_1, 1u
+    %58:f32 = mul %x_213, 256.0f
+    %59:i32 = convert %58
+    %60:f32 = mul %x_217, 256.0f
+    %61:i32 = convert %60
+    %62:vec2<i32> = construct %59, %61
+    store %ipos, %62
+    %x_221:vec2<i32> = load %ipos
+    store %param, %x_221
+    %x_222:vec4<f32> = call %trace_vi2_, %param
+    store %x_GLF_color, %x_222
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b10 {
+  %b10 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %67:void = call %main_1
+    %68:vec4<f32> = load %x_GLF_color
+    %69:main_out = construct %68
+    ret %69
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..cd18bd9
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,410 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_32:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %9:i32 = load %i
+    %10:ptr<private, i32, read_write> = access %obj, 0u, %9
+    %11:i32 = load %10
+    store %temp, %11
+    %x_228:i32 = load %i
+    %13:ptr<private, i32, read_write> = access %obj, 0u, %x_228
+    %14:i32 = load %j
+    %15:ptr<private, i32, read_write> = access %obj, 0u, %14
+    %16:i32 = load %15
+    store %13, %16
+    %x_233:i32 = load %j
+    %18:ptr<private, i32, read_write> = access %obj, 0u, %x_233
+    %19:i32 = load %temp
+    store %18, %19
+    ret
+  }
+}
+%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %pivot:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %30:i32 = load %h
+    %31:ptr<private, i32, read_write> = access %obj, 0u, %30
+    %32:i32 = load %31
+    store %pivot, %32
+    %33:i32 = load %l
+    %34:i32 = sub %33, 1i
+    store %i_1, %34
+    %35:i32 = load %l
+    store %j_1, %35
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %36:i32 = load %j_1
+        %37:i32 = load %h
+        %38:i32 = sub %37, 1i
+        %39:bool = lte %36, %38
+        if %39 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %40:i32 = load %j_1
+        %41:ptr<private, i32, read_write> = access %obj, 0u, %40
+        %42:i32 = load %41
+        %43:i32 = load %pivot
+        %44:bool = lte %42, %43
+        if %44 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            %45:i32 = load %i_1
+            %46:i32 = add %45, 1i
+            store %i_1, %46
+            %47:i32 = load %i_1
+            store %param, %47
+            %48:i32 = load %j_1
+            store %param_1, %48
+            %49:void = call %swap_i1_i1_, %param, %param_1
+            exit_if  # if_2
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %50:i32 = load %j_1
+        %51:i32 = add %50, 1i
+        store %j_1, %51
+        next_iteration %b4
+      }
+    }
+    %52:i32 = load %i_1
+    %53:i32 = add %52, 1i
+    store %i_1, %53
+    %54:i32 = load %i_1
+    store %param_2, %54
+    %55:i32 = load %h
+    store %param_3, %55
+    %56:void = call %swap_i1_i1_, %param_2, %param_3
+    %x_271:i32 = load %i_1
+    ret %x_271
+  }
+}
+%quicksort_ = func():void -> %b9 {
+  %b9 = block {
+    %l_1:ptr<function, i32, read_write> = var
+    %h_1:ptr<function, i32, read_write> = var
+    %top:ptr<function, i32, read_write> = var
+    %stack:ptr<function, array<i32, 10>, read_write> = var
+    %p:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    store %l_1, 0i
+    store %h_1, 9i
+    store %top, -1i
+    %66:i32 = load %top
+    %x_274:i32 = add %66, 1i
+    store %top, %x_274
+    %68:ptr<function, i32, read_write> = access %stack, %x_274
+    %69:i32 = load %l_1
+    store %68, %69
+    %70:i32 = load %top
+    %x_278:i32 = add %70, 1i
+    store %top, %x_278
+    %72:ptr<function, i32, read_write> = access %stack, %x_278
+    %73:i32 = load %h_1
+    store %72, %73
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %74:i32 = load %top
+        %75:bool = gte %74, 0i
+        if %75 [t: %b12, f: %b13] {  # if_3
+          %b12 = block {  # true
+            exit_if  # if_3
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_288:i32 = load %top
+        %77:i32 = load %top
+        %78:i32 = sub %77, 1i
+        store %top, %78
+        %79:ptr<function, i32, read_write> = access %stack, %x_288
+        %80:i32 = load %79
+        store %h_1, %80
+        %x_292:i32 = load %top
+        %82:i32 = load %top
+        %83:i32 = sub %82, 1i
+        store %top, %83
+        %84:ptr<function, i32, read_write> = access %stack, %x_292
+        %85:i32 = load %84
+        store %l_1, %85
+        %86:i32 = load %l_1
+        store %param_4, %86
+        %87:i32 = load %h_1
+        store %param_5, %87
+        %x_298:i32 = call %performPartition_i1_i1_, %param_4, %param_5
+        store %p, %x_298
+        %89:i32 = load %p
+        %90:i32 = sub %89, 1i
+        %91:i32 = load %l_1
+        %92:bool = gt %90, %91
+        if %92 [t: %b14] {  # if_4
+          %b14 = block {  # true
+            %93:i32 = load %top
+            %x_306:i32 = add %93, 1i
+            store %top, %x_306
+            %95:ptr<function, i32, read_write> = access %stack, %x_306
+            %96:i32 = load %l_1
+            store %95, %96
+            %97:i32 = load %top
+            %x_310:i32 = add %97, 1i
+            store %top, %x_310
+            %99:ptr<function, i32, read_write> = access %stack, %x_310
+            %100:i32 = load %p
+            %101:i32 = sub %100, 1i
+            store %99, %101
+            exit_if  # if_4
+          }
+        }
+        %102:i32 = load %p
+        %103:i32 = add %102, 1i
+        %104:i32 = load %h_1
+        %105:bool = lt %103, %104
+        if %105 [t: %b15] {  # if_5
+          %b15 = block {  # true
+            %106:i32 = load %top
+            %x_321:i32 = add %106, 1i
+            store %top, %x_321
+            %108:ptr<function, i32, read_write> = access %stack, %x_321
+            %109:i32 = load %p
+            %110:i32 = add %109, 1i
+            store %108, %110
+            %111:i32 = load %top
+            %x_326:i32 = add %111, 1i
+            store %top, %x_326
+            %113:ptr<function, i32, read_write> = access %stack, %x_326
+            %114:i32 = load %h_1
+            store %113, %114
+            exit_if  # if_5
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        next_iteration %b10
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b16 {
+  %b16 = block {
+    %i_2:ptr<function, i32, read_write> = var
+    %uv:ptr<function, vec2<f32>, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    store %i_2, 0i
+    loop [b: %b17, c: %b18] {  # loop_3
+      %b17 = block {  # body
+        %119:i32 = load %i_2
+        %120:bool = lt %119, 10i
+        if %120 [t: %b19, f: %b20] {  # if_6
+          %b19 = block {  # true
+            exit_if  # if_6
+          }
+          %b20 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_88:i32 = load %i_2
+        %122:ptr<private, i32, read_write> = access %obj, 0u, %x_88
+        %123:i32 = load %i_2
+        %124:i32 = sub 10i, %123
+        store %122, %124
+        %x_92:i32 = load %i_2
+        %126:ptr<private, i32, read_write> = access %obj, 0u, %x_92
+        %127:i32 = load %i_2
+        %128:ptr<private, i32, read_write> = access %obj, 0u, %127
+        %129:i32 = load %128
+        %130:i32 = load %i_2
+        %131:ptr<private, i32, read_write> = access %obj, 0u, %130
+        %132:i32 = load %131
+        %133:i32 = mul %129, %132
+        store %126, %133
+        continue %b18
+      }
+      %b18 = block {  # continuing
+        %134:i32 = load %i_2
+        %135:i32 = add %134, 1i
+        store %i_2, %135
+        next_iteration %b17
+      }
+    }
+    %136:void = call %quicksort_
+    %137:vec4<f32> = load %gl_FragCoord
+    %138:vec2<f32> = swizzle %137, xy
+    %139:ptr<uniform, vec2<f32>, read> = access %x_32, 0u
+    %140:vec2<f32> = load %139
+    %141:vec2<f32> = div %138, %140
+    store %uv, %141
+    store %color, vec3<f32>(1.0f, 2.0f, 3.0f)
+    %142:f32 = load_vector_element %color, 0u
+    %143:ptr<private, i32, read_write> = access %obj, 0u, 0i
+    %144:i32 = load %143
+    %145:f32 = convert %144
+    %146:f32 = add %142, %145
+    store_vector_element %color, 0u, %146
+    %147:f32 = load_vector_element %uv, 0u
+    %148:bool = gt %147, 0.25f
+    if %148 [t: %b21] {  # if_7
+      %b21 = block {  # true
+        %149:f32 = load_vector_element %color, 0u
+        %150:ptr<private, i32, read_write> = access %obj, 0u, 1i
+        %151:i32 = load %150
+        %152:f32 = convert %151
+        %153:f32 = add %149, %152
+        store_vector_element %color, 0u, %153
+        exit_if  # if_7
+      }
+    }
+    %154:f32 = load_vector_element %uv, 0u
+    %155:bool = gt %154, 0.5f
+    if %155 [t: %b22] {  # if_8
+      %b22 = block {  # true
+        %156:f32 = load_vector_element %color, 1u
+        %157:ptr<private, i32, read_write> = access %obj, 0u, 2i
+        %158:i32 = load %157
+        %159:f32 = convert %158
+        %160:f32 = add %156, %159
+        store_vector_element %color, 1u, %160
+        exit_if  # if_8
+      }
+    }
+    %161:f32 = load_vector_element %uv, 0u
+    %162:bool = gt %161, 0.75f
+    if %162 [t: %b23] {  # if_9
+      %b23 = block {  # true
+        %163:f32 = load_vector_element %color, 2u
+        %164:ptr<private, i32, read_write> = access %obj, 0u, 3i
+        %165:i32 = load %164
+        %166:f32 = convert %165
+        %167:f32 = add %163, %166
+        store_vector_element %color, 2u, %167
+        exit_if  # if_9
+      }
+    }
+    %168:f32 = load_vector_element %color, 1u
+    %169:ptr<private, i32, read_write> = access %obj, 0u, 4i
+    %170:i32 = load %169
+    %171:f32 = convert %170
+    %172:f32 = add %168, %171
+    store_vector_element %color, 1u, %172
+    %173:f32 = load_vector_element %uv, 1u
+    %174:bool = gt %173, 0.25f
+    if %174 [t: %b24] {  # if_10
+      %b24 = block {  # true
+        %175:f32 = load_vector_element %color, 0u
+        %176:ptr<private, i32, read_write> = access %obj, 0u, 5i
+        %177:i32 = load %176
+        %178:f32 = convert %177
+        %179:f32 = add %175, %178
+        store_vector_element %color, 0u, %179
+        exit_if  # if_10
+      }
+    }
+    %180:f32 = load_vector_element %uv, 1u
+    %181:bool = gt %180, 0.5f
+    if %181 [t: %b25] {  # if_11
+      %b25 = block {  # true
+        %182:f32 = load_vector_element %color, 1u
+        %183:ptr<private, i32, read_write> = access %obj, 0u, 6i
+        %184:i32 = load %183
+        %185:f32 = convert %184
+        %186:f32 = add %182, %185
+        store_vector_element %color, 1u, %186
+        exit_if  # if_11
+      }
+    }
+    %187:f32 = load_vector_element %uv, 1u
+    %188:bool = gt %187, 0.75f
+    if %188 [t: %b26] {  # if_12
+      %b26 = block {  # true
+        %189:f32 = load_vector_element %color, 2u
+        %190:ptr<private, i32, read_write> = access %obj, 0u, 7i
+        %191:i32 = load %190
+        %192:f32 = convert %191
+        %193:f32 = add %189, %192
+        store_vector_element %color, 2u, %193
+        exit_if  # if_12
+      }
+    }
+    %194:f32 = load_vector_element %color, 2u
+    %195:ptr<private, i32, read_write> = access %obj, 0u, 8i
+    %196:i32 = load %195
+    %197:f32 = convert %196
+    %198:f32 = add %194, %197
+    store_vector_element %color, 2u, %198
+    %199:f32 = load_vector_element %uv, 0u
+    %200:f32 = load_vector_element %uv, 1u
+    %201:f32 = sub %199, %200
+    %202:f32 = abs %201
+    %203:bool = lt %202, 0.25f
+    if %203 [t: %b27] {  # if_13
+      %b27 = block {  # true
+        %204:f32 = load_vector_element %color, 0u
+        %205:ptr<private, i32, read_write> = access %obj, 0u, 9i
+        %206:i32 = load %205
+        %207:f32 = convert %206
+        %208:f32 = add %204, %207
+        store_vector_element %color, 0u, %208
+        exit_if  # if_13
+      }
+    }
+    %209:vec3<f32> = load %color
+    %x_219:vec3<f32> = normalize %209
+    %211:f32 = access %x_219, 0u
+    %212:f32 = access %x_219, 1u
+    %213:f32 = access %x_219, 2u
+    %214:vec4<f32> = construct %211, %212, %213, 1.0f
+    store %x_GLF_color, %214
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b28 {
+  %b28 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %217:void = call %main_1
+    %218:vec4<f32> = load %x_GLF_color
+    %219:main_out = construct %218
+    ret %219
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4447e29
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,410 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_32:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %x_225:i32 = load %i
+    %10:ptr<private, i32, read_write> = access %obj, 0u, %x_225
+    %x_227:i32 = load %10
+    store %temp, %x_227
+    %x_228:i32 = load %i
+    %x_229:i32 = load %j
+    %14:ptr<private, i32, read_write> = access %obj, 0u, %x_229
+    %x_231:i32 = load %14
+    %16:ptr<private, i32, read_write> = access %obj, 0u, %x_228
+    store %16, %x_231
+    %x_233:i32 = load %j
+    %x_234:i32 = load %temp
+    %19:ptr<private, i32, read_write> = access %obj, 0u, %x_233
+    store %19, %x_234
+    ret
+  }
+}
+%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %pivot:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %x_237:i32 = load %h
+    %31:ptr<private, i32, read_write> = access %obj, 0u, %x_237
+    %x_239:i32 = load %31
+    store %pivot, %x_239
+    %x_240:i32 = load %l
+    %34:i32 = sub %x_240, 1i
+    store %i_1, %34
+    %x_242:i32 = load %l
+    store %j_1, %x_242
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %x_247:i32 = load %j_1
+        %x_248:i32 = load %h
+        %38:i32 = sub %x_248, 1i
+        %39:bool = lte %x_247, %38
+        if %39 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_252:i32 = load %j_1
+        %41:ptr<private, i32, read_write> = access %obj, 0u, %x_252
+        %x_254:i32 = load %41
+        %x_255:i32 = load %pivot
+        %44:bool = lte %x_254, %x_255
+        if %44 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            %x_259:i32 = load %i_1
+            %46:i32 = add %x_259, 1i
+            store %i_1, %46
+            %x_261:i32 = load %i_1
+            store %param, %x_261
+            %x_262:i32 = load %j_1
+            store %param_1, %x_262
+            %49:void = call %swap_i1_i1_, %param, %param_1
+            exit_if  # if_2
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %x_264:i32 = load %j_1
+        %51:i32 = add %x_264, 1i
+        store %j_1, %51
+        next_iteration %b4
+      }
+    }
+    %x_266:i32 = load %i_1
+    %53:i32 = add %x_266, 1i
+    store %i_1, %53
+    %x_268:i32 = load %i_1
+    store %param_2, %x_268
+    %x_269:i32 = load %h
+    store %param_3, %x_269
+    %56:void = call %swap_i1_i1_, %param_2, %param_3
+    %x_271:i32 = load %i_1
+    ret %x_271
+  }
+}
+%quicksort_ = func():void -> %b9 {
+  %b9 = block {
+    %l_1:ptr<function, i32, read_write> = var
+    %h_1:ptr<function, i32, read_write> = var
+    %top:ptr<function, i32, read_write> = var
+    %stack:ptr<function, array<i32, 10>, read_write> = var
+    %p:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    store %l_1, 0i
+    store %h_1, 9i
+    store %top, -1i
+    %x_273:i32 = load %top
+    %x_274:i32 = add %x_273, 1i
+    store %top, %x_274
+    %x_275:i32 = load %l_1
+    %69:ptr<function, i32, read_write> = access %stack, %x_274
+    store %69, %x_275
+    %x_277:i32 = load %top
+    %x_278:i32 = add %x_277, 1i
+    store %top, %x_278
+    %x_279:i32 = load %h_1
+    %73:ptr<function, i32, read_write> = access %stack, %x_278
+    store %73, %x_279
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %x_285:i32 = load %top
+        %75:bool = gte %x_285, 0i
+        if %75 [t: %b12, f: %b13] {  # if_3
+          %b12 = block {  # true
+            exit_if  # if_3
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_288:i32 = load %top
+        %77:i32 = sub %x_288, 1i
+        store %top, %77
+        %78:ptr<function, i32, read_write> = access %stack, %x_288
+        %x_291:i32 = load %78
+        store %h_1, %x_291
+        %x_292:i32 = load %top
+        %81:i32 = sub %x_292, 1i
+        store %top, %81
+        %82:ptr<function, i32, read_write> = access %stack, %x_292
+        %x_295:i32 = load %82
+        store %l_1, %x_295
+        %x_296:i32 = load %l_1
+        store %param_4, %x_296
+        %x_297:i32 = load %h_1
+        store %param_5, %x_297
+        %x_298:i32 = call %performPartition_i1_i1_, %param_4, %param_5
+        store %p, %x_298
+        %x_299:i32 = load %p
+        %x_301:i32 = load %l_1
+        %89:i32 = sub %x_299, 1i
+        %90:bool = gt %89, %x_301
+        if %90 [t: %b14] {  # if_4
+          %b14 = block {  # true
+            %x_305:i32 = load %top
+            %x_306:i32 = add %x_305, 1i
+            store %top, %x_306
+            %x_307:i32 = load %l_1
+            %94:ptr<function, i32, read_write> = access %stack, %x_306
+            store %94, %x_307
+            %x_309:i32 = load %top
+            %x_310:i32 = add %x_309, 1i
+            store %top, %x_310
+            %x_311:i32 = load %p
+            %98:ptr<function, i32, read_write> = access %stack, %x_310
+            %99:i32 = sub %x_311, 1i
+            store %98, %99
+            exit_if  # if_4
+          }
+        }
+        %x_314:i32 = load %p
+        %x_316:i32 = load %h_1
+        %102:i32 = add %x_314, 1i
+        %103:bool = lt %102, %x_316
+        if %103 [t: %b15] {  # if_5
+          %b15 = block {  # true
+            %x_320:i32 = load %top
+            %x_321:i32 = add %x_320, 1i
+            store %top, %x_321
+            %x_322:i32 = load %p
+            %107:ptr<function, i32, read_write> = access %stack, %x_321
+            %108:i32 = add %x_322, 1i
+            store %107, %108
+            %x_325:i32 = load %top
+            %x_326:i32 = add %x_325, 1i
+            store %top, %x_326
+            %x_327:i32 = load %h_1
+            %112:ptr<function, i32, read_write> = access %stack, %x_326
+            store %112, %x_327
+            exit_if  # if_5
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        next_iteration %b10
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b16 {
+  %b16 = block {
+    %i_2:ptr<function, i32, read_write> = var
+    %uv:ptr<function, vec2<f32>, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    store %i_2, 0i
+    loop [b: %b17, c: %b18] {  # loop_3
+      %b17 = block {  # body
+        %x_85:i32 = load %i_2
+        %118:bool = lt %x_85, 10i
+        if %118 [t: %b19, f: %b20] {  # if_6
+          %b19 = block {  # true
+            exit_if  # if_6
+          }
+          %b20 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_88:i32 = load %i_2
+        %x_89:i32 = load %i_2
+        %121:ptr<private, i32, read_write> = access %obj, 0u, %x_88
+        %122:i32 = sub 10i, %x_89
+        store %121, %122
+        %x_92:i32 = load %i_2
+        %x_93:i32 = load %i_2
+        %125:ptr<private, i32, read_write> = access %obj, 0u, %x_93
+        %x_95:i32 = load %125
+        %x_96:i32 = load %i_2
+        %128:ptr<private, i32, read_write> = access %obj, 0u, %x_96
+        %x_98:i32 = load %128
+        %130:ptr<private, i32, read_write> = access %obj, 0u, %x_92
+        %131:i32 = mul %x_95, %x_98
+        store %130, %131
+        continue %b18
+      }
+      %b18 = block {  # continuing
+        %x_101:i32 = load %i_2
+        %133:i32 = add %x_101, 1i
+        store %i_2, %133
+        next_iteration %b17
+      }
+    }
+    %134:void = call %quicksort_
+    %x_104:vec4<f32> = load %gl_FragCoord
+    %136:ptr<uniform, vec2<f32>, read> = access %x_32, 0u
+    %x_107:vec2<f32> = load %136
+    %138:f32 = access %x_104, 0u
+    %139:f32 = access %x_104, 1u
+    %140:vec2<f32> = construct %138, %139
+    %141:vec2<f32> = div %140, %x_107
+    store %uv, %141
+    store %color, vec3<f32>(1.0f, 2.0f, 3.0f)
+    %142:ptr<private, i32, read_write> = access %obj, 0u, 0i
+    %x_110:i32 = load %142
+    %x_113:f32 = load_vector_element %color, 0u
+    %145:f32 = convert %x_110
+    %146:f32 = add %x_113, %145
+    store_vector_element %color, 0u, %146
+    %x_117:f32 = load_vector_element %uv, 0u
+    %148:bool = gt %x_117, 0.25f
+    if %148 [t: %b21] {  # if_7
+      %b21 = block {  # true
+        %149:ptr<private, i32, read_write> = access %obj, 0u, 1i
+        %x_122:i32 = load %149
+        %x_125:f32 = load_vector_element %color, 0u
+        %152:f32 = convert %x_122
+        %153:f32 = add %x_125, %152
+        store_vector_element %color, 0u, %153
+        exit_if  # if_7
+      }
+    }
+    %x_129:f32 = load_vector_element %uv, 0u
+    %155:bool = gt %x_129, 0.5f
+    if %155 [t: %b22] {  # if_8
+      %b22 = block {  # true
+        %156:ptr<private, i32, read_write> = access %obj, 0u, 2i
+        %x_134:i32 = load %156
+        %x_137:f32 = load_vector_element %color, 1u
+        %159:f32 = convert %x_134
+        %160:f32 = add %x_137, %159
+        store_vector_element %color, 1u, %160
+        exit_if  # if_8
+      }
+    }
+    %x_141:f32 = load_vector_element %uv, 0u
+    %162:bool = gt %x_141, 0.75f
+    if %162 [t: %b23] {  # if_9
+      %b23 = block {  # true
+        %163:ptr<private, i32, read_write> = access %obj, 0u, 3i
+        %x_146:i32 = load %163
+        %x_149:f32 = load_vector_element %color, 2u
+        %166:f32 = convert %x_146
+        %167:f32 = add %x_149, %166
+        store_vector_element %color, 2u, %167
+        exit_if  # if_9
+      }
+    }
+    %168:ptr<private, i32, read_write> = access %obj, 0u, 4i
+    %x_153:i32 = load %168
+    %x_156:f32 = load_vector_element %color, 1u
+    %171:f32 = convert %x_153
+    %172:f32 = add %x_156, %171
+    store_vector_element %color, 1u, %172
+    %x_160:f32 = load_vector_element %uv, 1u
+    %174:bool = gt %x_160, 0.25f
+    if %174 [t: %b24] {  # if_10
+      %b24 = block {  # true
+        %175:ptr<private, i32, read_write> = access %obj, 0u, 5i
+        %x_165:i32 = load %175
+        %x_168:f32 = load_vector_element %color, 0u
+        %178:f32 = convert %x_165
+        %179:f32 = add %x_168, %178
+        store_vector_element %color, 0u, %179
+        exit_if  # if_10
+      }
+    }
+    %x_172:f32 = load_vector_element %uv, 1u
+    %181:bool = gt %x_172, 0.5f
+    if %181 [t: %b25] {  # if_11
+      %b25 = block {  # true
+        %182:ptr<private, i32, read_write> = access %obj, 0u, 6i
+        %x_177:i32 = load %182
+        %x_180:f32 = load_vector_element %color, 1u
+        %185:f32 = convert %x_177
+        %186:f32 = add %x_180, %185
+        store_vector_element %color, 1u, %186
+        exit_if  # if_11
+      }
+    }
+    %x_184:f32 = load_vector_element %uv, 1u
+    %188:bool = gt %x_184, 0.75f
+    if %188 [t: %b26] {  # if_12
+      %b26 = block {  # true
+        %189:ptr<private, i32, read_write> = access %obj, 0u, 7i
+        %x_189:i32 = load %189
+        %x_192:f32 = load_vector_element %color, 2u
+        %192:f32 = convert %x_189
+        %193:f32 = add %x_192, %192
+        store_vector_element %color, 2u, %193
+        exit_if  # if_12
+      }
+    }
+    %194:ptr<private, i32, read_write> = access %obj, 0u, 8i
+    %x_196:i32 = load %194
+    %x_199:f32 = load_vector_element %color, 2u
+    %197:f32 = convert %x_196
+    %198:f32 = add %x_199, %197
+    store_vector_element %color, 2u, %198
+    %x_203:f32 = load_vector_element %uv, 0u
+    %x_205:f32 = load_vector_element %uv, 1u
+    %201:f32 = sub %x_203, %x_205
+    %202:f32 = abs %201
+    %203:bool = lt %202, 0.25f
+    if %203 [t: %b27] {  # if_13
+      %b27 = block {  # true
+        %204:ptr<private, i32, read_write> = access %obj, 0u, 9i
+        %x_212:i32 = load %204
+        %x_215:f32 = load_vector_element %color, 0u
+        %207:f32 = convert %x_212
+        %208:f32 = add %x_215, %207
+        store_vector_element %color, 0u, %208
+        exit_if  # if_13
+      }
+    }
+    %x_218:vec3<f32> = load %color
+    %x_219:vec3<f32> = normalize %x_218
+    %211:f32 = access %x_219, 0u
+    %212:f32 = access %x_219, 1u
+    %213:f32 = access %x_219, 2u
+    %214:vec4<f32> = construct %211, %212, %213, 1.0f
+    store %x_GLF_color, %214
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b28 {
+  %b28 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %217:void = call %main_1
+    %218:vec4<f32> = load %x_GLF_color
+    %219:main_out = construct %218
+    ret %219
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..14c8f22
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.spvasm.expected.ir.msl
@@ -0,0 +1,410 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_32:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>, %x_228:mat3x3<f32>):void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %10:i32 = load %i
+    %11:ptr<private, i32, read_write> = access %obj, 0u, %10
+    %12:i32 = load %11
+    store %temp, %12
+    %x_233:i32 = load %i
+    %14:ptr<private, i32, read_write> = access %obj, 0u, %x_233
+    %15:i32 = load %j
+    %16:ptr<private, i32, read_write> = access %obj, 0u, %15
+    %17:i32 = load %16
+    store %14, %17
+    %x_238:i32 = load %j
+    %19:ptr<private, i32, read_write> = access %obj, 0u, %x_238
+    %20:i32 = load %temp
+    store %19, %20
+    ret
+  }
+}
+%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %pivot:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %31:i32 = load %h
+    %32:ptr<private, i32, read_write> = access %obj, 0u, %31
+    %33:i32 = load %32
+    store %pivot, %33
+    %34:i32 = load %l
+    %35:i32 = sub %34, 1i
+    store %i_1, %35
+    %36:i32 = load %l
+    store %j_1, %36
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %37:i32 = load %j_1
+        %38:i32 = load %h
+        %39:i32 = sub %38, 1i
+        %40:bool = lte %37, %39
+        if %40 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %41:i32 = load %j_1
+        %42:ptr<private, i32, read_write> = access %obj, 0u, %41
+        %43:i32 = load %42
+        %44:i32 = load %pivot
+        %45:bool = lte %43, %44
+        if %45 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            %46:i32 = load %i_1
+            %47:i32 = add %46, 1i
+            store %i_1, %47
+            %48:i32 = load %i_1
+            store %param, %48
+            %49:i32 = load %j_1
+            store %param_1, %49
+            %50:void = call %swap_i1_i1_, %param, %param_1, mat3x3<f32>(vec3<f32>(0.0f))
+            exit_if  # if_2
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %51:i32 = load %j_1
+        %52:i32 = add %51, 1i
+        store %j_1, %52
+        next_iteration %b4
+      }
+    }
+    %53:i32 = load %i_1
+    %54:i32 = add %53, 1i
+    store %i_1, %54
+    %55:i32 = load %i_1
+    store %param_2, %55
+    %56:i32 = load %h
+    store %param_3, %56
+    %57:void = call %swap_i1_i1_, %param_2, %param_3, mat3x3<f32>(vec3<f32>(0.0f))
+    %x_276:i32 = load %i_1
+    ret %x_276
+  }
+}
+%quicksort_ = func():void -> %b9 {
+  %b9 = block {
+    %l_1:ptr<function, i32, read_write> = var
+    %h_1:ptr<function, i32, read_write> = var
+    %top:ptr<function, i32, read_write> = var
+    %stack:ptr<function, array<i32, 10>, read_write> = var
+    %p:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    store %l_1, 0i
+    store %h_1, 9i
+    store %top, -1i
+    %67:i32 = load %top
+    %x_279:i32 = add %67, 1i
+    store %top, %x_279
+    %69:ptr<function, i32, read_write> = access %stack, %x_279
+    %70:i32 = load %l_1
+    store %69, %70
+    %71:i32 = load %top
+    %x_283:i32 = add %71, 1i
+    store %top, %x_283
+    %73:ptr<function, i32, read_write> = access %stack, %x_283
+    %74:i32 = load %h_1
+    store %73, %74
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %75:i32 = load %top
+        %76:bool = gte %75, 0i
+        if %76 [t: %b12, f: %b13] {  # if_3
+          %b12 = block {  # true
+            exit_if  # if_3
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_293:i32 = load %top
+        %78:i32 = load %top
+        %79:i32 = sub %78, 1i
+        store %top, %79
+        %80:ptr<function, i32, read_write> = access %stack, %x_293
+        %81:i32 = load %80
+        store %h_1, %81
+        %x_297:i32 = load %top
+        %83:i32 = load %top
+        %84:i32 = sub %83, 1i
+        store %top, %84
+        %85:ptr<function, i32, read_write> = access %stack, %x_297
+        %86:i32 = load %85
+        store %l_1, %86
+        %87:i32 = load %l_1
+        store %param_4, %87
+        %88:i32 = load %h_1
+        store %param_5, %88
+        %x_303:i32 = call %performPartition_i1_i1_, %param_4, %param_5
+        store %p, %x_303
+        %90:i32 = load %p
+        %91:i32 = sub %90, 1i
+        %92:i32 = load %l_1
+        %93:bool = gt %91, %92
+        if %93 [t: %b14] {  # if_4
+          %b14 = block {  # true
+            %94:i32 = load %top
+            %x_311:i32 = add %94, 1i
+            store %top, %x_311
+            %96:ptr<function, i32, read_write> = access %stack, %x_311
+            %97:i32 = load %l_1
+            store %96, %97
+            %98:i32 = load %top
+            %x_315:i32 = add %98, 1i
+            store %top, %x_315
+            %100:ptr<function, i32, read_write> = access %stack, %x_315
+            %101:i32 = load %p
+            %102:i32 = sub %101, 1i
+            store %100, %102
+            exit_if  # if_4
+          }
+        }
+        %103:i32 = load %p
+        %104:i32 = add %103, 1i
+        %105:i32 = load %h_1
+        %106:bool = lt %104, %105
+        if %106 [t: %b15] {  # if_5
+          %b15 = block {  # true
+            %107:i32 = load %top
+            %x_326:i32 = add %107, 1i
+            store %top, %x_326
+            %109:ptr<function, i32, read_write> = access %stack, %x_326
+            %110:i32 = load %p
+            %111:i32 = add %110, 1i
+            store %109, %111
+            %112:i32 = load %top
+            %x_331:i32 = add %112, 1i
+            store %top, %x_331
+            %114:ptr<function, i32, read_write> = access %stack, %x_331
+            %115:i32 = load %h_1
+            store %114, %115
+            exit_if  # if_5
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        next_iteration %b10
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b16 {
+  %b16 = block {
+    %i_2:ptr<function, i32, read_write> = var
+    %uv:ptr<function, vec2<f32>, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    store %i_2, 0i
+    loop [b: %b17, c: %b18] {  # loop_3
+      %b17 = block {  # body
+        %120:i32 = load %i_2
+        %121:bool = lt %120, 10i
+        if %121 [t: %b19, f: %b20] {  # if_6
+          %b19 = block {  # true
+            exit_if  # if_6
+          }
+          %b20 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_92:i32 = load %i_2
+        %123:ptr<private, i32, read_write> = access %obj, 0u, %x_92
+        %124:i32 = load %i_2
+        %125:i32 = sub 10i, %124
+        store %123, %125
+        %x_96:i32 = load %i_2
+        %127:ptr<private, i32, read_write> = access %obj, 0u, %x_96
+        %128:i32 = load %i_2
+        %129:ptr<private, i32, read_write> = access %obj, 0u, %128
+        %130:i32 = load %129
+        %131:i32 = load %i_2
+        %132:ptr<private, i32, read_write> = access %obj, 0u, %131
+        %133:i32 = load %132
+        %134:i32 = mul %130, %133
+        store %127, %134
+        continue %b18
+      }
+      %b18 = block {  # continuing
+        %135:i32 = load %i_2
+        %136:i32 = add %135, 1i
+        store %i_2, %136
+        next_iteration %b17
+      }
+    }
+    %137:void = call %quicksort_
+    %138:vec4<f32> = load %gl_FragCoord
+    %139:vec2<f32> = swizzle %138, xy
+    %140:ptr<uniform, vec2<f32>, read> = access %x_32, 0u
+    %141:vec2<f32> = load %140
+    %142:vec2<f32> = div %139, %141
+    store %uv, %142
+    store %color, vec3<f32>(1.0f, 2.0f, 3.0f)
+    %143:f32 = load_vector_element %color, 0u
+    %144:ptr<private, i32, read_write> = access %obj, 0u, 0i
+    %145:i32 = load %144
+    %146:f32 = convert %145
+    %147:f32 = add %143, %146
+    store_vector_element %color, 0u, %147
+    %148:f32 = load_vector_element %uv, 0u
+    %149:bool = gt %148, 0.25f
+    if %149 [t: %b21] {  # if_7
+      %b21 = block {  # true
+        %150:f32 = load_vector_element %color, 0u
+        %151:ptr<private, i32, read_write> = access %obj, 0u, 1i
+        %152:i32 = load %151
+        %153:f32 = convert %152
+        %154:f32 = add %150, %153
+        store_vector_element %color, 0u, %154
+        exit_if  # if_7
+      }
+    }
+    %155:f32 = load_vector_element %uv, 0u
+    %156:bool = gt %155, 0.5f
+    if %156 [t: %b22] {  # if_8
+      %b22 = block {  # true
+        %157:f32 = load_vector_element %color, 1u
+        %158:ptr<private, i32, read_write> = access %obj, 0u, 2i
+        %159:i32 = load %158
+        %160:f32 = convert %159
+        %161:f32 = add %157, %160
+        store_vector_element %color, 1u, %161
+        exit_if  # if_8
+      }
+    }
+    %162:f32 = load_vector_element %uv, 0u
+    %163:bool = gt %162, 0.75f
+    if %163 [t: %b23] {  # if_9
+      %b23 = block {  # true
+        %164:f32 = load_vector_element %color, 2u
+        %165:ptr<private, i32, read_write> = access %obj, 0u, 3i
+        %166:i32 = load %165
+        %167:f32 = convert %166
+        %168:f32 = add %164, %167
+        store_vector_element %color, 2u, %168
+        exit_if  # if_9
+      }
+    }
+    %169:f32 = load_vector_element %color, 1u
+    %170:ptr<private, i32, read_write> = access %obj, 0u, 4i
+    %171:i32 = load %170
+    %172:f32 = convert %171
+    %173:f32 = add %169, %172
+    store_vector_element %color, 1u, %173
+    %174:f32 = load_vector_element %uv, 1u
+    %175:bool = gt %174, 0.25f
+    if %175 [t: %b24] {  # if_10
+      %b24 = block {  # true
+        %176:f32 = load_vector_element %color, 0u
+        %177:ptr<private, i32, read_write> = access %obj, 0u, 5i
+        %178:i32 = load %177
+        %179:f32 = convert %178
+        %180:f32 = add %176, %179
+        store_vector_element %color, 0u, %180
+        exit_if  # if_10
+      }
+    }
+    %181:f32 = load_vector_element %uv, 1u
+    %182:bool = gt %181, 0.5f
+    if %182 [t: %b25] {  # if_11
+      %b25 = block {  # true
+        %183:f32 = load_vector_element %color, 1u
+        %184:ptr<private, i32, read_write> = access %obj, 0u, 6i
+        %185:i32 = load %184
+        %186:f32 = convert %185
+        %187:f32 = add %183, %186
+        store_vector_element %color, 1u, %187
+        exit_if  # if_11
+      }
+    }
+    %188:f32 = load_vector_element %uv, 1u
+    %189:bool = gt %188, 0.75f
+    if %189 [t: %b26] {  # if_12
+      %b26 = block {  # true
+        %190:f32 = load_vector_element %color, 2u
+        %191:ptr<private, i32, read_write> = access %obj, 0u, 7i
+        %192:i32 = load %191
+        %193:f32 = convert %192
+        %194:f32 = add %190, %193
+        store_vector_element %color, 2u, %194
+        exit_if  # if_12
+      }
+    }
+    %195:f32 = load_vector_element %color, 2u
+    %196:ptr<private, i32, read_write> = access %obj, 0u, 8i
+    %197:i32 = load %196
+    %198:f32 = convert %197
+    %199:f32 = add %195, %198
+    store_vector_element %color, 2u, %199
+    %200:f32 = load_vector_element %uv, 0u
+    %201:f32 = load_vector_element %uv, 1u
+    %202:f32 = sub %200, %201
+    %203:f32 = abs %202
+    %204:bool = lt %203, 0.25f
+    if %204 [t: %b27] {  # if_13
+      %b27 = block {  # true
+        %205:f32 = load_vector_element %color, 0u
+        %206:ptr<private, i32, read_write> = access %obj, 0u, 9i
+        %207:i32 = load %206
+        %208:f32 = convert %207
+        %209:f32 = add %205, %208
+        store_vector_element %color, 0u, %209
+        exit_if  # if_13
+      }
+    }
+    %210:vec3<f32> = load %color
+    %x_223:vec3<f32> = normalize %210
+    %212:f32 = access %x_223, 0u
+    %213:f32 = access %x_223, 1u
+    %214:f32 = access %x_223, 2u
+    %215:vec4<f32> = construct %212, %213, %214, 1.0f
+    store %x_GLF_color, %215
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b28 {
+  %b28 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %218:void = call %main_1
+    %219:vec4<f32> = load %x_GLF_color
+    %220:main_out = construct %219
+    ret %220
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2839b99
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl.expected.ir.msl
@@ -0,0 +1,410 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_32:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>, %x_228:mat3x3<f32>):void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %x_230:i32 = load %i
+    %11:ptr<private, i32, read_write> = access %obj, 0u, %x_230
+    %x_232:i32 = load %11
+    store %temp, %x_232
+    %x_233:i32 = load %i
+    %x_234:i32 = load %j
+    %15:ptr<private, i32, read_write> = access %obj, 0u, %x_234
+    %x_236:i32 = load %15
+    %17:ptr<private, i32, read_write> = access %obj, 0u, %x_233
+    store %17, %x_236
+    %x_238:i32 = load %j
+    %x_239:i32 = load %temp
+    %20:ptr<private, i32, read_write> = access %obj, 0u, %x_238
+    store %20, %x_239
+    ret
+  }
+}
+%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %pivot:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %x_242:i32 = load %h
+    %32:ptr<private, i32, read_write> = access %obj, 0u, %x_242
+    %x_244:i32 = load %32
+    store %pivot, %x_244
+    %x_245:i32 = load %l
+    %35:i32 = sub %x_245, 1i
+    store %i_1, %35
+    %x_247:i32 = load %l
+    store %j_1, %x_247
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %x_252:i32 = load %j_1
+        %x_253:i32 = load %h
+        %39:i32 = sub %x_253, 1i
+        %40:bool = lte %x_252, %39
+        if %40 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_257:i32 = load %j_1
+        %42:ptr<private, i32, read_write> = access %obj, 0u, %x_257
+        %x_259:i32 = load %42
+        %x_260:i32 = load %pivot
+        %45:bool = lte %x_259, %x_260
+        if %45 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            %x_264:i32 = load %i_1
+            %47:i32 = add %x_264, 1i
+            store %i_1, %47
+            %x_266:i32 = load %i_1
+            store %param, %x_266
+            %x_267:i32 = load %j_1
+            store %param_1, %x_267
+            %50:void = call %swap_i1_i1_, %param, %param_1, mat3x3<f32>(vec3<f32>(0.0f))
+            exit_if  # if_2
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %x_269:i32 = load %j_1
+        %52:i32 = add %x_269, 1i
+        store %j_1, %52
+        next_iteration %b4
+      }
+    }
+    %x_271:i32 = load %i_1
+    %54:i32 = add %x_271, 1i
+    store %i_1, %54
+    %x_273:i32 = load %i_1
+    store %param_2, %x_273
+    %x_274:i32 = load %h
+    store %param_3, %x_274
+    %57:void = call %swap_i1_i1_, %param_2, %param_3, mat3x3<f32>(vec3<f32>(0.0f))
+    %x_276:i32 = load %i_1
+    ret %x_276
+  }
+}
+%quicksort_ = func():void -> %b9 {
+  %b9 = block {
+    %l_1:ptr<function, i32, read_write> = var
+    %h_1:ptr<function, i32, read_write> = var
+    %top:ptr<function, i32, read_write> = var
+    %stack:ptr<function, array<i32, 10>, read_write> = var
+    %p:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    store %l_1, 0i
+    store %h_1, 9i
+    store %top, -1i
+    %x_278:i32 = load %top
+    %x_279:i32 = add %x_278, 1i
+    store %top, %x_279
+    %x_280:i32 = load %l_1
+    %70:ptr<function, i32, read_write> = access %stack, %x_279
+    store %70, %x_280
+    %x_282:i32 = load %top
+    %x_283:i32 = add %x_282, 1i
+    store %top, %x_283
+    %x_284:i32 = load %h_1
+    %74:ptr<function, i32, read_write> = access %stack, %x_283
+    store %74, %x_284
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %x_290:i32 = load %top
+        %76:bool = gte %x_290, 0i
+        if %76 [t: %b12, f: %b13] {  # if_3
+          %b12 = block {  # true
+            exit_if  # if_3
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_293:i32 = load %top
+        %78:i32 = sub %x_293, 1i
+        store %top, %78
+        %79:ptr<function, i32, read_write> = access %stack, %x_293
+        %x_296:i32 = load %79
+        store %h_1, %x_296
+        %x_297:i32 = load %top
+        %82:i32 = sub %x_297, 1i
+        store %top, %82
+        %83:ptr<function, i32, read_write> = access %stack, %x_297
+        %x_300:i32 = load %83
+        store %l_1, %x_300
+        %x_301:i32 = load %l_1
+        store %param_4, %x_301
+        %x_302:i32 = load %h_1
+        store %param_5, %x_302
+        %x_303:i32 = call %performPartition_i1_i1_, %param_4, %param_5
+        store %p, %x_303
+        %x_304:i32 = load %p
+        %x_306:i32 = load %l_1
+        %90:i32 = sub %x_304, 1i
+        %91:bool = gt %90, %x_306
+        if %91 [t: %b14] {  # if_4
+          %b14 = block {  # true
+            %x_310:i32 = load %top
+            %x_311:i32 = add %x_310, 1i
+            store %top, %x_311
+            %x_312:i32 = load %l_1
+            %95:ptr<function, i32, read_write> = access %stack, %x_311
+            store %95, %x_312
+            %x_314:i32 = load %top
+            %x_315:i32 = add %x_314, 1i
+            store %top, %x_315
+            %x_316:i32 = load %p
+            %99:ptr<function, i32, read_write> = access %stack, %x_315
+            %100:i32 = sub %x_316, 1i
+            store %99, %100
+            exit_if  # if_4
+          }
+        }
+        %x_319:i32 = load %p
+        %x_321:i32 = load %h_1
+        %103:i32 = add %x_319, 1i
+        %104:bool = lt %103, %x_321
+        if %104 [t: %b15] {  # if_5
+          %b15 = block {  # true
+            %x_325:i32 = load %top
+            %x_326:i32 = add %x_325, 1i
+            store %top, %x_326
+            %x_327:i32 = load %p
+            %108:ptr<function, i32, read_write> = access %stack, %x_326
+            %109:i32 = add %x_327, 1i
+            store %108, %109
+            %x_330:i32 = load %top
+            %x_331:i32 = add %x_330, 1i
+            store %top, %x_331
+            %x_332:i32 = load %h_1
+            %113:ptr<function, i32, read_write> = access %stack, %x_331
+            store %113, %x_332
+            exit_if  # if_5
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        next_iteration %b10
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b16 {
+  %b16 = block {
+    %i_2:ptr<function, i32, read_write> = var
+    %uv:ptr<function, vec2<f32>, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    store %i_2, 0i
+    loop [b: %b17, c: %b18] {  # loop_3
+      %b17 = block {  # body
+        %x_89:i32 = load %i_2
+        %119:bool = lt %x_89, 10i
+        if %119 [t: %b19, f: %b20] {  # if_6
+          %b19 = block {  # true
+            exit_if  # if_6
+          }
+          %b20 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_92:i32 = load %i_2
+        %x_93:i32 = load %i_2
+        %122:ptr<private, i32, read_write> = access %obj, 0u, %x_92
+        %123:i32 = sub 10i, %x_93
+        store %122, %123
+        %x_96:i32 = load %i_2
+        %x_97:i32 = load %i_2
+        %126:ptr<private, i32, read_write> = access %obj, 0u, %x_97
+        %x_99:i32 = load %126
+        %x_100:i32 = load %i_2
+        %129:ptr<private, i32, read_write> = access %obj, 0u, %x_100
+        %x_102:i32 = load %129
+        %131:ptr<private, i32, read_write> = access %obj, 0u, %x_96
+        %132:i32 = mul %x_99, %x_102
+        store %131, %132
+        continue %b18
+      }
+      %b18 = block {  # continuing
+        %x_105:i32 = load %i_2
+        %134:i32 = add %x_105, 1i
+        store %i_2, %134
+        next_iteration %b17
+      }
+    }
+    %135:void = call %quicksort_
+    %x_108:vec4<f32> = load %gl_FragCoord
+    %137:ptr<uniform, vec2<f32>, read> = access %x_32, 0u
+    %x_111:vec2<f32> = load %137
+    %139:f32 = access %x_108, 0u
+    %140:f32 = access %x_108, 1u
+    %141:vec2<f32> = construct %139, %140
+    %142:vec2<f32> = div %141, %x_111
+    store %uv, %142
+    store %color, vec3<f32>(1.0f, 2.0f, 3.0f)
+    %143:ptr<private, i32, read_write> = access %obj, 0u, 0i
+    %x_114:i32 = load %143
+    %x_117:f32 = load_vector_element %color, 0u
+    %146:f32 = convert %x_114
+    %147:f32 = add %x_117, %146
+    store_vector_element %color, 0u, %147
+    %x_121:f32 = load_vector_element %uv, 0u
+    %149:bool = gt %x_121, 0.25f
+    if %149 [t: %b21] {  # if_7
+      %b21 = block {  # true
+        %150:ptr<private, i32, read_write> = access %obj, 0u, 1i
+        %x_126:i32 = load %150
+        %x_129:f32 = load_vector_element %color, 0u
+        %153:f32 = convert %x_126
+        %154:f32 = add %x_129, %153
+        store_vector_element %color, 0u, %154
+        exit_if  # if_7
+      }
+    }
+    %x_133:f32 = load_vector_element %uv, 0u
+    %156:bool = gt %x_133, 0.5f
+    if %156 [t: %b22] {  # if_8
+      %b22 = block {  # true
+        %157:ptr<private, i32, read_write> = access %obj, 0u, 2i
+        %x_138:i32 = load %157
+        %x_141:f32 = load_vector_element %color, 1u
+        %160:f32 = convert %x_138
+        %161:f32 = add %x_141, %160
+        store_vector_element %color, 1u, %161
+        exit_if  # if_8
+      }
+    }
+    %x_145:f32 = load_vector_element %uv, 0u
+    %163:bool = gt %x_145, 0.75f
+    if %163 [t: %b23] {  # if_9
+      %b23 = block {  # true
+        %164:ptr<private, i32, read_write> = access %obj, 0u, 3i
+        %x_150:i32 = load %164
+        %x_153:f32 = load_vector_element %color, 2u
+        %167:f32 = convert %x_150
+        %168:f32 = add %x_153, %167
+        store_vector_element %color, 2u, %168
+        exit_if  # if_9
+      }
+    }
+    %169:ptr<private, i32, read_write> = access %obj, 0u, 4i
+    %x_157:i32 = load %169
+    %x_160:f32 = load_vector_element %color, 1u
+    %172:f32 = convert %x_157
+    %173:f32 = add %x_160, %172
+    store_vector_element %color, 1u, %173
+    %x_164:f32 = load_vector_element %uv, 1u
+    %175:bool = gt %x_164, 0.25f
+    if %175 [t: %b24] {  # if_10
+      %b24 = block {  # true
+        %176:ptr<private, i32, read_write> = access %obj, 0u, 5i
+        %x_169:i32 = load %176
+        %x_172:f32 = load_vector_element %color, 0u
+        %179:f32 = convert %x_169
+        %180:f32 = add %x_172, %179
+        store_vector_element %color, 0u, %180
+        exit_if  # if_10
+      }
+    }
+    %x_176:f32 = load_vector_element %uv, 1u
+    %182:bool = gt %x_176, 0.5f
+    if %182 [t: %b25] {  # if_11
+      %b25 = block {  # true
+        %183:ptr<private, i32, read_write> = access %obj, 0u, 6i
+        %x_181:i32 = load %183
+        %x_184:f32 = load_vector_element %color, 1u
+        %186:f32 = convert %x_181
+        %187:f32 = add %x_184, %186
+        store_vector_element %color, 1u, %187
+        exit_if  # if_11
+      }
+    }
+    %x_188:f32 = load_vector_element %uv, 1u
+    %189:bool = gt %x_188, 0.75f
+    if %189 [t: %b26] {  # if_12
+      %b26 = block {  # true
+        %190:ptr<private, i32, read_write> = access %obj, 0u, 7i
+        %x_193:i32 = load %190
+        %x_196:f32 = load_vector_element %color, 2u
+        %193:f32 = convert %x_193
+        %194:f32 = add %x_196, %193
+        store_vector_element %color, 2u, %194
+        exit_if  # if_12
+      }
+    }
+    %195:ptr<private, i32, read_write> = access %obj, 0u, 8i
+    %x_200:i32 = load %195
+    %x_203:f32 = load_vector_element %color, 2u
+    %198:f32 = convert %x_200
+    %199:f32 = add %x_203, %198
+    store_vector_element %color, 2u, %199
+    %x_207:f32 = load_vector_element %uv, 0u
+    %x_209:f32 = load_vector_element %uv, 1u
+    %202:f32 = sub %x_207, %x_209
+    %203:f32 = abs %202
+    %204:bool = lt %203, 0.25f
+    if %204 [t: %b27] {  # if_13
+      %b27 = block {  # true
+        %205:ptr<private, i32, read_write> = access %obj, 0u, 9i
+        %x_216:i32 = load %205
+        %x_219:f32 = load_vector_element %color, 0u
+        %208:f32 = convert %x_216
+        %209:f32 = add %x_219, %208
+        store_vector_element %color, 0u, %209
+        exit_if  # if_13
+      }
+    }
+    %x_222:vec3<f32> = load %color
+    %x_223:vec3<f32> = normalize %x_222
+    %212:f32 = access %x_223, 0u
+    %213:f32 = access %x_223, 1u
+    %214:f32 = access %x_223, 2u
+    %215:vec4<f32> = construct %212, %213, %214, 1.0f
+    store %x_GLF_color, %215
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b28 {
+  %b28 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %218:void = call %main_1
+    %219:vec4<f32> = load %x_GLF_color
+    %220:main_out = construct %219
+    ret %220
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b15de75
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm.expected.ir.msl
@@ -0,0 +1,168 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_81:ptr<function, array<vec4<f32>, 8>, read_write> = var, array<vec4<f32>, 8>(vec4<f32>(0.0f))
+    %x_82:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %x_83:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %x_84:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %x_85:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_95:ptr<function, vec4<f32>, read_write> = var
+    %x_98:ptr<function, i32, read_write> = var
+    store %x_81, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+    %x_86:array<vec4<f32>, 8> = load %x_81
+    %13:vec4<f32> = load %gl_FragCoord
+    %14:vec2<f32> = swizzle %13, xy
+    %15:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %16:vec2<f32> = load %15
+    %17:vec2<f32> = div %14, %16
+    %18:vec2<f32> = mul %17, 32.0f
+    %x_93:vec2<f32> = floor %18
+    store %x_95, vec4<f32>(0.5f, 0.5f, 1.0f, 1.0f)
+    store %x_98, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_127:ptr<function, bool, read_write> = var
+        %x_143:ptr<function, vec4<f32>, read_write> = var
+        %x_96:ptr<function, vec4<f32>, read_write> = var
+        %x_99:ptr<function, i32, read_write> = var
+        %24:i32 = load %x_98
+        %25:bool = lt %24, 8i
+        if %25 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_104:ptr<function, vec4<f32>, read_write> = var
+        store %x_82, %x_86
+        %27:i32 = load %x_98
+        %28:ptr<function, vec4<f32>, read_write> = access %x_82, %27
+        %29:vec4<f32> = load %28
+        store %x_104, %29
+        switch 0u [c: (default, %b7)] {  # switch_1
+          %b7 = block {  # case
+            %x_107:f32 = access %x_93, 0u
+            %x_108:f32 = load_vector_element %x_104, 0u
+            %32:bool = lt %x_107, %x_108
+            if %32 [t: %b8] {  # if_2
+              %b8 = block {  # true
+                store %x_127, false
+                exit_switch  # switch_1
+              }
+            }
+            %x_112:f32 = access %x_93, 1u
+            %x_113:f32 = load_vector_element %x_104, 1u
+            %35:bool = lt %x_112, %x_113
+            if %35 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                store %x_127, false
+                exit_switch  # switch_1
+              }
+            }
+            %36:f32 = load_vector_element %x_104, 2u
+            %37:f32 = add %x_108, %36
+            %38:bool = gt %x_107, %37
+            if %38 [t: %b10] {  # if_4
+              %b10 = block {  # true
+                store %x_127, false
+                exit_switch  # switch_1
+              }
+            }
+            %39:f32 = load_vector_element %x_104, 3u
+            %40:f32 = add %x_113, %39
+            %41:bool = gt %x_112, %40
+            if %41 [t: %b11] {  # if_5
+              %b11 = block {  # true
+                store %x_127, false
+                exit_switch  # switch_1
+              }
+            }
+            store %x_127, true
+            exit_switch  # switch_1
+          }
+        }
+        %42:vec4<f32> = load %x_95
+        store %x_96, %42
+        %43:bool = load %x_127
+        if %43 [t: %b12] {  # if_6
+          %b12 = block {  # true
+            store %x_83, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %44:i32 = load %x_98
+            %45:ptr<function, vec4<f32>, read_write> = access %x_83, %44
+            %x_131:f32 = load_vector_element %45, 0u
+            store %x_84, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %47:i32 = load %x_98
+            %48:ptr<function, vec4<f32>, read_write> = access %x_84, %47
+            %x_134:f32 = load_vector_element %48, 1u
+            %x_135:array<vec4<f32>, 8> = load %x_81
+            store %x_81, array<vec4<f32>, 8>(vec4<f32>(0.0f))
+            store %x_81, %x_135
+            store %x_85, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+            %51:i32 = convert %x_131
+            %52:i32 = convert %x_134
+            %53:i32 = mul %51, %52
+            %54:i32 = load %x_98
+            %55:i32 = mul %54, 9i
+            %56:i32 = add %53, %55
+            %57:i32 = add %56, 11i
+            %58:i32 = mod %57, 16i
+            %59:ptr<function, vec4<f32>, read_write> = access %x_85, %58
+            %60:vec4<f32> = load %59
+            store %x_143, %60
+            %61:vec4<f32> = load %x_143
+            store %x_96, %61
+            exit_if  # if_6
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %62:i32 = load %x_98
+        %63:i32 = add %62, 1i
+        store %x_99, %63
+        %64:vec4<f32> = load %x_96
+        store %x_95, %64
+        %65:i32 = load %x_99
+        store %x_98, %65
+        next_iteration %b3
+      }
+    }
+    %66:vec4<f32> = load %x_95
+    store %x_GLF_color, %66
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b13 {
+  %b13 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %69:void = call %main_1
+    %70:vec4<f32> = load %x_GLF_color
+    %71:main_out = construct %70
+    ret %71
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bf0511f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl.expected.ir.msl
@@ -0,0 +1,168 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_81:ptr<function, array<vec4<f32>, 8>, read_write> = var, array<vec4<f32>, 8>(vec4<f32>(0.0f))
+    %x_82:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %x_83:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %x_84:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %x_85:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_95:ptr<function, vec4<f32>, read_write> = var
+    %x_95_phi:ptr<function, vec4<f32>, read_write> = var
+    %x_98_phi:ptr<function, i32, read_write> = var
+    store %x_81, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+    %x_86:array<vec4<f32>, 8> = load %x_81
+    %x_87:vec4<f32> = load %gl_FragCoord
+    %15:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_90:vec2<f32> = load %15
+    %17:f32 = access %x_87, 0u
+    %18:f32 = access %x_87, 1u
+    %19:vec2<f32> = construct %17, %18
+    %20:vec2<f32> = div %19, %x_90
+    %21:vec2<f32> = mul %20, 32.0f
+    %x_93:vec2<f32> = floor %21
+    store %x_95_phi, vec4<f32>(0.5f, 0.5f, 1.0f, 1.0f)
+    store %x_98_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_143:ptr<function, vec4<f32>, read_write> = var
+        %x_99:ptr<function, i32, read_write> = var
+        %x_127_phi:ptr<function, bool, read_write> = var
+        %x_96_phi:ptr<function, vec4<f32>, read_write> = var
+        %27:vec4<f32> = load %x_95_phi
+        store %x_95, %27
+        %x_98:i32 = load %x_98_phi
+        %29:bool = lt %x_98, 8i
+        if %29 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_104:ptr<function, vec4<f32>, read_write> = var
+        store %x_82, %x_86
+        %31:ptr<function, vec4<f32>, read_write> = access %x_82, %x_98
+        %32:vec4<f32> = load %31
+        store %x_104, %32
+        switch 0u [c: (default, %b7)] {  # switch_1
+          %b7 = block {  # case
+            %x_107:f32 = access %x_93, 0u
+            %x_108:f32 = load_vector_element %x_104, 0u
+            %35:bool = lt %x_107, %x_108
+            if %35 [t: %b8] {  # if_2
+              %b8 = block {  # true
+                store %x_127_phi, false
+                exit_switch  # switch_1
+              }
+            }
+            %x_112:f32 = access %x_93, 1u
+            %x_113:f32 = load_vector_element %x_104, 1u
+            %38:bool = lt %x_112, %x_113
+            if %38 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                store %x_127_phi, false
+                exit_switch  # switch_1
+              }
+            }
+            %39:f32 = load_vector_element %x_104, 2u
+            %40:f32 = add %x_108, %39
+            %41:bool = gt %x_107, %40
+            if %41 [t: %b10] {  # if_4
+              %b10 = block {  # true
+                store %x_127_phi, false
+                exit_switch  # switch_1
+              }
+            }
+            %42:f32 = load_vector_element %x_104, 3u
+            %43:f32 = add %x_113, %42
+            %44:bool = gt %x_112, %43
+            if %44 [t: %b11] {  # if_5
+              %b11 = block {  # true
+                store %x_127_phi, false
+                exit_switch  # switch_1
+              }
+            }
+            store %x_127_phi, true
+            exit_switch  # switch_1
+          }
+        }
+        %x_127:bool = load %x_127_phi
+        %46:vec4<f32> = load %x_95
+        store %x_96_phi, %46
+        if %x_127 [t: %b12] {  # if_6
+          %b12 = block {  # true
+            store %x_83, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %47:ptr<function, vec4<f32>, read_write> = access %x_83, %x_98
+            %x_131:f32 = load_vector_element %47, 0u
+            store %x_84, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %49:ptr<function, vec4<f32>, read_write> = access %x_84, %x_98
+            %x_134:f32 = load_vector_element %49, 1u
+            %x_135:array<vec4<f32>, 8> = load %x_81
+            store %x_81, array<vec4<f32>, 8>(vec4<f32>(0.0f))
+            store %x_81, %x_135
+            store %x_85, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+            %52:i32 = convert %x_131
+            %53:i32 = convert %x_134
+            %54:i32 = mul %52, %53
+            %55:i32 = mul %x_98, 9i
+            %56:i32 = add %54, %55
+            %57:i32 = add %56, 11i
+            %58:i32 = mod %57, 16i
+            %59:ptr<function, vec4<f32>, read_write> = access %x_85, %58
+            %60:vec4<f32> = load %59
+            store %x_143, %60
+            %61:vec4<f32> = load %x_143
+            store %x_96_phi, %61
+            exit_if  # if_6
+          }
+        }
+        %x_96:vec4<f32> = load %x_96_phi
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %63:i32 = add %x_98, 1i
+        store %x_99, %63
+        store %x_95_phi, %x_96
+        %64:i32 = load %x_99
+        store %x_98_phi, %64
+        next_iteration %b3
+      }
+    }
+    %65:vec4<f32> = load %x_95
+    store %x_GLF_color, %65
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b13 {
+  %b13 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %68:void = call %main_1
+    %69:vec4<f32> = load %x_GLF_color
+    %70:main_out = construct %69
+    ret %70
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b0fdab5
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm.expected.ir.msl
@@ -0,0 +1,165 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_81:ptr<function, array<vec4<f32>, 8>, read_write> = var, array<vec4<f32>, 8>(vec4<f32>(0.0f))
+    %x_82:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %x_83:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %x_84:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %x_85:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_95:ptr<function, vec4<f32>, read_write> = var
+    %x_98:ptr<function, i32, read_write> = var
+    store %x_81, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+    %x_86:array<vec4<f32>, 8> = load %x_81
+    %13:vec4<f32> = load %gl_FragCoord
+    %14:vec2<f32> = swizzle %13, xy
+    %15:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %16:vec2<f32> = load %15
+    %17:vec2<f32> = div %14, %16
+    %18:vec2<f32> = mul %17, 32.0f
+    %x_93:vec2<f32> = floor %18
+    store %x_95, vec4<f32>(0.5f, 0.5f, 1.0f, 1.0f)
+    store %x_98, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_127:ptr<function, bool, read_write> = var
+        %x_142:ptr<function, vec4<f32>, read_write> = var
+        %x_96:ptr<function, vec4<f32>, read_write> = var
+        %x_99:ptr<function, i32, read_write> = var
+        %24:i32 = load %x_98
+        %25:bool = lt %24, 8i
+        if %25 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_104:ptr<function, vec4<f32>, read_write> = var
+        store %x_82, %x_86
+        %27:i32 = load %x_98
+        %28:ptr<function, vec4<f32>, read_write> = access %x_82, %27
+        %29:vec4<f32> = load %28
+        store %x_104, %29
+        switch 0u [c: (default, %b7)] {  # switch_1
+          %b7 = block {  # case
+            %x_107:f32 = access %x_93, 0u
+            %x_108:f32 = load_vector_element %x_104, 0u
+            %32:bool = lt %x_107, %x_108
+            if %32 [t: %b8] {  # if_2
+              %b8 = block {  # true
+                store %x_127, false
+                exit_switch  # switch_1
+              }
+            }
+            %x_112:f32 = access %x_93, 1u
+            %x_113:f32 = load_vector_element %x_104, 1u
+            %35:bool = lt %x_112, %x_113
+            if %35 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                store %x_127, false
+                exit_switch  # switch_1
+              }
+            }
+            %36:f32 = load_vector_element %x_104, 2u
+            %37:f32 = add %x_108, %36
+            %38:bool = gt %x_107, %37
+            if %38 [t: %b10] {  # if_4
+              %b10 = block {  # true
+                store %x_127, false
+                exit_switch  # switch_1
+              }
+            }
+            %39:f32 = load_vector_element %x_104, 3u
+            %40:f32 = add %x_113, %39
+            %41:bool = gt %x_112, %40
+            if %41 [t: %b11] {  # if_5
+              %b11 = block {  # true
+                store %x_127, false
+                exit_switch  # switch_1
+              }
+            }
+            store %x_127, true
+            exit_switch  # switch_1
+          }
+        }
+        %42:vec4<f32> = load %x_95
+        store %x_96, %42
+        %43:bool = load %x_127
+        if %43 [t: %b12] {  # if_6
+          %b12 = block {  # true
+            store %x_83, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %44:i32 = load %x_98
+            %45:ptr<function, vec4<f32>, read_write> = access %x_83, %44
+            %x_131:f32 = load_vector_element %45, 0u
+            store %x_84, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %47:i32 = load %x_98
+            %48:ptr<function, vec4<f32>, read_write> = access %x_84, %47
+            %x_134:f32 = load_vector_element %48, 1u
+            store %x_85, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+            %50:i32 = convert %x_131
+            %51:i32 = convert %x_134
+            %52:i32 = mul %50, %51
+            %53:i32 = load %x_98
+            %54:i32 = mul %53, 9i
+            %55:i32 = add %52, %54
+            %56:i32 = add %55, 11i
+            %57:i32 = mod %56, 16i
+            %58:ptr<function, vec4<f32>, read_write> = access %x_85, %57
+            %59:vec4<f32> = load %58
+            store %x_142, %59
+            %60:vec4<f32> = load %x_142
+            store %x_96, %60
+            exit_if  # if_6
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %61:i32 = load %x_98
+        %62:i32 = add %61, 1i
+        store %x_99, %62
+        %63:vec4<f32> = load %x_96
+        store %x_95, %63
+        %64:i32 = load %x_99
+        store %x_98, %64
+        next_iteration %b3
+      }
+    }
+    %65:vec4<f32> = load %x_95
+    store %x_GLF_color, %65
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b13 {
+  %b13 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %68:void = call %main_1
+    %69:vec4<f32> = load %x_GLF_color
+    %70:main_out = construct %69
+    ret %70
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c7a0843
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl.expected.ir.msl
@@ -0,0 +1,165 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_81:ptr<function, array<vec4<f32>, 8>, read_write> = var, array<vec4<f32>, 8>(vec4<f32>(0.0f))
+    %x_82:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %x_83:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %x_84:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %x_85:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_95:ptr<function, vec4<f32>, read_write> = var
+    %x_95_phi:ptr<function, vec4<f32>, read_write> = var
+    %x_98_phi:ptr<function, i32, read_write> = var
+    store %x_81, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+    %x_86:array<vec4<f32>, 8> = load %x_81
+    %x_87:vec4<f32> = load %gl_FragCoord
+    %15:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_90:vec2<f32> = load %15
+    %17:f32 = access %x_87, 0u
+    %18:f32 = access %x_87, 1u
+    %19:vec2<f32> = construct %17, %18
+    %20:vec2<f32> = div %19, %x_90
+    %21:vec2<f32> = mul %20, 32.0f
+    %x_93:vec2<f32> = floor %21
+    store %x_95_phi, vec4<f32>(0.5f, 0.5f, 1.0f, 1.0f)
+    store %x_98_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_142:ptr<function, vec4<f32>, read_write> = var
+        %x_99:ptr<function, i32, read_write> = var
+        %x_127_phi:ptr<function, bool, read_write> = var
+        %x_96_phi:ptr<function, vec4<f32>, read_write> = var
+        %27:vec4<f32> = load %x_95_phi
+        store %x_95, %27
+        %x_98:i32 = load %x_98_phi
+        %29:bool = lt %x_98, 8i
+        if %29 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_104:ptr<function, vec4<f32>, read_write> = var
+        store %x_82, %x_86
+        %31:ptr<function, vec4<f32>, read_write> = access %x_82, %x_98
+        %32:vec4<f32> = load %31
+        store %x_104, %32
+        switch 0u [c: (default, %b7)] {  # switch_1
+          %b7 = block {  # case
+            %x_107:f32 = access %x_93, 0u
+            %x_108:f32 = load_vector_element %x_104, 0u
+            %35:bool = lt %x_107, %x_108
+            if %35 [t: %b8] {  # if_2
+              %b8 = block {  # true
+                store %x_127_phi, false
+                exit_switch  # switch_1
+              }
+            }
+            %x_112:f32 = access %x_93, 1u
+            %x_113:f32 = load_vector_element %x_104, 1u
+            %38:bool = lt %x_112, %x_113
+            if %38 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                store %x_127_phi, false
+                exit_switch  # switch_1
+              }
+            }
+            %39:f32 = load_vector_element %x_104, 2u
+            %40:f32 = add %x_108, %39
+            %41:bool = gt %x_107, %40
+            if %41 [t: %b10] {  # if_4
+              %b10 = block {  # true
+                store %x_127_phi, false
+                exit_switch  # switch_1
+              }
+            }
+            %42:f32 = load_vector_element %x_104, 3u
+            %43:f32 = add %x_113, %42
+            %44:bool = gt %x_112, %43
+            if %44 [t: %b11] {  # if_5
+              %b11 = block {  # true
+                store %x_127_phi, false
+                exit_switch  # switch_1
+              }
+            }
+            store %x_127_phi, true
+            exit_switch  # switch_1
+          }
+        }
+        %x_127:bool = load %x_127_phi
+        %46:vec4<f32> = load %x_95
+        store %x_96_phi, %46
+        if %x_127 [t: %b12] {  # if_6
+          %b12 = block {  # true
+            store %x_83, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %47:ptr<function, vec4<f32>, read_write> = access %x_83, %x_98
+            %x_131:f32 = load_vector_element %47, 0u
+            store %x_84, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %49:ptr<function, vec4<f32>, read_write> = access %x_84, %x_98
+            %x_134:f32 = load_vector_element %49, 1u
+            store %x_85, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+            %51:i32 = convert %x_131
+            %52:i32 = convert %x_134
+            %53:i32 = mul %51, %52
+            %54:i32 = mul %x_98, 9i
+            %55:i32 = add %53, %54
+            %56:i32 = add %55, 11i
+            %57:i32 = mod %56, 16i
+            %58:ptr<function, vec4<f32>, read_write> = access %x_85, %57
+            %59:vec4<f32> = load %58
+            store %x_142, %59
+            %60:vec4<f32> = load %x_142
+            store %x_96_phi, %60
+            exit_if  # if_6
+          }
+        }
+        %x_96:vec4<f32> = load %x_96_phi
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %62:i32 = add %x_98, 1i
+        store %x_99, %62
+        store %x_95_phi, %x_96
+        %63:i32 = load %x_99
+        store %x_98_phi, %63
+        next_iteration %b3
+      }
+    }
+    %64:vec4<f32> = load %x_95
+    store %x_GLF_color, %64
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b13 {
+  %b13 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %67:void = call %main_1
+    %68:vec4<f32> = load %x_GLF_color
+    %69:main_out = construct %68
+    ret %69
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..327ea03
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.spvasm.expected.ir.msl
@@ -0,0 +1,435 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: BST = struct @align(4) {
+  data:i32 @offset(0)
+  leftIndex:i32 @offset(4)
+  rightIndex:i32 @offset(8)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %tree_1:ptr<private, array<BST, 10>, read_write> = var
+  %x_16:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = func(%tree:ptr<function, BST, read_write>, %data:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %7:ptr<function, i32, read_write> = access %tree, 0u
+    %8:i32 = load %data
+    store %7, %8
+    %9:ptr<function, i32, read_write> = access %tree, 1u
+    store %9, -1i
+    %10:ptr<function, i32, read_write> = access %tree, 2u
+    store %10, -1i
+    ret
+  }
+}
+%insert_i1_i1_ = func(%treeIndex:ptr<function, i32, read_write>, %data_1:ptr<function, i32, read_write>):void -> %b3 {
+  %b3 = block {
+    %baseIndex:ptr<function, i32, read_write> = var
+    %param:ptr<function, BST, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %x_170:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, BST, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    store %baseIndex, 0i
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %20:i32 = load %baseIndex
+        %21:i32 = load %treeIndex
+        %22:bool = lte %20, %21
+        if %22 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %23:i32 = load %data_1
+        %24:i32 = load %baseIndex
+        %25:ptr<private, i32, read_write> = access %tree_1, %24, 0u
+        %26:i32 = load %25
+        %27:bool = lte %23, %26
+        if %27 [t: %b8, f: %b9] {  # if_2
+          %b8 = block {  # true
+            %28:i32 = load %baseIndex
+            %29:ptr<private, i32, read_write> = access %tree_1, %28, 1u
+            %30:i32 = load %29
+            %31:bool = eq %30, -1i
+            if %31 [t: %b10, f: %b11] {  # if_3
+              %b10 = block {  # true
+                %x_194:i32 = load %baseIndex
+                %33:ptr<private, i32, read_write> = access %tree_1, %x_194, 1u
+                %34:i32 = load %treeIndex
+                store %33, %34
+                %35:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+                %36:f32 = load_vector_element %35, 0u
+                %37:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+                %38:f32 = load_vector_element %37, 1u
+                %39:bool = lt %36, %38
+                if %39 [t: %b12] {  # if_4
+                  %b12 = block {  # true
+                    %x_204:i32 = load %treeIndex
+                    %41:ptr<private, BST, read_write> = access %tree_1, %x_204
+                    %42:BST = load %41
+                    store %param, %42
+                    %43:i32 = load %data_1
+                    store %param_1, %43
+                    %44:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param, %param_1
+                    %45:ptr<private, BST, read_write> = access %tree_1, %x_204
+                    %46:BST = load %param
+                    store %45, %46
+                    exit_if  # if_4
+                  }
+                }
+                %47:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+                %48:f32 = load_vector_element %47, 0u
+                %49:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+                %50:f32 = load_vector_element %49, 1u
+                %51:bool = lt %48, %50
+                if %51 [t: %b13] {  # if_5
+                  %b13 = block {  # true
+                    ret
+                  }
+                }
+                exit_if  # if_3
+              }
+              %b11 = block {  # false
+                %52:i32 = load %baseIndex
+                %53:ptr<private, i32, read_write> = access %tree_1, %52, 1u
+                %54:i32 = load %53
+                store %baseIndex, %54
+                continue %b5
+              }
+            }
+            exit_if  # if_2
+          }
+          %b9 = block {  # false
+            %55:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+            %56:f32 = load_vector_element %55, 0u
+            %57:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+            %58:f32 = load_vector_element %57, 1u
+            %59:bool = lt %56, %58
+            if %59 [t: %b14, f: %b15] {  # if_6
+              %b14 = block {  # true
+                %60:i32 = load %baseIndex
+                %61:ptr<private, i32, read_write> = access %tree_1, %60, 2u
+                %62:i32 = load %61
+                store %x_170, %62
+                exit_if  # if_6
+              }
+              %b15 = block {  # false
+                %63:i32 = load %baseIndex
+                %64:ptr<private, i32, read_write> = access %tree_1, %63, 2u
+                %65:i32 = load %64
+                store %x_170, %65
+                exit_if  # if_6
+              }
+            }
+            %66:i32 = load %x_170
+            %67:bool = eq %66, -1i
+            if %67 [t: %b16, f: %b17] {  # if_7
+              %b16 = block {  # true
+                %x_240:i32 = load %baseIndex
+                %69:ptr<private, i32, read_write> = access %tree_1, %x_240, 2u
+                %70:i32 = load %treeIndex
+                store %69, %70
+                %x_243:i32 = load %treeIndex
+                %72:ptr<private, BST, read_write> = access %tree_1, %x_243
+                %73:BST = load %72
+                store %param_2, %73
+                %74:i32 = load %data_1
+                store %param_3, %74
+                %75:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param_2, %param_3
+                %76:ptr<private, BST, read_write> = access %tree_1, %x_243
+                %77:BST = load %param_2
+                store %76, %77
+                ret
+              }
+              %b17 = block {  # false
+                %78:i32 = load %baseIndex
+                %79:ptr<private, i32, read_write> = access %tree_1, %78, 2u
+                %80:i32 = load %79
+                store %baseIndex, %80
+                continue %b5
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        %81:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+        %82:f32 = load_vector_element %81, 0u
+        %83:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+        %84:f32 = load_vector_element %83, 1u
+        %85:bool = gt %82, %84
+        if %85 [t: %b18] {  # if_8
+          %b18 = block {  # true
+            ret
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        next_iteration %b4
+      }
+    }
+    ret
+  }
+}
+%search_i1_ = func(%t:ptr<function, i32, read_write>):i32 -> %b19 {
+  %b19 = block {
+    %index:ptr<function, i32, read_write> = var
+    %currentNode:ptr<function, BST, read_write> = var
+    %x_261:ptr<function, i32, read_write> = var
+    store %index, 0i
+    loop [b: %b20, c: %b21] {  # loop_2
+      %b20 = block {  # body
+        %91:i32 = load %index
+        %92:bool = neq %91, -1i
+        if %92 [t: %b22, f: %b23] {  # if_9
+          %b22 = block {  # true
+            exit_if  # if_9
+          }
+          %b23 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %93:i32 = load %index
+        %94:ptr<private, BST, read_write> = access %tree_1, %93
+        %95:BST = load %94
+        store %currentNode, %95
+        %96:ptr<function, i32, read_write> = access %currentNode, 0u
+        %97:i32 = load %96
+        %98:i32 = load %t
+        %99:bool = eq %97, %98
+        if %99 [t: %b24] {  # if_10
+          %b24 = block {  # true
+            %x_278:i32 = load %t
+            ret %x_278
+          }
+        }
+        %101:i32 = load %t
+        %102:ptr<function, i32, read_write> = access %currentNode, 0u
+        %103:i32 = load %102
+        %104:bool = gt %101, %103
+        if %104 [t: %b25, f: %b26] {  # if_11
+          %b25 = block {  # true
+            %105:ptr<function, i32, read_write> = access %currentNode, 2u
+            %106:i32 = load %105
+            store %x_261, %106
+            exit_if  # if_11
+          }
+          %b26 = block {  # false
+            %107:ptr<function, i32, read_write> = access %currentNode, 1u
+            %108:i32 = load %107
+            store %x_261, %108
+            exit_if  # if_11
+          }
+        }
+        %109:i32 = load %x_261
+        store %index, %109
+        continue %b21
+      }
+      %b21 = block {  # continuing
+        next_iteration %b20
+      }
+    }
+    ret -1i
+  }
+}
+%main_1 = func():void -> %b27 {
+  %b27 = block {
+    %treeIndex_1:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, BST, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    %param_6:ptr<function, i32, read_write> = var
+    %param_7:ptr<function, i32, read_write> = var
+    %param_8:ptr<function, i32, read_write> = var
+    %param_9:ptr<function, i32, read_write> = var
+    %param_10:ptr<function, i32, read_write> = var
+    %param_11:ptr<function, i32, read_write> = var
+    %param_12:ptr<function, i32, read_write> = var
+    %param_13:ptr<function, i32, read_write> = var
+    %param_14:ptr<function, i32, read_write> = var
+    %param_15:ptr<function, i32, read_write> = var
+    %param_16:ptr<function, i32, read_write> = var
+    %param_17:ptr<function, i32, read_write> = var
+    %param_18:ptr<function, i32, read_write> = var
+    %param_19:ptr<function, i32, read_write> = var
+    %param_20:ptr<function, i32, read_write> = var
+    %param_21:ptr<function, i32, read_write> = var
+    %param_22:ptr<function, i32, read_write> = var
+    %param_23:ptr<function, i32, read_write> = var
+    %count:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %result:ptr<function, i32, read_write> = var
+    %param_24:ptr<function, i32, read_write> = var
+    store %treeIndex_1, 0i
+    %136:ptr<private, BST, read_write> = access %tree_1, 0i
+    %137:BST = load %136
+    store %param_4, %137
+    store %param_5, 9i
+    %138:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param_4, %param_5
+    %139:ptr<private, BST, read_write> = access %tree_1, 0i
+    %140:BST = load %param_4
+    store %139, %140
+    %141:i32 = load %treeIndex_1
+    %142:i32 = add %141, 1i
+    store %treeIndex_1, %142
+    %143:i32 = load %treeIndex_1
+    store %param_6, %143
+    store %param_7, 5i
+    %144:void = call %insert_i1_i1_, %param_6, %param_7
+    %145:i32 = load %treeIndex_1
+    %146:i32 = add %145, 1i
+    store %treeIndex_1, %146
+    %147:i32 = load %treeIndex_1
+    store %param_8, %147
+    store %param_9, 12i
+    %148:void = call %insert_i1_i1_, %param_8, %param_9
+    %149:i32 = load %treeIndex_1
+    %150:i32 = add %149, 1i
+    store %treeIndex_1, %150
+    %151:i32 = load %treeIndex_1
+    store %param_10, %151
+    store %param_11, 15i
+    %152:void = call %insert_i1_i1_, %param_10, %param_11
+    %153:i32 = load %treeIndex_1
+    %154:i32 = add %153, 1i
+    store %treeIndex_1, %154
+    %155:i32 = load %treeIndex_1
+    store %param_12, %155
+    store %param_13, 7i
+    %156:void = call %insert_i1_i1_, %param_12, %param_13
+    %157:i32 = load %treeIndex_1
+    %158:i32 = add %157, 1i
+    store %treeIndex_1, %158
+    %159:i32 = load %treeIndex_1
+    store %param_14, %159
+    store %param_15, 8i
+    %160:void = call %insert_i1_i1_, %param_14, %param_15
+    %161:i32 = load %treeIndex_1
+    %162:i32 = add %161, 1i
+    store %treeIndex_1, %162
+    %163:i32 = load %treeIndex_1
+    store %param_16, %163
+    store %param_17, 2i
+    %164:void = call %insert_i1_i1_, %param_16, %param_17
+    %165:i32 = load %treeIndex_1
+    %166:i32 = add %165, 1i
+    store %treeIndex_1, %166
+    %167:i32 = load %treeIndex_1
+    store %param_18, %167
+    store %param_19, 6i
+    %168:void = call %insert_i1_i1_, %param_18, %param_19
+    %169:i32 = load %treeIndex_1
+    %170:i32 = add %169, 1i
+    store %treeIndex_1, %170
+    %171:i32 = load %treeIndex_1
+    store %param_20, %171
+    store %param_21, 17i
+    %172:void = call %insert_i1_i1_, %param_20, %param_21
+    %173:i32 = load %treeIndex_1
+    %174:i32 = add %173, 1i
+    store %treeIndex_1, %174
+    %175:i32 = load %treeIndex_1
+    store %param_22, %175
+    store %param_23, 13i
+    %176:void = call %insert_i1_i1_, %param_22, %param_23
+    store %count, 0i
+    store %i, 0i
+    loop [b: %b28, c: %b29] {  # loop_3
+      %b28 = block {  # body
+        %177:i32 = load %i
+        %178:bool = lt %177, 20i
+        if %178 [t: %b30, f: %b31] {  # if_12
+          %b30 = block {  # true
+            exit_if  # if_12
+          }
+          %b31 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %179:i32 = load %i
+        store %param_24, %179
+        %x_139:i32 = call %search_i1_, %param_24
+        store %result, %x_139
+        %x_140:i32 = load %i
+        switch %x_140 [c: (2i 5i 6i 7i 8i 9i 12i 13i 15i 17i, %b32), c: (default, %b33)] {  # switch_1
+          %b32 = block {  # case
+            %182:i32 = load %result
+            %183:i32 = load %i
+            %184:bool = eq %182, %183
+            if %184 [t: %b34] {  # if_13
+              %b34 = block {  # true
+                %185:i32 = load %count
+                %186:i32 = add %185, 1i
+                store %count, %186
+                exit_if  # if_13
+              }
+            }
+            exit_switch  # switch_1
+          }
+          %b33 = block {  # case
+            %187:i32 = load %result
+            %188:bool = eq %187, -1i
+            if %188 [t: %b35] {  # if_14
+              %b35 = block {  # true
+                %189:i32 = load %count
+                %190:i32 = add %189, 1i
+                store %count, %190
+                exit_if  # if_14
+              }
+            }
+            exit_switch  # switch_1
+          }
+        }
+        continue %b29
+      }
+      %b29 = block {  # continuing
+        %191:i32 = load %i
+        %192:i32 = add %191, 1i
+        store %i, %192
+        next_iteration %b28
+      }
+    }
+    %193:i32 = load %count
+    %194:bool = eq %193, 20i
+    if %194 [t: %b36, f: %b37] {  # if_15
+      %b36 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_15
+      }
+      %b37 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f)
+        exit_if  # if_15
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b38 {
+  %b38 = block {
+    %196:void = call %main_1
+    %197:vec4<f32> = load %x_GLF_color
+    %198:main_out = construct %197
+    ret %198
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8c53e96
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl.expected.ir.msl
@@ -0,0 +1,435 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: BST = struct @align(4) {
+  data:i32 @offset(0)
+  leftIndex:i32 @offset(4)
+  rightIndex:i32 @offset(8)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %tree_1:ptr<private, array<BST, 10>, read_write> = var
+  %x_16:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = func(%tree:ptr<function, BST, read_write>, %data:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %x_165:i32 = load %data
+    %8:ptr<function, i32, read_write> = access %tree, 0u
+    store %8, %x_165
+    %9:ptr<function, i32, read_write> = access %tree, 1u
+    store %9, -1i
+    %10:ptr<function, i32, read_write> = access %tree, 2u
+    store %10, -1i
+    ret
+  }
+}
+%insert_i1_i1_ = func(%treeIndex:ptr<function, i32, read_write>, %data_1:ptr<function, i32, read_write>):void -> %b3 {
+  %b3 = block {
+    %baseIndex:ptr<function, i32, read_write> = var
+    %param:ptr<function, BST, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %x_170:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, BST, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    store %baseIndex, 0i
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %x_175:i32 = load %baseIndex
+        %x_176:i32 = load %treeIndex
+        %22:bool = lte %x_175, %x_176
+        if %22 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_179:i32 = load %data_1
+        %x_180:i32 = load %baseIndex
+        %25:ptr<private, i32, read_write> = access %tree_1, %x_180, 0u
+        %x_182:i32 = load %25
+        %27:bool = lte %x_179, %x_182
+        if %27 [t: %b8, f: %b9] {  # if_2
+          %b8 = block {  # true
+            %x_187:i32 = load %baseIndex
+            %29:ptr<private, i32, read_write> = access %tree_1, %x_187, 1u
+            %x_189:i32 = load %29
+            %31:bool = eq %x_189, -1i
+            if %31 [t: %b10, f: %b11] {  # if_3
+              %b10 = block {  # true
+                %x_194:i32 = load %baseIndex
+                %x_195:i32 = load %treeIndex
+                %34:ptr<private, i32, read_write> = access %tree_1, %x_194, 1u
+                store %34, %x_195
+                %35:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+                %x_198:f32 = load_vector_element %35, 0u
+                %37:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+                %x_200:f32 = load_vector_element %37, 1u
+                %39:bool = lt %x_198, %x_200
+                if %39 [t: %b12] {  # if_4
+                  %b12 = block {  # true
+                    %x_204:i32 = load %treeIndex
+                    %41:ptr<private, BST, read_write> = access %tree_1, %x_204
+                    %x_206:BST = load %41
+                    store %param, %x_206
+                    %x_207:i32 = load %data_1
+                    store %param_1, %x_207
+                    %44:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param, %param_1
+                    %x_209:BST = load %param
+                    %46:ptr<private, BST, read_write> = access %tree_1, %x_204
+                    store %46, %x_209
+                    exit_if  # if_4
+                  }
+                }
+                %47:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+                %x_212:f32 = load_vector_element %47, 0u
+                %49:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+                %x_214:f32 = load_vector_element %49, 1u
+                %51:bool = lt %x_212, %x_214
+                if %51 [t: %b13] {  # if_5
+                  %b13 = block {  # true
+                    ret
+                  }
+                }
+                exit_if  # if_3
+              }
+              %b11 = block {  # false
+                %x_218:i32 = load %baseIndex
+                %53:ptr<private, i32, read_write> = access %tree_1, %x_218, 1u
+                %x_220:i32 = load %53
+                store %baseIndex, %x_220
+                continue %b5
+              }
+            }
+            exit_if  # if_2
+          }
+          %b9 = block {  # false
+            %55:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+            %x_222:f32 = load_vector_element %55, 0u
+            %57:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+            %x_224:f32 = load_vector_element %57, 1u
+            %59:bool = lt %x_222, %x_224
+            if %59 [t: %b14, f: %b15] {  # if_6
+              %b14 = block {  # true
+                %x_229:i32 = load %baseIndex
+                %61:ptr<private, i32, read_write> = access %tree_1, %x_229, 2u
+                %x_231:i32 = load %61
+                store %x_170, %x_231
+                exit_if  # if_6
+              }
+              %b15 = block {  # false
+                %x_232:i32 = load %baseIndex
+                %64:ptr<private, i32, read_write> = access %tree_1, %x_232, 2u
+                %x_234:i32 = load %64
+                store %x_170, %x_234
+                exit_if  # if_6
+              }
+            }
+            %x_235:i32 = load %x_170
+            %67:bool = eq %x_235, -1i
+            if %67 [t: %b16, f: %b17] {  # if_7
+              %b16 = block {  # true
+                %x_240:i32 = load %baseIndex
+                %x_241:i32 = load %treeIndex
+                %70:ptr<private, i32, read_write> = access %tree_1, %x_240, 2u
+                store %70, %x_241
+                %x_243:i32 = load %treeIndex
+                %72:ptr<private, BST, read_write> = access %tree_1, %x_243
+                %x_245:BST = load %72
+                store %param_2, %x_245
+                %x_246:i32 = load %data_1
+                store %param_3, %x_246
+                %75:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param_2, %param_3
+                %x_248:BST = load %param_2
+                %77:ptr<private, BST, read_write> = access %tree_1, %x_243
+                store %77, %x_248
+                ret
+              }
+              %b17 = block {  # false
+                %x_250:i32 = load %baseIndex
+                %79:ptr<private, i32, read_write> = access %tree_1, %x_250, 2u
+                %x_252:i32 = load %79
+                store %baseIndex, %x_252
+                continue %b5
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        %81:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+        %x_254:f32 = load_vector_element %81, 0u
+        %83:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+        %x_256:f32 = load_vector_element %83, 1u
+        %85:bool = gt %x_254, %x_256
+        if %85 [t: %b18] {  # if_8
+          %b18 = block {  # true
+            ret
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        next_iteration %b4
+      }
+    }
+    ret
+  }
+}
+%search_i1_ = func(%t:ptr<function, i32, read_write>):i32 -> %b19 {
+  %b19 = block {
+    %index:ptr<function, i32, read_write> = var
+    %currentNode:ptr<function, BST, read_write> = var
+    %x_261:ptr<function, i32, read_write> = var
+    store %index, 0i
+    loop [b: %b20, c: %b21] {  # loop_2
+      %b20 = block {  # body
+        %x_266:i32 = load %index
+        %92:bool = neq %x_266, -1i
+        if %92 [t: %b22, f: %b23] {  # if_9
+          %b22 = block {  # true
+            exit_if  # if_9
+          }
+          %b23 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_269:i32 = load %index
+        %94:ptr<private, BST, read_write> = access %tree_1, %x_269
+        %x_271:BST = load %94
+        store %currentNode, %x_271
+        %96:ptr<function, i32, read_write> = access %currentNode, 0u
+        %x_273:i32 = load %96
+        %x_274:i32 = load %t
+        %99:bool = eq %x_273, %x_274
+        if %99 [t: %b24] {  # if_10
+          %b24 = block {  # true
+            %x_278:i32 = load %t
+            ret %x_278
+          }
+        }
+        %x_279:i32 = load %t
+        %102:ptr<function, i32, read_write> = access %currentNode, 0u
+        %x_281:i32 = load %102
+        %104:bool = gt %x_279, %x_281
+        if %104 [t: %b25, f: %b26] {  # if_11
+          %b25 = block {  # true
+            %105:ptr<function, i32, read_write> = access %currentNode, 2u
+            %x_287:i32 = load %105
+            store %x_261, %x_287
+            exit_if  # if_11
+          }
+          %b26 = block {  # false
+            %107:ptr<function, i32, read_write> = access %currentNode, 1u
+            %x_289:i32 = load %107
+            store %x_261, %x_289
+            exit_if  # if_11
+          }
+        }
+        %x_290:i32 = load %x_261
+        store %index, %x_290
+        continue %b21
+      }
+      %b21 = block {  # continuing
+        next_iteration %b20
+      }
+    }
+    ret -1i
+  }
+}
+%main_1 = func():void -> %b27 {
+  %b27 = block {
+    %treeIndex_1:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, BST, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    %param_6:ptr<function, i32, read_write> = var
+    %param_7:ptr<function, i32, read_write> = var
+    %param_8:ptr<function, i32, read_write> = var
+    %param_9:ptr<function, i32, read_write> = var
+    %param_10:ptr<function, i32, read_write> = var
+    %param_11:ptr<function, i32, read_write> = var
+    %param_12:ptr<function, i32, read_write> = var
+    %param_13:ptr<function, i32, read_write> = var
+    %param_14:ptr<function, i32, read_write> = var
+    %param_15:ptr<function, i32, read_write> = var
+    %param_16:ptr<function, i32, read_write> = var
+    %param_17:ptr<function, i32, read_write> = var
+    %param_18:ptr<function, i32, read_write> = var
+    %param_19:ptr<function, i32, read_write> = var
+    %param_20:ptr<function, i32, read_write> = var
+    %param_21:ptr<function, i32, read_write> = var
+    %param_22:ptr<function, i32, read_write> = var
+    %param_23:ptr<function, i32, read_write> = var
+    %count:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %result:ptr<function, i32, read_write> = var
+    %param_24:ptr<function, i32, read_write> = var
+    store %treeIndex_1, 0i
+    %136:ptr<private, BST, read_write> = access %tree_1, 0i
+    %x_91:BST = load %136
+    store %param_4, %x_91
+    store %param_5, 9i
+    %138:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param_4, %param_5
+    %x_93:BST = load %param_4
+    %140:ptr<private, BST, read_write> = access %tree_1, 0i
+    store %140, %x_93
+    %x_95:i32 = load %treeIndex_1
+    %142:i32 = add %x_95, 1i
+    store %treeIndex_1, %142
+    %x_97:i32 = load %treeIndex_1
+    store %param_6, %x_97
+    store %param_7, 5i
+    %144:void = call %insert_i1_i1_, %param_6, %param_7
+    %x_99:i32 = load %treeIndex_1
+    %146:i32 = add %x_99, 1i
+    store %treeIndex_1, %146
+    %x_101:i32 = load %treeIndex_1
+    store %param_8, %x_101
+    store %param_9, 12i
+    %148:void = call %insert_i1_i1_, %param_8, %param_9
+    %x_103:i32 = load %treeIndex_1
+    %150:i32 = add %x_103, 1i
+    store %treeIndex_1, %150
+    %x_105:i32 = load %treeIndex_1
+    store %param_10, %x_105
+    store %param_11, 15i
+    %152:void = call %insert_i1_i1_, %param_10, %param_11
+    %x_107:i32 = load %treeIndex_1
+    %154:i32 = add %x_107, 1i
+    store %treeIndex_1, %154
+    %x_109:i32 = load %treeIndex_1
+    store %param_12, %x_109
+    store %param_13, 7i
+    %156:void = call %insert_i1_i1_, %param_12, %param_13
+    %x_111:i32 = load %treeIndex_1
+    %158:i32 = add %x_111, 1i
+    store %treeIndex_1, %158
+    %x_113:i32 = load %treeIndex_1
+    store %param_14, %x_113
+    store %param_15, 8i
+    %160:void = call %insert_i1_i1_, %param_14, %param_15
+    %x_115:i32 = load %treeIndex_1
+    %162:i32 = add %x_115, 1i
+    store %treeIndex_1, %162
+    %x_117:i32 = load %treeIndex_1
+    store %param_16, %x_117
+    store %param_17, 2i
+    %164:void = call %insert_i1_i1_, %param_16, %param_17
+    %x_119:i32 = load %treeIndex_1
+    %166:i32 = add %x_119, 1i
+    store %treeIndex_1, %166
+    %x_121:i32 = load %treeIndex_1
+    store %param_18, %x_121
+    store %param_19, 6i
+    %168:void = call %insert_i1_i1_, %param_18, %param_19
+    %x_123:i32 = load %treeIndex_1
+    %170:i32 = add %x_123, 1i
+    store %treeIndex_1, %170
+    %x_125:i32 = load %treeIndex_1
+    store %param_20, %x_125
+    store %param_21, 17i
+    %172:void = call %insert_i1_i1_, %param_20, %param_21
+    %x_127:i32 = load %treeIndex_1
+    %174:i32 = add %x_127, 1i
+    store %treeIndex_1, %174
+    %x_129:i32 = load %treeIndex_1
+    store %param_22, %x_129
+    store %param_23, 13i
+    %176:void = call %insert_i1_i1_, %param_22, %param_23
+    store %count, 0i
+    store %i, 0i
+    loop [b: %b28, c: %b29] {  # loop_3
+      %b28 = block {  # body
+        %x_135:i32 = load %i
+        %178:bool = lt %x_135, 20i
+        if %178 [t: %b30, f: %b31] {  # if_12
+          %b30 = block {  # true
+            exit_if  # if_12
+          }
+          %b31 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_138:i32 = load %i
+        store %param_24, %x_138
+        %x_139:i32 = call %search_i1_, %param_24
+        store %result, %x_139
+        %x_140:i32 = load %i
+        switch %x_140 [c: (2i 5i 6i 7i 8i 9i 12i 13i 15i 17i, %b32), c: (default, %b33)] {  # switch_1
+          %b32 = block {  # case
+            %x_150:i32 = load %result
+            %x_151:i32 = load %i
+            %184:bool = eq %x_150, %x_151
+            if %184 [t: %b34] {  # if_13
+              %b34 = block {  # true
+                %x_155:i32 = load %count
+                %186:i32 = add %x_155, 1i
+                store %count, %186
+                exit_if  # if_13
+              }
+            }
+            exit_switch  # switch_1
+          }
+          %b33 = block {  # case
+            %x_144:i32 = load %result
+            %188:bool = eq %x_144, -1i
+            if %188 [t: %b35] {  # if_14
+              %b35 = block {  # true
+                %x_148:i32 = load %count
+                %190:i32 = add %x_148, 1i
+                store %count, %190
+                exit_if  # if_14
+              }
+            }
+            exit_switch  # switch_1
+          }
+        }
+        continue %b29
+      }
+      %b29 = block {  # continuing
+        %x_157:i32 = load %i
+        %192:i32 = add %x_157, 1i
+        store %i, %192
+        next_iteration %b28
+      }
+    }
+    %x_159:i32 = load %count
+    %194:bool = eq %x_159, 20i
+    if %194 [t: %b36, f: %b37] {  # if_15
+      %b36 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_15
+      }
+      %b37 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f)
+        exit_if  # if_15
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b38 {
+  %b38 = block {
+    %196:void = call %main_1
+    %197:vec4<f32> = load %x_GLF_color
+    %198:main_out = construct %197
+    ret %198
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..9f4a32d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.ir.msl
@@ -0,0 +1,456 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+BST = struct @align(4) {
+  data:i32 @offset(0)
+  leftIndex:i32 @offset(4)
+  rightIndex:i32 @offset(8)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %tree:ptr<private, array<BST, 10>, read_write> = var
+  %x_50:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = func(%node:ptr<function, BST, read_write>, %data:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %8:ptr<function, i32, read_write> = access %node, 0u
+    %9:i32 = load %data
+    store %8, %9
+    %10:ptr<function, i32, read_write> = access %node, 1u
+    store %10, -1i
+    %11:ptr<function, i32, read_write> = access %node, 2u
+    store %11, -1i
+    ret
+  }
+}
+%insert_i1_i1_ = func(%treeIndex:ptr<function, i32, read_write>, %data_1:ptr<function, i32, read_write>):void -> %b3 {
+  %b3 = block {
+    %baseIndex:ptr<function, i32, read_write> = var
+    %param:ptr<function, BST, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, BST, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    store %baseIndex, 0i
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %20:i32 = load %baseIndex
+        %21:i32 = load %treeIndex
+        %22:bool = lte %20, %21
+        if %22 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %23:i32 = load %data_1
+        %24:i32 = load %baseIndex
+        %25:ptr<private, i32, read_write> = access %tree, %24, 0u
+        %26:i32 = load %25
+        %27:bool = lte %23, %26
+        if %27 [t: %b8, f: %b9] {  # if_2
+          %b8 = block {  # true
+            %28:i32 = load %baseIndex
+            %29:ptr<private, i32, read_write> = access %tree, %28, 1u
+            %30:i32 = load %29
+            %31:bool = eq %30, -1i
+            if %31 [t: %b10, f: %b11] {  # if_3
+              %b10 = block {  # true
+                %x_236:i32 = load %baseIndex
+                %33:ptr<private, i32, read_write> = access %tree, %x_236, 1u
+                %34:i32 = load %treeIndex
+                store %33, %34
+                %x_239:i32 = load %treeIndex
+                %36:ptr<private, BST, read_write> = access %tree, %x_239
+                %37:BST = load %36
+                store %param, %37
+                %38:i32 = load %data_1
+                store %param_1, %38
+                %39:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param, %param_1
+                %40:ptr<private, BST, read_write> = access %tree, %x_239
+                %41:BST = load %param
+                store %40, %41
+                ret
+              }
+              %b11 = block {  # false
+                %42:i32 = load %baseIndex
+                %43:ptr<private, i32, read_write> = access %tree, %42, 1u
+                %44:i32 = load %43
+                store %baseIndex, %44
+                continue %b5
+              }
+            }
+            exit_if  # if_2
+          }
+          %b9 = block {  # false
+            %45:i32 = load %baseIndex
+            %46:ptr<private, i32, read_write> = access %tree, %45, 2u
+            %47:i32 = load %46
+            %48:bool = eq %47, -1i
+            if %48 [t: %b12, f: %b13] {  # if_4
+              %b12 = block {  # true
+                %x_256:i32 = load %baseIndex
+                %50:ptr<private, i32, read_write> = access %tree, %x_256, 2u
+                %51:i32 = load %treeIndex
+                store %50, %51
+                %x_259:i32 = load %treeIndex
+                %53:ptr<private, BST, read_write> = access %tree, %x_259
+                %54:BST = load %53
+                store %param_2, %54
+                %55:i32 = load %data_1
+                store %param_3, %55
+                %56:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param_2, %param_3
+                %57:ptr<private, BST, read_write> = access %tree, %x_259
+                %58:BST = load %param_2
+                store %57, %58
+                ret
+              }
+              %b13 = block {  # false
+                %59:i32 = load %baseIndex
+                %60:ptr<private, i32, read_write> = access %tree, %59, 2u
+                %61:i32 = load %60
+                store %baseIndex, %61
+                continue %b5
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        next_iteration %b4
+      }
+    }
+    ret
+  }
+}
+%identity_i1_ = func(%a:ptr<function, i32, read_write>):i32 -> %b14 {
+  %b14 = block {
+    %x_202:i32 = load %a
+    %65:ptr<private, i32, read_write> = access %obj, 0u, %x_202
+    %66:i32 = load %a
+    store %65, %66
+    %67:ptr<private, i32, read_write> = access %obj, 0u, 2i
+    %x_206:i32 = load %67
+    ret %x_206
+  }
+}
+%search_i1_ = func(%t:ptr<function, i32, read_write>):i32 -> %b15 {
+  %b15 = block {
+    %index:ptr<function, i32, read_write> = var
+    %currentNode:ptr<function, BST, read_write> = var
+    %x_270:ptr<function, i32, read_write> = var
+    store %index, 0i
+    loop [b: %b16, c: %b17] {  # loop_2
+      %b16 = block {  # body
+        %74:i32 = load %index
+        %75:bool = neq %74, -1i
+        if %75 [t: %b18, f: %b19] {  # if_5
+          %b18 = block {  # true
+            exit_if  # if_5
+          }
+          %b19 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %76:i32 = load %index
+        %77:ptr<private, BST, read_write> = access %tree, %76
+        %78:BST = load %77
+        store %currentNode, %78
+        %79:ptr<function, i32, read_write> = access %currentNode, 0u
+        %80:i32 = load %79
+        %81:i32 = load %t
+        %82:bool = eq %80, %81
+        if %82 [t: %b20] {  # if_6
+          %b20 = block {  # true
+            %x_287:i32 = load %t
+            ret %x_287
+          }
+        }
+        %84:i32 = load %t
+        %85:ptr<function, i32, read_write> = access %currentNode, 0u
+        %86:i32 = load %85
+        %87:bool = gt %84, %86
+        if %87 [t: %b21, f: %b22] {  # if_7
+          %b21 = block {  # true
+            %88:ptr<function, i32, read_write> = access %currentNode, 2u
+            %89:i32 = load %88
+            store %x_270, %89
+            exit_if  # if_7
+          }
+          %b22 = block {  # false
+            %90:ptr<function, i32, read_write> = access %currentNode, 1u
+            %91:i32 = load %90
+            store %x_270, %91
+            exit_if  # if_7
+          }
+        }
+        %92:i32 = load %x_270
+        store %index, %92
+        continue %b17
+      }
+      %b17 = block {  # continuing
+        next_iteration %b16
+      }
+    }
+    ret -1i
+  }
+}
+%main_1 = func():void -> %b23 {
+  %b23 = block {
+    %treeIndex_1:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, BST, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    %param_6:ptr<function, i32, read_write> = var
+    %param_7:ptr<function, i32, read_write> = var
+    %param_8:ptr<function, i32, read_write> = var
+    %param_9:ptr<function, i32, read_write> = var
+    %param_10:ptr<function, i32, read_write> = var
+    %param_11:ptr<function, i32, read_write> = var
+    %param_12:ptr<function, i32, read_write> = var
+    %param_13:ptr<function, i32, read_write> = var
+    %param_14:ptr<function, i32, read_write> = var
+    %param_15:ptr<function, i32, read_write> = var
+    %param_16:ptr<function, i32, read_write> = var
+    %param_17:ptr<function, i32, read_write> = var
+    %param_18:ptr<function, i32, read_write> = var
+    %param_19:ptr<function, i32, read_write> = var
+    %param_20:ptr<function, i32, read_write> = var
+    %param_21:ptr<function, i32, read_write> = var
+    %param_22:ptr<function, i32, read_write> = var
+    %param_23:ptr<function, i32, read_write> = var
+    %pp:ptr<function, i32, read_write> = var
+    %looplimiter0:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %param_24:ptr<function, i32, read_write> = var
+    %count:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %result:ptr<function, i32, read_write> = var
+    %param_25:ptr<function, i32, read_write> = var
+    store %treeIndex_1, 0i
+    %123:ptr<private, BST, read_write> = access %tree, 0i
+    %124:BST = load %123
+    store %param_4, %124
+    store %param_5, 9i
+    %125:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param_4, %param_5
+    %126:ptr<private, BST, read_write> = access %tree, 0i
+    %127:BST = load %param_4
+    store %126, %127
+    %128:i32 = load %treeIndex_1
+    %129:i32 = add %128, 1i
+    store %treeIndex_1, %129
+    %130:i32 = load %treeIndex_1
+    store %param_6, %130
+    store %param_7, 5i
+    %131:void = call %insert_i1_i1_, %param_6, %param_7
+    %132:i32 = load %treeIndex_1
+    %133:i32 = add %132, 1i
+    store %treeIndex_1, %133
+    %134:i32 = load %treeIndex_1
+    store %param_8, %134
+    store %param_9, 12i
+    %135:void = call %insert_i1_i1_, %param_8, %param_9
+    %136:i32 = load %treeIndex_1
+    %137:i32 = add %136, 1i
+    store %treeIndex_1, %137
+    %138:i32 = load %treeIndex_1
+    store %param_10, %138
+    store %param_11, 15i
+    %139:void = call %insert_i1_i1_, %param_10, %param_11
+    %140:i32 = load %treeIndex_1
+    %141:i32 = add %140, 1i
+    store %treeIndex_1, %141
+    %142:i32 = load %treeIndex_1
+    store %param_12, %142
+    store %param_13, 7i
+    %143:void = call %insert_i1_i1_, %param_12, %param_13
+    %144:i32 = load %treeIndex_1
+    %145:i32 = add %144, 1i
+    store %treeIndex_1, %145
+    %146:i32 = load %treeIndex_1
+    store %param_14, %146
+    store %param_15, 8i
+    %147:void = call %insert_i1_i1_, %param_14, %param_15
+    %148:i32 = load %treeIndex_1
+    %149:i32 = add %148, 1i
+    store %treeIndex_1, %149
+    %150:i32 = load %treeIndex_1
+    store %param_16, %150
+    store %param_17, 2i
+    %151:void = call %insert_i1_i1_, %param_16, %param_17
+    %152:i32 = load %treeIndex_1
+    %153:i32 = add %152, 1i
+    store %treeIndex_1, %153
+    %154:i32 = load %treeIndex_1
+    store %param_18, %154
+    store %param_19, 6i
+    %155:void = call %insert_i1_i1_, %param_18, %param_19
+    %156:i32 = load %treeIndex_1
+    %157:i32 = add %156, 1i
+    store %treeIndex_1, %157
+    %158:i32 = load %treeIndex_1
+    store %param_20, %158
+    store %param_21, 17i
+    %159:void = call %insert_i1_i1_, %param_20, %param_21
+    %160:i32 = load %treeIndex_1
+    %161:i32 = add %160, 1i
+    store %treeIndex_1, %161
+    %162:i32 = load %treeIndex_1
+    store %param_22, %162
+    store %param_23, 13i
+    %163:void = call %insert_i1_i1_, %param_22, %param_23
+    store %pp, 0i
+    store %looplimiter0, 0i
+    store %i, 0i
+    loop [b: %b24, c: %b25] {  # loop_3
+      %b24 = block {  # body
+        %164:i32 = load %i
+        %165:bool = lt %164, 10000i
+        if %165 [t: %b26, f: %b27] {  # if_8
+          %b26 = block {  # true
+            exit_if  # if_8
+          }
+          %b27 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %166:i32 = load %looplimiter0
+        %167:ptr<uniform, vec2<f32>, read> = access %x_50, 0u
+        %168:f32 = load_vector_element %167, 1u
+        %169:i32 = convert %168
+        %170:bool = gte %166, %169
+        if %170 [t: %b28] {  # if_9
+          %b28 = block {  # true
+            %171:ptr<uniform, vec2<f32>, read> = access %x_50, 0u
+            %172:f32 = load_vector_element %171, 1u
+            %173:i32 = convert %172
+            %174:i32 = add 1i, %173
+            store %param_24, %174
+            %x_159:i32 = call %identity_i1_, %param_24
+            store %pp, %x_159
+            exit_loop  # loop_3
+          }
+        }
+        %176:i32 = load %looplimiter0
+        %177:i32 = add %176, 1i
+        store %looplimiter0, %177
+        continue %b25
+      }
+      %b25 = block {  # continuing
+        %178:i32 = load %i
+        %179:i32 = add %178, 1i
+        store %i, %179
+        next_iteration %b24
+      }
+    }
+    %180:i32 = load %pp
+    %181:bool = neq %180, 2i
+    if %181 [t: %b29] {  # if_10
+      %b29 = block {  # true
+        ret
+      }
+    }
+    store %count, 0i
+    store %i_1, 0i
+    loop [b: %b30, c: %b31] {  # loop_4
+      %b30 = block {  # body
+        %182:i32 = load %i_1
+        %183:bool = lt %182, 20i
+        if %183 [t: %b32, f: %b33] {  # if_11
+          %b32 = block {  # true
+            exit_if  # if_11
+          }
+          %b33 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %184:i32 = load %i_1
+        store %param_25, %184
+        %x_176:i32 = call %search_i1_, %param_25
+        store %result, %x_176
+        %x_177:i32 = load %i_1
+        switch %x_177 [c: (2i 5i 6i 7i 8i 9i 12i 13i 15i 17i, %b34), c: (default, %b35)] {  # switch_1
+          %b34 = block {  # case
+            %187:i32 = load %result
+            %188:i32 = load %i_1
+            %189:bool = eq %187, %188
+            if %189 [t: %b36] {  # if_12
+              %b36 = block {  # true
+                %190:i32 = load %count
+                %191:i32 = add %190, 1i
+                store %count, %191
+                exit_if  # if_12
+              }
+            }
+            exit_switch  # switch_1
+          }
+          %b35 = block {  # case
+            %192:i32 = load %result
+            %193:bool = eq %192, -1i
+            if %193 [t: %b37] {  # if_13
+              %b37 = block {  # true
+                %194:i32 = load %count
+                %195:i32 = add %194, 1i
+                store %count, %195
+                exit_if  # if_13
+              }
+            }
+            exit_switch  # switch_1
+          }
+        }
+        continue %b31
+      }
+      %b31 = block {  # continuing
+        %196:i32 = load %i_1
+        %197:i32 = add %196, 1i
+        store %i_1, %197
+        next_iteration %b30
+      }
+    }
+    %198:i32 = load %count
+    %199:bool = eq %198, 20i
+    if %199 [t: %b38, f: %b39] {  # if_14
+      %b38 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_14
+      }
+      %b39 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f)
+        exit_if  # if_14
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b40 {
+  %b40 = block {
+    %201:void = call %main_1
+    %202:vec4<f32> = load %x_GLF_color
+    %203:main_out = construct %202
+    ret %203
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4ec7d08
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.ir.msl
@@ -0,0 +1,456 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+BST = struct @align(4) {
+  data:i32 @offset(0)
+  leftIndex:i32 @offset(4)
+  rightIndex:i32 @offset(8)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %tree:ptr<private, array<BST, 10>, read_write> = var
+  %x_50:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = func(%node:ptr<function, BST, read_write>, %data:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %x_208:i32 = load %data
+    %9:ptr<function, i32, read_write> = access %node, 0u
+    store %9, %x_208
+    %10:ptr<function, i32, read_write> = access %node, 1u
+    store %10, -1i
+    %11:ptr<function, i32, read_write> = access %node, 2u
+    store %11, -1i
+    ret
+  }
+}
+%insert_i1_i1_ = func(%treeIndex:ptr<function, i32, read_write>, %data_1:ptr<function, i32, read_write>):void -> %b3 {
+  %b3 = block {
+    %baseIndex:ptr<function, i32, read_write> = var
+    %param:ptr<function, BST, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, BST, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    store %baseIndex, 0i
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %x_217:i32 = load %baseIndex
+        %x_218:i32 = load %treeIndex
+        %22:bool = lte %x_217, %x_218
+        if %22 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_221:i32 = load %data_1
+        %x_222:i32 = load %baseIndex
+        %25:ptr<private, i32, read_write> = access %tree, %x_222, 0u
+        %x_224:i32 = load %25
+        %27:bool = lte %x_221, %x_224
+        if %27 [t: %b8, f: %b9] {  # if_2
+          %b8 = block {  # true
+            %x_229:i32 = load %baseIndex
+            %29:ptr<private, i32, read_write> = access %tree, %x_229, 1u
+            %x_231:i32 = load %29
+            %31:bool = eq %x_231, -1i
+            if %31 [t: %b10, f: %b11] {  # if_3
+              %b10 = block {  # true
+                %x_236:i32 = load %baseIndex
+                %x_237:i32 = load %treeIndex
+                %34:ptr<private, i32, read_write> = access %tree, %x_236, 1u
+                store %34, %x_237
+                %x_239:i32 = load %treeIndex
+                %36:ptr<private, BST, read_write> = access %tree, %x_239
+                %x_241:BST = load %36
+                store %param, %x_241
+                %x_242:i32 = load %data_1
+                store %param_1, %x_242
+                %39:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param, %param_1
+                %x_244:BST = load %param
+                %41:ptr<private, BST, read_write> = access %tree, %x_239
+                store %41, %x_244
+                ret
+              }
+              %b11 = block {  # false
+                %x_246:i32 = load %baseIndex
+                %43:ptr<private, i32, read_write> = access %tree, %x_246, 1u
+                %x_248:i32 = load %43
+                store %baseIndex, %x_248
+                continue %b5
+              }
+            }
+            exit_if  # if_2
+          }
+          %b9 = block {  # false
+            %x_249:i32 = load %baseIndex
+            %46:ptr<private, i32, read_write> = access %tree, %x_249, 2u
+            %x_251:i32 = load %46
+            %48:bool = eq %x_251, -1i
+            if %48 [t: %b12, f: %b13] {  # if_4
+              %b12 = block {  # true
+                %x_256:i32 = load %baseIndex
+                %x_257:i32 = load %treeIndex
+                %51:ptr<private, i32, read_write> = access %tree, %x_256, 2u
+                store %51, %x_257
+                %x_259:i32 = load %treeIndex
+                %53:ptr<private, BST, read_write> = access %tree, %x_259
+                %x_261:BST = load %53
+                store %param_2, %x_261
+                %x_262:i32 = load %data_1
+                store %param_3, %x_262
+                %56:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param_2, %param_3
+                %x_264:BST = load %param_2
+                %58:ptr<private, BST, read_write> = access %tree, %x_259
+                store %58, %x_264
+                ret
+              }
+              %b13 = block {  # false
+                %x_266:i32 = load %baseIndex
+                %60:ptr<private, i32, read_write> = access %tree, %x_266, 2u
+                %x_268:i32 = load %60
+                store %baseIndex, %x_268
+                continue %b5
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        next_iteration %b4
+      }
+    }
+    ret
+  }
+}
+%identity_i1_ = func(%a:ptr<function, i32, read_write>):i32 -> %b14 {
+  %b14 = block {
+    %x_202:i32 = load %a
+    %x_203:i32 = load %a
+    %66:ptr<private, i32, read_write> = access %obj, 0u, %x_202
+    store %66, %x_203
+    %67:ptr<private, i32, read_write> = access %obj, 0u, 2i
+    %x_206:i32 = load %67
+    ret %x_206
+  }
+}
+%search_i1_ = func(%t:ptr<function, i32, read_write>):i32 -> %b15 {
+  %b15 = block {
+    %index:ptr<function, i32, read_write> = var
+    %currentNode:ptr<function, BST, read_write> = var
+    %x_270:ptr<function, i32, read_write> = var
+    store %index, 0i
+    loop [b: %b16, c: %b17] {  # loop_2
+      %b16 = block {  # body
+        %x_275:i32 = load %index
+        %75:bool = neq %x_275, -1i
+        if %75 [t: %b18, f: %b19] {  # if_5
+          %b18 = block {  # true
+            exit_if  # if_5
+          }
+          %b19 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_278:i32 = load %index
+        %77:ptr<private, BST, read_write> = access %tree, %x_278
+        %x_280:BST = load %77
+        store %currentNode, %x_280
+        %79:ptr<function, i32, read_write> = access %currentNode, 0u
+        %x_282:i32 = load %79
+        %x_283:i32 = load %t
+        %82:bool = eq %x_282, %x_283
+        if %82 [t: %b20] {  # if_6
+          %b20 = block {  # true
+            %x_287:i32 = load %t
+            ret %x_287
+          }
+        }
+        %x_288:i32 = load %t
+        %85:ptr<function, i32, read_write> = access %currentNode, 0u
+        %x_290:i32 = load %85
+        %87:bool = gt %x_288, %x_290
+        if %87 [t: %b21, f: %b22] {  # if_7
+          %b21 = block {  # true
+            %88:ptr<function, i32, read_write> = access %currentNode, 2u
+            %x_296:i32 = load %88
+            store %x_270, %x_296
+            exit_if  # if_7
+          }
+          %b22 = block {  # false
+            %90:ptr<function, i32, read_write> = access %currentNode, 1u
+            %x_298:i32 = load %90
+            store %x_270, %x_298
+            exit_if  # if_7
+          }
+        }
+        %x_299:i32 = load %x_270
+        store %index, %x_299
+        continue %b17
+      }
+      %b17 = block {  # continuing
+        next_iteration %b16
+      }
+    }
+    ret -1i
+  }
+}
+%main_1 = func():void -> %b23 {
+  %b23 = block {
+    %treeIndex_1:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, BST, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    %param_6:ptr<function, i32, read_write> = var
+    %param_7:ptr<function, i32, read_write> = var
+    %param_8:ptr<function, i32, read_write> = var
+    %param_9:ptr<function, i32, read_write> = var
+    %param_10:ptr<function, i32, read_write> = var
+    %param_11:ptr<function, i32, read_write> = var
+    %param_12:ptr<function, i32, read_write> = var
+    %param_13:ptr<function, i32, read_write> = var
+    %param_14:ptr<function, i32, read_write> = var
+    %param_15:ptr<function, i32, read_write> = var
+    %param_16:ptr<function, i32, read_write> = var
+    %param_17:ptr<function, i32, read_write> = var
+    %param_18:ptr<function, i32, read_write> = var
+    %param_19:ptr<function, i32, read_write> = var
+    %param_20:ptr<function, i32, read_write> = var
+    %param_21:ptr<function, i32, read_write> = var
+    %param_22:ptr<function, i32, read_write> = var
+    %param_23:ptr<function, i32, read_write> = var
+    %pp:ptr<function, i32, read_write> = var
+    %looplimiter0:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %param_24:ptr<function, i32, read_write> = var
+    %count:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %result:ptr<function, i32, read_write> = var
+    %param_25:ptr<function, i32, read_write> = var
+    store %treeIndex_1, 0i
+    %123:ptr<private, BST, read_write> = access %tree, 0i
+    %x_101:BST = load %123
+    store %param_4, %x_101
+    store %param_5, 9i
+    %125:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param_4, %param_5
+    %x_103:BST = load %param_4
+    %127:ptr<private, BST, read_write> = access %tree, 0i
+    store %127, %x_103
+    %x_105:i32 = load %treeIndex_1
+    %129:i32 = add %x_105, 1i
+    store %treeIndex_1, %129
+    %x_107:i32 = load %treeIndex_1
+    store %param_6, %x_107
+    store %param_7, 5i
+    %131:void = call %insert_i1_i1_, %param_6, %param_7
+    %x_109:i32 = load %treeIndex_1
+    %133:i32 = add %x_109, 1i
+    store %treeIndex_1, %133
+    %x_111:i32 = load %treeIndex_1
+    store %param_8, %x_111
+    store %param_9, 12i
+    %135:void = call %insert_i1_i1_, %param_8, %param_9
+    %x_113:i32 = load %treeIndex_1
+    %137:i32 = add %x_113, 1i
+    store %treeIndex_1, %137
+    %x_115:i32 = load %treeIndex_1
+    store %param_10, %x_115
+    store %param_11, 15i
+    %139:void = call %insert_i1_i1_, %param_10, %param_11
+    %x_117:i32 = load %treeIndex_1
+    %141:i32 = add %x_117, 1i
+    store %treeIndex_1, %141
+    %x_119:i32 = load %treeIndex_1
+    store %param_12, %x_119
+    store %param_13, 7i
+    %143:void = call %insert_i1_i1_, %param_12, %param_13
+    %x_121:i32 = load %treeIndex_1
+    %145:i32 = add %x_121, 1i
+    store %treeIndex_1, %145
+    %x_123:i32 = load %treeIndex_1
+    store %param_14, %x_123
+    store %param_15, 8i
+    %147:void = call %insert_i1_i1_, %param_14, %param_15
+    %x_125:i32 = load %treeIndex_1
+    %149:i32 = add %x_125, 1i
+    store %treeIndex_1, %149
+    %x_127:i32 = load %treeIndex_1
+    store %param_16, %x_127
+    store %param_17, 2i
+    %151:void = call %insert_i1_i1_, %param_16, %param_17
+    %x_129:i32 = load %treeIndex_1
+    %153:i32 = add %x_129, 1i
+    store %treeIndex_1, %153
+    %x_131:i32 = load %treeIndex_1
+    store %param_18, %x_131
+    store %param_19, 6i
+    %155:void = call %insert_i1_i1_, %param_18, %param_19
+    %x_133:i32 = load %treeIndex_1
+    %157:i32 = add %x_133, 1i
+    store %treeIndex_1, %157
+    %x_135:i32 = load %treeIndex_1
+    store %param_20, %x_135
+    store %param_21, 17i
+    %159:void = call %insert_i1_i1_, %param_20, %param_21
+    %x_137:i32 = load %treeIndex_1
+    %161:i32 = add %x_137, 1i
+    store %treeIndex_1, %161
+    %x_139:i32 = load %treeIndex_1
+    store %param_22, %x_139
+    store %param_23, 13i
+    %163:void = call %insert_i1_i1_, %param_22, %param_23
+    store %pp, 0i
+    store %looplimiter0, 0i
+    store %i, 0i
+    loop [b: %b24, c: %b25] {  # loop_3
+      %b24 = block {  # body
+        %x_145:i32 = load %i
+        %165:bool = lt %x_145, 10000i
+        if %165 [t: %b26, f: %b27] {  # if_8
+          %b26 = block {  # true
+            exit_if  # if_8
+          }
+          %b27 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_148:i32 = load %looplimiter0
+        %167:ptr<uniform, vec2<f32>, read> = access %x_50, 0u
+        %x_150:f32 = load_vector_element %167, 1u
+        %169:i32 = convert %x_150
+        %170:bool = gte %x_148, %169
+        if %170 [t: %b28] {  # if_9
+          %b28 = block {  # true
+            %171:ptr<uniform, vec2<f32>, read> = access %x_50, 0u
+            %x_156:f32 = load_vector_element %171, 1u
+            %173:i32 = convert %x_156
+            %174:i32 = add 1i, %173
+            store %param_24, %174
+            %x_159:i32 = call %identity_i1_, %param_24
+            store %pp, %x_159
+            exit_loop  # loop_3
+          }
+        }
+        %x_160:i32 = load %looplimiter0
+        %177:i32 = add %x_160, 1i
+        store %looplimiter0, %177
+        continue %b25
+      }
+      %b25 = block {  # continuing
+        %x_162:i32 = load %i
+        %179:i32 = add %x_162, 1i
+        store %i, %179
+        next_iteration %b24
+      }
+    }
+    %x_164:i32 = load %pp
+    %181:bool = neq %x_164, 2i
+    if %181 [t: %b29] {  # if_10
+      %b29 = block {  # true
+        ret
+      }
+    }
+    store %count, 0i
+    store %i_1, 0i
+    loop [b: %b30, c: %b31] {  # loop_4
+      %b30 = block {  # body
+        %x_172:i32 = load %i_1
+        %183:bool = lt %x_172, 20i
+        if %183 [t: %b32, f: %b33] {  # if_11
+          %b32 = block {  # true
+            exit_if  # if_11
+          }
+          %b33 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %x_175:i32 = load %i_1
+        store %param_25, %x_175
+        %x_176:i32 = call %search_i1_, %param_25
+        store %result, %x_176
+        %x_177:i32 = load %i_1
+        switch %x_177 [c: (2i 5i 6i 7i 8i 9i 12i 13i 15i 17i, %b34), c: (default, %b35)] {  # switch_1
+          %b34 = block {  # case
+            %x_187:i32 = load %result
+            %x_188:i32 = load %i_1
+            %189:bool = eq %x_187, %x_188
+            if %189 [t: %b36] {  # if_12
+              %b36 = block {  # true
+                %x_192:i32 = load %count
+                %191:i32 = add %x_192, 1i
+                store %count, %191
+                exit_if  # if_12
+              }
+            }
+            exit_switch  # switch_1
+          }
+          %b35 = block {  # case
+            %x_181:i32 = load %result
+            %193:bool = eq %x_181, -1i
+            if %193 [t: %b37] {  # if_13
+              %b37 = block {  # true
+                %x_185:i32 = load %count
+                %195:i32 = add %x_185, 1i
+                store %count, %195
+                exit_if  # if_13
+              }
+            }
+            exit_switch  # switch_1
+          }
+        }
+        continue %b31
+      }
+      %b31 = block {  # continuing
+        %x_194:i32 = load %i_1
+        %197:i32 = add %x_194, 1i
+        store %i_1, %197
+        next_iteration %b30
+      }
+    }
+    %x_196:i32 = load %count
+    %199:bool = eq %x_196, 20i
+    if %199 [t: %b38, f: %b39] {  # if_14
+      %b38 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_14
+      }
+      %b39 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f)
+        exit_if  # if_14
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b40 {
+  %b40 = block {
+    %201:void = call %main_1
+    %202:vec4<f32> = load %x_GLF_color
+    %203:main_out = construct %202
+    ret %203
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..174cad0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm.expected.ir.msl
@@ -0,0 +1,114 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%collatz_i1_ = func(%v:ptr<function, i32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %count:ptr<function, i32, read_write> = var
+    store %count, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %7:i32 = load %v
+        %8:bool = gt %7, 1i
+        if %8 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %9:i32 = load %v
+        %10:i32 = and %9, 1i
+        %11:bool = eq %10, 1i
+        if %11 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %12:i32 = load %v
+            %13:i32 = mul 3i, %12
+            %14:i32 = add %13, 1i
+            store %v, %14
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %15:i32 = load %v
+            %16:i32 = div %15, 2i
+            store %v, %16
+            exit_if  # if_2
+          }
+        }
+        %17:i32 = load %count
+        %18:i32 = add %17, 1i
+        store %count, %18
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %x_105:i32 = load %count
+    ret %x_105
+  }
+}
+%main_1 = func():void -> %b9 {
+  %b9 = block {
+    %lin:ptr<function, vec2<f32>, read_write> = var
+    %v_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %25:vec4<f32> = load %gl_FragCoord
+    %26:vec2<f32> = swizzle %25, xy
+    %27:ptr<uniform, vec2<f32>, read> = access %x_10, 0u
+    %28:vec2<f32> = load %27
+    %29:vec2<f32> = div %26, %28
+    store %lin, %29
+    %30:vec2<f32> = load %lin
+    %31:vec2<f32> = mul %30, 8.0f
+    %32:vec2<f32> = floor %31
+    store %lin, %32
+    %33:f32 = load_vector_element %lin, 0u
+    %34:i32 = convert %33
+    %35:i32 = mul %34, 8i
+    %36:f32 = load_vector_element %lin, 1u
+    %37:i32 = convert %36
+    %38:i32 = add %35, %37
+    store %v_1, %38
+    %39:i32 = load %v_1
+    store %param, %39
+    %x_80:i32 = call %collatz_i1_, %param
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %41:i32 = mod %x_80, 16i
+    %42:ptr<function, vec4<f32>, read_write> = access %indexable, %41
+    %43:vec4<f32> = load %42
+    store %x_GLF_color, %43
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b10 {
+  %b10 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %46:void = call %main_1
+    %47:vec4<f32> = load %x_GLF_color
+    %48:main_out = construct %47
+    ret %48
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e20a179
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl.expected.ir.msl
@@ -0,0 +1,116 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%collatz_i1_ = func(%v:ptr<function, i32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %count:ptr<function, i32, read_write> = var
+    store %count, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_89:i32 = load %v
+        %8:bool = gt %x_89, 1i
+        if %8 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_92:i32 = load %v
+        %10:i32 = and %x_92, 1i
+        %11:bool = eq %10, 1i
+        if %11 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_98:i32 = load %v
+            %13:i32 = mul 3i, %x_98
+            %14:i32 = add %13, 1i
+            store %v, %14
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_101:i32 = load %v
+            %16:i32 = div %x_101, 2i
+            store %v, %16
+            exit_if  # if_2
+          }
+        }
+        %x_103:i32 = load %count
+        %18:i32 = add %x_103, 1i
+        store %count, %18
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %x_105:i32 = load %count
+    ret %x_105
+  }
+}
+%main_1 = func():void -> %b9 {
+  %b9 = block {
+    %lin:ptr<function, vec2<f32>, read_write> = var
+    %v_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_63:vec4<f32> = load %gl_FragCoord
+    %26:ptr<uniform, vec2<f32>, read> = access %x_10, 0u
+    %x_66:vec2<f32> = load %26
+    %28:f32 = access %x_63, 0u
+    %29:f32 = access %x_63, 1u
+    %30:vec2<f32> = construct %28, %29
+    %31:vec2<f32> = div %30, %x_66
+    store %lin, %31
+    %x_68:vec2<f32> = load %lin
+    %33:vec2<f32> = mul %x_68, 8.0f
+    %34:vec2<f32> = floor %33
+    store %lin, %34
+    %x_72:f32 = load_vector_element %lin, 0u
+    %x_76:f32 = load_vector_element %lin, 1u
+    %37:i32 = convert %x_72
+    %38:i32 = mul %37, 8i
+    %39:i32 = convert %x_76
+    %40:i32 = add %38, %39
+    store %v_1, %40
+    %x_79:i32 = load %v_1
+    store %param, %x_79
+    %x_80:i32 = call %collatz_i1_, %param
+    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+    %43:i32 = mod %x_80, 16i
+    %44:ptr<function, vec4<f32>, read_write> = access %indexable, %43
+    %x_83:vec4<f32> = load %44
+    store %x_GLF_color, %x_83
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b10 {
+  %b10 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %48:void = call %main_1
+    %49:vec4<f32> = load %x_GLF_color
+    %50:main_out = construct %49
+    ret %50
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..43dc852
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.spvasm.expected.ir.msl
@@ -0,0 +1,369 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %x_54:ptr<function, f32, read_write> = var
+    %x_58:ptr<function, f32, read_write> = var
+    %x_61:ptr<function, i32, read_write> = var
+    %x_59:ptr<function, f32, read_write> = var
+    %x_91:ptr<function, f32, read_write> = var
+    %x_92:ptr<function, f32, read_write> = var
+    %x_93:ptr<function, bool, read_write> = var
+    %x_95:ptr<function, f32, read_write> = var
+    %x_135:ptr<function, f32, read_write> = var
+    %x_136:ptr<function, f32, read_write> = var
+    %x_139:ptr<function, f32, read_write> = var
+    %x_146:ptr<function, i32, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %19:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %20:f32 = load_vector_element %19, 0u
+    %21:f32 = mul %20, 0.125f
+    %x_52:f32 = round %21
+    %23:f32 = load_vector_element %gl_FragCoord, 0u
+    store %x_54, %23
+    switch 0u [c: (default, %b3)] {  # switch_1
+      %b3 = block {  # case
+        store %x_58, -0.5f
+        store %x_61, 1i
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %x_71:ptr<function, f32, read_write> = var
+            %x_79:ptr<function, f32, read_write> = var
+            %x_62:ptr<function, i32, read_write> = var
+            store %x_91, 0.0f
+            %27:f32 = load %x_58
+            store %x_92, %27
+            store %x_93, false
+            %28:i32 = load %x_61
+            %29:bool = lt %28, 800i
+            if %29 [t: %b6, f: %b7] {  # if_1
+              %b6 = block {  # true
+                exit_if  # if_1
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            %x_78:ptr<function, f32, read_write> = var
+            %31:i32 = load %x_61
+            %32:i32 = mod %31, 32i
+            %33:bool = eq %32, 0i
+            if %33 [t: %b8, f: %b9] {  # if_2
+              %b8 = block {  # true
+                %34:f32 = load %x_58
+                %35:f32 = add %34, 0.40000000596046447754f
+                store %x_71, %35
+                %36:f32 = load %x_71
+                store %x_59, %36
+                exit_if  # if_2
+              }
+              %b9 = block {  # false
+                %37:f32 = load %x_58
+                store %x_79, %37
+                %38:i32 = load %x_61
+                %39:f32 = convert %38
+                %40:f32 = round %x_52
+                %41:i32 = load %x_61
+                %42:f32 = convert %41
+                %43:f32 = round %x_52
+                %44:f32 = div %42, %43
+                %45:f32 = floor %44
+                %46:f32 = mul %40, %45
+                %47:f32 = sub %39, %46
+                %48:bool = lte %47, 0.00999999977648258209f
+                if %48 [t: %b10] {  # if_3
+                  %b10 = block {  # true
+                    %49:f32 = load %x_58
+                    %50:f32 = add %49, 100.0f
+                    store %x_78, %50
+                    %51:f32 = load %x_78
+                    store %x_79, %51
+                    exit_if  # if_3
+                  }
+                }
+                %52:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+                %53:f32 = load_vector_element %52, 0u
+                %54:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+                %55:f32 = load_vector_element %54, 1u
+                %56:bool = gt %53, %55
+                if %56 [t: %b11] {  # if_4
+                  %b11 = block {  # true
+                    discard
+                    exit_if  # if_4
+                  }
+                }
+                %57:f32 = load %x_79
+                store %x_59, %57
+                exit_if  # if_2
+              }
+            }
+            %58:i32 = load %x_61
+            %59:f32 = convert %58
+            %60:f32 = load %x_54
+            %61:bool = gte %59, %60
+            if %61 [t: %b12] {  # if_5
+              %b12 = block {  # true
+                %62:f32 = load %x_59
+                store %x_91, %62
+                %63:f32 = load %x_59
+                store %x_92, %63
+                store %x_93, true
+                exit_loop  # loop_1
+              }
+            }
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            %64:i32 = load %x_61
+            %65:i32 = add %64, 1i
+            store %x_62, %65
+            %66:f32 = load %x_59
+            store %x_58, %66
+            %67:i32 = load %x_62
+            store %x_61, %67
+            next_iteration %b4
+          }
+        }
+        %68:f32 = load %x_91
+        store %x_95, %68
+        %69:bool = load %x_93
+        if %69 [t: %b13] {  # if_6
+          %b13 = block {  # true
+            exit_switch  # switch_1
+          }
+        }
+        %70:f32 = load %x_92
+        store %x_95, %70
+        exit_switch  # switch_1
+      }
+    }
+    %x_98:ptr<function, f32, read_write> = var
+    %x_102:ptr<function, f32, read_write> = var
+    %x_105:ptr<function, i32, read_write> = var
+    %x_103:ptr<function, f32, read_write> = var
+    %x_137:ptr<function, bool, read_write> = var
+    %76:f32 = load %x_95
+    store_vector_element %c, 0u, %76
+    %77:f32 = load_vector_element %gl_FragCoord, 1u
+    store %x_98, %77
+    switch 0u [c: (default, %b14)] {  # switch_2
+      %b14 = block {  # case
+        store %x_102, -0.5f
+        store %x_105, 1i
+        loop [b: %b15, c: %b16] {  # loop_2
+          %b15 = block {  # body
+            %x_115:ptr<function, f32, read_write> = var
+            %x_123:ptr<function, f32, read_write> = var
+            %x_106:ptr<function, i32, read_write> = var
+            store %x_135, 0.0f
+            %81:f32 = load %x_102
+            store %x_136, %81
+            store %x_137, false
+            %82:i32 = load %x_105
+            %83:bool = lt %82, 800i
+            if %83 [t: %b17, f: %b18] {  # if_7
+              %b17 = block {  # true
+                exit_if  # if_7
+              }
+              %b18 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_122:ptr<function, f32, read_write> = var
+            %85:i32 = load %x_105
+            %86:i32 = mod %85, 32i
+            %87:bool = eq %86, 0i
+            if %87 [t: %b19, f: %b20] {  # if_8
+              %b19 = block {  # true
+                %88:f32 = load %x_102
+                %89:f32 = add %88, 0.40000000596046447754f
+                store %x_115, %89
+                %90:f32 = load %x_115
+                store %x_103, %90
+                exit_if  # if_8
+              }
+              %b20 = block {  # false
+                %91:f32 = load %x_102
+                store %x_123, %91
+                %92:i32 = load %x_105
+                %93:f32 = convert %92
+                %94:f32 = round %x_52
+                %95:i32 = load %x_105
+                %96:f32 = convert %95
+                %97:f32 = round %x_52
+                %98:f32 = div %96, %97
+                %99:f32 = floor %98
+                %100:f32 = mul %94, %99
+                %101:f32 = sub %93, %100
+                %102:bool = lte %101, 0.00999999977648258209f
+                if %102 [t: %b21] {  # if_9
+                  %b21 = block {  # true
+                    %103:f32 = load %x_102
+                    %104:f32 = add %103, 100.0f
+                    store %x_122, %104
+                    %105:f32 = load %x_122
+                    store %x_123, %105
+                    exit_if  # if_9
+                  }
+                }
+                %106:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+                %107:f32 = load_vector_element %106, 0u
+                %108:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+                %109:f32 = load_vector_element %108, 1u
+                %110:bool = gt %107, %109
+                if %110 [t: %b22] {  # if_10
+                  %b22 = block {  # true
+                    discard
+                    exit_if  # if_10
+                  }
+                }
+                %111:f32 = load %x_123
+                store %x_103, %111
+                exit_if  # if_8
+              }
+            }
+            %112:i32 = load %x_105
+            %113:f32 = convert %112
+            %114:f32 = load %x_98
+            %115:bool = gte %113, %114
+            if %115 [t: %b23] {  # if_11
+              %b23 = block {  # true
+                %116:f32 = load %x_103
+                store %x_135, %116
+                %117:f32 = load %x_103
+                store %x_136, %117
+                store %x_137, true
+                exit_loop  # loop_2
+              }
+            }
+            continue %b16
+          }
+          %b16 = block {  # continuing
+            %118:i32 = load %x_105
+            %119:i32 = add %118, 1i
+            store %x_106, %119
+            %120:f32 = load %x_103
+            store %x_102, %120
+            %121:i32 = load %x_106
+            store %x_105, %121
+            next_iteration %b15
+          }
+        }
+        %122:f32 = load %x_135
+        store %x_139, %122
+        %123:bool = load %x_137
+        if %123 [t: %b24] {  # if_12
+          %b24 = block {  # true
+            exit_switch  # switch_2
+          }
+        }
+        %124:f32 = load %x_136
+        store %x_139, %124
+        exit_switch  # switch_2
+      }
+    }
+    %125:f32 = load %x_139
+    store_vector_element %c, 1u, %125
+    %126:f32 = load_vector_element %c, 0u
+    %127:f32 = load_vector_element %c, 1u
+    %128:f32 = add %126, %127
+    store_vector_element %c, 2u, %128
+    store %x_146, 0i
+    loop [b: %b25, c: %b26] {  # loop_3
+      %b25 = block {  # body
+        %x_147:ptr<function, i32, read_write> = var
+        %130:i32 = load %x_146
+        %131:bool = lt %130, 3i
+        if %131 [t: %b27, f: %b28] {  # if_13
+          %b27 = block {  # true
+            exit_if  # if_13
+          }
+          %b28 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %132:i32 = load %x_146
+        %133:f32 = load_vector_element %c, %132
+        %134:bool = gte %133, 1.0f
+        if %134 [t: %b29] {  # if_14
+          %b29 = block {  # true
+            %135:i32 = load %x_146
+            %136:i32 = load %x_146
+            %137:f32 = load_vector_element %c, %136
+            %138:i32 = load %x_146
+            %139:f32 = load_vector_element %c, %138
+            %140:f32 = mul %137, %139
+            store_vector_element %c, %135, %140
+            %141:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+            %142:f32 = load_vector_element %141, 0u
+            %143:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+            %144:f32 = load_vector_element %143, 1u
+            %145:bool = gt %142, %144
+            if %145 [t: %b30] {  # if_15
+              %b30 = block {  # true
+                discard
+                exit_if  # if_15
+              }
+            }
+            exit_if  # if_14
+          }
+        }
+        continue %b26
+      }
+      %b26 = block {  # continuing
+        %146:i32 = load %x_146
+        %147:i32 = add %146, 1i
+        store %x_147, %147
+        %148:i32 = load %x_147
+        store %x_146, %148
+        next_iteration %b25
+      }
+    }
+    %149:vec3<f32> = load %c
+    %150:vec3<f32> = abs %149
+    %x_169:vec3<f32> = normalize %150
+    %152:f32 = access %x_169, 0u
+    %153:f32 = access %x_169, 1u
+    %154:f32 = access %x_169, 2u
+    %155:vec4<f32> = construct %152, %153, %154, 1.0f
+    store %x_GLF_color, %155
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b31 {
+  %b31 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %158:void = call %main_1
+    %159:vec4<f32> = load %x_GLF_color
+    %160:main_out = construct %159
+    ret %160
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c81aa1c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl.expected.ir.msl
@@ -0,0 +1,384 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %x_54:ptr<function, f32, read_write> = var
+    %x_58:ptr<function, f32, read_write> = var
+    %x_59:ptr<function, f32, read_write> = var
+    %x_91:ptr<function, f32, read_write> = var
+    %x_92:ptr<function, f32, read_write> = var
+    %x_135:ptr<function, f32, read_write> = var
+    %x_136:ptr<function, f32, read_write> = var
+    %x_58_phi:ptr<function, f32, read_write> = var
+    %x_61_phi:ptr<function, i32, read_write> = var
+    %x_91_phi:ptr<function, f32, read_write> = var
+    %x_92_phi:ptr<function, f32, read_write> = var
+    %x_93_phi:ptr<function, bool, read_write> = var
+    %x_95_phi:ptr<function, f32, read_write> = var
+    %x_139_phi:ptr<function, f32, read_write> = var
+    %x_146_phi:ptr<function, i32, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %22:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
+    %x_50:f32 = load_vector_element %22, 0u
+    %24:f32 = mul %x_50, 0.125f
+    %x_52:f32 = round %24
+    %26:f32 = load_vector_element %gl_FragCoord, 0u
+    store %x_54, %26
+    switch 0u [c: (default, %b3)] {  # switch_1
+      %b3 = block {  # case
+        store %x_58_phi, -0.5f
+        store %x_61_phi, 1i
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            %x_71:ptr<function, f32, read_write> = var
+            %x_79:ptr<function, f32, read_write> = var
+            %x_62:ptr<function, i32, read_write> = var
+            %x_59_phi:ptr<function, f32, read_write> = var
+            %31:f32 = load %x_58_phi
+            store %x_58, %31
+            %x_61:i32 = load %x_61_phi
+            store %x_91_phi, 0.0f
+            %33:f32 = load %x_58
+            store %x_92_phi, %33
+            store %x_93_phi, false
+            %34:bool = lt %x_61, 800i
+            if %34 [t: %b6, f: %b7] {  # if_1
+              %b6 = block {  # true
+                exit_if  # if_1
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            %x_78:ptr<function, f32, read_write> = var
+            %x_79_phi:ptr<function, f32, read_write> = var
+            %37:i32 = mod %x_61, 32i
+            %38:bool = eq %37, 0i
+            if %38 [t: %b8, f: %b9] {  # if_2
+              %b8 = block {  # true
+                %39:f32 = load %x_58
+                %40:f32 = add %39, 0.40000000596046447754f
+                store %x_71, %40
+                %41:f32 = load %x_71
+                store %x_59_phi, %41
+                exit_if  # if_2
+              }
+              %b9 = block {  # false
+                %42:f32 = load %x_58
+                store %x_79_phi, %42
+                %43:f32 = convert %x_61
+                %44:f32 = round %x_52
+                %45:f32 = convert %x_61
+                %46:f32 = round %x_52
+                %47:f32 = div %45, %46
+                %48:f32 = floor %47
+                %49:f32 = mul %44, %48
+                %50:f32 = sub %43, %49
+                %51:bool = lte %50, 0.00999999977648258209f
+                if %51 [t: %b10] {  # if_3
+                  %b10 = block {  # true
+                    %52:f32 = load %x_58
+                    %53:f32 = add %52, 100.0f
+                    store %x_78, %53
+                    %54:f32 = load %x_78
+                    store %x_79_phi, %54
+                    exit_if  # if_3
+                  }
+                }
+                %55:f32 = load %x_79_phi
+                store %x_79, %55
+                %56:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+                %x_81:f32 = load_vector_element %56, 0u
+                %58:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+                %x_83:f32 = load_vector_element %58, 1u
+                %60:bool = gt %x_81, %x_83
+                if %60 [t: %b11] {  # if_4
+                  %b11 = block {  # true
+                    discard
+                    exit_if  # if_4
+                  }
+                }
+                %61:f32 = load %x_79
+                store %x_59_phi, %61
+                exit_if  # if_2
+              }
+            }
+            %62:f32 = load %x_59_phi
+            store %x_59, %62
+            %63:f32 = convert %x_61
+            %64:f32 = load %x_54
+            %65:bool = gte %63, %64
+            if %65 [t: %b12] {  # if_5
+              %b12 = block {  # true
+                %66:f32 = load %x_59
+                store %x_91_phi, %66
+                %67:f32 = load %x_59
+                store %x_92_phi, %67
+                store %x_93_phi, true
+                exit_loop  # loop_1
+              }
+            }
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            %68:i32 = add %x_61, 1i
+            store %x_62, %68
+            %69:f32 = load %x_59
+            store %x_58_phi, %69
+            %70:i32 = load %x_62
+            store %x_61_phi, %70
+            next_iteration %b4
+          }
+        }
+        %71:f32 = load %x_91_phi
+        store %x_91, %71
+        %72:f32 = load %x_92_phi
+        store %x_92, %72
+        %x_93:bool = load %x_93_phi
+        %74:f32 = load %x_91
+        store %x_95_phi, %74
+        if %x_93 [t: %b13] {  # if_6
+          %b13 = block {  # true
+            exit_switch  # switch_1
+          }
+        }
+        %75:f32 = load %x_92
+        store %x_95_phi, %75
+        exit_switch  # switch_1
+      }
+    }
+    %x_98:ptr<function, f32, read_write> = var
+    %x_102:ptr<function, f32, read_write> = var
+    %x_103:ptr<function, f32, read_write> = var
+    %x_102_phi:ptr<function, f32, read_write> = var
+    %x_105_phi:ptr<function, i32, read_write> = var
+    %x_135_phi:ptr<function, f32, read_write> = var
+    %x_136_phi:ptr<function, f32, read_write> = var
+    %x_137_phi:ptr<function, bool, read_write> = var
+    %x_95:f32 = load %x_95_phi
+    store_vector_element %c, 0u, %x_95
+    %85:f32 = load_vector_element %gl_FragCoord, 1u
+    store %x_98, %85
+    switch 0u [c: (default, %b14)] {  # switch_2
+      %b14 = block {  # case
+        store %x_102_phi, -0.5f
+        store %x_105_phi, 1i
+        loop [b: %b15, c: %b16] {  # loop_2
+          %b15 = block {  # body
+            %x_115:ptr<function, f32, read_write> = var
+            %x_123:ptr<function, f32, read_write> = var
+            %x_106:ptr<function, i32, read_write> = var
+            %x_103_phi:ptr<function, f32, read_write> = var
+            %90:f32 = load %x_102_phi
+            store %x_102, %90
+            %x_105:i32 = load %x_105_phi
+            store %x_135_phi, 0.0f
+            %92:f32 = load %x_102
+            store %x_136_phi, %92
+            store %x_137_phi, false
+            %93:bool = lt %x_105, 800i
+            if %93 [t: %b17, f: %b18] {  # if_7
+              %b17 = block {  # true
+                exit_if  # if_7
+              }
+              %b18 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_122:ptr<function, f32, read_write> = var
+            %x_123_phi:ptr<function, f32, read_write> = var
+            %96:i32 = mod %x_105, 32i
+            %97:bool = eq %96, 0i
+            if %97 [t: %b19, f: %b20] {  # if_8
+              %b19 = block {  # true
+                %98:f32 = load %x_102
+                %99:f32 = add %98, 0.40000000596046447754f
+                store %x_115, %99
+                %100:f32 = load %x_115
+                store %x_103_phi, %100
+                exit_if  # if_8
+              }
+              %b20 = block {  # false
+                %101:f32 = load %x_102
+                store %x_123_phi, %101
+                %102:f32 = convert %x_105
+                %103:f32 = round %x_52
+                %104:f32 = convert %x_105
+                %105:f32 = round %x_52
+                %106:f32 = div %104, %105
+                %107:f32 = floor %106
+                %108:f32 = mul %103, %107
+                %109:f32 = sub %102, %108
+                %110:bool = lte %109, 0.00999999977648258209f
+                if %110 [t: %b21] {  # if_9
+                  %b21 = block {  # true
+                    %111:f32 = load %x_102
+                    %112:f32 = add %111, 100.0f
+                    store %x_122, %112
+                    %113:f32 = load %x_122
+                    store %x_123_phi, %113
+                    exit_if  # if_9
+                  }
+                }
+                %114:f32 = load %x_123_phi
+                store %x_123, %114
+                %115:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+                %x_125:f32 = load_vector_element %115, 0u
+                %117:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+                %x_127:f32 = load_vector_element %117, 1u
+                %119:bool = gt %x_125, %x_127
+                if %119 [t: %b22] {  # if_10
+                  %b22 = block {  # true
+                    discard
+                    exit_if  # if_10
+                  }
+                }
+                %120:f32 = load %x_123
+                store %x_103_phi, %120
+                exit_if  # if_8
+              }
+            }
+            %121:f32 = load %x_103_phi
+            store %x_103, %121
+            %122:f32 = convert %x_105
+            %123:f32 = load %x_98
+            %124:bool = gte %122, %123
+            if %124 [t: %b23] {  # if_11
+              %b23 = block {  # true
+                %125:f32 = load %x_103
+                store %x_135_phi, %125
+                %126:f32 = load %x_103
+                store %x_136_phi, %126
+                store %x_137_phi, true
+                exit_loop  # loop_2
+              }
+            }
+            continue %b16
+          }
+          %b16 = block {  # continuing
+            %127:i32 = add %x_105, 1i
+            store %x_106, %127
+            %128:f32 = load %x_103
+            store %x_102_phi, %128
+            %129:i32 = load %x_106
+            store %x_105_phi, %129
+            next_iteration %b15
+          }
+        }
+        %130:f32 = load %x_135_phi
+        store %x_135, %130
+        %131:f32 = load %x_136_phi
+        store %x_136, %131
+        %x_137:bool = load %x_137_phi
+        %133:f32 = load %x_135
+        store %x_139_phi, %133
+        if %x_137 [t: %b24] {  # if_12
+          %b24 = block {  # true
+            exit_switch  # switch_2
+          }
+        }
+        %134:f32 = load %x_136
+        store %x_139_phi, %134
+        exit_switch  # switch_2
+      }
+    }
+    %x_139:f32 = load %x_139_phi
+    store_vector_element %c, 1u, %x_139
+    %x_141:f32 = load_vector_element %c, 0u
+    %x_142:f32 = load_vector_element %c, 1u
+    %138:f32 = add %x_141, %x_142
+    store_vector_element %c, 2u, %138
+    store %x_146_phi, 0i
+    loop [b: %b25, c: %b26] {  # loop_3
+      %b25 = block {  # body
+        %x_147:ptr<function, i32, read_write> = var
+        %x_146:i32 = load %x_146_phi
+        %141:bool = lt %x_146, 3i
+        if %141 [t: %b27, f: %b28] {  # if_13
+          %b27 = block {  # true
+            exit_if  # if_13
+          }
+          %b28 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_153:f32 = load_vector_element %c, %x_146
+        %143:bool = gte %x_153, 1.0f
+        if %143 [t: %b29] {  # if_14
+          %b29 = block {  # true
+            %x_157:f32 = load_vector_element %c, %x_146
+            %x_158:f32 = load_vector_element %c, %x_146
+            %146:f32 = mul %x_157, %x_158
+            store_vector_element %c, %x_146, %146
+            %147:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+            %x_161:f32 = load_vector_element %147, 0u
+            %149:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+            %x_163:f32 = load_vector_element %149, 1u
+            %151:bool = gt %x_161, %x_163
+            if %151 [t: %b30] {  # if_15
+              %b30 = block {  # true
+                discard
+                exit_if  # if_15
+              }
+            }
+            exit_if  # if_14
+          }
+        }
+        continue %b26
+      }
+      %b26 = block {  # continuing
+        %152:i32 = add %x_146, 1i
+        store %x_147, %152
+        %153:i32 = load %x_147
+        store %x_146_phi, %153
+        next_iteration %b25
+      }
+    }
+    %x_167:vec3<f32> = load %c
+    %155:vec3<f32> = abs %x_167
+    %x_169:vec3<f32> = normalize %155
+    %157:f32 = access %x_169, 0u
+    %158:f32 = access %x_169, 1u
+    %159:f32 = access %x_169, 2u
+    %160:vec4<f32> = construct %157, %158, %159, 1.0f
+    store %x_GLF_color, %160
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b31 {
+  %b31 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %163:void = call %main_1
+    %164:vec4<f32> = load %x_GLF_color
+    %165:main_out = construct %164
+    ret %165
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..de71938
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.spvasm.expected.ir.msl
@@ -0,0 +1,187 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_13:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%compute_value_f1_f1_ = func(%limit:ptr<function, f32, read_write>, %thirty_two:ptr<function, f32, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %result:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %result, -0.5f
+    store %i, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %9:i32 = load %i
+        %10:bool = lt %9, 800i
+        if %10 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %11:i32 = load %i
+        %12:i32 = mod %11, 32i
+        %13:bool = eq %12, 0i
+        if %13 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %14:f32 = load %result
+            %15:f32 = add %14, 0.40000000596046447754f
+            store %result, %15
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_124:f32 = load %thirty_two
+            %17:i32 = load %i
+            %18:f32 = convert %17
+            %19:f32 = round %x_124
+            %20:i32 = load %i
+            %21:f32 = convert %20
+            %22:f32 = round %x_124
+            %23:f32 = div %21, %22
+            %24:f32 = floor %23
+            %25:f32 = mul %19, %24
+            %26:f32 = sub %18, %25
+            %27:bool = lte %26, 0.00999999977648258209f
+            if %27 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                %28:f32 = load %result
+                %29:f32 = add %28, 100.0f
+                store %result, %29
+                exit_if  # if_3
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        %30:i32 = load %i
+        %31:f32 = convert %30
+        %32:f32 = load %limit
+        %33:bool = gte %31, %32
+        if %33 [t: %b10] {  # if_4
+          %b10 = block {  # true
+            %x_138:f32 = load %result
+            ret %x_138
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %35:i32 = load %i
+        %36:i32 = add %35, 1i
+        store %i, %36
+        next_iteration %b3
+      }
+    }
+    %x_141:f32 = load %result
+    ret %x_141
+  }
+}
+%main_1 = func():void -> %b11 {
+  %b11 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %thirty_two_1:ptr<function, f32, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %param_1:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, f32, read_write> = var
+    %param_3:ptr<function, f32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %46:ptr<uniform, vec2<f32>, read> = access %x_13, 0u
+    %47:f32 = load_vector_element %46, 0u
+    %48:f32 = div %47, 8.0f
+    %49:f32 = round %48
+    store %thirty_two_1, %49
+    %50:f32 = load_vector_element %gl_FragCoord, 0u
+    store %param, %50
+    %51:f32 = load %thirty_two_1
+    store %param_1, %51
+    %x_62:f32 = call %compute_value_f1_f1_, %param, %param_1
+    store_vector_element %c, 0u, %x_62
+    %53:f32 = load_vector_element %gl_FragCoord, 1u
+    store %param_2, %53
+    %54:f32 = load %thirty_two_1
+    store %param_3, %54
+    %x_67:f32 = call %compute_value_f1_f1_, %param_2, %param_3
+    store_vector_element %c, 1u, %x_67
+    %56:f32 = load_vector_element %c, 0u
+    %57:f32 = load_vector_element %c, 1u
+    %58:f32 = add %56, %57
+    store_vector_element %c, 2u, %58
+    store %i_1, 0i
+    loop [b: %b12, c: %b13] {  # loop_2
+      %b12 = block {  # body
+        %59:i32 = load %i_1
+        %60:bool = lt %59, 3i
+        if %60 [t: %b14, f: %b15] {  # if_5
+          %b14 = block {  # true
+            exit_if  # if_5
+          }
+          %b15 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %61:i32 = load %i_1
+        %62:f32 = load_vector_element %c, %61
+        %63:bool = gte %62, 1.0f
+        if %63 [t: %b16] {  # if_6
+          %b16 = block {  # true
+            %x_88:i32 = load %i_1
+            %65:i32 = load %i_1
+            %66:f32 = load_vector_element %c, %65
+            %67:i32 = load %i_1
+            %68:f32 = load_vector_element %c, %67
+            %69:f32 = mul %66, %68
+            store_vector_element %c, %x_88, %69
+            exit_if  # if_6
+          }
+        }
+        continue %b13
+      }
+      %b13 = block {  # continuing
+        %70:i32 = load %i_1
+        %71:i32 = add %70, 1i
+        store %i_1, %71
+        next_iteration %b12
+      }
+    }
+    %72:vec3<f32> = load %c
+    %73:vec3<f32> = abs %72
+    %x_101:vec3<f32> = normalize %73
+    %75:f32 = access %x_101, 0u
+    %76:f32 = access %x_101, 1u
+    %77:f32 = access %x_101, 2u
+    %78:vec4<f32> = construct %75, %76, %77, 1.0f
+    store %x_GLF_color, %78
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b17 {
+  %b17 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %81:void = call %main_1
+    %82:vec4<f32> = load %x_GLF_color
+    %83:main_out = construct %82
+    ret %83
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0c63bb8
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl.expected.ir.msl
@@ -0,0 +1,186 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_13:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%compute_value_f1_f1_ = func(%limit:ptr<function, f32, read_write>, %thirty_two:ptr<function, f32, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %result:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %result, -0.5f
+    store %i, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_111:i32 = load %i
+        %10:bool = lt %x_111, 800i
+        if %10 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_114:i32 = load %i
+        %12:i32 = mod %x_114, 32i
+        %13:bool = eq %12, 0i
+        if %13 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_120:f32 = load %result
+            %15:f32 = add %x_120, 0.40000000596046447754f
+            store %result, %15
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_122:i32 = load %i
+            %x_124:f32 = load %thirty_two
+            %18:f32 = convert %x_122
+            %19:f32 = round %x_124
+            %20:f32 = convert %x_122
+            %21:f32 = round %x_124
+            %22:f32 = div %20, %21
+            %23:f32 = floor %22
+            %24:f32 = mul %19, %23
+            %25:f32 = sub %18, %24
+            %26:bool = lte %25, 0.00999999977648258209f
+            if %26 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                %x_130:f32 = load %result
+                %28:f32 = add %x_130, 100.0f
+                store %result, %28
+                exit_if  # if_3
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        %x_132:i32 = load %i
+        %x_134:f32 = load %limit
+        %31:f32 = convert %x_132
+        %32:bool = gte %31, %x_134
+        if %32 [t: %b10] {  # if_4
+          %b10 = block {  # true
+            %x_138:f32 = load %result
+            ret %x_138
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_139:i32 = load %i
+        %35:i32 = add %x_139, 1i
+        store %i, %35
+        next_iteration %b3
+      }
+    }
+    %x_141:f32 = load %result
+    ret %x_141
+  }
+}
+%main_1 = func():void -> %b11 {
+  %b11 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %thirty_two_1:ptr<function, f32, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %param_1:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, f32, read_write> = var
+    %param_3:ptr<function, f32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %45:ptr<uniform, vec2<f32>, read> = access %x_13, 0u
+    %x_56:f32 = load_vector_element %45, 0u
+    %47:f32 = div %x_56, 8.0f
+    %48:f32 = round %47
+    store %thirty_two_1, %48
+    %x_60:f32 = load_vector_element %gl_FragCoord, 0u
+    store %param, %x_60
+    %x_61:f32 = load %thirty_two_1
+    store %param_1, %x_61
+    %x_62:f32 = call %compute_value_f1_f1_, %param, %param_1
+    store_vector_element %c, 0u, %x_62
+    %x_65:f32 = load_vector_element %gl_FragCoord, 1u
+    store %param_2, %x_65
+    %x_66:f32 = load %thirty_two_1
+    store %param_3, %x_66
+    %x_67:f32 = call %compute_value_f1_f1_, %param_2, %param_3
+    store_vector_element %c, 1u, %x_67
+    %x_70:f32 = load_vector_element %c, 0u
+    %x_72:f32 = load_vector_element %c, 1u
+    %57:f32 = add %x_70, %x_72
+    store_vector_element %c, 2u, %57
+    store %i_1, 0i
+    loop [b: %b12, c: %b13] {  # loop_2
+      %b12 = block {  # body
+        %x_79:i32 = load %i_1
+        %59:bool = lt %x_79, 3i
+        if %59 [t: %b14, f: %b15] {  # if_5
+          %b14 = block {  # true
+            exit_if  # if_5
+          }
+          %b15 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_82:i32 = load %i_1
+        %x_84:f32 = load_vector_element %c, %x_82
+        %62:bool = gte %x_84, 1.0f
+        if %62 [t: %b16] {  # if_6
+          %b16 = block {  # true
+            %x_88:i32 = load %i_1
+            %x_89:i32 = load %i_1
+            %x_91:f32 = load_vector_element %c, %x_89
+            %x_92:i32 = load %i_1
+            %x_94:f32 = load_vector_element %c, %x_92
+            %68:f32 = mul %x_91, %x_94
+            store_vector_element %c, %x_88, %68
+            exit_if  # if_6
+          }
+        }
+        continue %b13
+      }
+      %b13 = block {  # continuing
+        %x_97:i32 = load %i_1
+        %70:i32 = add %x_97, 1i
+        store %i_1, %70
+        next_iteration %b12
+      }
+    }
+    %x_99:vec3<f32> = load %c
+    %72:vec3<f32> = abs %x_99
+    %x_101:vec3<f32> = normalize %72
+    %74:f32 = access %x_101, 0u
+    %75:f32 = access %x_101, 1u
+    %76:f32 = access %x_101, 2u
+    %77:vec4<f32> = construct %74, %75, %76, 1.0f
+    store %x_GLF_color, %77
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b17 {
+  %b17 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %80:void = call %main_1
+    %81:vec4<f32> = load %x_GLF_color
+    %82:main_out = construct %81
+    ret %82
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..609f018
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.spvasm.expected.ir.msl
@@ -0,0 +1,210 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+buf1 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_13:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_20:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%compute_value_f1_f1_ = func(%limit:ptr<function, f32, read_write>, %thirty_two:ptr<function, f32, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %result:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %result, -0.5f
+    store %i, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %10:i32 = load %i
+        %11:bool = lt %10, 800i
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %12:i32 = load %i
+        %13:i32 = mod %12, 32i
+        %14:bool = eq %13, 0i
+        if %14 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %15:f32 = load %result
+            %16:f32 = add %15, 0.40000000596046447754f
+            store %result, %16
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_138:f32 = load %thirty_two
+            %18:i32 = load %i
+            %19:f32 = convert %18
+            %20:f32 = round %x_138
+            %21:i32 = load %i
+            %22:f32 = convert %21
+            %23:f32 = round %x_138
+            %24:f32 = div %22, %23
+            %25:f32 = floor %24
+            %26:f32 = mul %20, %25
+            %27:f32 = sub %19, %26
+            %28:bool = lte %27, 0.00999999977648258209f
+            if %28 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                %29:f32 = load %result
+                %30:f32 = add %29, 100.0f
+                store %result, %30
+                exit_if  # if_3
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        %31:i32 = load %i
+        %32:f32 = convert %31
+        %33:f32 = load %limit
+        %34:bool = gte %32, %33
+        if %34 [t: %b10] {  # if_4
+          %b10 = block {  # true
+            %x_152:f32 = load %result
+            ret %x_152
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %36:i32 = load %i
+        %37:i32 = add %36, 1i
+        store %i, %37
+        next_iteration %b3
+      }
+    }
+    %x_155:f32 = load %result
+    ret %x_155
+  }
+}
+%main_1 = func():void -> %b11 {
+  %b11 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %thirty_two_1:ptr<function, f32, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %param_1:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, f32, read_write> = var
+    %param_3:ptr<function, f32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %x_58:ptr<function, vec3<f32>, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %48:ptr<uniform, vec2<f32>, read> = access %x_13, 0u
+    %49:f32 = load_vector_element %48, 0u
+    %50:f32 = div %49, 8.0f
+    %51:f32 = round %50
+    store %thirty_two_1, %51
+    %52:f32 = load_vector_element %gl_FragCoord, 0u
+    store %param, %52
+    %53:f32 = load %thirty_two_1
+    store %param_1, %53
+    %x_66:f32 = call %compute_value_f1_f1_, %param, %param_1
+    store_vector_element %c, 0u, %x_66
+    %55:f32 = load_vector_element %gl_FragCoord, 1u
+    store %param_2, %55
+    %56:f32 = load %thirty_two_1
+    store %param_3, %56
+    %x_71:f32 = call %compute_value_f1_f1_, %param_2, %param_3
+    store_vector_element %c, 1u, %x_71
+    %58:f32 = load_vector_element %c, 0u
+    %59:f32 = load_vector_element %c, 1u
+    %60:f32 = add %58, %59
+    store_vector_element %c, 2u, %60
+    store %i_1, 0i
+    loop [b: %b12, c: %b13] {  # loop_2
+      %b12 = block {  # body
+        %61:i32 = load %i_1
+        %62:bool = lt %61, 3i
+        if %62 [t: %b14, f: %b15] {  # if_5
+          %b14 = block {  # true
+            exit_if  # if_5
+          }
+          %b15 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %63:i32 = load %i_1
+        %64:f32 = load_vector_element %c, %63
+        %65:bool = gte %64, 1.0f
+        if %65 [t: %b16] {  # if_6
+          %b16 = block {  # true
+            %x_92:i32 = load %i_1
+            %67:i32 = load %i_1
+            %68:f32 = load_vector_element %c, %67
+            %69:i32 = load %i_1
+            %70:f32 = load_vector_element %c, %69
+            %71:f32 = mul %68, %70
+            store_vector_element %c, %x_92, %71
+            exit_if  # if_6
+          }
+        }
+        continue %b13
+      }
+      %b13 = block {  # continuing
+        %72:i32 = load %i_1
+        %73:i32 = add %72, 1i
+        store %i_1, %73
+        next_iteration %b12
+      }
+    }
+    %74:ptr<uniform, vec2<f32>, read> = access %x_20, 0u
+    %75:f32 = load_vector_element %74, 0u
+    %76:ptr<uniform, vec2<f32>, read> = access %x_20, 0u
+    %77:f32 = load_vector_element %76, 1u
+    %78:bool = lt %75, %77
+    if %78 [t: %b17, f: %b18] {  # if_7
+      %b17 = block {  # true
+        %79:vec3<f32> = load %c
+        %80:vec3<f32> = abs %79
+        store %x_58, %80
+        exit_if  # if_7
+      }
+      %b18 = block {  # false
+        %81:vec3<f32> = load %c
+        store %x_58, %81
+        exit_if  # if_7
+      }
+    }
+    %82:vec3<f32> = load %x_58
+    %x_115:vec3<f32> = normalize %82
+    %84:f32 = access %x_115, 0u
+    %85:f32 = access %x_115, 1u
+    %86:f32 = access %x_115, 2u
+    %87:vec4<f32> = construct %84, %85, %86, 1.0f
+    store %x_GLF_color, %87
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b19 {
+  %b19 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %90:void = call %main_1
+    %91:vec4<f32> = load %x_GLF_color
+    %92:main_out = construct %91
+    ret %92
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e9fc950
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl.expected.ir.msl
@@ -0,0 +1,209 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+buf1 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_13:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_20:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+}
+
+%compute_value_f1_f1_ = func(%limit:ptr<function, f32, read_write>, %thirty_two:ptr<function, f32, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %result:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %result, -0.5f
+    store %i, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_125:i32 = load %i
+        %11:bool = lt %x_125, 800i
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_128:i32 = load %i
+        %13:i32 = mod %x_128, 32i
+        %14:bool = eq %13, 0i
+        if %14 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_134:f32 = load %result
+            %16:f32 = add %x_134, 0.40000000596046447754f
+            store %result, %16
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_136:i32 = load %i
+            %x_138:f32 = load %thirty_two
+            %19:f32 = convert %x_136
+            %20:f32 = round %x_138
+            %21:f32 = convert %x_136
+            %22:f32 = round %x_138
+            %23:f32 = div %21, %22
+            %24:f32 = floor %23
+            %25:f32 = mul %20, %24
+            %26:f32 = sub %19, %25
+            %27:bool = lte %26, 0.00999999977648258209f
+            if %27 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                %x_144:f32 = load %result
+                %29:f32 = add %x_144, 100.0f
+                store %result, %29
+                exit_if  # if_3
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        %x_146:i32 = load %i
+        %x_148:f32 = load %limit
+        %32:f32 = convert %x_146
+        %33:bool = gte %32, %x_148
+        if %33 [t: %b10] {  # if_4
+          %b10 = block {  # true
+            %x_152:f32 = load %result
+            ret %x_152
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_153:i32 = load %i
+        %36:i32 = add %x_153, 1i
+        store %i, %36
+        next_iteration %b3
+      }
+    }
+    %x_155:f32 = load %result
+    ret %x_155
+  }
+}
+%main_1 = func():void -> %b11 {
+  %b11 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %thirty_two_1:ptr<function, f32, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %param_1:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, f32, read_write> = var
+    %param_3:ptr<function, f32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %x_58:ptr<function, vec3<f32>, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %47:ptr<uniform, vec2<f32>, read> = access %x_13, 0u
+    %x_60:f32 = load_vector_element %47, 0u
+    %49:f32 = div %x_60, 8.0f
+    %50:f32 = round %49
+    store %thirty_two_1, %50
+    %x_64:f32 = load_vector_element %gl_FragCoord, 0u
+    store %param, %x_64
+    %x_65:f32 = load %thirty_two_1
+    store %param_1, %x_65
+    %x_66:f32 = call %compute_value_f1_f1_, %param, %param_1
+    store_vector_element %c, 0u, %x_66
+    %x_69:f32 = load_vector_element %gl_FragCoord, 1u
+    store %param_2, %x_69
+    %x_70:f32 = load %thirty_two_1
+    store %param_3, %x_70
+    %x_71:f32 = call %compute_value_f1_f1_, %param_2, %param_3
+    store_vector_element %c, 1u, %x_71
+    %x_74:f32 = load_vector_element %c, 0u
+    %x_76:f32 = load_vector_element %c, 1u
+    %59:f32 = add %x_74, %x_76
+    store_vector_element %c, 2u, %59
+    store %i_1, 0i
+    loop [b: %b12, c: %b13] {  # loop_2
+      %b12 = block {  # body
+        %x_83:i32 = load %i_1
+        %61:bool = lt %x_83, 3i
+        if %61 [t: %b14, f: %b15] {  # if_5
+          %b14 = block {  # true
+            exit_if  # if_5
+          }
+          %b15 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_86:i32 = load %i_1
+        %x_88:f32 = load_vector_element %c, %x_86
+        %64:bool = gte %x_88, 1.0f
+        if %64 [t: %b16] {  # if_6
+          %b16 = block {  # true
+            %x_92:i32 = load %i_1
+            %x_93:i32 = load %i_1
+            %x_95:f32 = load_vector_element %c, %x_93
+            %x_96:i32 = load %i_1
+            %x_98:f32 = load_vector_element %c, %x_96
+            %70:f32 = mul %x_95, %x_98
+            store_vector_element %c, %x_92, %70
+            exit_if  # if_6
+          }
+        }
+        continue %b13
+      }
+      %b13 = block {  # continuing
+        %x_101:i32 = load %i_1
+        %72:i32 = add %x_101, 1i
+        store %i_1, %72
+        next_iteration %b12
+      }
+    }
+    %73:ptr<uniform, vec2<f32>, read> = access %x_20, 0u
+    %x_104:f32 = load_vector_element %73, 0u
+    %75:ptr<uniform, vec2<f32>, read> = access %x_20, 0u
+    %x_106:f32 = load_vector_element %75, 1u
+    %77:bool = lt %x_104, %x_106
+    if %77 [t: %b17, f: %b18] {  # if_7
+      %b17 = block {  # true
+        %x_111:vec3<f32> = load %c
+        %79:vec3<f32> = abs %x_111
+        store %x_58, %79
+        exit_if  # if_7
+      }
+      %b18 = block {  # false
+        %x_113:vec3<f32> = load %c
+        store %x_58, %x_113
+        exit_if  # if_7
+      }
+    }
+    %x_114:vec3<f32> = load %x_58
+    %x_115:vec3<f32> = normalize %x_114
+    %83:f32 = access %x_115, 0u
+    %84:f32 = access %x_115, 1u
+    %85:f32 = access %x_115, 2u
+    %86:vec4<f32> = construct %83, %84, %85, 1.0f
+    store %x_GLF_color, %86
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b19 {
+  %b19 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %89:void = call %main_1
+    %90:vec4<f32> = load %x_GLF_color
+    %91:main_out = construct %90
+    ret %91
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..52d7a15
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,203 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%compute_value_f1_f1_ = func(%limit:ptr<function, f32, read_write>, %thirty_two:ptr<function, f32, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %x_91:ptr<function, f32, read_write> = var
+    %x_94:ptr<function, i32, read_write> = var
+    store %x_91, -0.5f
+    store %x_94, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_104:ptr<function, f32, read_write> = var
+        %x_113:ptr<function, f32, read_write> = var
+        %x_92:ptr<function, f32, read_write> = var
+        %x_95:ptr<function, i32, read_write> = var
+        %13:i32 = load %x_94
+        %14:bool = lt %13, 800i
+        if %14 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_112:ptr<function, f32, read_write> = var
+        %16:i32 = load %x_94
+        %17:i32 = mod %16, 32i
+        %18:bool = eq %17, 0i
+        if %18 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %19:f32 = load %x_91
+            %20:f32 = add %19, 0.40000000596046447754f
+            store %x_104, %20
+            %21:f32 = load %x_104
+            store %x_92, %21
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_106:f32 = load %thirty_two
+            %23:f32 = load %x_91
+            store %x_113, %23
+            %24:i32 = load %x_94
+            %25:f32 = convert %24
+            %26:f32 = round %x_106
+            %27:i32 = load %x_94
+            %28:f32 = convert %27
+            %29:f32 = round %x_106
+            %30:f32 = div %28, %29
+            %31:f32 = floor %30
+            %32:f32 = mul %26, %31
+            %33:f32 = sub %25, %32
+            %34:bool = lte %33, 0.00999999977648258209f
+            if %34 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                %35:f32 = load %x_91
+                %36:f32 = add %35, 100.0f
+                store %x_112, %36
+                %37:f32 = load %x_112
+                store %x_113, %37
+                exit_if  # if_3
+              }
+            }
+            %38:f32 = load %x_113
+            store %x_92, %38
+            exit_if  # if_2
+          }
+        }
+        %39:i32 = load %x_94
+        %40:f32 = convert %39
+        %41:f32 = load %limit
+        %42:bool = gte %40, %41
+        if %42 [t: %b10] {  # if_4
+          %b10 = block {  # true
+            %43:f32 = load %x_92
+            ret %43
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %44:i32 = load %x_94
+        %45:i32 = add %44, 1i
+        store %x_95, %45
+        %46:f32 = load %x_92
+        store %x_91, %46
+        %47:i32 = load %x_95
+        store %x_94, %47
+        next_iteration %b3
+      }
+    }
+    %48:f32 = load %x_91
+    ret %48
+  }
+}
+%main_1 = func():void -> %b11 {
+  %b11 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %param_1:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, f32, read_write> = var
+    %param_3:ptr<function, f32, read_write> = var
+    %x_68:ptr<function, i32, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %56:ptr<uniform, vec2<f32>, read> = access %x_10, 0u
+    %57:f32 = load_vector_element %56, 0u
+    %58:f32 = mul %57, 0.125f
+    %x_54:f32 = round %58
+    %60:f32 = load_vector_element %gl_FragCoord, 0u
+    store %param, %60
+    store %param_1, %x_54
+    %x_57:f32 = call %compute_value_f1_f1_, %param, %param_1
+    store_vector_element %c, 0u, %x_57
+    %62:f32 = load_vector_element %gl_FragCoord, 1u
+    store %param_2, %62
+    store %param_3, %x_54
+    %x_61:f32 = call %compute_value_f1_f1_, %param_2, %param_3
+    store_vector_element %c, 1u, %x_61
+    %64:f32 = load_vector_element %c, 0u
+    %65:f32 = load_vector_element %c, 1u
+    %66:f32 = add %64, %65
+    store_vector_element %c, 2u, %66
+    store %x_68, 0i
+    loop [b: %b12, c: %b13] {  # loop_2
+      %b12 = block {  # body
+        %x_69:ptr<function, i32, read_write> = var
+        %68:i32 = load %x_68
+        %69:bool = lt %68, 3i
+        if %69 [t: %b14, f: %b15] {  # if_5
+          %b14 = block {  # true
+            exit_if  # if_5
+          }
+          %b15 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %70:i32 = load %x_68
+        %71:f32 = load_vector_element %c, %70
+        %72:bool = gte %71, 1.0f
+        if %72 [t: %b16] {  # if_6
+          %b16 = block {  # true
+            %73:i32 = load %x_68
+            %74:i32 = load %x_68
+            %75:f32 = load_vector_element %c, %74
+            %76:i32 = load %x_68
+            %77:f32 = load_vector_element %c, %76
+            %78:f32 = mul %75, %77
+            store_vector_element %c, %73, %78
+            exit_if  # if_6
+          }
+        }
+        continue %b13
+      }
+      %b13 = block {  # continuing
+        %79:i32 = load %x_68
+        %80:i32 = add %79, 1i
+        store %x_69, %80
+        %81:i32 = load %x_69
+        store %x_68, %81
+        next_iteration %b12
+      }
+    }
+    %82:vec3<f32> = load %c
+    %83:vec3<f32> = abs %82
+    %x_84:vec3<f32> = normalize %83
+    %85:f32 = access %x_84, 0u
+    %86:f32 = access %x_84, 1u
+    %87:f32 = access %x_84, 2u
+    %88:vec4<f32> = construct %85, %86, %87, 1.0f
+    store %x_GLF_color, %88
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b17 {
+  %b17 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %91:void = call %main_1
+    %92:vec4<f32> = load %x_GLF_color
+    %93:main_out = construct %92
+    ret %93
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e14904d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,202 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%compute_value_f1_f1_ = func(%limit:ptr<function, f32, read_write>, %thirty_two:ptr<function, f32, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %x_91:ptr<function, f32, read_write> = var
+    %x_91_phi:ptr<function, f32, read_write> = var
+    %x_94_phi:ptr<function, i32, read_write> = var
+    store %x_91_phi, -0.5f
+    store %x_94_phi, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_104:ptr<function, f32, read_write> = var
+        %x_113:ptr<function, f32, read_write> = var
+        %x_95:ptr<function, i32, read_write> = var
+        %x_92_phi:ptr<function, f32, read_write> = var
+        %14:f32 = load %x_91_phi
+        store %x_91, %14
+        %x_94:i32 = load %x_94_phi
+        %16:bool = lt %x_94, 800i
+        if %16 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_112:ptr<function, f32, read_write> = var
+        %x_113_phi:ptr<function, f32, read_write> = var
+        %19:i32 = mod %x_94, 32i
+        %20:bool = eq %19, 0i
+        if %20 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %21:f32 = load %x_91
+            %22:f32 = add %21, 0.40000000596046447754f
+            store %x_104, %22
+            %23:f32 = load %x_104
+            store %x_92_phi, %23
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_106:f32 = load %thirty_two
+            %25:f32 = load %x_91
+            store %x_113_phi, %25
+            %26:f32 = convert %x_94
+            %27:f32 = round %x_106
+            %28:f32 = convert %x_94
+            %29:f32 = round %x_106
+            %30:f32 = div %28, %29
+            %31:f32 = floor %30
+            %32:f32 = mul %27, %31
+            %33:f32 = sub %26, %32
+            %34:bool = lte %33, 0.00999999977648258209f
+            if %34 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                %35:f32 = load %x_91
+                %36:f32 = add %35, 100.0f
+                store %x_112, %36
+                %37:f32 = load %x_112
+                store %x_113_phi, %37
+                exit_if  # if_3
+              }
+            }
+            %38:f32 = load %x_113_phi
+            store %x_113, %38
+            %39:f32 = load %x_113
+            store %x_92_phi, %39
+            exit_if  # if_2
+          }
+        }
+        %x_92:ptr<function, f32, read_write> = var
+        %41:f32 = load %x_92_phi
+        store %x_92, %41
+        %x_115:f32 = load %limit
+        %43:f32 = convert %x_94
+        %44:bool = gte %43, %x_115
+        if %44 [t: %b10] {  # if_4
+          %b10 = block {  # true
+            %45:f32 = load %x_92
+            ret %45
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %46:i32 = add %x_94, 1i
+        store %x_95, %46
+        %47:f32 = load %x_92
+        store %x_91_phi, %47
+        %48:i32 = load %x_95
+        store %x_94_phi, %48
+        next_iteration %b3
+      }
+    }
+    %49:f32 = load %x_91
+    ret %49
+  }
+}
+%main_1 = func():void -> %b11 {
+  %b11 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %param_1:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, f32, read_write> = var
+    %param_3:ptr<function, f32, read_write> = var
+    %x_68_phi:ptr<function, i32, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %57:ptr<uniform, vec2<f32>, read> = access %x_10, 0u
+    %x_52:f32 = load_vector_element %57, 0u
+    %59:f32 = mul %x_52, 0.125f
+    %x_54:f32 = round %59
+    %x_56:f32 = load_vector_element %gl_FragCoord, 0u
+    store %param, %x_56
+    store %param_1, %x_54
+    %x_57:f32 = call %compute_value_f1_f1_, %param, %param_1
+    store_vector_element %c, 0u, %x_57
+    %x_60:f32 = load_vector_element %gl_FragCoord, 1u
+    store %param_2, %x_60
+    store %param_3, %x_54
+    %x_61:f32 = call %compute_value_f1_f1_, %param_2, %param_3
+    store_vector_element %c, 1u, %x_61
+    %x_63:f32 = load_vector_element %c, 0u
+    %x_64:f32 = load_vector_element %c, 1u
+    %67:f32 = add %x_63, %x_64
+    store_vector_element %c, 2u, %67
+    store %x_68_phi, 0i
+    loop [b: %b12, c: %b13] {  # loop_2
+      %b12 = block {  # body
+        %x_69:ptr<function, i32, read_write> = var
+        %x_68:i32 = load %x_68_phi
+        %70:bool = lt %x_68, 3i
+        if %70 [t: %b14, f: %b15] {  # if_5
+          %b14 = block {  # true
+            exit_if  # if_5
+          }
+          %b15 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_75:f32 = load_vector_element %c, %x_68
+        %72:bool = gte %x_75, 1.0f
+        if %72 [t: %b16] {  # if_6
+          %b16 = block {  # true
+            %x_79:f32 = load_vector_element %c, %x_68
+            %x_80:f32 = load_vector_element %c, %x_68
+            %75:f32 = mul %x_79, %x_80
+            store_vector_element %c, %x_68, %75
+            exit_if  # if_6
+          }
+        }
+        continue %b13
+      }
+      %b13 = block {  # continuing
+        %76:i32 = add %x_68, 1i
+        store %x_69, %76
+        %77:i32 = load %x_69
+        store %x_68_phi, %77
+        next_iteration %b12
+      }
+    }
+    %x_82:vec3<f32> = load %c
+    %79:vec3<f32> = abs %x_82
+    %x_84:vec3<f32> = normalize %79
+    %81:f32 = access %x_84, 0u
+    %82:f32 = access %x_84, 1u
+    %83:f32 = access %x_84, 2u
+    %84:vec4<f32> = construct %81, %82, %83, 1.0f
+    store %x_GLF_color, %84
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b17 {
+  %b17 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %87:void = call %main_1
+    %88:vec4<f32> = load %x_GLF_color
+    %89:main_out = construct %88
+    ret %89
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..7ea3a9d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.spvasm.expected.ir.msl
@@ -0,0 +1,222 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+buf1 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_16:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%compute_value_f1_f1_ = func(%limit:ptr<function, f32, read_write>, %thirty_two:ptr<function, f32, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %x_104:ptr<function, f32, read_write> = var
+    %x_107:ptr<function, i32, read_write> = var
+    store %x_104, -0.5f
+    store %x_107, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_126:ptr<function, f32, read_write> = var
+        %x_125:ptr<function, f32, read_write> = var
+        %x_105:ptr<function, f32, read_write> = var
+        %x_108:ptr<function, i32, read_write> = var
+        %14:i32 = load %x_107
+        %15:bool = lt %14, 800i
+        if %15 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_124:ptr<function, f32, read_write> = var
+        %17:i32 = load %x_107
+        %18:i32 = mod %17, 32i
+        %19:bool = eq %18, 0i
+        if %19 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %20:f32 = load %x_104
+            %21:f32 = add %20, 0.40000000596046447754f
+            store %x_126, %21
+            %22:f32 = load %x_126
+            store %x_105, %22
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_118:f32 = load %thirty_two
+            %24:f32 = load %x_104
+            store %x_125, %24
+            %25:i32 = load %x_107
+            %26:f32 = convert %25
+            %27:f32 = round %x_118
+            %28:i32 = load %x_107
+            %29:f32 = convert %28
+            %30:f32 = round %x_118
+            %31:f32 = div %29, %30
+            %32:f32 = floor %31
+            %33:f32 = mul %27, %32
+            %34:f32 = sub %26, %33
+            %35:bool = lte %34, 0.00999999977648258209f
+            if %35 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                %36:f32 = load %x_104
+                %37:f32 = add %36, 100.0f
+                store %x_124, %37
+                %38:f32 = load %x_124
+                store %x_125, %38
+                exit_if  # if_3
+              }
+            }
+            %39:f32 = load %x_125
+            store %x_105, %39
+            exit_if  # if_2
+          }
+        }
+        %40:i32 = load %x_107
+        %41:f32 = convert %40
+        %42:f32 = load %limit
+        %43:bool = gte %41, %42
+        if %43 [t: %b10] {  # if_4
+          %b10 = block {  # true
+            %44:f32 = load %x_105
+            ret %44
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %45:i32 = load %x_107
+        %46:i32 = add %45, 1i
+        store %x_108, %46
+        %47:f32 = load %x_105
+        store %x_104, %47
+        %48:i32 = load %x_108
+        store %x_107, %48
+        next_iteration %b3
+      }
+    }
+    %49:f32 = load %x_104
+    ret %49
+  }
+}
+%main_1 = func():void -> %b11 {
+  %b11 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %param_1:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, f32, read_write> = var
+    %param_3:ptr<function, f32, read_write> = var
+    %x_54:ptr<function, vec3<f32>, read_write> = var
+    %x_74:ptr<function, i32, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %58:ptr<uniform, vec2<f32>, read> = access %x_10, 0u
+    %59:f32 = load_vector_element %58, 0u
+    %60:f32 = mul %59, 0.125f
+    %x_58:f32 = round %60
+    %62:f32 = load_vector_element %gl_FragCoord, 0u
+    store %param, %62
+    store %param_1, %x_58
+    %x_61:f32 = call %compute_value_f1_f1_, %param, %param_1
+    store_vector_element %c, 0u, %x_61
+    %64:f32 = load_vector_element %gl_FragCoord, 1u
+    store %param_2, %64
+    store %param_3, %x_58
+    %x_65:f32 = call %compute_value_f1_f1_, %param_2, %param_3
+    store_vector_element %c, 1u, %x_65
+    %x_67:f32 = load_vector_element %c, 0u
+    %67:vec3<f32> = load %c
+    store %x_54, %67
+    %68:f32 = load_vector_element %x_54, 1u
+    %69:f32 = add %x_67, %68
+    store_vector_element %c, 2u, %69
+    store %x_74, 0i
+    loop [b: %b12, c: %b13] {  # loop_2
+      %b12 = block {  # body
+        %x_75:ptr<function, i32, read_write> = var
+        %71:i32 = load %x_74
+        %72:bool = lt %71, 3i
+        if %72 [t: %b14, f: %b15] {  # if_5
+          %b14 = block {  # true
+            exit_if  # if_5
+          }
+          %b15 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %73:i32 = load %x_74
+        %74:f32 = load_vector_element %c, %73
+        %75:bool = gte %74, 1.0f
+        if %75 [t: %b16] {  # if_6
+          %b16 = block {  # true
+            %76:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+            %77:f32 = load_vector_element %76, 0u
+            %78:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+            %79:f32 = load_vector_element %78, 1u
+            %80:bool = gt %77, %79
+            if %80 [t: %b17] {  # if_7
+              %b17 = block {  # true
+                discard
+                exit_if  # if_7
+              }
+            }
+            %81:i32 = load %x_74
+            %82:i32 = load %x_74
+            %83:f32 = load_vector_element %c, %82
+            %84:i32 = load %x_74
+            %85:f32 = load_vector_element %c, %84
+            %86:f32 = mul %83, %85
+            store_vector_element %c, %81, %86
+            exit_if  # if_6
+          }
+        }
+        continue %b13
+      }
+      %b13 = block {  # continuing
+        %87:i32 = load %x_74
+        %88:i32 = add %87, 1i
+        store %x_75, %88
+        %89:i32 = load %x_75
+        store %x_74, %89
+        next_iteration %b12
+      }
+    }
+    %90:vec3<f32> = load %c
+    %91:vec3<f32> = abs %90
+    %x_97:vec3<f32> = normalize %91
+    %93:f32 = access %x_97, 0u
+    %94:f32 = access %x_97, 1u
+    %95:f32 = access %x_97, 2u
+    %96:vec4<f32> = construct %93, %94, %95, 1.0f
+    store %x_GLF_color, %96
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b18 {
+  %b18 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %99:void = call %main_1
+    %100:vec4<f32> = load %x_GLF_color
+    %101:main_out = construct %100
+    ret %101
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..53155ac
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl.expected.ir.msl
@@ -0,0 +1,221 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+buf1 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_16:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%compute_value_f1_f1_ = func(%limit:ptr<function, f32, read_write>, %thirty_two:ptr<function, f32, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %x_104:ptr<function, f32, read_write> = var
+    %x_104_phi:ptr<function, f32, read_write> = var
+    %x_107_phi:ptr<function, i32, read_write> = var
+    store %x_104_phi, -0.5f
+    store %x_107_phi, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_126:ptr<function, f32, read_write> = var
+        %x_125:ptr<function, f32, read_write> = var
+        %x_108:ptr<function, i32, read_write> = var
+        %x_105_phi:ptr<function, f32, read_write> = var
+        %15:f32 = load %x_104_phi
+        store %x_104, %15
+        %x_107:i32 = load %x_107_phi
+        %17:bool = lt %x_107, 800i
+        if %17 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_124:ptr<function, f32, read_write> = var
+        %x_125_phi:ptr<function, f32, read_write> = var
+        %20:i32 = mod %x_107, 32i
+        %21:bool = eq %20, 0i
+        if %21 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %22:f32 = load %x_104
+            %23:f32 = add %22, 0.40000000596046447754f
+            store %x_126, %23
+            %24:f32 = load %x_126
+            store %x_105_phi, %24
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_118:f32 = load %thirty_two
+            %26:f32 = load %x_104
+            store %x_125_phi, %26
+            %27:f32 = convert %x_107
+            %28:f32 = round %x_118
+            %29:f32 = convert %x_107
+            %30:f32 = round %x_118
+            %31:f32 = div %29, %30
+            %32:f32 = floor %31
+            %33:f32 = mul %28, %32
+            %34:f32 = sub %27, %33
+            %35:bool = lte %34, 0.00999999977648258209f
+            if %35 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                %36:f32 = load %x_104
+                %37:f32 = add %36, 100.0f
+                store %x_124, %37
+                %38:f32 = load %x_124
+                store %x_125_phi, %38
+                exit_if  # if_3
+              }
+            }
+            %39:f32 = load %x_125_phi
+            store %x_125, %39
+            %40:f32 = load %x_125
+            store %x_105_phi, %40
+            exit_if  # if_2
+          }
+        }
+        %x_105:ptr<function, f32, read_write> = var
+        %42:f32 = load %x_105_phi
+        store %x_105, %42
+        %x_128:f32 = load %limit
+        %44:f32 = convert %x_107
+        %45:bool = gte %44, %x_128
+        if %45 [t: %b10] {  # if_4
+          %b10 = block {  # true
+            %46:f32 = load %x_105
+            ret %46
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %47:i32 = add %x_107, 1i
+        store %x_108, %47
+        %48:f32 = load %x_105
+        store %x_104_phi, %48
+        %49:i32 = load %x_108
+        store %x_107_phi, %49
+        next_iteration %b3
+      }
+    }
+    %50:f32 = load %x_104
+    ret %50
+  }
+}
+%main_1 = func():void -> %b11 {
+  %b11 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %param_1:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, f32, read_write> = var
+    %param_3:ptr<function, f32, read_write> = var
+    %x_54:ptr<function, vec3<f32>, read_write> = var
+    %x_74_phi:ptr<function, i32, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %59:ptr<uniform, vec2<f32>, read> = access %x_10, 0u
+    %x_56:f32 = load_vector_element %59, 0u
+    %61:f32 = mul %x_56, 0.125f
+    %x_58:f32 = round %61
+    %x_60:f32 = load_vector_element %gl_FragCoord, 0u
+    store %param, %x_60
+    store %param_1, %x_58
+    %x_61:f32 = call %compute_value_f1_f1_, %param, %param_1
+    store_vector_element %c, 0u, %x_61
+    %x_64:f32 = load_vector_element %gl_FragCoord, 1u
+    store %param_2, %x_64
+    store %param_3, %x_58
+    %x_65:f32 = call %compute_value_f1_f1_, %param_2, %param_3
+    store_vector_element %c, 1u, %x_65
+    %x_67:f32 = load_vector_element %c, 0u
+    %x_68:vec3<f32> = load %c
+    store %x_54, %x_68
+    %x_70:f32 = load_vector_element %x_54, 1u
+    %70:f32 = add %x_67, %x_70
+    store_vector_element %c, 2u, %70
+    store %x_74_phi, 0i
+    loop [b: %b12, c: %b13] {  # loop_2
+      %b12 = block {  # body
+        %x_75:ptr<function, i32, read_write> = var
+        %x_74:i32 = load %x_74_phi
+        %73:bool = lt %x_74, 3i
+        if %73 [t: %b14, f: %b15] {  # if_5
+          %b14 = block {  # true
+            exit_if  # if_5
+          }
+          %b15 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_81:f32 = load_vector_element %c, %x_74
+        %75:bool = gte %x_81, 1.0f
+        if %75 [t: %b16] {  # if_6
+          %b16 = block {  # true
+            %76:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+            %x_86:f32 = load_vector_element %76, 0u
+            %78:ptr<uniform, vec2<f32>, read> = access %x_16, 0u
+            %x_88:f32 = load_vector_element %78, 1u
+            %80:bool = gt %x_86, %x_88
+            if %80 [t: %b17] {  # if_7
+              %b17 = block {  # true
+                discard
+                exit_if  # if_7
+              }
+            }
+            %x_92:f32 = load_vector_element %c, %x_74
+            %x_93:f32 = load_vector_element %c, %x_74
+            %83:f32 = mul %x_92, %x_93
+            store_vector_element %c, %x_74, %83
+            exit_if  # if_6
+          }
+        }
+        continue %b13
+      }
+      %b13 = block {  # continuing
+        %84:i32 = add %x_74, 1i
+        store %x_75, %84
+        %85:i32 = load %x_75
+        store %x_74_phi, %85
+        next_iteration %b12
+      }
+    }
+    %x_95:vec3<f32> = load %c
+    %87:vec3<f32> = abs %x_95
+    %x_97:vec3<f32> = normalize %87
+    %89:f32 = access %x_97, 0u
+    %90:f32 = access %x_97, 1u
+    %91:f32 = access %x_97, 2u
+    %92:vec4<f32> = construct %89, %90, %91, 1.0f
+    store %x_GLF_color, %92
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b18 {
+  %b18 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %95:void = call %main_1
+    %96:vec4<f32> = load %x_GLF_color
+    %97:main_out = construct %96
+    ret %97
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..3aced45
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.spvasm.expected.ir.msl
@@ -0,0 +1,243 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+buf1 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_13:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_19:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%compute_value_f1_f1_ = func(%limit:ptr<function, f32, read_write>, %thirty_two:ptr<function, f32, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %result:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %result, -0.5f
+    store %i, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %10:i32 = load %i
+        %11:bool = lt %10, 800i
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %12:i32 = load %i
+        %13:i32 = mod %12, 32i
+        %14:bool = eq %13, 0i
+        if %14 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %15:f32 = load %result
+            %16:f32 = add %15, 0.40000000596046447754f
+            store %result, %16
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_157:f32 = load %thirty_two
+            %18:i32 = load %i
+            %19:f32 = convert %18
+            %20:f32 = round %x_157
+            %21:i32 = load %i
+            %22:f32 = convert %21
+            %23:f32 = round %x_157
+            %24:f32 = div %22, %23
+            %25:f32 = floor %24
+            %26:f32 = mul %20, %25
+            %27:f32 = sub %19, %26
+            %28:bool = lte %27, 0.00999999977648258209f
+            if %28 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                %29:f32 = load %result
+                %30:f32 = add %29, 100.0f
+                store %result, %30
+                exit_if  # if_3
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        %31:i32 = load %i
+        %32:f32 = convert %31
+        %33:f32 = load %limit
+        %34:bool = gte %32, %33
+        if %34 [t: %b10] {  # if_4
+          %b10 = block {  # true
+            %x_171:f32 = load %result
+            ret %x_171
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %36:i32 = load %i
+        %37:i32 = add %36, 1i
+        store %i, %37
+        next_iteration %b3
+      }
+    }
+    %x_174:f32 = load %result
+    ret %x_174
+  }
+}
+%main_1 = func():void -> %b11 {
+  %b11 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %thirty_two_1:ptr<function, f32, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %param_1:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, f32, read_write> = var
+    %param_3:ptr<function, f32, read_write> = var
+    %x_61:ptr<function, vec3<f32>, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j:ptr<function, f32, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %49:ptr<uniform, vec2<f32>, read> = access %x_13, 0u
+    %50:f32 = load_vector_element %49, 0u
+    %51:f32 = div %50, 8.0f
+    %52:f32 = round %51
+    store %thirty_two_1, %52
+    %53:f32 = load_vector_element %gl_FragCoord, 0u
+    store %param, %53
+    %54:f32 = load %thirty_two_1
+    store %param_1, %54
+    %x_69:f32 = call %compute_value_f1_f1_, %param, %param_1
+    store_vector_element %c, 0u, %x_69
+    %56:f32 = load_vector_element %gl_FragCoord, 1u
+    store %param_2, %56
+    %57:f32 = load %thirty_two_1
+    store %param_3, %57
+    %x_74:f32 = call %compute_value_f1_f1_, %param_2, %param_3
+    store_vector_element %c, 1u, %x_74
+    %x_77:f32 = load_vector_element %c, 0u
+    if true [t: %b12, f: %b13] {  # if_5
+      %b12 = block {  # true
+        %60:vec3<f32> = load %c
+        store %x_61, %60
+        exit_if  # if_5
+      }
+      %b13 = block {  # false
+        %61:vec3<f32> = load %c
+        %62:ptr<uniform, vec2<f32>, read> = access %x_19, 0u
+        %63:f32 = load_vector_element %62, 0u
+        %64:vec3<f32> = mul %61, %63
+        store %x_61, %64
+        exit_if  # if_5
+      }
+    }
+    %65:f32 = load_vector_element %x_61, 1u
+    %66:f32 = add %x_77, %65
+    store_vector_element %c, 2u, %66
+    store %i_1, 0i
+    loop [b: %b14, c: %b15] {  # loop_2
+      %b14 = block {  # body
+        %67:i32 = load %i_1
+        %68:bool = lt %67, 3i
+        if %68 [t: %b16, f: %b17] {  # if_6
+          %b16 = block {  # true
+            exit_if  # if_6
+          }
+          %b17 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %69:i32 = load %i_1
+        %70:f32 = load_vector_element %c, %69
+        %71:bool = gte %70, 1.0f
+        if %71 [t: %b18] {  # if_7
+          %b18 = block {  # true
+            %x_103:i32 = load %i_1
+            %73:i32 = load %i_1
+            %74:f32 = load_vector_element %c, %73
+            %75:i32 = load %i_1
+            %76:f32 = load_vector_element %c, %75
+            %77:f32 = mul %74, %76
+            store_vector_element %c, %x_103, %77
+            exit_if  # if_7
+          }
+        }
+        store %j, 0.0f
+        loop [b: %b19, c: %b20] {  # loop_3
+          %b19 = block {  # body
+            %78:ptr<uniform, vec2<f32>, read> = access %x_19, 0u
+            %79:f32 = load_vector_element %78, 0u
+            %80:ptr<uniform, vec2<f32>, read> = access %x_19, 0u
+            %81:f32 = load_vector_element %80, 1u
+            %82:bool = gt %79, %81
+            if %82 [t: %b21, f: %b22] {  # if_8
+              %b21 = block {  # true
+                exit_if  # if_8
+              }
+              %b22 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %83:f32 = load %j
+            %84:ptr<uniform, vec2<f32>, read> = access %x_19, 0u
+            %85:f32 = load_vector_element %84, 0u
+            %86:bool = gte %83, %85
+            if %86 [t: %b23] {  # if_9
+              %b23 = block {  # true
+                exit_loop  # loop_3
+              }
+            }
+            %87:f32 = load %j
+            %88:f32 = add %87, 1.0f
+            store %j, %88
+            continue %b20
+          }
+          %b20 = block {  # continuing
+            next_iteration %b19
+          }
+        }
+        continue %b15
+      }
+      %b15 = block {  # continuing
+        %89:i32 = load %i_1
+        %90:i32 = add %89, 1i
+        store %i_1, %90
+        next_iteration %b14
+      }
+    }
+    %91:vec3<f32> = load %c
+    %92:vec3<f32> = abs %91
+    %x_134:vec3<f32> = normalize %92
+    %94:f32 = access %x_134, 0u
+    %95:f32 = access %x_134, 1u
+    %96:f32 = access %x_134, 2u
+    %97:vec4<f32> = construct %94, %95, %96, 1.0f
+    store %x_GLF_color, %97
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b24 {
+  %b24 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %100:void = call %main_1
+    %101:vec4<f32> = load %x_GLF_color
+    %102:main_out = construct %101
+    ret %102
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..d4b836c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl.expected.ir.msl
@@ -0,0 +1,242 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+buf1 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_13:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_19:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%compute_value_f1_f1_ = func(%limit:ptr<function, f32, read_write>, %thirty_two:ptr<function, f32, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %result:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %result, -0.5f
+    store %i, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_144:i32 = load %i
+        %11:bool = lt %x_144, 800i
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_147:i32 = load %i
+        %13:i32 = mod %x_147, 32i
+        %14:bool = eq %13, 0i
+        if %14 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_153:f32 = load %result
+            %16:f32 = add %x_153, 0.40000000596046447754f
+            store %result, %16
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_155:i32 = load %i
+            %x_157:f32 = load %thirty_two
+            %19:f32 = convert %x_155
+            %20:f32 = round %x_157
+            %21:f32 = convert %x_155
+            %22:f32 = round %x_157
+            %23:f32 = div %21, %22
+            %24:f32 = floor %23
+            %25:f32 = mul %20, %24
+            %26:f32 = sub %19, %25
+            %27:bool = lte %26, 0.00999999977648258209f
+            if %27 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                %x_163:f32 = load %result
+                %29:f32 = add %x_163, 100.0f
+                store %result, %29
+                exit_if  # if_3
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        %x_165:i32 = load %i
+        %x_167:f32 = load %limit
+        %32:f32 = convert %x_165
+        %33:bool = gte %32, %x_167
+        if %33 [t: %b10] {  # if_4
+          %b10 = block {  # true
+            %x_171:f32 = load %result
+            ret %x_171
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_172:i32 = load %i
+        %36:i32 = add %x_172, 1i
+        store %i, %36
+        next_iteration %b3
+      }
+    }
+    %x_174:f32 = load %result
+    ret %x_174
+  }
+}
+%main_1 = func():void -> %b11 {
+  %b11 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %thirty_two_1:ptr<function, f32, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %param_1:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, f32, read_write> = var
+    %param_3:ptr<function, f32, read_write> = var
+    %x_61:ptr<function, vec3<f32>, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j:ptr<function, f32, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %48:ptr<uniform, vec2<f32>, read> = access %x_13, 0u
+    %x_63:f32 = load_vector_element %48, 0u
+    %50:f32 = div %x_63, 8.0f
+    %51:f32 = round %50
+    store %thirty_two_1, %51
+    %x_67:f32 = load_vector_element %gl_FragCoord, 0u
+    store %param, %x_67
+    %x_68:f32 = load %thirty_two_1
+    store %param_1, %x_68
+    %x_69:f32 = call %compute_value_f1_f1_, %param, %param_1
+    store_vector_element %c, 0u, %x_69
+    %x_72:f32 = load_vector_element %gl_FragCoord, 1u
+    store %param_2, %x_72
+    %x_73:f32 = load %thirty_two_1
+    store %param_3, %x_73
+    %x_74:f32 = call %compute_value_f1_f1_, %param_2, %param_3
+    store_vector_element %c, 1u, %x_74
+    %x_77:f32 = load_vector_element %c, 0u
+    if true [t: %b12, f: %b13] {  # if_5
+      %b12 = block {  # true
+        %x_81:vec3<f32> = load %c
+        store %x_61, %x_81
+        exit_if  # if_5
+      }
+      %b13 = block {  # false
+        %x_82:vec3<f32> = load %c
+        %61:ptr<uniform, vec2<f32>, read> = access %x_19, 0u
+        %x_84:f32 = load_vector_element %61, 0u
+        %63:vec3<f32> = mul %x_82, %x_84
+        store %x_61, %63
+        exit_if  # if_5
+      }
+    }
+    %x_87:f32 = load_vector_element %x_61, 1u
+    %65:f32 = add %x_77, %x_87
+    store_vector_element %c, 2u, %65
+    store %i_1, 0i
+    loop [b: %b14, c: %b15] {  # loop_2
+      %b14 = block {  # body
+        %x_94:i32 = load %i_1
+        %67:bool = lt %x_94, 3i
+        if %67 [t: %b16, f: %b17] {  # if_6
+          %b16 = block {  # true
+            exit_if  # if_6
+          }
+          %b17 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_97:i32 = load %i_1
+        %x_99:f32 = load_vector_element %c, %x_97
+        %70:bool = gte %x_99, 1.0f
+        if %70 [t: %b18] {  # if_7
+          %b18 = block {  # true
+            %x_103:i32 = load %i_1
+            %x_104:i32 = load %i_1
+            %x_106:f32 = load_vector_element %c, %x_104
+            %x_107:i32 = load %i_1
+            %x_109:f32 = load_vector_element %c, %x_107
+            %76:f32 = mul %x_106, %x_109
+            store_vector_element %c, %x_103, %76
+            exit_if  # if_7
+          }
+        }
+        store %j, 0.0f
+        loop [b: %b19, c: %b20] {  # loop_3
+          %b19 = block {  # body
+            %77:ptr<uniform, vec2<f32>, read> = access %x_19, 0u
+            %x_117:f32 = load_vector_element %77, 0u
+            %79:ptr<uniform, vec2<f32>, read> = access %x_19, 0u
+            %x_119:f32 = load_vector_element %79, 1u
+            %81:bool = gt %x_117, %x_119
+            if %81 [t: %b21, f: %b22] {  # if_8
+              %b21 = block {  # true
+                exit_if  # if_8
+              }
+              %b22 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %x_122:f32 = load %j
+            %83:ptr<uniform, vec2<f32>, read> = access %x_19, 0u
+            %x_124:f32 = load_vector_element %83, 0u
+            %85:bool = gte %x_122, %x_124
+            if %85 [t: %b23] {  # if_9
+              %b23 = block {  # true
+                exit_loop  # loop_3
+              }
+            }
+            %x_128:f32 = load %j
+            %87:f32 = add %x_128, 1.0f
+            store %j, %87
+            continue %b20
+          }
+          %b20 = block {  # continuing
+            next_iteration %b19
+          }
+        }
+        continue %b15
+      }
+      %b15 = block {  # continuing
+        %x_130:i32 = load %i_1
+        %89:i32 = add %x_130, 1i
+        store %i_1, %89
+        next_iteration %b14
+      }
+    }
+    %x_132:vec3<f32> = load %c
+    %91:vec3<f32> = abs %x_132
+    %x_134:vec3<f32> = normalize %91
+    %93:f32 = access %x_134, 0u
+    %94:f32 = access %x_134, 1u
+    %95:f32 = access %x_134, 2u
+    %96:vec4<f32> = construct %93, %94, %95, 1.0f
+    store %x_GLF_color, %96
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b24 {
+  %b24 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %99:void = call %main_1
+    %100:vec4<f32> = load %x_GLF_color
+    %101:main_out = construct %100
+    ret %101
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..5d2b07b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm.expected.ir.msl
@@ -0,0 +1,206 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_13:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%compute_value_f1_f1_ = func(%limit:ptr<function, f32, read_write>, %thirty_two:ptr<function, f32, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %result:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %result, -0.5f
+    store %i, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %9:i32 = load %i
+        %10:bool = lt %9, 800i
+        if %10 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %11:i32 = load %i
+        %12:i32 = mod %11, 32i
+        %13:bool = eq %12, 0i
+        if %13 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %14:f32 = load %result
+            %15:f32 = add %14, 0.40000000596046447754f
+            store %result, %15
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_149:f32 = load %thirty_two
+            %17:i32 = load %i
+            %18:f32 = convert %17
+            %19:f32 = round %x_149
+            %20:i32 = load %i
+            %21:f32 = convert %20
+            %22:f32 = round %x_149
+            %23:f32 = div %21, %22
+            %24:f32 = floor %23
+            %25:f32 = mul %19, %24
+            %26:f32 = sub %18, %25
+            %27:bool = lte %26, 0.00999999977648258209f
+            if %27 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                %28:f32 = load %result
+                %29:f32 = add %28, 100.0f
+                store %result, %29
+                exit_if  # if_3
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        %30:i32 = load %i
+        %31:f32 = convert %30
+        %32:f32 = load %limit
+        %33:bool = gte %31, %32
+        if %33 [t: %b10] {  # if_4
+          %b10 = block {  # true
+            %x_163:f32 = load %result
+            ret %x_163
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %35:i32 = load %i
+        %36:i32 = add %35, 1i
+        store %i, %36
+        next_iteration %b3
+      }
+    }
+    %x_166:f32 = load %result
+    ret %x_166
+  }
+}
+%main_1 = func():void -> %b11 {
+  %b11 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %thirty_two_1:ptr<function, f32, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %param_1:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, f32, read_write> = var
+    %param_3:ptr<function, f32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %46:ptr<uniform, vec2<f32>, read> = access %x_13, 0u
+    %47:f32 = load_vector_element %46, 0u
+    %48:f32 = div %47, 8.0f
+    %49:f32 = round %48
+    store %thirty_two_1, %49
+    %50:f32 = load_vector_element %gl_FragCoord, 0u
+    store %param, %50
+    %51:f32 = load %thirty_two_1
+    store %param_1, %51
+    %x_69:f32 = call %compute_value_f1_f1_, %param, %param_1
+    store_vector_element %c, 0u, %x_69
+    %53:f32 = load_vector_element %gl_FragCoord, 1u
+    store %param_2, %53
+    %54:f32 = load %thirty_two_1
+    store %param_3, %54
+    %x_74:f32 = call %compute_value_f1_f1_, %param_2, %param_3
+    store_vector_element %c, 1u, %x_74
+    %56:f32 = load_vector_element %c, 0u
+    %57:f32 = load_vector_element %c, 1u
+    %58:vec2<f32> = construct %56, %57
+    %59:f32 = load_vector_element %c, 2u
+    %60:vec2<f32> = construct %59, 1.0f
+    %x_87:mat4x2<f32> = construct %58, %60, vec2<f32>(1.0f, 0.0f), vec2<f32>(1.0f, 0.0f)
+    %62:vec3<f32> = load %c
+    %63:vec3<f32> = mul %62, mat3x3<f32>(vec3<f32>(1.0f, 0.0f, 0.0f), vec3<f32>(0.0f, 1.0f, 0.0f), vec3<f32>(0.0f, 0.0f, 1.0f))
+    %64:f32 = access %63, 0u
+    %65:f32 = access %x_87, 0u, 0u
+    %66:f32 = access %x_87, 0u, 1u
+    %67:f32 = access %x_87, 1u, 0u
+    %68:vec3<f32> = construct %65, %66, %67
+    %69:f32 = access %68, 1u
+    %70:f32 = add %64, %69
+    store_vector_element %c, 2u, %70
+    store %i_1, 0i
+    loop [b: %b12, c: %b13] {  # loop_2
+      %b12 = block {  # body
+        %71:i32 = load %i_1
+        %72:bool = lt %71, 3i
+        if %72 [t: %b14, f: %b15] {  # if_5
+          %b14 = block {  # true
+            exit_if  # if_5
+          }
+          %b15 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %73:i32 = load %i_1
+        %74:f32 = load_vector_element %c, %73
+        %75:bool = gte %74, 1.0f
+        if %75 [t: %b16] {  # if_6
+          %b16 = block {  # true
+            %x_108:i32 = load %i_1
+            %77:i32 = load %i_1
+            %78:f32 = load_vector_element %c, %77
+            %79:i32 = load %i_1
+            %80:f32 = load_vector_element %c, %79
+            %81:f32 = mul %78, %80
+            store_vector_element %c, %x_108, %81
+            %82:f32 = load_vector_element %gl_FragCoord, 1u
+            %83:bool = lt %82, 0.0f
+            if %83 [t: %b17] {  # if_7
+              %b17 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            exit_if  # if_6
+          }
+        }
+        continue %b13
+      }
+      %b13 = block {  # continuing
+        %84:i32 = load %i_1
+        %85:i32 = add %84, 1i
+        store %i_1, %85
+        next_iteration %b12
+      }
+    }
+    %86:vec3<f32> = load %c
+    %87:vec3<f32> = abs %86
+    %x_126:vec3<f32> = normalize %87
+    %89:f32 = access %x_126, 0u
+    %90:f32 = access %x_126, 1u
+    %91:f32 = access %x_126, 2u
+    %92:vec4<f32> = construct %89, %90, %91, 1.0f
+    store %x_GLF_color, %92
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b18 {
+  %b18 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %95:void = call %main_1
+    %96:vec4<f32> = load %x_GLF_color
+    %97:main_out = construct %96
+    ret %97
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..583ee90
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl.expected.ir.msl
@@ -0,0 +1,206 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_13:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%compute_value_f1_f1_ = func(%limit:ptr<function, f32, read_write>, %thirty_two:ptr<function, f32, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %result:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    store %result, -0.5f
+    store %i, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_136:i32 = load %i
+        %10:bool = lt %x_136, 800i
+        if %10 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_139:i32 = load %i
+        %12:i32 = mod %x_139, 32i
+        %13:bool = eq %12, 0i
+        if %13 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_145:f32 = load %result
+            %15:f32 = add %x_145, 0.40000000596046447754f
+            store %result, %15
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_147:i32 = load %i
+            %x_149:f32 = load %thirty_two
+            %18:f32 = convert %x_147
+            %19:f32 = round %x_149
+            %20:f32 = convert %x_147
+            %21:f32 = round %x_149
+            %22:f32 = div %20, %21
+            %23:f32 = floor %22
+            %24:f32 = mul %19, %23
+            %25:f32 = sub %18, %24
+            %26:bool = lte %25, 0.00999999977648258209f
+            if %26 [t: %b9] {  # if_3
+              %b9 = block {  # true
+                %x_155:f32 = load %result
+                %28:f32 = add %x_155, 100.0f
+                store %result, %28
+                exit_if  # if_3
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        %x_157:i32 = load %i
+        %x_159:f32 = load %limit
+        %31:f32 = convert %x_157
+        %32:bool = gte %31, %x_159
+        if %32 [t: %b10] {  # if_4
+          %b10 = block {  # true
+            %x_163:f32 = load %result
+            ret %x_163
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_164:i32 = load %i
+        %35:i32 = add %x_164, 1i
+        store %i, %35
+        next_iteration %b3
+      }
+    }
+    %x_166:f32 = load %result
+    ret %x_166
+  }
+}
+%main_1 = func():void -> %b11 {
+  %b11 = block {
+    %c:ptr<function, vec3<f32>, read_write> = var
+    %thirty_two_1:ptr<function, f32, read_write> = var
+    %param:ptr<function, f32, read_write> = var
+    %param_1:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, f32, read_write> = var
+    %param_3:ptr<function, f32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
+    %45:ptr<uniform, vec2<f32>, read> = access %x_13, 0u
+    %x_63:f32 = load_vector_element %45, 0u
+    %47:f32 = div %x_63, 8.0f
+    %48:f32 = round %47
+    store %thirty_two_1, %48
+    %x_67:f32 = load_vector_element %gl_FragCoord, 0u
+    store %param, %x_67
+    %x_68:f32 = load %thirty_two_1
+    store %param_1, %x_68
+    %x_69:f32 = call %compute_value_f1_f1_, %param, %param_1
+    store_vector_element %c, 0u, %x_69
+    %x_72:f32 = load_vector_element %gl_FragCoord, 1u
+    store %param_2, %x_72
+    %x_73:f32 = load %thirty_two_1
+    store %param_3, %x_73
+    %x_74:f32 = call %compute_value_f1_f1_, %param_2, %param_3
+    store_vector_element %c, 1u, %x_74
+    %x_76:vec3<f32> = load %c
+    %x_79:vec3<f32> = load %c
+    %57:f32 = access %x_79, 0u
+    %58:f32 = access %x_79, 1u
+    %59:vec2<f32> = construct %57, %58
+    %60:f32 = access %x_79, 2u
+    %61:vec2<f32> = construct %60, 1.0f
+    %x_87:mat4x2<f32> = construct %59, %61, vec2<f32>(1.0f, 0.0f), vec2<f32>(1.0f, 0.0f)
+    %63:vec3<f32> = mul %x_76, mat3x3<f32>(vec3<f32>(1.0f, 0.0f, 0.0f), vec3<f32>(0.0f, 1.0f, 0.0f), vec3<f32>(0.0f, 0.0f, 1.0f))
+    %64:f32 = access %63, 0u
+    %65:f32 = access %x_87, 0u, 0u
+    %66:f32 = access %x_87, 0u, 1u
+    %67:f32 = access %x_87, 1u, 0u
+    %68:vec3<f32> = construct %65, %66, %67
+    %69:f32 = access %68, 1u
+    %70:f32 = add %64, %69
+    store_vector_element %c, 2u, %70
+    store %i_1, 0i
+    loop [b: %b12, c: %b13] {  # loop_2
+      %b12 = block {  # body
+        %x_99:i32 = load %i_1
+        %72:bool = lt %x_99, 3i
+        if %72 [t: %b14, f: %b15] {  # if_5
+          %b14 = block {  # true
+            exit_if  # if_5
+          }
+          %b15 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_102:i32 = load %i_1
+        %x_104:f32 = load_vector_element %c, %x_102
+        %75:bool = gte %x_104, 1.0f
+        if %75 [t: %b16] {  # if_6
+          %b16 = block {  # true
+            %x_108:i32 = load %i_1
+            %x_109:i32 = load %i_1
+            %x_111:f32 = load_vector_element %c, %x_109
+            %x_112:i32 = load %i_1
+            %x_114:f32 = load_vector_element %c, %x_112
+            %81:f32 = mul %x_111, %x_114
+            store_vector_element %c, %x_108, %81
+            %x_118:f32 = load_vector_element %gl_FragCoord, 1u
+            %83:bool = lt %x_118, 0.0f
+            if %83 [t: %b17] {  # if_7
+              %b17 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            exit_if  # if_6
+          }
+        }
+        continue %b13
+      }
+      %b13 = block {  # continuing
+        %x_122:i32 = load %i_1
+        %85:i32 = add %x_122, 1i
+        store %i_1, %85
+        next_iteration %b12
+      }
+    }
+    %x_124:vec3<f32> = load %c
+    %87:vec3<f32> = abs %x_124
+    %x_126:vec3<f32> = normalize %87
+    %89:f32 = access %x_126, 0u
+    %90:f32 = access %x_126, 1u
+    %91:f32 = access %x_126, 2u
+    %92:vec4<f32> = construct %89, %90, %91, 1.0f
+    store %x_GLF_color, %92
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b18 {
+  %b18 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %95:void = call %main_1
+    %96:vec4<f32> = load %x_GLF_color
+    %97:main_out = construct %96
+    ret %97
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..d072e0c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.spvasm.expected.ir.msl
@@ -0,0 +1,596 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_34:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %14:i32 = load %f
+    store %k, %14
+    %15:i32 = load %f
+    store %i, %15
+    %16:i32 = load %mid
+    %17:i32 = add %16, 1i
+    store %j, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %18:i32 = load %i
+        %19:i32 = load %mid
+        %20:bool = lte %18, %19
+        %21:i32 = load %j
+        %22:i32 = load %to
+        %23:bool = lte %21, %22
+        %24:bool = and %20, %23
+        if %24 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %25:i32 = load %i
+        %26:ptr<private, i32, read_write> = access %data, %25
+        %27:i32 = load %26
+        %28:i32 = load %j
+        %29:ptr<private, i32, read_write> = access %data, %28
+        %30:i32 = load %29
+        %31:bool = lt %27, %30
+        if %31 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_286:i32 = load %k
+            %33:i32 = load %k
+            %34:i32 = add %33, 1i
+            store %k, %34
+            %x_288:i32 = load %i
+            %36:i32 = load %i
+            %37:i32 = add %36, 1i
+            store %i, %37
+            %38:ptr<private, i32, read_write> = access %temp, %x_286
+            %39:ptr<private, i32, read_write> = access %data, %x_288
+            %40:i32 = load %39
+            store %38, %40
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_293:i32 = load %k
+            %42:i32 = load %k
+            %43:i32 = add %42, 1i
+            store %k, %43
+            %x_295:i32 = load %j
+            %45:i32 = load %j
+            %46:i32 = add %45, 1i
+            store %j, %46
+            %47:ptr<private, i32, read_write> = access %temp, %x_293
+            %48:ptr<private, i32, read_write> = access %data, %x_295
+            %49:i32 = load %48
+            store %47, %49
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %50:i32 = load %i
+        %51:bool = lt %50, 10i
+        %52:i32 = load %i
+        %53:i32 = load %mid
+        %54:bool = lte %52, %53
+        %55:bool = and %51, %54
+        if %55 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_311:i32 = load %k
+        %57:i32 = load %k
+        %58:i32 = add %57, 1i
+        store %k, %58
+        %x_313:i32 = load %i
+        %60:i32 = load %i
+        %61:i32 = add %60, 1i
+        store %i, %61
+        %62:ptr<private, i32, read_write> = access %temp, %x_311
+        %63:ptr<private, i32, read_write> = access %data, %x_313
+        %64:i32 = load %63
+        store %62, %64
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    %65:i32 = load %f
+    store %i_1, %65
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %66:i32 = load %i_1
+        %67:i32 = load %to
+        %68:bool = lte %66, %67
+        if %68 [t: %b15, f: %b16] {  # if_4
+          %b15 = block {  # true
+            exit_if  # if_4
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_327:i32 = load %i_1
+        %70:ptr<private, i32, read_write> = access %data, %x_327
+        %71:i32 = load %i_1
+        %72:ptr<private, i32, read_write> = access %temp, %71
+        %73:i32 = load %72
+        store %70, %73
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %74:i32 = load %i_1
+        %75:i32 = add %74, 1i
+        store %i_1, %75
+        next_iteration %b13
+      }
+    }
+    ret
+  }
+}
+%func_i1_i1_ = func(%m:ptr<function, i32, read_write>, %high:ptr<function, i32, read_write>):i32 -> %b17 {
+  %b17 = block {
+    %x:ptr<function, i32, read_write> = var
+    %x_335:ptr<function, i32, read_write> = var
+    %x_336:ptr<function, i32, read_write> = var
+    %82:f32 = load_vector_element %gl_FragCoord, 0u
+    %83:bool = gte %82, 0.0f
+    if %83 [t: %b18, f: %b19] {  # if_5
+      %b18 = block {  # true
+        if false [t: %b20, f: %b21] {  # if_6
+          %b20 = block {  # true
+            %84:i32 = load %high
+            %85:i32 = shiftl %84, 0u
+            store %x_336, %85
+            exit_if  # if_6
+          }
+          %b21 = block {  # false
+            store %x_336, 4i
+            exit_if  # if_6
+          }
+        }
+        %86:i32 = load %x_336
+        %87:u32 = bitcast %86
+        %88:i32 = shiftl 1i, %87
+        store %x_335, %88
+        exit_if  # if_5
+      }
+      %b19 = block {  # false
+        store %x_335, 1i
+        exit_if  # if_5
+      }
+    }
+    %89:i32 = load %x_335
+    store %x, %89
+    %90:i32 = load %x
+    %91:i32 = shiftr %90, 4u
+    store %x, %91
+    %x_353:i32 = load %m
+    %x_355:i32 = load %m
+    %x_357:i32 = load %m
+    %x_359:i32 = load %x
+    %96:i32 = mul 2i, %x_353
+    %97:i32 = mul 2i, %x_355
+    %98:i32 = mul 2i, %x_357
+    %99:i32 = div %98, %x_359
+    %100:i32 = clamp %96, %97, %99
+    ret %100
+  }
+}
+%mergeSort_ = func():void -> %b22 {
+  %b22 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high_1:ptr<function, i32, read_write> = var
+    %m_1:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high_1, 9i
+    store %m_1, 1i
+    loop [b: %b23, c: %b24] {  # loop_4
+      %b23 = block {  # body
+        %114:i32 = load %m_1
+        %115:i32 = load %high_1
+        %116:bool = lte %114, %115
+        if %116 [t: %b25, f: %b26] {  # if_7
+          %b25 = block {  # true
+            exit_if  # if_7
+          }
+          %b26 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %117:i32 = load %low
+        store %i_2, %117
+        loop [b: %b27, c: %b28] {  # loop_5
+          %b27 = block {  # body
+            %118:i32 = load %i_2
+            %119:i32 = load %high_1
+            %120:bool = lt %118, %119
+            if %120 [t: %b29, f: %b30] {  # if_8
+              %b29 = block {  # true
+                exit_if  # if_8
+              }
+              %b30 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %121:i32 = load %i_2
+            store %f_1, %121
+            %122:i32 = load %i_2
+            %123:i32 = load %m_1
+            %124:i32 = add %122, %123
+            %125:i32 = sub %124, 1i
+            store %mid_1, %125
+            %126:i32 = load %i_2
+            %127:i32 = load %m_1
+            %128:i32 = mul 2i, %127
+            %129:i32 = add %126, %128
+            %130:i32 = sub %129, 1i
+            %131:i32 = load %high_1
+            %132:i32 = min %130, %131
+            store %to_1, %132
+            %133:i32 = load %f_1
+            store %param, %133
+            %134:i32 = load %mid_1
+            store %param_1, %134
+            %135:i32 = load %to_1
+            store %param_2, %135
+            %136:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b28
+          }
+          %b28 = block {  # continuing
+            %137:i32 = load %m_1
+            store %param_3, %137
+            %138:i32 = load %high_1
+            store %param_4, %138
+            %x_398:i32 = call %func_i1_i1_, %param_3, %param_4
+            %140:i32 = load %i_2
+            %141:i32 = add %140, %x_398
+            store %i_2, %141
+            next_iteration %b27
+          }
+        }
+        continue %b24
+      }
+      %b24 = block {  # continuing
+        %142:i32 = load %m_1
+        %143:i32 = mul 2i, %142
+        store %m_1, %143
+        next_iteration %b23
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b31 {
+  %b31 = block {
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %148:ptr<uniform, vec2<f32>, read> = access %x_34, 0u
+    %149:f32 = load_vector_element %148, 0u
+    %150:i32 = convert %149
+    store %i_3, %150
+    loop [b: %b32, c: %b33] {  # loop_6
+      %b32 = block {  # body
+        %x_99:i32 = load %i_3
+        switch %x_99 [c: (9i, %b34), c: (8i, %b35), c: (7i, %b36), c: (6i, %b37), c: (5i, %b38), c: (4i, %b39), c: (3i, %b40), c: (2i, %b41), c: (1i, %b42), c: (0i, %b43), c: (default, %b44)] {  # switch_1
+          %b34 = block {  # case
+            %x_129:i32 = load %i_3
+            %153:ptr<private, i32, read_write> = access %data, %x_129
+            store %153, -5i
+            exit_switch  # switch_1
+          }
+          %b35 = block {  # case
+            %x_127:i32 = load %i_3
+            %155:ptr<private, i32, read_write> = access %data, %x_127
+            store %155, -4i
+            exit_switch  # switch_1
+          }
+          %b36 = block {  # case
+            %x_125:i32 = load %i_3
+            %157:ptr<private, i32, read_write> = access %data, %x_125
+            store %157, -3i
+            exit_switch  # switch_1
+          }
+          %b37 = block {  # case
+            %x_123:i32 = load %i_3
+            %159:ptr<private, i32, read_write> = access %data, %x_123
+            store %159, -2i
+            exit_switch  # switch_1
+          }
+          %b38 = block {  # case
+            %x_121:i32 = load %i_3
+            %161:ptr<private, i32, read_write> = access %data, %x_121
+            store %161, -1i
+            exit_switch  # switch_1
+          }
+          %b39 = block {  # case
+            %x_119:i32 = load %i_3
+            %163:ptr<private, i32, read_write> = access %data, %x_119
+            store %163, 0i
+            exit_switch  # switch_1
+          }
+          %b40 = block {  # case
+            %x_117:i32 = load %i_3
+            %165:ptr<private, i32, read_write> = access %data, %x_117
+            store %165, 1i
+            exit_switch  # switch_1
+          }
+          %b41 = block {  # case
+            %x_115:i32 = load %i_3
+            %167:ptr<private, i32, read_write> = access %data, %x_115
+            store %167, 2i
+            exit_switch  # switch_1
+          }
+          %b42 = block {  # case
+            %x_113:i32 = load %i_3
+            %169:ptr<private, i32, read_write> = access %data, %x_113
+            store %169, 3i
+            exit_switch  # switch_1
+          }
+          %b43 = block {  # case
+            %x_111:i32 = load %i_3
+            %171:ptr<private, i32, read_write> = access %data, %x_111
+            store %171, 4i
+            exit_switch  # switch_1
+          }
+          %b44 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %172:i32 = load %i_3
+        %173:i32 = add %172, 1i
+        store %i_3, %173
+        continue %b33
+      }
+      %b33 = block {  # continuing
+        %x_133:i32 = load %i_3
+        %175:bool = lt %x_133, 10i
+        %176:bool = eq %175, false
+        break_if %176 %b32
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b45, c: %b46] {  # loop_7
+      %b45 = block {  # body
+        %177:i32 = load %j_1
+        %178:bool = lt %177, 10i
+        if %178 [t: %b47, f: %b48] {  # if_9
+          %b47 = block {  # true
+            exit_if  # if_9
+          }
+          %b48 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %x_142:i32 = load %j_1
+        %180:ptr<private, i32, read_write> = access %temp, %x_142
+        %181:i32 = load %j_1
+        %182:ptr<private, i32, read_write> = access %data, %181
+        %183:i32 = load %182
+        store %180, %183
+        continue %b46
+      }
+      %b46 = block {  # continuing
+        %184:i32 = load %j_1
+        %185:i32 = add %184, 1i
+        store %j_1, %185
+        next_iteration %b45
+      }
+    }
+    %186:void = call %mergeSort_
+    %187:f32 = load_vector_element %gl_FragCoord, 1u
+    %188:i32 = convert %187
+    %189:bool = lt %188, 30i
+    if %189 [t: %b49, f: %b50] {  # if_10
+      %b49 = block {  # true
+        %190:ptr<private, i32, read_write> = access %data, 0i
+        %191:i32 = load %190
+        %192:f32 = convert %191
+        %193:f32 = div %192, 10.0f
+        %194:f32 = add 0.5f, %193
+        store %grey, %194
+        exit_if  # if_10
+      }
+      %b50 = block {  # false
+        %195:f32 = load_vector_element %gl_FragCoord, 1u
+        %196:i32 = convert %195
+        %197:bool = lt %196, 60i
+        if %197 [t: %b51, f: %b52] {  # if_11
+          %b51 = block {  # true
+            %198:ptr<private, i32, read_write> = access %data, 1i
+            %199:i32 = load %198
+            %200:f32 = convert %199
+            %201:f32 = div %200, 10.0f
+            %202:f32 = add 0.5f, %201
+            store %grey, %202
+            exit_if  # if_11
+          }
+          %b52 = block {  # false
+            %203:f32 = load_vector_element %gl_FragCoord, 1u
+            %204:i32 = convert %203
+            %205:bool = lt %204, 90i
+            if %205 [t: %b53, f: %b54] {  # if_12
+              %b53 = block {  # true
+                %206:ptr<private, i32, read_write> = access %data, 2i
+                %207:i32 = load %206
+                %208:f32 = convert %207
+                %209:f32 = div %208, 10.0f
+                %210:f32 = add 0.5f, %209
+                store %grey, %210
+                exit_if  # if_12
+              }
+              %b54 = block {  # false
+                %211:f32 = load_vector_element %gl_FragCoord, 1u
+                %212:i32 = convert %211
+                %213:bool = lt %212, 120i
+                if %213 [t: %b55, f: %b56] {  # if_13
+                  %b55 = block {  # true
+                    %214:ptr<private, i32, read_write> = access %data, 3i
+                    %215:i32 = load %214
+                    %216:f32 = convert %215
+                    %217:f32 = div %216, 10.0f
+                    %218:f32 = add 0.5f, %217
+                    store %grey, %218
+                    exit_if  # if_13
+                  }
+                  %b56 = block {  # false
+                    %219:f32 = load_vector_element %gl_FragCoord, 1u
+                    %220:i32 = convert %219
+                    %221:bool = lt %220, 150i
+                    if %221 [t: %b57, f: %b58] {  # if_14
+                      %b57 = block {  # true
+                        discard
+                        exit_if  # if_14
+                      }
+                      %b58 = block {  # false
+                        %222:f32 = load_vector_element %gl_FragCoord, 1u
+                        %223:i32 = convert %222
+                        %224:bool = lt %223, 180i
+                        if %224 [t: %b59, f: %b60] {  # if_15
+                          %b59 = block {  # true
+                            %225:ptr<private, i32, read_write> = access %data, 5i
+                            %226:i32 = load %225
+                            %227:f32 = convert %226
+                            %228:f32 = div %227, 10.0f
+                            %229:f32 = add 0.5f, %228
+                            store %grey, %229
+                            exit_if  # if_15
+                          }
+                          %b60 = block {  # false
+                            %230:f32 = load_vector_element %gl_FragCoord, 1u
+                            %231:i32 = convert %230
+                            %232:bool = lt %231, 210i
+                            if %232 [t: %b61, f: %b62] {  # if_16
+                              %b61 = block {  # true
+                                %233:ptr<private, i32, read_write> = access %data, 6i
+                                %234:i32 = load %233
+                                %235:f32 = convert %234
+                                %236:f32 = div %235, 10.0f
+                                %237:f32 = add 0.5f, %236
+                                store %grey, %237
+                                exit_if  # if_16
+                              }
+                              %b62 = block {  # false
+                                %238:f32 = load_vector_element %gl_FragCoord, 1u
+                                %239:i32 = convert %238
+                                %240:bool = lt %239, 240i
+                                if %240 [t: %b63, f: %b64] {  # if_17
+                                  %b63 = block {  # true
+                                    %241:ptr<private, i32, read_write> = access %data, 7i
+                                    %242:i32 = load %241
+                                    %243:f32 = convert %242
+                                    %244:f32 = div %243, 10.0f
+                                    %245:f32 = add 0.5f, %244
+                                    store %grey, %245
+                                    exit_if  # if_17
+                                  }
+                                  %b64 = block {  # false
+                                    %246:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %247:i32 = convert %246
+                                    %248:bool = lt %247, 270i
+                                    if %248 [t: %b65, f: %b66] {  # if_18
+                                      %b65 = block {  # true
+                                        %249:ptr<private, i32, read_write> = access %data, 8i
+                                        %250:i32 = load %249
+                                        %251:f32 = convert %250
+                                        %252:f32 = div %251, 10.0f
+                                        %253:f32 = add 0.5f, %252
+                                        store %grey, %253
+                                        exit_if  # if_18
+                                      }
+                                      %b66 = block {  # false
+                                        discard
+                                        exit_if  # if_18
+                                      }
+                                    }
+                                    exit_if  # if_17
+                                  }
+                                }
+                                exit_if  # if_16
+                              }
+                            }
+                            exit_if  # if_15
+                          }
+                        }
+                        exit_if  # if_14
+                      }
+                    }
+                    exit_if  # if_13
+                  }
+                }
+                exit_if  # if_12
+              }
+            }
+            exit_if  # if_11
+          }
+        }
+        exit_if  # if_10
+      }
+    }
+    %254:f32 = load %grey
+    %x_254:vec3<f32> = construct %254
+    %256:f32 = access %x_254, 0u
+    %257:f32 = access %x_254, 1u
+    %258:f32 = access %x_254, 2u
+    %259:vec4<f32> = construct %256, %257, %258, 1.0f
+    store %x_GLF_color, %259
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b67 {
+  %b67 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %262:void = call %main_1
+    %263:vec4<f32> = load %x_GLF_color
+    %264:main_out = construct %263
+    ret %264
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..de8988c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl.expected.ir.msl
@@ -0,0 +1,590 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_34:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %x_260:i32 = load %f
+    store %k, %x_260
+    %x_261:i32 = load %f
+    store %i, %x_261
+    %x_262:i32 = load %mid
+    %17:i32 = add %x_262, 1i
+    store %j, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_268:i32 = load %i
+        %x_269:i32 = load %mid
+        %x_271:i32 = load %j
+        %x_272:i32 = load %to
+        %22:bool = lte %x_268, %x_269
+        %23:bool = lte %x_271, %x_272
+        %24:bool = and %22, %23
+        if %24 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_276:i32 = load %i
+        %26:ptr<private, i32, read_write> = access %data, %x_276
+        %x_278:i32 = load %26
+        %x_279:i32 = load %j
+        %29:ptr<private, i32, read_write> = access %data, %x_279
+        %x_281:i32 = load %29
+        %31:bool = lt %x_278, %x_281
+        if %31 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_286:i32 = load %k
+            %33:i32 = add %x_286, 1i
+            store %k, %33
+            %x_288:i32 = load %i
+            %35:i32 = add %x_288, 1i
+            store %i, %35
+            %36:ptr<private, i32, read_write> = access %data, %x_288
+            %x_291:i32 = load %36
+            %38:ptr<private, i32, read_write> = access %temp, %x_286
+            store %38, %x_291
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_293:i32 = load %k
+            %40:i32 = add %x_293, 1i
+            store %k, %40
+            %x_295:i32 = load %j
+            %42:i32 = add %x_295, 1i
+            store %j, %42
+            %43:ptr<private, i32, read_write> = access %data, %x_295
+            %x_298:i32 = load %43
+            %45:ptr<private, i32, read_write> = access %temp, %x_293
+            store %45, %x_298
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %x_304:i32 = load %i
+        %x_306:i32 = load %i
+        %x_307:i32 = load %mid
+        %49:bool = lt %x_304, 10i
+        %50:bool = lte %x_306, %x_307
+        %51:bool = and %49, %50
+        if %51 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_311:i32 = load %k
+        %53:i32 = add %x_311, 1i
+        store %k, %53
+        %x_313:i32 = load %i
+        %55:i32 = add %x_313, 1i
+        store %i, %55
+        %56:ptr<private, i32, read_write> = access %data, %x_313
+        %x_316:i32 = load %56
+        %58:ptr<private, i32, read_write> = access %temp, %x_311
+        store %58, %x_316
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    %x_318:i32 = load %f
+    store %i_1, %x_318
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %x_323:i32 = load %i_1
+        %x_324:i32 = load %to
+        %62:bool = lte %x_323, %x_324
+        if %62 [t: %b15, f: %b16] {  # if_4
+          %b15 = block {  # true
+            exit_if  # if_4
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_327:i32 = load %i_1
+        %x_328:i32 = load %i_1
+        %65:ptr<private, i32, read_write> = access %temp, %x_328
+        %x_330:i32 = load %65
+        %67:ptr<private, i32, read_write> = access %data, %x_327
+        store %67, %x_330
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %x_332:i32 = load %i_1
+        %69:i32 = add %x_332, 1i
+        store %i_1, %69
+        next_iteration %b13
+      }
+    }
+    ret
+  }
+}
+%func_i1_i1_ = func(%m:ptr<function, i32, read_write>, %high:ptr<function, i32, read_write>):i32 -> %b17 {
+  %b17 = block {
+    %x:ptr<function, i32, read_write> = var
+    %x_335:ptr<function, i32, read_write> = var
+    %x_336:ptr<function, i32, read_write> = var
+    %x_338:f32 = load_vector_element %gl_FragCoord, 0u
+    %77:bool = gte %x_338, 0.0f
+    if %77 [t: %b18, f: %b19] {  # if_5
+      %b18 = block {  # true
+        if false [t: %b20, f: %b21] {  # if_6
+          %b20 = block {  # true
+            %x_346:i32 = load %high
+            %79:i32 = shiftl %x_346, 0u
+            store %x_336, %79
+            exit_if  # if_6
+          }
+          %b21 = block {  # false
+            store %x_336, 4i
+            exit_if  # if_6
+          }
+        }
+        %x_348:i32 = load %x_336
+        %81:u32 = bitcast %x_348
+        %82:i32 = shiftl 1i, %81
+        store %x_335, %82
+        exit_if  # if_5
+      }
+      %b19 = block {  # false
+        store %x_335, 1i
+        exit_if  # if_5
+      }
+    }
+    %x_350:i32 = load %x_335
+    store %x, %x_350
+    %x_351:i32 = load %x
+    %85:i32 = shiftr %x_351, 4u
+    store %x, %85
+    %x_353:i32 = load %m
+    %x_355:i32 = load %m
+    %x_357:i32 = load %m
+    %x_359:i32 = load %x
+    %90:i32 = mul 2i, %x_353
+    %91:i32 = mul 2i, %x_355
+    %92:i32 = mul 2i, %x_357
+    %93:i32 = div %92, %x_359
+    %94:i32 = clamp %90, %91, %93
+    ret %94
+  }
+}
+%mergeSort_ = func():void -> %b22 {
+  %b22 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high_1:ptr<function, i32, read_write> = var
+    %m_1:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high_1, 9i
+    store %m_1, 1i
+    loop [b: %b23, c: %b24] {  # loop_4
+      %b23 = block {  # body
+        %x_367:i32 = load %m_1
+        %x_368:i32 = load %high_1
+        %110:bool = lte %x_367, %x_368
+        if %110 [t: %b25, f: %b26] {  # if_7
+          %b25 = block {  # true
+            exit_if  # if_7
+          }
+          %b26 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %x_371:i32 = load %low
+        store %i_2, %x_371
+        loop [b: %b27, c: %b28] {  # loop_5
+          %b27 = block {  # body
+            %x_376:i32 = load %i_2
+            %x_377:i32 = load %high_1
+            %114:bool = lt %x_376, %x_377
+            if %114 [t: %b29, f: %b30] {  # if_8
+              %b29 = block {  # true
+                exit_if  # if_8
+              }
+              %b30 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %x_380:i32 = load %i_2
+            store %f_1, %x_380
+            %x_381:i32 = load %i_2
+            %x_382:i32 = load %m_1
+            %118:i32 = add %x_381, %x_382
+            %119:i32 = sub %118, 1i
+            store %mid_1, %119
+            %x_385:i32 = load %i_2
+            %x_386:i32 = load %m_1
+            %x_390:i32 = load %high_1
+            %123:i32 = mul 2i, %x_386
+            %124:i32 = add %x_385, %123
+            %125:i32 = sub %124, 1i
+            %126:i32 = min %125, %x_390
+            store %to_1, %126
+            %x_392:i32 = load %f_1
+            store %param, %x_392
+            %x_393:i32 = load %mid_1
+            store %param_1, %x_393
+            %x_394:i32 = load %to_1
+            store %param_2, %x_394
+            %130:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b28
+          }
+          %b28 = block {  # continuing
+            %x_396:i32 = load %m_1
+            store %param_3, %x_396
+            %x_397:i32 = load %high_1
+            store %param_4, %x_397
+            %x_398:i32 = call %func_i1_i1_, %param_3, %param_4
+            %x_399:i32 = load %i_2
+            %135:i32 = add %x_399, %x_398
+            store %i_2, %135
+            next_iteration %b27
+          }
+        }
+        continue %b24
+      }
+      %b24 = block {  # continuing
+        %x_401:i32 = load %m_1
+        %137:i32 = mul 2i, %x_401
+        store %m_1, %137
+        next_iteration %b23
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b31 {
+  %b31 = block {
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %142:ptr<uniform, vec2<f32>, read> = access %x_34, 0u
+    %x_93:f32 = load_vector_element %142, 0u
+    %144:i32 = convert %x_93
+    store %i_3, %144
+    loop [b: %b32, c: %b33] {  # loop_6
+      %b32 = block {  # body
+        %x_99:i32 = load %i_3
+        switch %x_99 [c: (9i, %b34), c: (8i, %b35), c: (7i, %b36), c: (6i, %b37), c: (5i, %b38), c: (4i, %b39), c: (3i, %b40), c: (2i, %b41), c: (1i, %b42), c: (0i, %b43), c: (default, %b44)] {  # switch_1
+          %b34 = block {  # case
+            %x_129:i32 = load %i_3
+            %147:ptr<private, i32, read_write> = access %data, %x_129
+            store %147, -5i
+            exit_switch  # switch_1
+          }
+          %b35 = block {  # case
+            %x_127:i32 = load %i_3
+            %149:ptr<private, i32, read_write> = access %data, %x_127
+            store %149, -4i
+            exit_switch  # switch_1
+          }
+          %b36 = block {  # case
+            %x_125:i32 = load %i_3
+            %151:ptr<private, i32, read_write> = access %data, %x_125
+            store %151, -3i
+            exit_switch  # switch_1
+          }
+          %b37 = block {  # case
+            %x_123:i32 = load %i_3
+            %153:ptr<private, i32, read_write> = access %data, %x_123
+            store %153, -2i
+            exit_switch  # switch_1
+          }
+          %b38 = block {  # case
+            %x_121:i32 = load %i_3
+            %155:ptr<private, i32, read_write> = access %data, %x_121
+            store %155, -1i
+            exit_switch  # switch_1
+          }
+          %b39 = block {  # case
+            %x_119:i32 = load %i_3
+            %157:ptr<private, i32, read_write> = access %data, %x_119
+            store %157, 0i
+            exit_switch  # switch_1
+          }
+          %b40 = block {  # case
+            %x_117:i32 = load %i_3
+            %159:ptr<private, i32, read_write> = access %data, %x_117
+            store %159, 1i
+            exit_switch  # switch_1
+          }
+          %b41 = block {  # case
+            %x_115:i32 = load %i_3
+            %161:ptr<private, i32, read_write> = access %data, %x_115
+            store %161, 2i
+            exit_switch  # switch_1
+          }
+          %b42 = block {  # case
+            %x_113:i32 = load %i_3
+            %163:ptr<private, i32, read_write> = access %data, %x_113
+            store %163, 3i
+            exit_switch  # switch_1
+          }
+          %b43 = block {  # case
+            %x_111:i32 = load %i_3
+            %165:ptr<private, i32, read_write> = access %data, %x_111
+            store %165, 4i
+            exit_switch  # switch_1
+          }
+          %b44 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %x_131:i32 = load %i_3
+        %167:i32 = add %x_131, 1i
+        store %i_3, %167
+        continue %b33
+      }
+      %b33 = block {  # continuing
+        %x_133:i32 = load %i_3
+        %169:bool = lt %x_133, 10i
+        %170:bool = eq %169, false
+        break_if %170 %b32
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b45, c: %b46] {  # loop_7
+      %b45 = block {  # body
+        %x_139:i32 = load %j_1
+        %172:bool = lt %x_139, 10i
+        if %172 [t: %b47, f: %b48] {  # if_9
+          %b47 = block {  # true
+            exit_if  # if_9
+          }
+          %b48 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %x_142:i32 = load %j_1
+        %x_143:i32 = load %j_1
+        %175:ptr<private, i32, read_write> = access %data, %x_143
+        %x_145:i32 = load %175
+        %177:ptr<private, i32, read_write> = access %temp, %x_142
+        store %177, %x_145
+        continue %b46
+      }
+      %b46 = block {  # continuing
+        %x_147:i32 = load %j_1
+        %179:i32 = add %x_147, 1i
+        store %j_1, %179
+        next_iteration %b45
+      }
+    }
+    %180:void = call %mergeSort_
+    %x_151:f32 = load_vector_element %gl_FragCoord, 1u
+    %182:i32 = convert %x_151
+    %183:bool = lt %182, 30i
+    if %183 [t: %b49, f: %b50] {  # if_10
+      %b49 = block {  # true
+        %184:ptr<private, i32, read_write> = access %data, 0i
+        %x_158:i32 = load %184
+        %186:f32 = convert %x_158
+        %187:f32 = div %186, 10.0f
+        %188:f32 = add 0.5f, %187
+        store %grey, %188
+        exit_if  # if_10
+      }
+      %b50 = block {  # false
+        %x_163:f32 = load_vector_element %gl_FragCoord, 1u
+        %190:i32 = convert %x_163
+        %191:bool = lt %190, 60i
+        if %191 [t: %b51, f: %b52] {  # if_11
+          %b51 = block {  # true
+            %192:ptr<private, i32, read_write> = access %data, 1i
+            %x_170:i32 = load %192
+            %194:f32 = convert %x_170
+            %195:f32 = div %194, 10.0f
+            %196:f32 = add 0.5f, %195
+            store %grey, %196
+            exit_if  # if_11
+          }
+          %b52 = block {  # false
+            %x_175:f32 = load_vector_element %gl_FragCoord, 1u
+            %198:i32 = convert %x_175
+            %199:bool = lt %198, 90i
+            if %199 [t: %b53, f: %b54] {  # if_12
+              %b53 = block {  # true
+                %200:ptr<private, i32, read_write> = access %data, 2i
+                %x_182:i32 = load %200
+                %202:f32 = convert %x_182
+                %203:f32 = div %202, 10.0f
+                %204:f32 = add 0.5f, %203
+                store %grey, %204
+                exit_if  # if_12
+              }
+              %b54 = block {  # false
+                %x_187:f32 = load_vector_element %gl_FragCoord, 1u
+                %206:i32 = convert %x_187
+                %207:bool = lt %206, 120i
+                if %207 [t: %b55, f: %b56] {  # if_13
+                  %b55 = block {  # true
+                    %208:ptr<private, i32, read_write> = access %data, 3i
+                    %x_194:i32 = load %208
+                    %210:f32 = convert %x_194
+                    %211:f32 = div %210, 10.0f
+                    %212:f32 = add 0.5f, %211
+                    store %grey, %212
+                    exit_if  # if_13
+                  }
+                  %b56 = block {  # false
+                    %x_199:f32 = load_vector_element %gl_FragCoord, 1u
+                    %214:i32 = convert %x_199
+                    %215:bool = lt %214, 150i
+                    if %215 [t: %b57, f: %b58] {  # if_14
+                      %b57 = block {  # true
+                        discard
+                        exit_if  # if_14
+                      }
+                      %b58 = block {  # false
+                        %x_206:f32 = load_vector_element %gl_FragCoord, 1u
+                        %217:i32 = convert %x_206
+                        %218:bool = lt %217, 180i
+                        if %218 [t: %b59, f: %b60] {  # if_15
+                          %b59 = block {  # true
+                            %219:ptr<private, i32, read_write> = access %data, 5i
+                            %x_213:i32 = load %219
+                            %221:f32 = convert %x_213
+                            %222:f32 = div %221, 10.0f
+                            %223:f32 = add 0.5f, %222
+                            store %grey, %223
+                            exit_if  # if_15
+                          }
+                          %b60 = block {  # false
+                            %x_218:f32 = load_vector_element %gl_FragCoord, 1u
+                            %225:i32 = convert %x_218
+                            %226:bool = lt %225, 210i
+                            if %226 [t: %b61, f: %b62] {  # if_16
+                              %b61 = block {  # true
+                                %227:ptr<private, i32, read_write> = access %data, 6i
+                                %x_225:i32 = load %227
+                                %229:f32 = convert %x_225
+                                %230:f32 = div %229, 10.0f
+                                %231:f32 = add 0.5f, %230
+                                store %grey, %231
+                                exit_if  # if_16
+                              }
+                              %b62 = block {  # false
+                                %x_230:f32 = load_vector_element %gl_FragCoord, 1u
+                                %233:i32 = convert %x_230
+                                %234:bool = lt %233, 240i
+                                if %234 [t: %b63, f: %b64] {  # if_17
+                                  %b63 = block {  # true
+                                    %235:ptr<private, i32, read_write> = access %data, 7i
+                                    %x_237:i32 = load %235
+                                    %237:f32 = convert %x_237
+                                    %238:f32 = div %237, 10.0f
+                                    %239:f32 = add 0.5f, %238
+                                    store %grey, %239
+                                    exit_if  # if_17
+                                  }
+                                  %b64 = block {  # false
+                                    %x_242:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %241:i32 = convert %x_242
+                                    %242:bool = lt %241, 270i
+                                    if %242 [t: %b65, f: %b66] {  # if_18
+                                      %b65 = block {  # true
+                                        %243:ptr<private, i32, read_write> = access %data, 8i
+                                        %x_249:i32 = load %243
+                                        %245:f32 = convert %x_249
+                                        %246:f32 = div %245, 10.0f
+                                        %247:f32 = add 0.5f, %246
+                                        store %grey, %247
+                                        exit_if  # if_18
+                                      }
+                                      %b66 = block {  # false
+                                        discard
+                                        exit_if  # if_18
+                                      }
+                                    }
+                                    exit_if  # if_17
+                                  }
+                                }
+                                exit_if  # if_16
+                              }
+                            }
+                            exit_if  # if_15
+                          }
+                        }
+                        exit_if  # if_14
+                      }
+                    }
+                    exit_if  # if_13
+                  }
+                }
+                exit_if  # if_12
+              }
+            }
+            exit_if  # if_11
+          }
+        }
+        exit_if  # if_10
+      }
+    }
+    %x_253:f32 = load %grey
+    %x_254:vec3<f32> = construct %x_253, %x_253, %x_253
+    %250:f32 = access %x_254, 0u
+    %251:f32 = access %x_254, 1u
+    %252:f32 = access %x_254, 2u
+    %253:vec4<f32> = construct %250, %251, %252, 1.0f
+    store %x_GLF_color, %253
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b67 {
+  %b67 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %256:void = call %main_1
+    %257:vec4<f32> = load %x_GLF_color
+    %258:main_out = construct %257
+    ret %258
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b9ef350
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.spvasm.expected.ir.msl
@@ -0,0 +1,637 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, array<i32, 10>, read_write> = var
+    %data:ptr<function, array<i32, 10>, read_write> = var
+    %x_65:ptr<function, i32, read_write> = var
+    %x_93:ptr<function, i32, read_write> = var
+    %x_102:ptr<function, i32, read_write> = var
+    %x_180:ptr<function, f32, read_write> = var
+    %x_279:ptr<function, f32, read_write> = var
+    %x_280:ptr<function, f32, read_write> = var
+    %13:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %x_62:f32 = load_vector_element %13, 0u
+    %15:i32 = convert %x_62
+    store %x_65, %15
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_66:ptr<function, i32, read_write> = var
+        %17:i32 = load %x_65
+        switch %17 [c: (9i, %b5), c: (8i, %b6), c: (7i, %b7), c: (6i, %b8), c: (5i, %b9), c: (4i, %b10), c: (3i, %b11), c: (2i, %b12), c: (1i, %b13), c: (0i, %b14), c: (default, %b15)] {  # switch_1
+          %b5 = block {  # case
+            %18:i32 = load %x_65
+            %19:ptr<function, i32, read_write> = access %data, %18
+            store %19, -5i
+            exit_switch  # switch_1
+          }
+          %b6 = block {  # case
+            %20:i32 = load %x_65
+            %21:ptr<function, i32, read_write> = access %data, %20
+            store %21, -4i
+            exit_switch  # switch_1
+          }
+          %b7 = block {  # case
+            %22:i32 = load %x_65
+            %23:ptr<function, i32, read_write> = access %data, %22
+            store %23, -3i
+            exit_switch  # switch_1
+          }
+          %b8 = block {  # case
+            %24:i32 = load %x_65
+            %25:ptr<function, i32, read_write> = access %data, %24
+            store %25, -2i
+            exit_switch  # switch_1
+          }
+          %b9 = block {  # case
+            %26:i32 = load %x_65
+            %27:ptr<function, i32, read_write> = access %data, %26
+            store %27, -1i
+            exit_switch  # switch_1
+          }
+          %b10 = block {  # case
+            %28:i32 = load %x_65
+            %29:ptr<function, i32, read_write> = access %data, %28
+            store %29, 0i
+            exit_switch  # switch_1
+          }
+          %b11 = block {  # case
+            %30:i32 = load %x_65
+            %31:ptr<function, i32, read_write> = access %data, %30
+            store %31, 1i
+            exit_switch  # switch_1
+          }
+          %b12 = block {  # case
+            %32:i32 = load %x_65
+            %33:ptr<function, i32, read_write> = access %data, %32
+            store %33, 2i
+            exit_switch  # switch_1
+          }
+          %b13 = block {  # case
+            %34:i32 = load %x_65
+            %35:ptr<function, i32, read_write> = access %data, %34
+            store %35, 3i
+            exit_switch  # switch_1
+          }
+          %b14 = block {  # case
+            %36:i32 = load %x_65
+            %37:ptr<function, i32, read_write> = access %data, %36
+            store %37, 4i
+            exit_switch  # switch_1
+          }
+          %b15 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %38:i32 = load %x_65
+        %39:i32 = add %38, 1i
+        store %x_66, %39
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %40:i32 = load %x_66
+        store %x_65, %40
+        %41:i32 = load %x_66
+        %42:bool = lt %41, 10i
+        %43:bool = eq %42, false
+        break_if %43 %b3
+      }
+    }
+    store %x_93, 0i
+    loop [b: %b16, c: %b17] {  # loop_2
+      %b16 = block {  # body
+        %x_94:ptr<function, i32, read_write> = var
+        %45:i32 = load %x_93
+        %46:bool = lt %45, 10i
+        if %46 [t: %b18, f: %b19] {  # if_1
+          %b18 = block {  # true
+            exit_if  # if_1
+          }
+          %b19 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b17
+      }
+      %b17 = block {  # continuing
+        %47:i32 = load %x_93
+        %48:ptr<function, i32, read_write> = access %temp, %47
+        %49:i32 = load %x_93
+        %50:ptr<function, i32, read_write> = access %data, %49
+        %51:i32 = load %50
+        store %48, %51
+        %52:i32 = load %x_93
+        %53:i32 = add %52, 1i
+        store %x_94, %53
+        %54:i32 = load %x_94
+        store %x_93, %54
+        next_iteration %b16
+      }
+    }
+    store %x_102, 1i
+    loop [b: %b20, c: %b21] {  # loop_3
+      %b20 = block {  # body
+        %x_109:ptr<function, i32, read_write> = var
+        %x_103:ptr<function, i32, read_write> = var
+        %57:i32 = load %x_102
+        %58:bool = lte %57, 9i
+        if %58 [t: %b22, f: %b23] {  # if_2
+          %b22 = block {  # true
+            exit_if  # if_2
+          }
+          %b23 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        store %x_109, 0i
+        loop [b: %b24, c: %b25] {  # loop_4
+          %b24 = block {  # body
+            %x_121:ptr<function, i32, read_write> = var
+            %x_124:ptr<function, i32, read_write> = var
+            %x_126:ptr<function, i32, read_write> = var
+            %x_148:ptr<function, i32, read_write> = var
+            %x_151:ptr<function, i32, read_write> = var
+            %x_161:ptr<function, i32, read_write> = var
+            %65:i32 = load %x_109
+            %66:bool = lt %65, 9i
+            if %66 [t: %b26, f: %b27] {  # if_3
+              %b26 = block {  # true
+                exit_if  # if_3
+              }
+              %b27 = block {  # false
+                exit_loop  # loop_4
+              }
+            }
+            %67:i32 = load %x_109
+            %68:i32 = load %x_102
+            %x_115:i32 = add %67, %68
+            %x_116:i32 = sub %x_115, 1i
+            %71:i32 = load %x_109
+            %72:i32 = load %x_102
+            %73:i32 = mul 2i, %72
+            %x_110:i32 = add %71, %73
+            %75:i32 = sub %x_110, 1i
+            %x_119:i32 = min %75, 9i
+            %77:i32 = load %x_109
+            store %x_121, %77
+            store %x_124, %x_115
+            %78:i32 = load %x_109
+            store %x_126, %78
+            loop [b: %b28, c: %b29] {  # loop_5
+              %b28 = block {  # body
+                %x_141:ptr<function, i32, read_write> = var
+                %x_144:ptr<function, i32, read_write> = var
+                %x_125:ptr<function, i32, read_write> = var
+                %x_127:ptr<function, i32, read_write> = var
+                %83:i32 = load %x_126
+                %84:bool = lte %83, %x_116
+                %85:i32 = load %x_124
+                %86:bool = lte %85, %x_119
+                %87:bool = and %84, %86
+                if %87 [t: %b30, f: %b31] {  # if_4
+                  %b30 = block {  # true
+                    exit_if  # if_4
+                  }
+                  %b31 = block {  # false
+                    exit_loop  # loop_5
+                  }
+                }
+                %x_133_save:i32 = load %x_126
+                %x_135_save:i32 = load %x_124
+                %90:i32 = load %x_121
+                %x_122:i32 = add %90, 1i
+                %92:i32 = load %x_126
+                %93:ptr<function, i32, read_write> = access %data, %92
+                %94:i32 = load %93
+                %95:i32 = load %x_124
+                %96:ptr<function, i32, read_write> = access %data, %95
+                %97:i32 = load %96
+                %98:bool = lt %94, %97
+                if %98 [t: %b32, f: %b33] {  # if_5
+                  %b32 = block {  # true
+                    %99:i32 = load %x_126
+                    %100:i32 = add %99, 1i
+                    store %x_141, %100
+                    %101:i32 = load %x_121
+                    %102:ptr<function, i32, read_write> = access %temp, %101
+                    %103:ptr<function, i32, read_write> = access %data, %x_133_save
+                    %104:i32 = load %103
+                    store %102, %104
+                    %105:i32 = load %x_124
+                    store %x_125, %105
+                    %106:i32 = load %x_141
+                    store %x_127, %106
+                    exit_if  # if_5
+                  }
+                  %b33 = block {  # false
+                    %107:i32 = load %x_124
+                    %108:i32 = add %107, 1i
+                    store %x_144, %108
+                    %109:i32 = load %x_121
+                    %110:ptr<function, i32, read_write> = access %temp, %109
+                    %111:ptr<function, i32, read_write> = access %data, %x_135_save
+                    %112:i32 = load %111
+                    store %110, %112
+                    %113:i32 = load %x_144
+                    store %x_125, %113
+                    %114:i32 = load %x_126
+                    store %x_127, %114
+                    exit_if  # if_5
+                  }
+                }
+                continue %b29
+              }
+              %b29 = block {  # continuing
+                store %x_121, %x_122
+                %115:i32 = load %x_125
+                store %x_124, %115
+                %116:i32 = load %x_127
+                store %x_126, %116
+                next_iteration %b28
+              }
+            }
+            %117:i32 = load %x_121
+            store %x_148, %117
+            %118:i32 = load %x_126
+            store %x_151, %118
+            loop [b: %b34, c: %b35] {  # loop_6
+              %b34 = block {  # body
+                %x_149:ptr<function, i32, read_write> = var
+                %x_152:ptr<function, i32, read_write> = var
+                %121:i32 = load %x_151
+                %122:bool = lt %121, 10i
+                %123:i32 = load %x_151
+                %124:bool = lte %123, %x_116
+                %125:bool = and %122, %124
+                if %125 [t: %b36, f: %b37] {  # if_6
+                  %b36 = block {  # true
+                    exit_if  # if_6
+                  }
+                  %b37 = block {  # false
+                    exit_loop  # loop_6
+                  }
+                }
+                continue %b35
+              }
+              %b35 = block {  # continuing
+                %126:i32 = load %x_148
+                %127:i32 = add %126, 1i
+                store %x_149, %127
+                %128:i32 = load %x_151
+                %129:i32 = add %128, 1i
+                store %x_152, %129
+                %130:i32 = load %x_148
+                %131:ptr<function, i32, read_write> = access %temp, %130
+                %132:i32 = load %x_151
+                %133:ptr<function, i32, read_write> = access %data, %132
+                %134:i32 = load %133
+                store %131, %134
+                %135:i32 = load %x_149
+                store %x_148, %135
+                %136:i32 = load %x_152
+                store %x_151, %136
+                next_iteration %b34
+              }
+            }
+            %137:i32 = load %x_109
+            store %x_161, %137
+            loop [b: %b38, c: %b39] {  # loop_7
+              %b38 = block {  # body
+                %x_162:ptr<function, i32, read_write> = var
+                %139:i32 = load %x_161
+                %140:bool = lte %139, %x_119
+                if %140 [t: %b40, f: %b41] {  # if_7
+                  %b40 = block {  # true
+                    exit_if  # if_7
+                  }
+                  %b41 = block {  # false
+                    exit_loop  # loop_7
+                  }
+                }
+                continue %b39
+              }
+              %b39 = block {  # continuing
+                %141:i32 = load %x_161
+                %142:ptr<function, i32, read_write> = access %data, %141
+                %143:i32 = load %x_161
+                %144:ptr<function, i32, read_write> = access %temp, %143
+                %145:i32 = load %144
+                store %142, %145
+                %146:i32 = load %x_161
+                %147:i32 = add %146, 1i
+                store %x_162, %147
+                %148:i32 = load %x_162
+                store %x_161, %148
+                next_iteration %b38
+              }
+            }
+            continue %b25
+          }
+          %b25 = block {  # continuing
+            store %x_109, %x_110
+            next_iteration %b24
+          }
+        }
+        continue %b21
+      }
+      %b21 = block {  # continuing
+        %149:i32 = load %x_102
+        %150:i32 = mul 2i, %149
+        store %x_103, %150
+        %151:i32 = load %x_103
+        store %x_102, %151
+        next_iteration %b20
+      }
+    }
+    %x_171:ptr<function, i32, read_write> = var
+    %x_189:ptr<function, f32, read_write> = var
+    %x_278:ptr<function, f32, read_write> = var
+    %155:f32 = load_vector_element %gl_FragCoord, 1u
+    %156:i32 = convert %155
+    store %x_171, %156
+    %157:i32 = load %x_171
+    %158:bool = lt %157, 30i
+    if %158 [t: %b42, f: %b43] {  # if_8
+      %b42 = block {  # true
+        %159:ptr<function, i32, read_write> = access %data, 0i
+        %160:i32 = load %159
+        %161:f32 = convert %160
+        %162:f32 = mul %161, 0.10000000149011611938f
+        %163:f32 = add 0.5f, %162
+        store %x_180, %163
+        %164:f32 = load %x_180
+        store %x_280, %164
+        exit_if  # if_8
+      }
+      %b43 = block {  # false
+        %x_198:ptr<function, f32, read_write> = var
+        %x_277:ptr<function, f32, read_write> = var
+        %167:i32 = load %x_171
+        %168:bool = lt %167, 60i
+        if %168 [t: %b44, f: %b45] {  # if_9
+          %b44 = block {  # true
+            %169:ptr<function, i32, read_write> = access %data, 1i
+            %170:i32 = load %169
+            %171:f32 = convert %170
+            %172:f32 = mul %171, 0.10000000149011611938f
+            %173:f32 = add 0.5f, %172
+            store %x_189, %173
+            %174:f32 = load %x_189
+            store %x_279, %174
+            exit_if  # if_9
+          }
+          %b45 = block {  # false
+            %x_207:ptr<function, f32, read_write> = var
+            %x_249:ptr<function, f32, read_write> = var
+            %177:i32 = load %x_171
+            %178:bool = lt %177, 90i
+            if %178 [t: %b46, f: %b47] {  # if_10
+              %b46 = block {  # true
+                %179:ptr<function, i32, read_write> = access %data, 2i
+                %180:i32 = load %179
+                %181:f32 = convert %180
+                %182:f32 = mul %181, 0.10000000149011611938f
+                %183:f32 = add 0.5f, %182
+                store %x_198, %183
+                %184:f32 = load %x_198
+                store %x_278, %184
+                exit_if  # if_10
+              }
+              %b47 = block {  # false
+                %185:i32 = load %x_171
+                %186:bool = lt %185, 120i
+                if %186 [t: %b48, f: %b49] {  # if_11
+                  %b48 = block {  # true
+                    %187:ptr<function, i32, read_write> = access %data, 3i
+                    %188:i32 = load %187
+                    %189:f32 = convert %188
+                    %190:f32 = mul %189, 0.10000000149011611938f
+                    %191:f32 = add 0.5f, %190
+                    store %x_207, %191
+                    %192:f32 = load %x_207
+                    store %x_277, %192
+                    exit_if  # if_11
+                  }
+                  %b49 = block {  # false
+                    %x_220:ptr<function, f32, read_write> = var
+                    %x_248:ptr<function, f32, read_write> = var
+                    %x_256:ptr<function, vec2<f32>, read_write> = var
+                    %x_259:ptr<function, i32, read_write> = var
+                    %197:i32 = load %x_171
+                    %198:bool = lt %197, 150i
+                    if %198 [t: %b50, f: %b51] {  # if_12
+                      %b50 = block {  # true
+                        discard
+                        exit_if  # if_12
+                      }
+                      %b51 = block {  # false
+                        %x_229:ptr<function, f32, read_write> = var
+                        %x_247:ptr<function, f32, read_write> = var
+                        %201:i32 = load %x_171
+                        %202:bool = lt %201, 180i
+                        if %202 [t: %b52, f: %b53] {  # if_13
+                          %b52 = block {  # true
+                            %203:ptr<function, i32, read_write> = access %data, 5i
+                            %204:i32 = load %203
+                            %205:f32 = convert %204
+                            %206:f32 = mul %205, 0.10000000149011611938f
+                            %207:f32 = add 0.5f, %206
+                            store %x_220, %207
+                            %208:f32 = load %x_220
+                            store %x_249, %208
+                            exit_if  # if_13
+                          }
+                          %b53 = block {  # false
+                            %x_238:ptr<function, f32, read_write> = var
+                            %x_246:ptr<function, f32, read_write> = var
+                            %211:i32 = load %x_171
+                            %212:bool = lt %211, 210i
+                            if %212 [t: %b54, f: %b55] {  # if_14
+                              %b54 = block {  # true
+                                %213:ptr<function, i32, read_write> = access %data, 6i
+                                %214:i32 = load %213
+                                %215:f32 = convert %214
+                                %216:f32 = mul %215, 0.10000000149011611938f
+                                %217:f32 = add 0.5f, %216
+                                store %x_229, %217
+                                %218:f32 = load %x_229
+                                store %x_248, %218
+                                exit_if  # if_14
+                              }
+                              %b55 = block {  # false
+                                %219:i32 = load %x_171
+                                %220:bool = lt %219, 240i
+                                if %220 [t: %b56, f: %b57] {  # if_15
+                                  %b56 = block {  # true
+                                    %221:ptr<function, i32, read_write> = access %data, 7i
+                                    %222:i32 = load %221
+                                    %223:f32 = convert %222
+                                    %224:f32 = mul %223, 0.10000000149011611938f
+                                    %225:f32 = add 0.5f, %224
+                                    store %x_238, %225
+                                    %226:f32 = load %x_238
+                                    store %x_247, %226
+                                    exit_if  # if_15
+                                  }
+                                  %b57 = block {  # false
+                                    %227:i32 = load %x_171
+                                    %228:bool = lt %227, 270i
+                                    if %228 [t: %b58, f: %b59] {  # if_16
+                                      %b58 = block {  # true
+                                        exit_if  # if_16
+                                      }
+                                      %b59 = block {  # false
+                                        discard
+                                        exit_if  # if_16
+                                      }
+                                    }
+                                    %229:ptr<function, i32, read_write> = access %data, 8i
+                                    %230:i32 = load %229
+                                    %231:f32 = convert %230
+                                    %232:f32 = mul %231, 0.10000000149011611938f
+                                    %233:f32 = add 0.5f, %232
+                                    store %x_246, %233
+                                    %234:f32 = load %x_246
+                                    store %x_247, %234
+                                    exit_if  # if_15
+                                  }
+                                }
+                                %235:f32 = load %x_247
+                                store %x_248, %235
+                                exit_if  # if_14
+                              }
+                            }
+                            %236:f32 = load %x_248
+                            store %x_249, %236
+                            exit_if  # if_13
+                          }
+                        }
+                        %237:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+                        %238:f32 = load_vector_element %237, 1u
+                        %x_252:bool = gt %x_62, %238
+                        if %x_252 [t: %b60] {  # if_17
+                          %b60 = block {  # true
+                            store %x_GLF_color, vec4<f32>(1.0f)
+                            exit_if  # if_17
+                          }
+                        }
+                        store %x_256, vec2<f32>(1.0f)
+                        store %x_259, 0i
+                        loop [b: %b61, c: %b62] {  # loop_8
+                          %b61 = block {  # body
+                            %x_272:ptr<function, vec2<f32>, read_write> = var
+                            %x_273:ptr<function, vec2<f32>, read_write> = var
+                            %x_260:ptr<function, i32, read_write> = var
+                            %243:i32 = load %x_259
+                            %244:bool = lte %243, 32i
+                            if %244 [t: %b63, f: %b64] {  # if_18
+                              %b63 = block {  # true
+                                exit_if  # if_18
+                              }
+                              %b64 = block {  # false
+                                exit_loop  # loop_8
+                              }
+                            }
+                            %245:vec2<f32> = load %x_256
+                            store %x_273, %245
+                            %246:f32 = load_vector_element %x_256, 0u
+                            %247:bool = lt %246, 0.0f
+                            if %247 [t: %b65] {  # if_19
+                              %b65 = block {  # true
+                                if %x_252 [t: %b66] {  # if_20
+                                  %b66 = block {  # true
+                                    discard
+                                    exit_if  # if_20
+                                  }
+                                }
+                                %248:vec2<f32> = load %x_256
+                                store %x_272, %248
+                                %249:f32 = load_vector_element %x_256, 1u
+                                %250:f32 = add %249, 1.0f
+                                store_vector_element %x_272, 1u, %250
+                                %251:vec2<f32> = load %x_272
+                                store %x_273, %251
+                                exit_if  # if_19
+                              }
+                            }
+                            %252:vec2<f32> = load %x_273
+                            %x_257_1:ptr<function, vec2<f32>, read_write> = var, %252
+                            %254:f32 = load_vector_element %x_273, 0u
+                            %255:f32 = load_vector_element %x_273, 1u
+                            %256:f32 = add %254, %255
+                            store_vector_element %x_257_1, 0u, %256
+                            %x_257:vec2<f32> = load %x_257_1
+                            continue %b62
+                          }
+                          %b62 = block {  # continuing
+                            %258:i32 = load %x_259
+                            %259:i32 = add %258, 1i
+                            store %x_260, %259
+                            store %x_256, %x_257
+                            %260:i32 = load %x_260
+                            store %x_259, %260
+                            next_iteration %b61
+                          }
+                        }
+                        exit_if  # if_12
+                      }
+                    }
+                    %261:f32 = load %x_249
+                    store %x_277, %261
+                    exit_if  # if_11
+                  }
+                }
+                %262:f32 = load %x_277
+                store %x_278, %262
+                exit_if  # if_10
+              }
+            }
+            %263:f32 = load %x_278
+            store %x_279, %263
+            exit_if  # if_9
+          }
+        }
+        %264:f32 = load %x_279
+        store %x_280, %264
+        exit_if  # if_8
+      }
+    }
+    %265:f32 = load %x_280
+    %266:f32 = load %x_280
+    %267:f32 = load %x_280
+    %268:vec4<f32> = construct %265, %266, %267, 1.0f
+    store %x_GLF_color, %268
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b67 {
+  %b67 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %271:void = call %main_1
+    %272:vec4<f32> = load %x_GLF_color
+    %273:main_out = construct %272
+    ret %273
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c18005c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl.expected.ir.msl
@@ -0,0 +1,622 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, array<i32, 10>, read_write> = var
+    %data:ptr<function, array<i32, 10>, read_write> = var
+    %x_180:ptr<function, f32, read_write> = var
+    %x_279:ptr<function, f32, read_write> = var
+    %x_65_phi:ptr<function, i32, read_write> = var
+    %x_93_phi:ptr<function, i32, read_write> = var
+    %x_102_phi:ptr<function, i32, read_write> = var
+    %x_280_phi:ptr<function, f32, read_write> = var
+    %13:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+    %x_62:f32 = load_vector_element %13, 0u
+    %x_63:i32 = convert %x_62
+    store %x_65_phi, %x_63
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_65:i32 = load %x_65_phi
+        switch %x_65 [c: (9i, %b5), c: (8i, %b6), c: (7i, %b7), c: (6i, %b8), c: (5i, %b9), c: (4i, %b10), c: (3i, %b11), c: (2i, %b12), c: (1i, %b13), c: (0i, %b14), c: (default, %b15)] {  # switch_1
+          %b5 = block {  # case
+            %17:ptr<function, i32, read_write> = access %data, %x_65
+            store %17, -5i
+            exit_switch  # switch_1
+          }
+          %b6 = block {  # case
+            %18:ptr<function, i32, read_write> = access %data, %x_65
+            store %18, -4i
+            exit_switch  # switch_1
+          }
+          %b7 = block {  # case
+            %19:ptr<function, i32, read_write> = access %data, %x_65
+            store %19, -3i
+            exit_switch  # switch_1
+          }
+          %b8 = block {  # case
+            %20:ptr<function, i32, read_write> = access %data, %x_65
+            store %20, -2i
+            exit_switch  # switch_1
+          }
+          %b9 = block {  # case
+            %21:ptr<function, i32, read_write> = access %data, %x_65
+            store %21, -1i
+            exit_switch  # switch_1
+          }
+          %b10 = block {  # case
+            %22:ptr<function, i32, read_write> = access %data, %x_65
+            store %22, 0i
+            exit_switch  # switch_1
+          }
+          %b11 = block {  # case
+            %23:ptr<function, i32, read_write> = access %data, %x_65
+            store %23, 1i
+            exit_switch  # switch_1
+          }
+          %b12 = block {  # case
+            %24:ptr<function, i32, read_write> = access %data, %x_65
+            store %24, 2i
+            exit_switch  # switch_1
+          }
+          %b13 = block {  # case
+            %25:ptr<function, i32, read_write> = access %data, %x_65
+            store %25, 3i
+            exit_switch  # switch_1
+          }
+          %b14 = block {  # case
+            %26:ptr<function, i32, read_write> = access %data, %x_65
+            store %26, 4i
+            exit_switch  # switch_1
+          }
+          %b15 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %x_66:i32 = add %x_65, 1i
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        store %x_65_phi, %x_66
+        %28:bool = lt %x_66, 10i
+        %29:bool = eq %28, false
+        break_if %29 %b3
+      }
+    }
+    store %x_93_phi, 0i
+    loop [b: %b16, c: %b17] {  # loop_2
+      %b16 = block {  # body
+        %x_94:ptr<function, i32, read_write> = var
+        %x_93:i32 = load %x_93_phi
+        %32:bool = lt %x_93, 10i
+        if %32 [t: %b18, f: %b19] {  # if_1
+          %b18 = block {  # true
+            exit_if  # if_1
+          }
+          %b19 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b17
+      }
+      %b17 = block {  # continuing
+        %33:ptr<function, i32, read_write> = access %data, %x_93
+        %x_99:i32 = load %33
+        %35:ptr<function, i32, read_write> = access %temp, %x_93
+        store %35, %x_99
+        %36:i32 = add %x_93, 1i
+        store %x_94, %36
+        %37:i32 = load %x_94
+        store %x_93_phi, %37
+        next_iteration %b16
+      }
+    }
+    store %x_102_phi, 1i
+    loop [b: %b20, c: %b21] {  # loop_3
+      %b20 = block {  # body
+        %x_103:ptr<function, i32, read_write> = var
+        %x_109_phi:ptr<function, i32, read_write> = var
+        %x_102:i32 = load %x_102_phi
+        %41:bool = lte %x_102, 9i
+        if %41 [t: %b22, f: %b23] {  # if_2
+          %b22 = block {  # true
+            exit_if  # if_2
+          }
+          %b23 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        store %x_109_phi, 0i
+        loop [b: %b24, c: %b25] {  # loop_4
+          %b24 = block {  # body
+            %x_121:ptr<function, i32, read_write> = var
+            %x_126:ptr<function, i32, read_write> = var
+            %x_121_phi:ptr<function, i32, read_write> = var
+            %x_124_phi:ptr<function, i32, read_write> = var
+            %x_126_phi:ptr<function, i32, read_write> = var
+            %x_148_phi:ptr<function, i32, read_write> = var
+            %x_151_phi:ptr<function, i32, read_write> = var
+            %x_161_phi:ptr<function, i32, read_write> = var
+            %x_109:i32 = load %x_109_phi
+            %51:bool = lt %x_109, 9i
+            if %51 [t: %b26, f: %b27] {  # if_3
+              %b26 = block {  # true
+                exit_if  # if_3
+              }
+              %b27 = block {  # false
+                exit_loop  # loop_4
+              }
+            }
+            %x_115:i32 = add %x_109, %x_102
+            %x_116:i32 = sub %x_115, 1i
+            %54:i32 = mul 2i, %x_102
+            %x_110:i32 = add %x_109, %54
+            %56:i32 = sub %x_110, 1i
+            %x_119:i32 = min %56, 9i
+            store %x_121_phi, %x_109
+            store %x_124_phi, %x_115
+            store %x_126_phi, %x_109
+            loop [b: %b28, c: %b29] {  # loop_5
+              %b28 = block {  # body
+                %x_141:ptr<function, i32, read_write> = var
+                %x_144:ptr<function, i32, read_write> = var
+                %x_125_phi:ptr<function, i32, read_write> = var
+                %x_127_phi:ptr<function, i32, read_write> = var
+                %62:i32 = load %x_121_phi
+                store %x_121, %62
+                %x_124:i32 = load %x_124_phi
+                %64:i32 = load %x_126_phi
+                store %x_126, %64
+                %65:i32 = load %x_126
+                %66:bool = lte %65, %x_116
+                %67:bool = lte %x_124, %x_119
+                %68:bool = and %66, %67
+                if %68 [t: %b30, f: %b31] {  # if_4
+                  %b30 = block {  # true
+                    exit_if  # if_4
+                  }
+                  %b31 = block {  # false
+                    exit_loop  # loop_5
+                  }
+                }
+                %x_133_save:i32 = load %x_126
+                %70:ptr<function, i32, read_write> = access %data, %x_133_save
+                %x_134:i32 = load %70
+                %x_135_save:i32 = let %x_124
+                %73:ptr<function, i32, read_write> = access %data, %x_135_save
+                %x_136:i32 = load %73
+                %75:i32 = load %x_121
+                %76:i32 = add %75, 1i
+                %x_122:i32 = bitcast %76
+                %78:bool = lt %x_134, %x_136
+                if %78 [t: %b32, f: %b33] {  # if_5
+                  %b32 = block {  # true
+                    %79:i32 = load %x_126
+                    %80:i32 = add %79, 1i
+                    %81:i32 = bitcast %80
+                    store %x_141, %81
+                    %82:ptr<function, i32, read_write> = access %data, %x_133_save
+                    %x_142:i32 = load %82
+                    %84:i32 = load %x_121
+                    %85:ptr<function, i32, read_write> = access %temp, %84
+                    store %85, %x_142
+                    store %x_125_phi, %x_124
+                    %86:i32 = load %x_141
+                    store %x_127_phi, %86
+                    exit_if  # if_5
+                  }
+                  %b33 = block {  # false
+                    %87:i32 = add %x_124, 1i
+                    store %x_144, %87
+                    %88:ptr<function, i32, read_write> = access %data, %x_135_save
+                    %x_145:i32 = load %88
+                    %90:i32 = load %x_121
+                    %91:ptr<function, i32, read_write> = access %temp, %90
+                    store %91, %x_145
+                    %92:i32 = load %x_144
+                    store %x_125_phi, %92
+                    %93:i32 = load %x_126
+                    store %x_127_phi, %93
+                    exit_if  # if_5
+                  }
+                }
+                %x_125:i32 = load %x_125_phi
+                %x_127:i32 = load %x_127_phi
+                continue %b29
+              }
+              %b29 = block {  # continuing
+                store %x_121_phi, %x_122
+                store %x_124_phi, %x_125
+                store %x_126_phi, %x_127
+                next_iteration %b28
+              }
+            }
+            %96:i32 = load %x_121
+            store %x_148_phi, %96
+            %97:i32 = load %x_126
+            store %x_151_phi, %97
+            loop [b: %b34, c: %b35] {  # loop_6
+              %b34 = block {  # body
+                %x_149:ptr<function, i32, read_write> = var
+                %x_152:ptr<function, i32, read_write> = var
+                %x_148:i32 = load %x_148_phi
+                %x_151:i32 = load %x_151_phi
+                %102:bool = lt %x_151, 10i
+                %103:bool = lte %x_151, %x_116
+                %104:bool = and %102, %103
+                if %104 [t: %b36, f: %b37] {  # if_6
+                  %b36 = block {  # true
+                    exit_if  # if_6
+                  }
+                  %b37 = block {  # false
+                    exit_loop  # loop_6
+                  }
+                }
+                continue %b35
+              }
+              %b35 = block {  # continuing
+                %105:i32 = add %x_148, 1i
+                store %x_149, %105
+                %106:i32 = add %x_151, 1i
+                store %x_152, %106
+                %107:ptr<function, i32, read_write> = access %data, %x_151
+                %x_158:i32 = load %107
+                %109:ptr<function, i32, read_write> = access %temp, %x_148
+                store %109, %x_158
+                %110:i32 = load %x_149
+                store %x_148_phi, %110
+                %111:i32 = load %x_152
+                store %x_151_phi, %111
+                next_iteration %b34
+              }
+            }
+            store %x_161_phi, %x_109
+            loop [b: %b38, c: %b39] {  # loop_7
+              %b38 = block {  # body
+                %x_162:ptr<function, i32, read_write> = var
+                %x_161:i32 = load %x_161_phi
+                %114:bool = lte %x_161, %x_119
+                if %114 [t: %b40, f: %b41] {  # if_7
+                  %b40 = block {  # true
+                    exit_if  # if_7
+                  }
+                  %b41 = block {  # false
+                    exit_loop  # loop_7
+                  }
+                }
+                continue %b39
+              }
+              %b39 = block {  # continuing
+                %115:ptr<function, i32, read_write> = access %temp, %x_161
+                %x_167:i32 = load %115
+                %117:ptr<function, i32, read_write> = access %data, %x_161
+                store %117, %x_167
+                %118:i32 = add %x_161, 1i
+                store %x_162, %118
+                %119:i32 = load %x_162
+                store %x_161_phi, %119
+                next_iteration %b38
+              }
+            }
+            continue %b25
+          }
+          %b25 = block {  # continuing
+            store %x_109_phi, %x_110
+            next_iteration %b24
+          }
+        }
+        continue %b21
+      }
+      %b21 = block {  # continuing
+        %120:i32 = mul 2i, %x_102
+        store %x_103, %120
+        %121:i32 = load %x_103
+        store %x_102_phi, %121
+        next_iteration %b20
+      }
+    }
+    %x_171:ptr<function, i32, read_write> = var
+    %x_189:ptr<function, f32, read_write> = var
+    %x_278:ptr<function, f32, read_write> = var
+    %x_279_phi:ptr<function, f32, read_write> = var
+    %x_170:f32 = load_vector_element %gl_FragCoord, 1u
+    %127:i32 = convert %x_170
+    store %x_171, %127
+    %128:i32 = load %x_171
+    %129:bool = lt %128, 30i
+    if %129 [t: %b42, f: %b43] {  # if_8
+      %b42 = block {  # true
+        %130:ptr<function, i32, read_write> = access %data, 0i
+        %x_177:i32 = load %130
+        %132:f32 = convert %x_177
+        %133:f32 = mul %132, 0.10000000149011611938f
+        %134:f32 = add 0.5f, %133
+        store %x_180, %134
+        %135:f32 = load %x_180
+        store %x_280_phi, %135
+        exit_if  # if_8
+      }
+      %b43 = block {  # false
+        %x_198:ptr<function, f32, read_write> = var
+        %x_277:ptr<function, f32, read_write> = var
+        %x_278_phi:ptr<function, f32, read_write> = var
+        %139:i32 = load %x_171
+        %140:bool = lt %139, 60i
+        if %140 [t: %b44, f: %b45] {  # if_9
+          %b44 = block {  # true
+            %141:ptr<function, i32, read_write> = access %data, 1i
+            %x_186:i32 = load %141
+            %143:f32 = convert %x_186
+            %144:f32 = mul %143, 0.10000000149011611938f
+            %145:f32 = add 0.5f, %144
+            store %x_189, %145
+            %146:f32 = load %x_189
+            store %x_279_phi, %146
+            exit_if  # if_9
+          }
+          %b45 = block {  # false
+            %x_207:ptr<function, f32, read_write> = var
+            %x_249:ptr<function, f32, read_write> = var
+            %x_277_phi:ptr<function, f32, read_write> = var
+            %150:i32 = load %x_171
+            %151:bool = lt %150, 90i
+            if %151 [t: %b46, f: %b47] {  # if_10
+              %b46 = block {  # true
+                %152:ptr<function, i32, read_write> = access %data, 2i
+                %x_195:i32 = load %152
+                %154:f32 = convert %x_195
+                %155:f32 = mul %154, 0.10000000149011611938f
+                %156:f32 = add 0.5f, %155
+                store %x_198, %156
+                %157:f32 = load %x_198
+                store %x_278_phi, %157
+                exit_if  # if_10
+              }
+              %b47 = block {  # false
+                %158:i32 = load %x_171
+                %159:bool = lt %158, 120i
+                if %159 [t: %b48, f: %b49] {  # if_11
+                  %b48 = block {  # true
+                    %160:ptr<function, i32, read_write> = access %data, 3i
+                    %x_204:i32 = load %160
+                    %162:f32 = convert %x_204
+                    %163:f32 = mul %162, 0.10000000149011611938f
+                    %164:f32 = add 0.5f, %163
+                    store %x_207, %164
+                    %165:f32 = load %x_207
+                    store %x_277_phi, %165
+                    exit_if  # if_11
+                  }
+                  %b49 = block {  # false
+                    %x_220:ptr<function, f32, read_write> = var
+                    %x_248:ptr<function, f32, read_write> = var
+                    %x_249_phi:ptr<function, f32, read_write> = var
+                    %x_256_phi:ptr<function, vec2<f32>, read_write> = var
+                    %x_259_phi:ptr<function, i32, read_write> = var
+                    %171:i32 = load %x_171
+                    %172:bool = lt %171, 150i
+                    if %172 [t: %b50, f: %b51] {  # if_12
+                      %b50 = block {  # true
+                        discard
+                        exit_if  # if_12
+                      }
+                      %b51 = block {  # false
+                        %x_229:ptr<function, f32, read_write> = var
+                        %x_247:ptr<function, f32, read_write> = var
+                        %x_248_phi:ptr<function, f32, read_write> = var
+                        %176:i32 = load %x_171
+                        %177:bool = lt %176, 180i
+                        if %177 [t: %b52, f: %b53] {  # if_13
+                          %b52 = block {  # true
+                            %178:ptr<function, i32, read_write> = access %data, 5i
+                            %x_217:i32 = load %178
+                            %180:f32 = convert %x_217
+                            %181:f32 = mul %180, 0.10000000149011611938f
+                            %182:f32 = add 0.5f, %181
+                            store %x_220, %182
+                            %183:f32 = load %x_220
+                            store %x_249_phi, %183
+                            exit_if  # if_13
+                          }
+                          %b53 = block {  # false
+                            %x_238:ptr<function, f32, read_write> = var
+                            %x_246:ptr<function, f32, read_write> = var
+                            %x_247_phi:ptr<function, f32, read_write> = var
+                            %187:i32 = load %x_171
+                            %188:bool = lt %187, 210i
+                            if %188 [t: %b54, f: %b55] {  # if_14
+                              %b54 = block {  # true
+                                %189:ptr<function, i32, read_write> = access %data, 6i
+                                %x_226:i32 = load %189
+                                %191:f32 = convert %x_226
+                                %192:f32 = mul %191, 0.10000000149011611938f
+                                %193:f32 = add 0.5f, %192
+                                store %x_229, %193
+                                %194:f32 = load %x_229
+                                store %x_248_phi, %194
+                                exit_if  # if_14
+                              }
+                              %b55 = block {  # false
+                                %195:i32 = load %x_171
+                                %196:bool = lt %195, 240i
+                                if %196 [t: %b56, f: %b57] {  # if_15
+                                  %b56 = block {  # true
+                                    %197:ptr<function, i32, read_write> = access %data, 7i
+                                    %x_235:i32 = load %197
+                                    %199:f32 = convert %x_235
+                                    %200:f32 = mul %199, 0.10000000149011611938f
+                                    %201:f32 = add 0.5f, %200
+                                    store %x_238, %201
+                                    %202:f32 = load %x_238
+                                    store %x_247_phi, %202
+                                    exit_if  # if_15
+                                  }
+                                  %b57 = block {  # false
+                                    %203:i32 = load %x_171
+                                    %204:bool = lt %203, 270i
+                                    if %204 [t: %b58, f: %b59] {  # if_16
+                                      %b58 = block {  # true
+                                        exit_if  # if_16
+                                      }
+                                      %b59 = block {  # false
+                                        discard
+                                        exit_if  # if_16
+                                      }
+                                    }
+                                    %205:ptr<function, i32, read_write> = access %data, 8i
+                                    %x_243:i32 = load %205
+                                    %207:f32 = convert %x_243
+                                    %208:f32 = mul %207, 0.10000000149011611938f
+                                    %209:f32 = add 0.5f, %208
+                                    store %x_246, %209
+                                    %210:f32 = load %x_246
+                                    store %x_247_phi, %210
+                                    exit_if  # if_15
+                                  }
+                                }
+                                %211:f32 = load %x_247_phi
+                                store %x_247, %211
+                                %212:f32 = load %x_247
+                                store %x_248_phi, %212
+                                exit_if  # if_14
+                              }
+                            }
+                            %213:f32 = load %x_248_phi
+                            store %x_248, %213
+                            %214:f32 = load %x_248
+                            store %x_249_phi, %214
+                            exit_if  # if_13
+                          }
+                        }
+                        %215:f32 = load %x_249_phi
+                        store %x_249, %215
+                        %216:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+                        %x_251:f32 = load_vector_element %216, 1u
+                        %x_252:bool = gt %x_62, %x_251
+                        if %x_252 [t: %b60] {  # if_17
+                          %b60 = block {  # true
+                            store %x_GLF_color, vec4<f32>(1.0f)
+                            exit_if  # if_17
+                          }
+                        }
+                        store %x_256_phi, vec2<f32>(1.0f)
+                        store %x_259_phi, 0i
+                        loop [b: %b61, c: %b62] {  # loop_8
+                          %b61 = block {  # body
+                            %x_272:ptr<function, vec2<f32>, read_write> = var
+                            %x_260:ptr<function, i32, read_write> = var
+                            %x_273_phi:ptr<function, vec2<f32>, read_write> = var
+                            %x_256:vec2<f32> = load %x_256_phi
+                            %x_259:i32 = load %x_259_phi
+                            %224:bool = lte %x_259, 32i
+                            if %224 [t: %b63, f: %b64] {  # if_18
+                              %b63 = block {  # true
+                                exit_if  # if_18
+                              }
+                              %b64 = block {  # false
+                                exit_loop  # loop_8
+                              }
+                            }
+                            store %x_273_phi, %x_256
+                            %225:f32 = access %x_256, 0u
+                            %226:bool = lt %225, 0.0f
+                            if %226 [t: %b65] {  # if_19
+                              %b65 = block {  # true
+                                if %x_252 [t: %b66] {  # if_20
+                                  %b66 = block {  # true
+                                    discard
+                                    exit_if  # if_20
+                                  }
+                                }
+                                store %x_272, %x_256
+                                %227:f32 = access %x_256, 1u
+                                %228:f32 = add %227, 1.0f
+                                store_vector_element %x_272, 1u, %228
+                                %229:vec2<f32> = load %x_272
+                                store %x_273_phi, %229
+                                exit_if  # if_19
+                              }
+                            }
+                            %x_273:vec2<f32> = load %x_273_phi
+                            %x_257_1:ptr<function, vec2<f32>, read_write> = var, %x_273
+                            %232:f32 = access %x_273, 0u
+                            %233:f32 = access %x_273, 1u
+                            %234:f32 = add %232, %233
+                            store_vector_element %x_257_1, 0u, %234
+                            %x_257:vec2<f32> = load %x_257_1
+                            continue %b62
+                          }
+                          %b62 = block {  # continuing
+                            %236:i32 = add %x_259, 1i
+                            store %x_260, %236
+                            store %x_256_phi, %x_257
+                            %237:i32 = load %x_260
+                            store %x_259_phi, %237
+                            next_iteration %b61
+                          }
+                        }
+                        exit_if  # if_12
+                      }
+                    }
+                    %238:f32 = load %x_249
+                    store %x_277_phi, %238
+                    exit_if  # if_11
+                  }
+                }
+                %239:f32 = load %x_277_phi
+                store %x_277, %239
+                %240:f32 = load %x_277
+                store %x_278_phi, %240
+                exit_if  # if_10
+              }
+            }
+            %241:f32 = load %x_278_phi
+            store %x_278, %241
+            %242:f32 = load %x_278
+            store %x_279_phi, %242
+            exit_if  # if_9
+          }
+        }
+        %243:f32 = load %x_279_phi
+        store %x_279, %243
+        %244:f32 = load %x_279
+        store %x_280_phi, %244
+        exit_if  # if_8
+      }
+    }
+    %x_280:f32 = load %x_280_phi
+    %246:vec4<f32> = construct %x_280, %x_280, %x_280, 1.0f
+    store %x_GLF_color, %246
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b67 {
+  %b67 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %249:void = call %main_1
+    %250:vec4<f32> = load %x_GLF_color
+    %251:main_out = construct %250
+    ret %251
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..5126351
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.spvasm.expected.ir.msl
@@ -0,0 +1,565 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %14:i32 = load %f
+    store %k, %14
+    %15:i32 = load %f
+    store %i, %15
+    %16:i32 = load %mid
+    %17:i32 = add %16, 1i
+    store %j, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %18:i32 = load %i
+        %19:i32 = load %mid
+        %20:bool = lte %18, %19
+        %21:i32 = load %j
+        %22:i32 = load %to
+        %23:bool = lte %21, %22
+        %24:bool = and %20, %23
+        if %24 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %25:i32 = load %i
+        %26:ptr<private, i32, read_write> = access %data, %25
+        %27:i32 = load %26
+        %28:i32 = load %j
+        %29:ptr<private, i32, read_write> = access %data, %28
+        %30:i32 = load %29
+        %31:bool = lt %27, %30
+        if %31 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_288:i32 = load %k
+            %33:i32 = load %k
+            %34:i32 = add %33, 1i
+            store %k, %34
+            %x_290:i32 = load %i
+            %36:i32 = load %i
+            %37:i32 = add %36, 1i
+            store %i, %37
+            %38:ptr<private, i32, read_write> = access %temp, %x_288
+            %39:ptr<private, i32, read_write> = access %data, %x_290
+            %40:i32 = load %39
+            store %38, %40
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_295:i32 = load %k
+            %42:i32 = load %k
+            %43:i32 = add %42, 1i
+            store %k, %43
+            %x_297:i32 = load %j
+            %45:i32 = load %j
+            %46:i32 = add %45, 1i
+            store %j, %46
+            %47:ptr<private, i32, read_write> = access %temp, %x_295
+            %48:ptr<private, i32, read_write> = access %data, %x_297
+            %49:i32 = load %48
+            store %47, %49
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %50:i32 = load %i
+        %51:bool = lt %50, 10i
+        %52:i32 = load %i
+        %53:i32 = load %mid
+        %54:bool = lte %52, %53
+        %55:bool = and %51, %54
+        if %55 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_313:i32 = load %k
+        %57:i32 = load %k
+        %58:i32 = add %57, 1i
+        store %k, %58
+        %x_315:i32 = load %i
+        %60:i32 = load %i
+        %61:i32 = add %60, 1i
+        store %i, %61
+        %62:ptr<private, i32, read_write> = access %temp, %x_313
+        %63:ptr<private, i32, read_write> = access %data, %x_315
+        %64:i32 = load %63
+        store %62, %64
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    %65:i32 = load %f
+    store %i_1, %65
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %66:i32 = load %i_1
+        %67:i32 = load %to
+        %68:bool = lte %66, %67
+        if %68 [t: %b15, f: %b16] {  # if_4
+          %b15 = block {  # true
+            exit_if  # if_4
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_329:i32 = load %i_1
+        %70:ptr<private, i32, read_write> = access %data, %x_329
+        %71:i32 = load %i_1
+        %72:ptr<private, i32, read_write> = access %temp, %71
+        %73:i32 = load %72
+        store %70, %73
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %74:i32 = load %i_1
+        %75:i32 = add %74, 1i
+        store %i_1, %75
+        next_iteration %b13
+      }
+    }
+    ret
+  }
+}
+%mergeSort_ = func():void -> %b17 {
+  %b17 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b18, c: %b19] {  # loop_4
+      %b18 = block {  # body
+        %87:i32 = load %m
+        %88:i32 = load %high
+        %89:bool = lte %87, %88
+        if %89 [t: %b20, f: %b21] {  # if_5
+          %b20 = block {  # true
+            exit_if  # if_5
+          }
+          %b21 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %90:i32 = load %low
+        store %i_2, %90
+        loop [b: %b22, c: %b23] {  # loop_5
+          %b22 = block {  # body
+            %91:i32 = load %i_2
+            %92:i32 = load %high
+            %93:bool = lt %91, %92
+            if %93 [t: %b24, f: %b25] {  # if_6
+              %b24 = block {  # true
+                exit_if  # if_6
+              }
+              %b25 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %94:i32 = load %i_2
+            store %f_1, %94
+            %95:i32 = load %i_2
+            %96:i32 = load %m
+            %97:i32 = add %95, %96
+            %98:i32 = sub %97, 1i
+            store %mid_1, %98
+            %99:i32 = load %i_2
+            %100:i32 = load %m
+            %101:i32 = mul 2i, %100
+            %102:i32 = add %99, %101
+            %103:i32 = sub %102, 1i
+            %104:i32 = load %high
+            %105:i32 = min %103, %104
+            store %to_1, %105
+            %106:i32 = load %f_1
+            store %param, %106
+            %107:i32 = load %mid_1
+            store %param_1, %107
+            %108:i32 = load %to_1
+            store %param_2, %108
+            %109:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b23
+          }
+          %b23 = block {  # continuing
+            %110:i32 = load %i_2
+            %111:i32 = load %m
+            %112:i32 = mul 2i, %111
+            %113:i32 = add %110, %112
+            store %i_2, %113
+            next_iteration %b22
+          }
+        }
+        continue %b19
+      }
+      %b19 = block {  # continuing
+        %114:i32 = load %m
+        %115:i32 = mul 2i, %114
+        store %m, %115
+        next_iteration %b18
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b26 {
+  %b26 = block {
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %int_i:ptr<function, i32, read_write> = var
+    %121:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %122:f32 = load_vector_element %121, 0u
+    %123:i32 = convert %122
+    store %i_3, %123
+    loop [b: %b27, c: %b28] {  # loop_6
+      %b27 = block {  # body
+        %x_91:i32 = load %i_3
+        switch %x_91 [c: (9i, %b29), c: (8i, %b30), c: (7i, %b31), c: (6i, %b32), c: (5i, %b33), c: (4i, %b34), c: (3i, %b35), c: (2i, %b36), c: (1i, %b37), c: (0i, %b38), c: (default, %b39)] {  # switch_1
+          %b29 = block {  # case
+            %x_121:i32 = load %i_3
+            %126:ptr<private, i32, read_write> = access %data, %x_121
+            store %126, -5i
+            exit_switch  # switch_1
+          }
+          %b30 = block {  # case
+            %x_119:i32 = load %i_3
+            %128:ptr<private, i32, read_write> = access %data, %x_119
+            store %128, -4i
+            exit_switch  # switch_1
+          }
+          %b31 = block {  # case
+            %x_117:i32 = load %i_3
+            %130:ptr<private, i32, read_write> = access %data, %x_117
+            store %130, -3i
+            exit_switch  # switch_1
+          }
+          %b32 = block {  # case
+            %x_115:i32 = load %i_3
+            %132:ptr<private, i32, read_write> = access %data, %x_115
+            store %132, -2i
+            exit_switch  # switch_1
+          }
+          %b33 = block {  # case
+            %x_113:i32 = load %i_3
+            %134:ptr<private, i32, read_write> = access %data, %x_113
+            store %134, -1i
+            exit_switch  # switch_1
+          }
+          %b34 = block {  # case
+            %x_111:i32 = load %i_3
+            %136:ptr<private, i32, read_write> = access %data, %x_111
+            store %136, 0i
+            exit_switch  # switch_1
+          }
+          %b35 = block {  # case
+            %x_109:i32 = load %i_3
+            %138:ptr<private, i32, read_write> = access %data, %x_109
+            store %138, 1i
+            exit_switch  # switch_1
+          }
+          %b36 = block {  # case
+            %x_107:i32 = load %i_3
+            %140:ptr<private, i32, read_write> = access %data, %x_107
+            store %140, 2i
+            exit_switch  # switch_1
+          }
+          %b37 = block {  # case
+            %x_105:i32 = load %i_3
+            %142:ptr<private, i32, read_write> = access %data, %x_105
+            store %142, 3i
+            exit_switch  # switch_1
+          }
+          %b38 = block {  # case
+            %x_103:i32 = load %i_3
+            %144:ptr<private, i32, read_write> = access %data, %x_103
+            store %144, 4i
+            exit_switch  # switch_1
+          }
+          %b39 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %145:i32 = load %i_3
+        %146:i32 = add %145, 1i
+        store %i_3, %146
+        continue %b28
+      }
+      %b28 = block {  # continuing
+        %x_125:i32 = load %i_3
+        %148:bool = lt %x_125, 10i
+        %149:bool = eq %148, false
+        break_if %149 %b27
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b40, c: %b41] {  # loop_7
+      %b40 = block {  # body
+        %150:i32 = load %j_1
+        %151:bool = lt %150, 10i
+        if %151 [t: %b42, f: %b43] {  # if_7
+          %b42 = block {  # true
+            exit_if  # if_7
+          }
+          %b43 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %x_134:i32 = load %j_1
+        %153:ptr<private, i32, read_write> = access %temp, %x_134
+        %154:i32 = load %j_1
+        %155:ptr<private, i32, read_write> = access %data, %154
+        %156:i32 = load %155
+        store %153, %156
+        continue %b41
+      }
+      %b41 = block {  # continuing
+        %157:i32 = load %j_1
+        %158:i32 = add %157, 1i
+        store %j_1, %158
+        next_iteration %b40
+      }
+    }
+    %159:void = call %mergeSort_
+    %160:f32 = load_vector_element %gl_FragCoord, 1u
+    %161:i32 = convert %160
+    %162:bool = lt %161, 30i
+    if %162 [t: %b44, f: %b45] {  # if_8
+      %b44 = block {  # true
+        %163:ptr<private, i32, read_write> = access %data, 0i
+        %164:i32 = load %163
+        %165:f32 = convert %164
+        %166:f32 = div %165, 10.0f
+        %167:f32 = add 0.5f, %166
+        store %grey, %167
+        exit_if  # if_8
+      }
+      %b45 = block {  # false
+        %168:f32 = load_vector_element %gl_FragCoord, 1u
+        %169:i32 = convert %168
+        %170:bool = lt %169, 60i
+        if %170 [t: %b46, f: %b47] {  # if_9
+          %b46 = block {  # true
+            %171:ptr<private, i32, read_write> = access %data, 1i
+            %172:i32 = load %171
+            %173:f32 = convert %172
+            %174:f32 = div %173, 10.0f
+            %175:f32 = add 0.5f, %174
+            store %grey, %175
+            exit_if  # if_9
+          }
+          %b47 = block {  # false
+            %176:f32 = load_vector_element %gl_FragCoord, 1u
+            %177:i32 = convert %176
+            %178:bool = lt %177, 90i
+            if %178 [t: %b48, f: %b49] {  # if_10
+              %b48 = block {  # true
+                %179:ptr<private, i32, read_write> = access %data, 2i
+                %180:i32 = load %179
+                %181:f32 = convert %180
+                %182:f32 = div %181, 10.0f
+                %183:f32 = add 0.5f, %182
+                store %grey, %183
+                exit_if  # if_10
+              }
+              %b49 = block {  # false
+                %184:f32 = load_vector_element %gl_FragCoord, 1u
+                %185:i32 = convert %184
+                %186:bool = lt %185, 120i
+                if %186 [t: %b50, f: %b51] {  # if_11
+                  %b50 = block {  # true
+                    %187:ptr<private, i32, read_write> = access %data, 3i
+                    %188:i32 = load %187
+                    %189:f32 = convert %188
+                    %190:f32 = div %189, 10.0f
+                    %191:f32 = add 0.5f, %190
+                    store %grey, %191
+                    exit_if  # if_11
+                  }
+                  %b51 = block {  # false
+                    %192:f32 = load_vector_element %gl_FragCoord, 1u
+                    %193:i32 = convert %192
+                    %194:bool = lt %193, 150i
+                    if %194 [t: %b52, f: %b53] {  # if_12
+                      %b52 = block {  # true
+                        store %int_i, 1i
+                        loop [b: %b54, c: %b55] {  # loop_8
+                          %b54 = block {  # body
+                            %195:i32 = load %int_i
+                            %196:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+                            %197:f32 = load_vector_element %196, 0u
+                            %198:i32 = convert %197
+                            %199:bool = gt %195, %198
+                            if %199 [t: %b56, f: %b57] {  # if_13
+                              %b56 = block {  # true
+                                exit_if  # if_13
+                              }
+                              %b57 = block {  # false
+                                exit_loop  # loop_8
+                              }
+                            }
+                            discard
+                            continue %b55
+                          }
+                          %b55 = block {  # continuing
+                            next_iteration %b54
+                          }
+                        }
+                        exit_if  # if_12
+                      }
+                      %b53 = block {  # false
+                        %200:f32 = load_vector_element %gl_FragCoord, 1u
+                        %201:i32 = convert %200
+                        %202:bool = lt %201, 180i
+                        if %202 [t: %b58, f: %b59] {  # if_14
+                          %b58 = block {  # true
+                            %203:ptr<private, i32, read_write> = access %data, 5i
+                            %204:i32 = load %203
+                            %205:f32 = convert %204
+                            %206:f32 = div %205, 10.0f
+                            %207:f32 = add 0.5f, %206
+                            store %grey, %207
+                            exit_if  # if_14
+                          }
+                          %b59 = block {  # false
+                            %208:f32 = load_vector_element %gl_FragCoord, 1u
+                            %209:i32 = convert %208
+                            %210:bool = lt %209, 210i
+                            if %210 [t: %b60, f: %b61] {  # if_15
+                              %b60 = block {  # true
+                                %211:ptr<private, i32, read_write> = access %data, 6i
+                                %212:i32 = load %211
+                                %213:f32 = convert %212
+                                %214:f32 = div %213, 10.0f
+                                %215:f32 = add 0.5f, %214
+                                store %grey, %215
+                                exit_if  # if_15
+                              }
+                              %b61 = block {  # false
+                                %216:f32 = load_vector_element %gl_FragCoord, 1u
+                                %217:i32 = convert %216
+                                %218:bool = lt %217, 240i
+                                if %218 [t: %b62, f: %b63] {  # if_16
+                                  %b62 = block {  # true
+                                    %219:ptr<private, i32, read_write> = access %data, 7i
+                                    %220:i32 = load %219
+                                    %221:f32 = convert %220
+                                    %222:f32 = div %221, 10.0f
+                                    %223:f32 = add 0.5f, %222
+                                    store %grey, %223
+                                    exit_if  # if_16
+                                  }
+                                  %b63 = block {  # false
+                                    %224:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %225:i32 = convert %224
+                                    %226:bool = lt %225, 270i
+                                    if %226 [t: %b64, f: %b65] {  # if_17
+                                      %b64 = block {  # true
+                                        %227:ptr<private, i32, read_write> = access %data, 8i
+                                        %228:i32 = load %227
+                                        %229:f32 = convert %228
+                                        %230:f32 = div %229, 10.0f
+                                        %231:f32 = add 0.5f, %230
+                                        store %grey, %231
+                                        exit_if  # if_17
+                                      }
+                                      %b65 = block {  # false
+                                        discard
+                                        exit_if  # if_17
+                                      }
+                                    }
+                                    exit_if  # if_16
+                                  }
+                                }
+                                exit_if  # if_15
+                              }
+                            }
+                            exit_if  # if_14
+                          }
+                        }
+                        exit_if  # if_12
+                      }
+                    }
+                    exit_if  # if_11
+                  }
+                }
+                exit_if  # if_10
+              }
+            }
+            exit_if  # if_9
+          }
+        }
+        exit_if  # if_8
+      }
+    }
+    %232:f32 = load %grey
+    %x_256:vec3<f32> = construct %232
+    %234:f32 = access %x_256, 0u
+    %235:f32 = access %x_256, 1u
+    %236:f32 = access %x_256, 2u
+    %237:vec4<f32> = construct %234, %235, %236, 1.0f
+    store %x_GLF_color, %237
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b66 {
+  %b66 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %240:void = call %main_1
+    %241:vec4<f32> = load %x_GLF_color
+    %242:main_out = construct %241
+    ret %242
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..58b6dd3
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl.expected.ir.msl
@@ -0,0 +1,559 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %data:ptr<private, array<i32, 10>, read_write> = var
+  %temp:ptr<private, array<i32, 10>, read_write> = var
+  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %k:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %x_262:i32 = load %f
+    store %k, %x_262
+    %x_263:i32 = load %f
+    store %i, %x_263
+    %x_264:i32 = load %mid
+    %17:i32 = add %x_264, 1i
+    store %j, %17
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_270:i32 = load %i
+        %x_271:i32 = load %mid
+        %x_273:i32 = load %j
+        %x_274:i32 = load %to
+        %22:bool = lte %x_270, %x_271
+        %23:bool = lte %x_273, %x_274
+        %24:bool = and %22, %23
+        if %24 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_278:i32 = load %i
+        %26:ptr<private, i32, read_write> = access %data, %x_278
+        %x_280:i32 = load %26
+        %x_281:i32 = load %j
+        %29:ptr<private, i32, read_write> = access %data, %x_281
+        %x_283:i32 = load %29
+        %31:bool = lt %x_280, %x_283
+        if %31 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_288:i32 = load %k
+            %33:i32 = add %x_288, 1i
+            store %k, %33
+            %x_290:i32 = load %i
+            %35:i32 = add %x_290, 1i
+            store %i, %35
+            %36:ptr<private, i32, read_write> = access %data, %x_290
+            %x_293:i32 = load %36
+            %38:ptr<private, i32, read_write> = access %temp, %x_288
+            store %38, %x_293
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_295:i32 = load %k
+            %40:i32 = add %x_295, 1i
+            store %k, %40
+            %x_297:i32 = load %j
+            %42:i32 = add %x_297, 1i
+            store %j, %42
+            %43:ptr<private, i32, read_write> = access %data, %x_297
+            %x_300:i32 = load %43
+            %45:ptr<private, i32, read_write> = access %temp, %x_295
+            store %45, %x_300
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %x_306:i32 = load %i
+        %x_308:i32 = load %i
+        %x_309:i32 = load %mid
+        %49:bool = lt %x_306, 10i
+        %50:bool = lte %x_308, %x_309
+        %51:bool = and %49, %50
+        if %51 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_313:i32 = load %k
+        %53:i32 = add %x_313, 1i
+        store %k, %53
+        %x_315:i32 = load %i
+        %55:i32 = add %x_315, 1i
+        store %i, %55
+        %56:ptr<private, i32, read_write> = access %data, %x_315
+        %x_318:i32 = load %56
+        %58:ptr<private, i32, read_write> = access %temp, %x_313
+        store %58, %x_318
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    %x_320:i32 = load %f
+    store %i_1, %x_320
+    loop [b: %b13, c: %b14] {  # loop_3
+      %b13 = block {  # body
+        %x_325:i32 = load %i_1
+        %x_326:i32 = load %to
+        %62:bool = lte %x_325, %x_326
+        if %62 [t: %b15, f: %b16] {  # if_4
+          %b15 = block {  # true
+            exit_if  # if_4
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_329:i32 = load %i_1
+        %x_330:i32 = load %i_1
+        %65:ptr<private, i32, read_write> = access %temp, %x_330
+        %x_332:i32 = load %65
+        %67:ptr<private, i32, read_write> = access %data, %x_329
+        store %67, %x_332
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %x_334:i32 = load %i_1
+        %69:i32 = add %x_334, 1i
+        store %i_1, %69
+        next_iteration %b13
+      }
+    }
+    ret
+  }
+}
+%mergeSort_ = func():void -> %b17 {
+  %b17 = block {
+    %low:ptr<function, i32, read_write> = var
+    %high:ptr<function, i32, read_write> = var
+    %m:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %f_1:ptr<function, i32, read_write> = var
+    %mid_1:ptr<function, i32, read_write> = var
+    %to_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    store %low, 0i
+    store %high, 9i
+    store %m, 1i
+    loop [b: %b18, c: %b19] {  # loop_4
+      %b18 = block {  # body
+        %x_341:i32 = load %m
+        %x_342:i32 = load %high
+        %83:bool = lte %x_341, %x_342
+        if %83 [t: %b20, f: %b21] {  # if_5
+          %b20 = block {  # true
+            exit_if  # if_5
+          }
+          %b21 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %x_345:i32 = load %low
+        store %i_2, %x_345
+        loop [b: %b22, c: %b23] {  # loop_5
+          %b22 = block {  # body
+            %x_350:i32 = load %i_2
+            %x_351:i32 = load %high
+            %87:bool = lt %x_350, %x_351
+            if %87 [t: %b24, f: %b25] {  # if_6
+              %b24 = block {  # true
+                exit_if  # if_6
+              }
+              %b25 = block {  # false
+                exit_loop  # loop_5
+              }
+            }
+            %x_354:i32 = load %i_2
+            store %f_1, %x_354
+            %x_355:i32 = load %i_2
+            %x_356:i32 = load %m
+            %91:i32 = add %x_355, %x_356
+            %92:i32 = sub %91, 1i
+            store %mid_1, %92
+            %x_359:i32 = load %i_2
+            %x_360:i32 = load %m
+            %x_364:i32 = load %high
+            %96:i32 = mul 2i, %x_360
+            %97:i32 = add %x_359, %96
+            %98:i32 = sub %97, 1i
+            %99:i32 = min %98, %x_364
+            store %to_1, %99
+            %x_366:i32 = load %f_1
+            store %param, %x_366
+            %x_367:i32 = load %mid_1
+            store %param_1, %x_367
+            %x_368:i32 = load %to_1
+            store %param_2, %x_368
+            %103:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
+            continue %b23
+          }
+          %b23 = block {  # continuing
+            %x_370:i32 = load %m
+            %x_372:i32 = load %i_2
+            %106:i32 = mul 2i, %x_370
+            %107:i32 = add %x_372, %106
+            store %i_2, %107
+            next_iteration %b22
+          }
+        }
+        continue %b19
+      }
+      %b19 = block {  # continuing
+        %x_374:i32 = load %m
+        %109:i32 = mul 2i, %x_374
+        store %m, %109
+        next_iteration %b18
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b26 {
+  %b26 = block {
+    %i_3:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %grey:ptr<function, f32, read_write> = var
+    %int_i:ptr<function, i32, read_write> = var
+    %115:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+    %x_85:f32 = load_vector_element %115, 0u
+    %117:i32 = convert %x_85
+    store %i_3, %117
+    loop [b: %b27, c: %b28] {  # loop_6
+      %b27 = block {  # body
+        %x_91:i32 = load %i_3
+        switch %x_91 [c: (9i, %b29), c: (8i, %b30), c: (7i, %b31), c: (6i, %b32), c: (5i, %b33), c: (4i, %b34), c: (3i, %b35), c: (2i, %b36), c: (1i, %b37), c: (0i, %b38), c: (default, %b39)] {  # switch_1
+          %b29 = block {  # case
+            %x_121:i32 = load %i_3
+            %120:ptr<private, i32, read_write> = access %data, %x_121
+            store %120, -5i
+            exit_switch  # switch_1
+          }
+          %b30 = block {  # case
+            %x_119:i32 = load %i_3
+            %122:ptr<private, i32, read_write> = access %data, %x_119
+            store %122, -4i
+            exit_switch  # switch_1
+          }
+          %b31 = block {  # case
+            %x_117:i32 = load %i_3
+            %124:ptr<private, i32, read_write> = access %data, %x_117
+            store %124, -3i
+            exit_switch  # switch_1
+          }
+          %b32 = block {  # case
+            %x_115:i32 = load %i_3
+            %126:ptr<private, i32, read_write> = access %data, %x_115
+            store %126, -2i
+            exit_switch  # switch_1
+          }
+          %b33 = block {  # case
+            %x_113:i32 = load %i_3
+            %128:ptr<private, i32, read_write> = access %data, %x_113
+            store %128, -1i
+            exit_switch  # switch_1
+          }
+          %b34 = block {  # case
+            %x_111:i32 = load %i_3
+            %130:ptr<private, i32, read_write> = access %data, %x_111
+            store %130, 0i
+            exit_switch  # switch_1
+          }
+          %b35 = block {  # case
+            %x_109:i32 = load %i_3
+            %132:ptr<private, i32, read_write> = access %data, %x_109
+            store %132, 1i
+            exit_switch  # switch_1
+          }
+          %b36 = block {  # case
+            %x_107:i32 = load %i_3
+            %134:ptr<private, i32, read_write> = access %data, %x_107
+            store %134, 2i
+            exit_switch  # switch_1
+          }
+          %b37 = block {  # case
+            %x_105:i32 = load %i_3
+            %136:ptr<private, i32, read_write> = access %data, %x_105
+            store %136, 3i
+            exit_switch  # switch_1
+          }
+          %b38 = block {  # case
+            %x_103:i32 = load %i_3
+            %138:ptr<private, i32, read_write> = access %data, %x_103
+            store %138, 4i
+            exit_switch  # switch_1
+          }
+          %b39 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        %x_123:i32 = load %i_3
+        %140:i32 = add %x_123, 1i
+        store %i_3, %140
+        continue %b28
+      }
+      %b28 = block {  # continuing
+        %x_125:i32 = load %i_3
+        %142:bool = lt %x_125, 10i
+        %143:bool = eq %142, false
+        break_if %143 %b27
+      }
+    }
+    store %j_1, 0i
+    loop [b: %b40, c: %b41] {  # loop_7
+      %b40 = block {  # body
+        %x_131:i32 = load %j_1
+        %145:bool = lt %x_131, 10i
+        if %145 [t: %b42, f: %b43] {  # if_7
+          %b42 = block {  # true
+            exit_if  # if_7
+          }
+          %b43 = block {  # false
+            exit_loop  # loop_7
+          }
+        }
+        %x_134:i32 = load %j_1
+        %x_135:i32 = load %j_1
+        %148:ptr<private, i32, read_write> = access %data, %x_135
+        %x_137:i32 = load %148
+        %150:ptr<private, i32, read_write> = access %temp, %x_134
+        store %150, %x_137
+        continue %b41
+      }
+      %b41 = block {  # continuing
+        %x_139:i32 = load %j_1
+        %152:i32 = add %x_139, 1i
+        store %j_1, %152
+        next_iteration %b40
+      }
+    }
+    %153:void = call %mergeSort_
+    %x_143:f32 = load_vector_element %gl_FragCoord, 1u
+    %155:i32 = convert %x_143
+    %156:bool = lt %155, 30i
+    if %156 [t: %b44, f: %b45] {  # if_8
+      %b44 = block {  # true
+        %157:ptr<private, i32, read_write> = access %data, 0i
+        %x_150:i32 = load %157
+        %159:f32 = convert %x_150
+        %160:f32 = div %159, 10.0f
+        %161:f32 = add 0.5f, %160
+        store %grey, %161
+        exit_if  # if_8
+      }
+      %b45 = block {  # false
+        %x_155:f32 = load_vector_element %gl_FragCoord, 1u
+        %163:i32 = convert %x_155
+        %164:bool = lt %163, 60i
+        if %164 [t: %b46, f: %b47] {  # if_9
+          %b46 = block {  # true
+            %165:ptr<private, i32, read_write> = access %data, 1i
+            %x_162:i32 = load %165
+            %167:f32 = convert %x_162
+            %168:f32 = div %167, 10.0f
+            %169:f32 = add 0.5f, %168
+            store %grey, %169
+            exit_if  # if_9
+          }
+          %b47 = block {  # false
+            %x_167:f32 = load_vector_element %gl_FragCoord, 1u
+            %171:i32 = convert %x_167
+            %172:bool = lt %171, 90i
+            if %172 [t: %b48, f: %b49] {  # if_10
+              %b48 = block {  # true
+                %173:ptr<private, i32, read_write> = access %data, 2i
+                %x_174:i32 = load %173
+                %175:f32 = convert %x_174
+                %176:f32 = div %175, 10.0f
+                %177:f32 = add 0.5f, %176
+                store %grey, %177
+                exit_if  # if_10
+              }
+              %b49 = block {  # false
+                %x_179:f32 = load_vector_element %gl_FragCoord, 1u
+                %179:i32 = convert %x_179
+                %180:bool = lt %179, 120i
+                if %180 [t: %b50, f: %b51] {  # if_11
+                  %b50 = block {  # true
+                    %181:ptr<private, i32, read_write> = access %data, 3i
+                    %x_186:i32 = load %181
+                    %183:f32 = convert %x_186
+                    %184:f32 = div %183, 10.0f
+                    %185:f32 = add 0.5f, %184
+                    store %grey, %185
+                    exit_if  # if_11
+                  }
+                  %b51 = block {  # false
+                    %x_191:f32 = load_vector_element %gl_FragCoord, 1u
+                    %187:i32 = convert %x_191
+                    %188:bool = lt %187, 150i
+                    if %188 [t: %b52, f: %b53] {  # if_12
+                      %b52 = block {  # true
+                        store %int_i, 1i
+                        loop [b: %b54, c: %b55] {  # loop_8
+                          %b54 = block {  # body
+                            %x_201:i32 = load %int_i
+                            %190:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
+                            %x_203:f32 = load_vector_element %190, 0u
+                            %192:i32 = convert %x_203
+                            %193:bool = gt %x_201, %192
+                            if %193 [t: %b56, f: %b57] {  # if_13
+                              %b56 = block {  # true
+                                exit_if  # if_13
+                              }
+                              %b57 = block {  # false
+                                exit_loop  # loop_8
+                              }
+                            }
+                            discard
+                            continue %b55
+                          }
+                          %b55 = block {  # continuing
+                            next_iteration %b54
+                          }
+                        }
+                        exit_if  # if_12
+                      }
+                      %b53 = block {  # false
+                        %x_208:f32 = load_vector_element %gl_FragCoord, 1u
+                        %195:i32 = convert %x_208
+                        %196:bool = lt %195, 180i
+                        if %196 [t: %b58, f: %b59] {  # if_14
+                          %b58 = block {  # true
+                            %197:ptr<private, i32, read_write> = access %data, 5i
+                            %x_215:i32 = load %197
+                            %199:f32 = convert %x_215
+                            %200:f32 = div %199, 10.0f
+                            %201:f32 = add 0.5f, %200
+                            store %grey, %201
+                            exit_if  # if_14
+                          }
+                          %b59 = block {  # false
+                            %x_220:f32 = load_vector_element %gl_FragCoord, 1u
+                            %203:i32 = convert %x_220
+                            %204:bool = lt %203, 210i
+                            if %204 [t: %b60, f: %b61] {  # if_15
+                              %b60 = block {  # true
+                                %205:ptr<private, i32, read_write> = access %data, 6i
+                                %x_227:i32 = load %205
+                                %207:f32 = convert %x_227
+                                %208:f32 = div %207, 10.0f
+                                %209:f32 = add 0.5f, %208
+                                store %grey, %209
+                                exit_if  # if_15
+                              }
+                              %b61 = block {  # false
+                                %x_232:f32 = load_vector_element %gl_FragCoord, 1u
+                                %211:i32 = convert %x_232
+                                %212:bool = lt %211, 240i
+                                if %212 [t: %b62, f: %b63] {  # if_16
+                                  %b62 = block {  # true
+                                    %213:ptr<private, i32, read_write> = access %data, 7i
+                                    %x_239:i32 = load %213
+                                    %215:f32 = convert %x_239
+                                    %216:f32 = div %215, 10.0f
+                                    %217:f32 = add 0.5f, %216
+                                    store %grey, %217
+                                    exit_if  # if_16
+                                  }
+                                  %b63 = block {  # false
+                                    %x_244:f32 = load_vector_element %gl_FragCoord, 1u
+                                    %219:i32 = convert %x_244
+                                    %220:bool = lt %219, 270i
+                                    if %220 [t: %b64, f: %b65] {  # if_17
+                                      %b64 = block {  # true
+                                        %221:ptr<private, i32, read_write> = access %data, 8i
+                                        %x_251:i32 = load %221
+                                        %223:f32 = convert %x_251
+                                        %224:f32 = div %223, 10.0f
+                                        %225:f32 = add 0.5f, %224
+                                        store %grey, %225
+                                        exit_if  # if_17
+                                      }
+                                      %b65 = block {  # false
+                                        discard
+                                        exit_if  # if_17
+                                      }
+                                    }
+                                    exit_if  # if_16
+                                  }
+                                }
+                                exit_if  # if_15
+                              }
+                            }
+                            exit_if  # if_14
+                          }
+                        }
+                        exit_if  # if_12
+                      }
+                    }
+                    exit_if  # if_11
+                  }
+                }
+                exit_if  # if_10
+              }
+            }
+            exit_if  # if_9
+          }
+        }
+        exit_if  # if_8
+      }
+    }
+    %x_255:f32 = load %grey
+    %x_256:vec3<f32> = construct %x_255, %x_255, %x_255
+    %228:f32 = access %x_256, 0u
+    %229:f32 = access %x_256, 1u
+    %230:f32 = access %x_256, 2u
+    %231:vec4<f32> = construct %228, %229, %230, 1.0f
+    store %x_GLF_color, %231
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b66 {
+  %b66 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %234:void = call %main_1
+    %235:vec4<f32> = load %x_GLF_color
+    %236:main_out = construct %235
+    ret %236
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1afae1d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm.expected.ir.msl
@@ -0,0 +1,449 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_34:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %9:i32 = load %i
+    %10:ptr<private, i32, read_write> = access %obj, 0u, %9
+    %11:i32 = load %10
+    store %temp, %11
+    %x_233:i32 = load %i
+    %13:ptr<private, i32, read_write> = access %obj, 0u, %x_233
+    %14:i32 = load %j
+    %15:ptr<private, i32, read_write> = access %obj, 0u, %14
+    %16:i32 = load %15
+    store %13, %16
+    %x_238:i32 = load %j
+    %18:ptr<private, i32, read_write> = access %obj, 0u, %x_238
+    %19:i32 = load %temp
+    store %18, %19
+    ret
+  }
+}
+%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %pivot:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %30:i32 = load %h
+    %31:ptr<private, i32, read_write> = access %obj, 0u, %30
+    %32:i32 = load %31
+    store %pivot, %32
+    %33:i32 = load %l
+    %34:i32 = sub %33, 1i
+    store %i_1, %34
+    %35:i32 = load %l
+    store %j_1, %35
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %36:i32 = load %j_1
+        %37:i32 = load %h
+        %38:i32 = sub %37, 1i
+        %39:bool = lte %36, %38
+        if %39 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %40:i32 = load %j_1
+        %41:ptr<private, i32, read_write> = access %obj, 0u, %40
+        %42:i32 = load %41
+        %43:i32 = load %pivot
+        %44:bool = lte %42, %43
+        if %44 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            %45:i32 = load %i_1
+            %46:i32 = add %45, 1i
+            store %i_1, %46
+            %47:i32 = load %i_1
+            store %param, %47
+            %48:i32 = load %j_1
+            store %param_1, %48
+            %49:void = call %swap_i1_i1_, %param, %param_1
+            exit_if  # if_2
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %50:i32 = load %j_1
+        %51:i32 = add %50, 1i
+        store %j_1, %51
+        next_iteration %b4
+      }
+    }
+    %52:i32 = load %i_1
+    %53:i32 = add %52, 1i
+    store %i_1, %53
+    %54:i32 = load %i_1
+    store %param_2, %54
+    %55:i32 = load %h
+    store %param_3, %55
+    %56:void = call %swap_i1_i1_, %param_2, %param_3
+    %x_276:i32 = load %i_1
+    ret %x_276
+  }
+}
+%quicksort_ = func():void -> %b9 {
+  %b9 = block {
+    %l_1:ptr<function, i32, read_write> = var
+    %h_1:ptr<function, i32, read_write> = var
+    %top:ptr<function, i32, read_write> = var
+    %stack:ptr<function, array<i32, 10>, read_write> = var
+    %int_a:ptr<function, i32, read_write> = var
+    %x_278:ptr<function, i32, read_write> = var
+    %x_279:ptr<function, i32, read_write> = var
+    %clamp_a:ptr<function, i32, read_write> = var
+    %p:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    store %l_1, 0i
+    store %h_1, 9i
+    store %top, -1i
+    %70:i32 = load %top
+    %x_281:i32 = add %70, 1i
+    store %top, %x_281
+    %72:ptr<function, i32, read_write> = access %stack, %x_281
+    %73:i32 = load %l_1
+    store %72, %73
+    %74:f32 = load_vector_element %gl_FragCoord, 1u
+    %75:bool = gte %74, 0.0f
+    if %75 [t: %b10, f: %b11] {  # if_3
+      %b10 = block {  # true
+        %x_290:i32 = load %h_1
+        if false [t: %b12, f: %b13] {  # if_4
+          %b12 = block {  # true
+            store %x_279, 1i
+            exit_if  # if_4
+          }
+          %b13 = block {  # false
+            %77:i32 = load %h_1
+            %78:i32 = shiftl %77, 0u
+            store %x_279, %78
+            exit_if  # if_4
+          }
+        }
+        %79:i32 = load %x_279
+        %80:i32 = or %x_290, %79
+        store %x_278, %80
+        exit_if  # if_3
+      }
+      %b11 = block {  # false
+        store %x_278, 1i
+        exit_if  # if_3
+      }
+    }
+    %81:i32 = load %x_278
+    store %int_a, %81
+    %82:i32 = load %h_1
+    %83:i32 = load %h_1
+    %84:i32 = load %int_a
+    %85:i32 = clamp %82, %83, %84
+    store %clamp_a, %85
+    %86:i32 = load %top
+    %x_304:i32 = add %86, 1i
+    store %top, %x_304
+    %88:ptr<function, i32, read_write> = access %stack, %x_304
+    %89:i32 = load %clamp_a
+    %90:i32 = div %89, 1i
+    store %88, %90
+    loop [b: %b14, c: %b15] {  # loop_2
+      %b14 = block {  # body
+        %91:i32 = load %top
+        %92:bool = gte %91, 0i
+        if %92 [t: %b16, f: %b17] {  # if_5
+          %b16 = block {  # true
+            exit_if  # if_5
+          }
+          %b17 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_315:i32 = load %top
+        %94:i32 = load %top
+        %95:i32 = sub %94, 1i
+        store %top, %95
+        %96:ptr<function, i32, read_write> = access %stack, %x_315
+        %97:i32 = load %96
+        store %h_1, %97
+        %x_319:i32 = load %top
+        %99:i32 = load %top
+        %100:i32 = sub %99, 1i
+        store %top, %100
+        %101:ptr<function, i32, read_write> = access %stack, %x_319
+        %102:i32 = load %101
+        store %l_1, %102
+        %103:i32 = load %l_1
+        store %param_4, %103
+        %104:i32 = load %h_1
+        store %param_5, %104
+        %x_325:i32 = call %performPartition_i1_i1_, %param_4, %param_5
+        store %p, %x_325
+        %106:i32 = load %p
+        %107:i32 = sub %106, 1i
+        %108:i32 = load %l_1
+        %109:bool = gt %107, %108
+        if %109 [t: %b18] {  # if_6
+          %b18 = block {  # true
+            %110:i32 = load %top
+            %x_333:i32 = add %110, 1i
+            store %top, %x_333
+            %112:ptr<function, i32, read_write> = access %stack, %x_333
+            %113:i32 = load %l_1
+            store %112, %113
+            %114:i32 = load %top
+            %x_337:i32 = add %114, 1i
+            store %top, %x_337
+            %116:ptr<function, i32, read_write> = access %stack, %x_337
+            %117:i32 = load %p
+            %118:i32 = sub %117, 1i
+            store %116, %118
+            exit_if  # if_6
+          }
+        }
+        %119:i32 = load %p
+        %120:i32 = add %119, 1i
+        %121:i32 = load %h_1
+        %122:bool = lt %120, %121
+        if %122 [t: %b19] {  # if_7
+          %b19 = block {  # true
+            %123:i32 = load %top
+            %x_348:i32 = add %123, 1i
+            store %top, %x_348
+            %125:ptr<function, i32, read_write> = access %stack, %x_348
+            %126:i32 = load %p
+            %127:i32 = add %126, 1i
+            store %125, %127
+            %128:i32 = load %top
+            %x_353:i32 = add %128, 1i
+            store %top, %x_353
+            %130:ptr<function, i32, read_write> = access %stack, %x_353
+            %131:i32 = load %h_1
+            store %130, %131
+            exit_if  # if_7
+          }
+        }
+        continue %b15
+      }
+      %b15 = block {  # continuing
+        next_iteration %b14
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b20 {
+  %b20 = block {
+    %i_2:ptr<function, i32, read_write> = var
+    %uv:ptr<function, vec2<f32>, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    store %i_2, 0i
+    loop [b: %b21, c: %b22] {  # loop_3
+      %b21 = block {  # body
+        %136:i32 = load %i_2
+        %137:bool = lt %136, 10i
+        if %137 [t: %b23, f: %b24] {  # if_8
+          %b23 = block {  # true
+            exit_if  # if_8
+          }
+          %b24 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_93:i32 = load %i_2
+        %139:ptr<private, i32, read_write> = access %obj, 0u, %x_93
+        %140:i32 = load %i_2
+        %141:i32 = sub 10i, %140
+        store %139, %141
+        %x_97:i32 = load %i_2
+        %143:ptr<private, i32, read_write> = access %obj, 0u, %x_97
+        %144:i32 = load %i_2
+        %145:ptr<private, i32, read_write> = access %obj, 0u, %144
+        %146:i32 = load %145
+        %147:i32 = load %i_2
+        %148:ptr<private, i32, read_write> = access %obj, 0u, %147
+        %149:i32 = load %148
+        %150:i32 = mul %146, %149
+        store %143, %150
+        continue %b22
+      }
+      %b22 = block {  # continuing
+        %151:i32 = load %i_2
+        %152:i32 = add %151, 1i
+        store %i_2, %152
+        next_iteration %b21
+      }
+    }
+    %153:void = call %quicksort_
+    %154:vec4<f32> = load %gl_FragCoord
+    %155:vec2<f32> = swizzle %154, xy
+    %156:ptr<uniform, vec2<f32>, read> = access %x_34, 0u
+    %157:vec2<f32> = load %156
+    %158:vec2<f32> = div %155, %157
+    store %uv, %158
+    store %color, vec3<f32>(1.0f, 2.0f, 3.0f)
+    %159:f32 = load_vector_element %color, 0u
+    %160:ptr<private, i32, read_write> = access %obj, 0u, 0i
+    %161:i32 = load %160
+    %162:f32 = convert %161
+    %163:f32 = add %159, %162
+    store_vector_element %color, 0u, %163
+    %164:f32 = load_vector_element %uv, 0u
+    %165:bool = gt %164, 0.25f
+    if %165 [t: %b25] {  # if_9
+      %b25 = block {  # true
+        %166:f32 = load_vector_element %color, 0u
+        %167:ptr<private, i32, read_write> = access %obj, 0u, 1i
+        %168:i32 = load %167
+        %169:f32 = convert %168
+        %170:f32 = add %166, %169
+        store_vector_element %color, 0u, %170
+        exit_if  # if_9
+      }
+    }
+    %171:f32 = load_vector_element %uv, 0u
+    %172:bool = gt %171, 0.5f
+    if %172 [t: %b26] {  # if_10
+      %b26 = block {  # true
+        %173:f32 = load_vector_element %color, 1u
+        %174:ptr<private, i32, read_write> = access %obj, 0u, 2i
+        %175:i32 = load %174
+        %176:f32 = convert %175
+        %177:f32 = add %173, %176
+        store_vector_element %color, 1u, %177
+        exit_if  # if_10
+      }
+    }
+    %178:f32 = load_vector_element %uv, 0u
+    %179:bool = gt %178, 0.75f
+    if %179 [t: %b27] {  # if_11
+      %b27 = block {  # true
+        %180:f32 = load_vector_element %color, 2u
+        %181:ptr<private, i32, read_write> = access %obj, 0u, 3i
+        %182:i32 = load %181
+        %183:f32 = convert %182
+        %184:f32 = add %180, %183
+        store_vector_element %color, 2u, %184
+        exit_if  # if_11
+      }
+    }
+    %185:f32 = load_vector_element %color, 1u
+    %186:ptr<private, i32, read_write> = access %obj, 0u, 4i
+    %187:i32 = load %186
+    %188:f32 = convert %187
+    %189:f32 = add %185, %188
+    store_vector_element %color, 1u, %189
+    %190:f32 = load_vector_element %uv, 1u
+    %191:bool = gt %190, 0.25f
+    if %191 [t: %b28] {  # if_12
+      %b28 = block {  # true
+        %192:f32 = load_vector_element %color, 0u
+        %193:ptr<private, i32, read_write> = access %obj, 0u, 5i
+        %194:i32 = load %193
+        %195:f32 = convert %194
+        %196:f32 = add %192, %195
+        store_vector_element %color, 0u, %196
+        exit_if  # if_12
+      }
+    }
+    %197:f32 = load_vector_element %uv, 1u
+    %198:bool = gt %197, 0.5f
+    if %198 [t: %b29] {  # if_13
+      %b29 = block {  # true
+        %199:f32 = load_vector_element %color, 1u
+        %200:ptr<private, i32, read_write> = access %obj, 0u, 6i
+        %201:i32 = load %200
+        %202:f32 = convert %201
+        %203:f32 = add %199, %202
+        store_vector_element %color, 1u, %203
+        exit_if  # if_13
+      }
+    }
+    %204:f32 = load_vector_element %uv, 1u
+    %205:bool = gt %204, 0.75f
+    if %205 [t: %b30] {  # if_14
+      %b30 = block {  # true
+        %206:f32 = load_vector_element %color, 2u
+        %207:ptr<private, i32, read_write> = access %obj, 0u, 7i
+        %208:i32 = load %207
+        %209:f32 = convert %208
+        %210:f32 = add %206, %209
+        store_vector_element %color, 2u, %210
+        exit_if  # if_14
+      }
+    }
+    %211:f32 = load_vector_element %color, 2u
+    %212:ptr<private, i32, read_write> = access %obj, 0u, 8i
+    %213:i32 = load %212
+    %214:f32 = convert %213
+    %215:f32 = add %211, %214
+    store_vector_element %color, 2u, %215
+    %216:f32 = load_vector_element %uv, 0u
+    %217:f32 = load_vector_element %uv, 1u
+    %218:f32 = sub %216, %217
+    %219:f32 = abs %218
+    %220:bool = lt %219, 0.25f
+    if %220 [t: %b31] {  # if_15
+      %b31 = block {  # true
+        %221:f32 = load_vector_element %color, 0u
+        %222:ptr<private, i32, read_write> = access %obj, 0u, 9i
+        %223:i32 = load %222
+        %224:f32 = convert %223
+        %225:f32 = add %221, %224
+        store_vector_element %color, 0u, %225
+        exit_if  # if_15
+      }
+    }
+    %226:vec3<f32> = load %color
+    %x_224:vec3<f32> = normalize %226
+    %228:f32 = access %x_224, 0u
+    %229:f32 = access %x_224, 1u
+    %230:f32 = access %x_224, 2u
+    %231:vec4<f32> = construct %228, %229, %230, 1.0f
+    store %x_GLF_color, %231
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b32 {
+  %b32 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %234:void = call %main_1
+    %235:vec4<f32> = load %x_GLF_color
+    %236:main_out = construct %235
+    ret %236
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3840d8a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl.expected.ir.msl
@@ -0,0 +1,449 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_34:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %x_230:i32 = load %i
+    %10:ptr<private, i32, read_write> = access %obj, 0u, %x_230
+    %x_232:i32 = load %10
+    store %temp, %x_232
+    %x_233:i32 = load %i
+    %x_234:i32 = load %j
+    %14:ptr<private, i32, read_write> = access %obj, 0u, %x_234
+    %x_236:i32 = load %14
+    %16:ptr<private, i32, read_write> = access %obj, 0u, %x_233
+    store %16, %x_236
+    %x_238:i32 = load %j
+    %x_239:i32 = load %temp
+    %19:ptr<private, i32, read_write> = access %obj, 0u, %x_238
+    store %19, %x_239
+    ret
+  }
+}
+%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %pivot:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %x_242:i32 = load %h
+    %31:ptr<private, i32, read_write> = access %obj, 0u, %x_242
+    %x_244:i32 = load %31
+    store %pivot, %x_244
+    %x_245:i32 = load %l
+    %34:i32 = sub %x_245, 1i
+    store %i_1, %34
+    %x_247:i32 = load %l
+    store %j_1, %x_247
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %x_252:i32 = load %j_1
+        %x_253:i32 = load %h
+        %38:i32 = sub %x_253, 1i
+        %39:bool = lte %x_252, %38
+        if %39 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_257:i32 = load %j_1
+        %41:ptr<private, i32, read_write> = access %obj, 0u, %x_257
+        %x_259:i32 = load %41
+        %x_260:i32 = load %pivot
+        %44:bool = lte %x_259, %x_260
+        if %44 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            %x_264:i32 = load %i_1
+            %46:i32 = add %x_264, 1i
+            store %i_1, %46
+            %x_266:i32 = load %i_1
+            store %param, %x_266
+            %x_267:i32 = load %j_1
+            store %param_1, %x_267
+            %49:void = call %swap_i1_i1_, %param, %param_1
+            exit_if  # if_2
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %x_269:i32 = load %j_1
+        %51:i32 = add %x_269, 1i
+        store %j_1, %51
+        next_iteration %b4
+      }
+    }
+    %x_271:i32 = load %i_1
+    %53:i32 = add %x_271, 1i
+    store %i_1, %53
+    %x_273:i32 = load %i_1
+    store %param_2, %x_273
+    %x_274:i32 = load %h
+    store %param_3, %x_274
+    %56:void = call %swap_i1_i1_, %param_2, %param_3
+    %x_276:i32 = load %i_1
+    ret %x_276
+  }
+}
+%quicksort_ = func():void -> %b9 {
+  %b9 = block {
+    %l_1:ptr<function, i32, read_write> = var
+    %h_1:ptr<function, i32, read_write> = var
+    %top:ptr<function, i32, read_write> = var
+    %stack:ptr<function, array<i32, 10>, read_write> = var
+    %int_a:ptr<function, i32, read_write> = var
+    %x_278:ptr<function, i32, read_write> = var
+    %x_279:ptr<function, i32, read_write> = var
+    %clamp_a:ptr<function, i32, read_write> = var
+    %p:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    store %l_1, 0i
+    store %h_1, 9i
+    store %top, -1i
+    %x_280:i32 = load %top
+    %x_281:i32 = add %x_280, 1i
+    store %top, %x_281
+    %x_282:i32 = load %l_1
+    %73:ptr<function, i32, read_write> = access %stack, %x_281
+    store %73, %x_282
+    %x_285:f32 = load_vector_element %gl_FragCoord, 1u
+    %75:bool = gte %x_285, 0.0f
+    if %75 [t: %b10, f: %b11] {  # if_3
+      %b10 = block {  # true
+        %x_290:i32 = load %h_1
+        if false [t: %b12, f: %b13] {  # if_4
+          %b12 = block {  # true
+            store %x_279, 1i
+            exit_if  # if_4
+          }
+          %b13 = block {  # false
+            %x_294:i32 = load %h_1
+            %78:i32 = shiftl %x_294, 0u
+            store %x_279, %78
+            exit_if  # if_4
+          }
+        }
+        %x_296:i32 = load %x_279
+        %80:i32 = or %x_290, %x_296
+        store %x_278, %80
+        exit_if  # if_3
+      }
+      %b11 = block {  # false
+        store %x_278, 1i
+        exit_if  # if_3
+      }
+    }
+    %x_298:i32 = load %x_278
+    store %int_a, %x_298
+    %x_299:i32 = load %h_1
+    %x_300:i32 = load %h_1
+    %x_301:i32 = load %int_a
+    %85:i32 = clamp %x_299, %x_300, %x_301
+    store %clamp_a, %85
+    %x_303:i32 = load %top
+    %x_304:i32 = add %x_303, 1i
+    store %top, %x_304
+    %x_305:i32 = load %clamp_a
+    %89:ptr<function, i32, read_write> = access %stack, %x_304
+    %90:i32 = div %x_305, 1i
+    store %89, %90
+    loop [b: %b14, c: %b15] {  # loop_2
+      %b14 = block {  # body
+        %x_312:i32 = load %top
+        %92:bool = gte %x_312, 0i
+        if %92 [t: %b16, f: %b17] {  # if_5
+          %b16 = block {  # true
+            exit_if  # if_5
+          }
+          %b17 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_315:i32 = load %top
+        %94:i32 = sub %x_315, 1i
+        store %top, %94
+        %95:ptr<function, i32, read_write> = access %stack, %x_315
+        %x_318:i32 = load %95
+        store %h_1, %x_318
+        %x_319:i32 = load %top
+        %98:i32 = sub %x_319, 1i
+        store %top, %98
+        %99:ptr<function, i32, read_write> = access %stack, %x_319
+        %x_322:i32 = load %99
+        store %l_1, %x_322
+        %x_323:i32 = load %l_1
+        store %param_4, %x_323
+        %x_324:i32 = load %h_1
+        store %param_5, %x_324
+        %x_325:i32 = call %performPartition_i1_i1_, %param_4, %param_5
+        store %p, %x_325
+        %x_326:i32 = load %p
+        %x_328:i32 = load %l_1
+        %106:i32 = sub %x_326, 1i
+        %107:bool = gt %106, %x_328
+        if %107 [t: %b18] {  # if_6
+          %b18 = block {  # true
+            %x_332:i32 = load %top
+            %x_333:i32 = add %x_332, 1i
+            store %top, %x_333
+            %x_334:i32 = load %l_1
+            %111:ptr<function, i32, read_write> = access %stack, %x_333
+            store %111, %x_334
+            %x_336:i32 = load %top
+            %x_337:i32 = add %x_336, 1i
+            store %top, %x_337
+            %x_338:i32 = load %p
+            %115:ptr<function, i32, read_write> = access %stack, %x_337
+            %116:i32 = sub %x_338, 1i
+            store %115, %116
+            exit_if  # if_6
+          }
+        }
+        %x_341:i32 = load %p
+        %x_343:i32 = load %h_1
+        %119:i32 = add %x_341, 1i
+        %120:bool = lt %119, %x_343
+        if %120 [t: %b19] {  # if_7
+          %b19 = block {  # true
+            %x_347:i32 = load %top
+            %x_348:i32 = add %x_347, 1i
+            store %top, %x_348
+            %x_349:i32 = load %p
+            %124:ptr<function, i32, read_write> = access %stack, %x_348
+            %125:i32 = add %x_349, 1i
+            store %124, %125
+            %x_352:i32 = load %top
+            %x_353:i32 = add %x_352, 1i
+            store %top, %x_353
+            %x_354:i32 = load %h_1
+            %129:ptr<function, i32, read_write> = access %stack, %x_353
+            store %129, %x_354
+            exit_if  # if_7
+          }
+        }
+        continue %b15
+      }
+      %b15 = block {  # continuing
+        next_iteration %b14
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b20 {
+  %b20 = block {
+    %i_2:ptr<function, i32, read_write> = var
+    %uv:ptr<function, vec2<f32>, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    store %i_2, 0i
+    loop [b: %b21, c: %b22] {  # loop_3
+      %b21 = block {  # body
+        %x_90:i32 = load %i_2
+        %135:bool = lt %x_90, 10i
+        if %135 [t: %b23, f: %b24] {  # if_8
+          %b23 = block {  # true
+            exit_if  # if_8
+          }
+          %b24 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_93:i32 = load %i_2
+        %x_94:i32 = load %i_2
+        %138:ptr<private, i32, read_write> = access %obj, 0u, %x_93
+        %139:i32 = sub 10i, %x_94
+        store %138, %139
+        %x_97:i32 = load %i_2
+        %x_98:i32 = load %i_2
+        %142:ptr<private, i32, read_write> = access %obj, 0u, %x_98
+        %x_100:i32 = load %142
+        %x_101:i32 = load %i_2
+        %145:ptr<private, i32, read_write> = access %obj, 0u, %x_101
+        %x_103:i32 = load %145
+        %147:ptr<private, i32, read_write> = access %obj, 0u, %x_97
+        %148:i32 = mul %x_100, %x_103
+        store %147, %148
+        continue %b22
+      }
+      %b22 = block {  # continuing
+        %x_106:i32 = load %i_2
+        %150:i32 = add %x_106, 1i
+        store %i_2, %150
+        next_iteration %b21
+      }
+    }
+    %151:void = call %quicksort_
+    %x_109:vec4<f32> = load %gl_FragCoord
+    %153:ptr<uniform, vec2<f32>, read> = access %x_34, 0u
+    %x_112:vec2<f32> = load %153
+    %155:f32 = access %x_109, 0u
+    %156:f32 = access %x_109, 1u
+    %157:vec2<f32> = construct %155, %156
+    %158:vec2<f32> = div %157, %x_112
+    store %uv, %158
+    store %color, vec3<f32>(1.0f, 2.0f, 3.0f)
+    %159:ptr<private, i32, read_write> = access %obj, 0u, 0i
+    %x_115:i32 = load %159
+    %x_118:f32 = load_vector_element %color, 0u
+    %162:f32 = convert %x_115
+    %163:f32 = add %x_118, %162
+    store_vector_element %color, 0u, %163
+    %x_122:f32 = load_vector_element %uv, 0u
+    %165:bool = gt %x_122, 0.25f
+    if %165 [t: %b25] {  # if_9
+      %b25 = block {  # true
+        %166:ptr<private, i32, read_write> = access %obj, 0u, 1i
+        %x_127:i32 = load %166
+        %x_130:f32 = load_vector_element %color, 0u
+        %169:f32 = convert %x_127
+        %170:f32 = add %x_130, %169
+        store_vector_element %color, 0u, %170
+        exit_if  # if_9
+      }
+    }
+    %x_134:f32 = load_vector_element %uv, 0u
+    %172:bool = gt %x_134, 0.5f
+    if %172 [t: %b26] {  # if_10
+      %b26 = block {  # true
+        %173:ptr<private, i32, read_write> = access %obj, 0u, 2i
+        %x_139:i32 = load %173
+        %x_142:f32 = load_vector_element %color, 1u
+        %176:f32 = convert %x_139
+        %177:f32 = add %x_142, %176
+        store_vector_element %color, 1u, %177
+        exit_if  # if_10
+      }
+    }
+    %x_146:f32 = load_vector_element %uv, 0u
+    %179:bool = gt %x_146, 0.75f
+    if %179 [t: %b27] {  # if_11
+      %b27 = block {  # true
+        %180:ptr<private, i32, read_write> = access %obj, 0u, 3i
+        %x_151:i32 = load %180
+        %x_154:f32 = load_vector_element %color, 2u
+        %183:f32 = convert %x_151
+        %184:f32 = add %x_154, %183
+        store_vector_element %color, 2u, %184
+        exit_if  # if_11
+      }
+    }
+    %185:ptr<private, i32, read_write> = access %obj, 0u, 4i
+    %x_158:i32 = load %185
+    %x_161:f32 = load_vector_element %color, 1u
+    %188:f32 = convert %x_158
+    %189:f32 = add %x_161, %188
+    store_vector_element %color, 1u, %189
+    %x_165:f32 = load_vector_element %uv, 1u
+    %191:bool = gt %x_165, 0.25f
+    if %191 [t: %b28] {  # if_12
+      %b28 = block {  # true
+        %192:ptr<private, i32, read_write> = access %obj, 0u, 5i
+        %x_170:i32 = load %192
+        %x_173:f32 = load_vector_element %color, 0u
+        %195:f32 = convert %x_170
+        %196:f32 = add %x_173, %195
+        store_vector_element %color, 0u, %196
+        exit_if  # if_12
+      }
+    }
+    %x_177:f32 = load_vector_element %uv, 1u
+    %198:bool = gt %x_177, 0.5f
+    if %198 [t: %b29] {  # if_13
+      %b29 = block {  # true
+        %199:ptr<private, i32, read_write> = access %obj, 0u, 6i
+        %x_182:i32 = load %199
+        %x_185:f32 = load_vector_element %color, 1u
+        %202:f32 = convert %x_182
+        %203:f32 = add %x_185, %202
+        store_vector_element %color, 1u, %203
+        exit_if  # if_13
+      }
+    }
+    %x_189:f32 = load_vector_element %uv, 1u
+    %205:bool = gt %x_189, 0.75f
+    if %205 [t: %b30] {  # if_14
+      %b30 = block {  # true
+        %206:ptr<private, i32, read_write> = access %obj, 0u, 7i
+        %x_194:i32 = load %206
+        %x_197:f32 = load_vector_element %color, 2u
+        %209:f32 = convert %x_194
+        %210:f32 = add %x_197, %209
+        store_vector_element %color, 2u, %210
+        exit_if  # if_14
+      }
+    }
+    %211:ptr<private, i32, read_write> = access %obj, 0u, 8i
+    %x_201:i32 = load %211
+    %x_204:f32 = load_vector_element %color, 2u
+    %214:f32 = convert %x_201
+    %215:f32 = add %x_204, %214
+    store_vector_element %color, 2u, %215
+    %x_208:f32 = load_vector_element %uv, 0u
+    %x_210:f32 = load_vector_element %uv, 1u
+    %218:f32 = sub %x_208, %x_210
+    %219:f32 = abs %218
+    %220:bool = lt %219, 0.25f
+    if %220 [t: %b31] {  # if_15
+      %b31 = block {  # true
+        %221:ptr<private, i32, read_write> = access %obj, 0u, 9i
+        %x_217:i32 = load %221
+        %x_220:f32 = load_vector_element %color, 0u
+        %224:f32 = convert %x_217
+        %225:f32 = add %x_220, %224
+        store_vector_element %color, 0u, %225
+        exit_if  # if_15
+      }
+    }
+    %x_223:vec3<f32> = load %color
+    %x_224:vec3<f32> = normalize %x_223
+    %228:f32 = access %x_224, 0u
+    %229:f32 = access %x_224, 1u
+    %230:f32 = access %x_224, 2u
+    %231:vec4<f32> = construct %228, %229, %230, 1.0f
+    store %x_GLF_color, %231
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b32 {
+  %b32 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %234:void = call %main_1
+    %235:vec4<f32> = load %x_GLF_color
+    %236:main_out = construct %235
+    ret %236
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..a29c353
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,419 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  frag_color_1:vec4<f32> @offset(0), @location(0)
+  gl_Position:vec4<f32> @offset(16), @builtin(position)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %x_GLF_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_pos:ptr<private, vec4<f32>, read_write> = var
+  %x_34:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %frag_color:ptr<private, vec4<f32>, read_write> = var
+  %gl_Position:ptr<private, vec4<f32>, read_write> = var
+}
+
+%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %11:i32 = load %i
+    %12:ptr<private, i32, read_write> = access %obj, 0u, %11
+    %13:i32 = load %12
+    store %temp, %13
+    %x_242:i32 = load %i
+    %15:ptr<private, i32, read_write> = access %obj, 0u, %x_242
+    %16:i32 = load %j
+    %17:ptr<private, i32, read_write> = access %obj, 0u, %16
+    %18:i32 = load %17
+    store %15, %18
+    %x_247:i32 = load %j
+    %20:ptr<private, i32, read_write> = access %obj, 0u, %x_247
+    %21:i32 = load %temp
+    store %20, %21
+    ret
+  }
+}
+%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %pivot:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %32:i32 = load %h
+    %33:ptr<private, i32, read_write> = access %obj, 0u, %32
+    %34:i32 = load %33
+    store %pivot, %34
+    %35:i32 = load %l
+    %36:i32 = sub %35, 1i
+    store %i_1, %36
+    %37:i32 = load %l
+    store %j_1, %37
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %38:i32 = load %j_1
+        %39:i32 = load %h
+        %40:i32 = sub %39, 1i
+        %41:bool = lte %38, %40
+        if %41 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %42:i32 = load %j_1
+        %43:ptr<private, i32, read_write> = access %obj, 0u, %42
+        %44:i32 = load %43
+        %45:i32 = load %pivot
+        %46:bool = lte %44, %45
+        if %46 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            %47:i32 = load %i_1
+            %48:i32 = add %47, 1i
+            store %i_1, %48
+            %49:i32 = load %i_1
+            store %param, %49
+            %50:i32 = load %j_1
+            store %param_1, %50
+            %51:void = call %swap_i1_i1_, %param, %param_1
+            exit_if  # if_2
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %52:i32 = load %j_1
+        %53:i32 = add %52, 1i
+        store %j_1, %53
+        next_iteration %b4
+      }
+    }
+    %54:i32 = load %i_1
+    %55:i32 = add %54, 1i
+    store %param_2, %55
+    %56:i32 = load %h
+    store %param_3, %56
+    %57:void = call %swap_i1_i1_, %param_2, %param_3
+    %x_284:i32 = load %i_1
+    %59:i32 = add %x_284, 1i
+    ret %59
+  }
+}
+%quicksort_ = func():void -> %b9 {
+  %b9 = block {
+    %l_1:ptr<function, i32, read_write> = var
+    %h_1:ptr<function, i32, read_write> = var
+    %top:ptr<function, i32, read_write> = var
+    %stack:ptr<function, array<i32, 10>, read_write> = var
+    %p:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    store %l_1, 0i
+    store %h_1, 9i
+    store %top, -1i
+    %68:i32 = load %top
+    %x_288:i32 = add %68, 1i
+    store %top, %x_288
+    %70:ptr<function, i32, read_write> = access %stack, %x_288
+    %71:i32 = load %l_1
+    store %70, %71
+    %72:i32 = load %top
+    %x_292:i32 = add %72, 1i
+    store %top, %x_292
+    %74:ptr<function, i32, read_write> = access %stack, %x_292
+    %75:i32 = load %h_1
+    store %74, %75
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %76:i32 = load %top
+        %77:bool = gte %76, 0i
+        if %77 [t: %b12, f: %b13] {  # if_3
+          %b12 = block {  # true
+            exit_if  # if_3
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_302:i32 = load %top
+        %79:i32 = load %top
+        %80:i32 = sub %79, 1i
+        store %top, %80
+        %81:ptr<function, i32, read_write> = access %stack, %x_302
+        %82:i32 = load %81
+        store %h_1, %82
+        %x_306:i32 = load %top
+        %84:i32 = load %top
+        %85:i32 = sub %84, 1i
+        store %top, %85
+        %86:ptr<function, i32, read_write> = access %stack, %x_306
+        %87:i32 = load %86
+        store %l_1, %87
+        %88:i32 = load %l_1
+        store %param_4, %88
+        %89:i32 = load %h_1
+        store %param_5, %89
+        %x_312:i32 = call %performPartition_i1_i1_, %param_4, %param_5
+        store %p, %x_312
+        %91:i32 = load %p
+        %92:i32 = sub %91, 1i
+        %93:i32 = load %l_1
+        %94:bool = gt %92, %93
+        if %94 [t: %b14] {  # if_4
+          %b14 = block {  # true
+            %95:i32 = load %top
+            %x_320:i32 = add %95, 1i
+            store %top, %x_320
+            %97:ptr<function, i32, read_write> = access %stack, %x_320
+            %98:i32 = load %l_1
+            store %97, %98
+            %99:i32 = load %top
+            %x_324:i32 = add %99, 1i
+            store %top, %x_324
+            %101:ptr<function, i32, read_write> = access %stack, %x_324
+            %102:i32 = load %p
+            %103:i32 = sub %102, 1i
+            store %101, %103
+            exit_if  # if_4
+          }
+        }
+        %104:i32 = load %p
+        %105:i32 = add %104, 1i
+        %106:i32 = load %h_1
+        %107:bool = lt %105, %106
+        if %107 [t: %b15] {  # if_5
+          %b15 = block {  # true
+            %108:i32 = load %top
+            %x_335:i32 = add %108, 1i
+            store %top, %x_335
+            %110:ptr<function, i32, read_write> = access %stack, %x_335
+            %111:i32 = load %p
+            %112:i32 = add %111, 1i
+            store %110, %112
+            %113:i32 = load %top
+            %x_340:i32 = add %113, 1i
+            store %top, %x_340
+            %115:ptr<function, i32, read_write> = access %stack, %x_340
+            %116:i32 = load %h_1
+            store %115, %116
+            exit_if  # if_5
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        next_iteration %b10
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b16 {
+  %b16 = block {
+    %i_2:ptr<function, i32, read_write> = var
+    %uv:ptr<function, vec2<f32>, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    %121:vec4<f32> = load %x_GLF_pos
+    %122:vec4<f32> = add %121, vec4<f32>(1.0f, 1.0f, 0.0f, 0.0f)
+    %123:vec4<f32> = mul %122, vec4<f32>(128.0f, 128.0f, 1.0f, 1.0f)
+    store %x_GLF_FragCoord, %123
+    store %i_2, 0i
+    loop [b: %b17, c: %b18] {  # loop_3
+      %b17 = block {  # body
+        %124:i32 = load %i_2
+        %125:bool = lt %124, 10i
+        if %125 [t: %b19, f: %b20] {  # if_6
+          %b19 = block {  # true
+            exit_if  # if_6
+          }
+          %b20 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_100:i32 = load %i_2
+        %127:ptr<private, i32, read_write> = access %obj, 0u, %x_100
+        %128:i32 = load %i_2
+        %129:i32 = sub 10i, %128
+        store %127, %129
+        %x_104:i32 = load %i_2
+        %131:ptr<private, i32, read_write> = access %obj, 0u, %x_104
+        %132:i32 = load %i_2
+        %133:ptr<private, i32, read_write> = access %obj, 0u, %132
+        %134:i32 = load %133
+        %135:i32 = load %i_2
+        %136:ptr<private, i32, read_write> = access %obj, 0u, %135
+        %137:i32 = load %136
+        %138:i32 = mul %134, %137
+        store %131, %138
+        continue %b18
+      }
+      %b18 = block {  # continuing
+        %139:i32 = load %i_2
+        %140:i32 = add %139, 1i
+        store %i_2, %140
+        next_iteration %b17
+      }
+    }
+    %141:void = call %quicksort_
+    %142:vec4<f32> = load %x_GLF_FragCoord
+    %143:vec2<f32> = swizzle %142, xy
+    %144:ptr<uniform, vec2<f32>, read> = access %x_34, 0u
+    %145:vec2<f32> = load %144
+    %146:vec2<f32> = div %143, %145
+    store %uv, %146
+    store %color, vec3<f32>(1.0f, 2.0f, 3.0f)
+    %147:f32 = load_vector_element %color, 0u
+    %148:ptr<private, i32, read_write> = access %obj, 0u, 0i
+    %149:i32 = load %148
+    %150:f32 = convert %149
+    %151:f32 = add %147, %150
+    store_vector_element %color, 0u, %151
+    %152:f32 = load_vector_element %uv, 0u
+    %153:bool = gt %152, 0.25f
+    if %153 [t: %b21] {  # if_7
+      %b21 = block {  # true
+        %154:f32 = load_vector_element %color, 0u
+        %155:ptr<private, i32, read_write> = access %obj, 0u, 1i
+        %156:i32 = load %155
+        %157:f32 = convert %156
+        %158:f32 = add %154, %157
+        store_vector_element %color, 0u, %158
+        exit_if  # if_7
+      }
+    }
+    %159:f32 = load_vector_element %uv, 0u
+    %160:bool = gt %159, 0.5f
+    if %160 [t: %b22] {  # if_8
+      %b22 = block {  # true
+        %161:f32 = load_vector_element %color, 1u
+        %162:ptr<private, i32, read_write> = access %obj, 0u, 2i
+        %163:i32 = load %162
+        %164:f32 = convert %163
+        %165:f32 = add %161, %164
+        store_vector_element %color, 1u, %165
+        exit_if  # if_8
+      }
+    }
+    %166:f32 = load_vector_element %uv, 0u
+    %167:bool = gt %166, 0.75f
+    if %167 [t: %b23] {  # if_9
+      %b23 = block {  # true
+        %168:f32 = load_vector_element %color, 2u
+        %169:ptr<private, i32, read_write> = access %obj, 0u, 3i
+        %170:i32 = load %169
+        %171:f32 = convert %170
+        %172:f32 = add %168, %171
+        store_vector_element %color, 2u, %172
+        exit_if  # if_9
+      }
+    }
+    %173:f32 = load_vector_element %color, 1u
+    %174:ptr<private, i32, read_write> = access %obj, 0u, 4i
+    %175:i32 = load %174
+    %176:f32 = convert %175
+    %177:f32 = add %173, %176
+    store_vector_element %color, 1u, %177
+    %178:f32 = load_vector_element %uv, 1u
+    %179:bool = gt %178, 0.25f
+    if %179 [t: %b24] {  # if_10
+      %b24 = block {  # true
+        %180:f32 = load_vector_element %color, 0u
+        %181:ptr<private, i32, read_write> = access %obj, 0u, 5i
+        %182:i32 = load %181
+        %183:f32 = convert %182
+        %184:f32 = add %180, %183
+        store_vector_element %color, 0u, %184
+        exit_if  # if_10
+      }
+    }
+    %185:f32 = load_vector_element %uv, 1u
+    %186:bool = gt %185, 0.5f
+    if %186 [t: %b25] {  # if_11
+      %b25 = block {  # true
+        %187:f32 = load_vector_element %color, 1u
+        %188:ptr<private, i32, read_write> = access %obj, 0u, 6i
+        %189:i32 = load %188
+        %190:f32 = convert %189
+        %191:f32 = add %187, %190
+        store_vector_element %color, 1u, %191
+        exit_if  # if_11
+      }
+    }
+    %192:f32 = load_vector_element %uv, 1u
+    %193:bool = gt %192, 0.75f
+    if %193 [t: %b26] {  # if_12
+      %b26 = block {  # true
+        %194:f32 = load_vector_element %color, 2u
+        %195:ptr<private, i32, read_write> = access %obj, 0u, 7i
+        %196:i32 = load %195
+        %197:f32 = convert %196
+        %198:f32 = add %194, %197
+        store_vector_element %color, 2u, %198
+        exit_if  # if_12
+      }
+    }
+    %199:f32 = load_vector_element %color, 2u
+    %200:ptr<private, i32, read_write> = access %obj, 0u, 8i
+    %201:i32 = load %200
+    %202:f32 = convert %201
+    %203:f32 = add %199, %202
+    store_vector_element %color, 2u, %203
+    %204:f32 = load_vector_element %uv, 0u
+    %205:f32 = load_vector_element %uv, 1u
+    %206:f32 = sub %204, %205
+    %207:f32 = abs %206
+    %208:bool = lt %207, 0.25f
+    if %208 [t: %b27] {  # if_13
+      %b27 = block {  # true
+        %209:f32 = load_vector_element %color, 0u
+        %210:ptr<private, i32, read_write> = access %obj, 0u, 9i
+        %211:i32 = load %210
+        %212:f32 = convert %211
+        %213:f32 = add %209, %212
+        store_vector_element %color, 0u, %213
+        exit_if  # if_13
+      }
+    }
+    %214:vec3<f32> = load %color
+    %x_231:vec3<f32> = normalize %214
+    %216:f32 = access %x_231, 0u
+    %217:f32 = access %x_231, 1u
+    %218:f32 = access %x_231, 2u
+    %219:vec4<f32> = construct %216, %217, %218, 1.0f
+    store %frag_color, %219
+    %220:vec4<f32> = load %x_GLF_pos
+    store %gl_Position, %220
+    ret
+  }
+}
+%tint_symbol = @vertex func(%x_GLF_pos_param:vec4<f32> [@location(0)]):main_out -> %b28 {
+  %b28 = block {
+    store %x_GLF_pos, %x_GLF_pos_param
+    %223:void = call %main_1
+    %224:vec4<f32> = load %frag_color
+    %225:vec4<f32> = load %gl_Position
+    %226:main_out = construct %224, %225
+    ret %226
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..56c0a11
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,419 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  frag_color_1:vec4<f32> @offset(0), @location(0)
+  gl_Position:vec4<f32> @offset(16), @builtin(position)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %x_GLF_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_pos:ptr<private, vec4<f32>, read_write> = var
+  %x_34:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %frag_color:ptr<private, vec4<f32>, read_write> = var
+  %gl_Position:ptr<private, vec4<f32>, read_write> = var
+}
+
+%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %x_239:i32 = load %i
+    %12:ptr<private, i32, read_write> = access %obj, 0u, %x_239
+    %x_241:i32 = load %12
+    store %temp, %x_241
+    %x_242:i32 = load %i
+    %x_243:i32 = load %j
+    %16:ptr<private, i32, read_write> = access %obj, 0u, %x_243
+    %x_245:i32 = load %16
+    %18:ptr<private, i32, read_write> = access %obj, 0u, %x_242
+    store %18, %x_245
+    %x_247:i32 = load %j
+    %x_248:i32 = load %temp
+    %21:ptr<private, i32, read_write> = access %obj, 0u, %x_247
+    store %21, %x_248
+    ret
+  }
+}
+%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %pivot:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %x_251:i32 = load %h
+    %33:ptr<private, i32, read_write> = access %obj, 0u, %x_251
+    %x_253:i32 = load %33
+    store %pivot, %x_253
+    %x_254:i32 = load %l
+    %36:i32 = sub %x_254, 1i
+    store %i_1, %36
+    %x_256:i32 = load %l
+    store %j_1, %x_256
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %x_261:i32 = load %j_1
+        %x_262:i32 = load %h
+        %40:i32 = sub %x_262, 1i
+        %41:bool = lte %x_261, %40
+        if %41 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_266:i32 = load %j_1
+        %43:ptr<private, i32, read_write> = access %obj, 0u, %x_266
+        %x_268:i32 = load %43
+        %x_269:i32 = load %pivot
+        %46:bool = lte %x_268, %x_269
+        if %46 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            %x_273:i32 = load %i_1
+            %48:i32 = add %x_273, 1i
+            store %i_1, %48
+            %x_275:i32 = load %i_1
+            store %param, %x_275
+            %x_276:i32 = load %j_1
+            store %param_1, %x_276
+            %51:void = call %swap_i1_i1_, %param, %param_1
+            exit_if  # if_2
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %x_278:i32 = load %j_1
+        %53:i32 = add %x_278, 1i
+        store %j_1, %53
+        next_iteration %b4
+      }
+    }
+    %x_280:i32 = load %i_1
+    %55:i32 = add %x_280, 1i
+    store %param_2, %55
+    %x_282:i32 = load %h
+    store %param_3, %x_282
+    %57:void = call %swap_i1_i1_, %param_2, %param_3
+    %x_284:i32 = load %i_1
+    %59:i32 = add %x_284, 1i
+    ret %59
+  }
+}
+%quicksort_ = func():void -> %b9 {
+  %b9 = block {
+    %l_1:ptr<function, i32, read_write> = var
+    %h_1:ptr<function, i32, read_write> = var
+    %top:ptr<function, i32, read_write> = var
+    %stack:ptr<function, array<i32, 10>, read_write> = var
+    %p:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    store %l_1, 0i
+    store %h_1, 9i
+    store %top, -1i
+    %x_287:i32 = load %top
+    %x_288:i32 = add %x_287, 1i
+    store %top, %x_288
+    %x_289:i32 = load %l_1
+    %71:ptr<function, i32, read_write> = access %stack, %x_288
+    store %71, %x_289
+    %x_291:i32 = load %top
+    %x_292:i32 = add %x_291, 1i
+    store %top, %x_292
+    %x_293:i32 = load %h_1
+    %75:ptr<function, i32, read_write> = access %stack, %x_292
+    store %75, %x_293
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %x_299:i32 = load %top
+        %77:bool = gte %x_299, 0i
+        if %77 [t: %b12, f: %b13] {  # if_3
+          %b12 = block {  # true
+            exit_if  # if_3
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_302:i32 = load %top
+        %79:i32 = sub %x_302, 1i
+        store %top, %79
+        %80:ptr<function, i32, read_write> = access %stack, %x_302
+        %x_305:i32 = load %80
+        store %h_1, %x_305
+        %x_306:i32 = load %top
+        %83:i32 = sub %x_306, 1i
+        store %top, %83
+        %84:ptr<function, i32, read_write> = access %stack, %x_306
+        %x_309:i32 = load %84
+        store %l_1, %x_309
+        %x_310:i32 = load %l_1
+        store %param_4, %x_310
+        %x_311:i32 = load %h_1
+        store %param_5, %x_311
+        %x_312:i32 = call %performPartition_i1_i1_, %param_4, %param_5
+        store %p, %x_312
+        %x_313:i32 = load %p
+        %x_315:i32 = load %l_1
+        %91:i32 = sub %x_313, 1i
+        %92:bool = gt %91, %x_315
+        if %92 [t: %b14] {  # if_4
+          %b14 = block {  # true
+            %x_319:i32 = load %top
+            %x_320:i32 = add %x_319, 1i
+            store %top, %x_320
+            %x_321:i32 = load %l_1
+            %96:ptr<function, i32, read_write> = access %stack, %x_320
+            store %96, %x_321
+            %x_323:i32 = load %top
+            %x_324:i32 = add %x_323, 1i
+            store %top, %x_324
+            %x_325:i32 = load %p
+            %100:ptr<function, i32, read_write> = access %stack, %x_324
+            %101:i32 = sub %x_325, 1i
+            store %100, %101
+            exit_if  # if_4
+          }
+        }
+        %x_328:i32 = load %p
+        %x_330:i32 = load %h_1
+        %104:i32 = add %x_328, 1i
+        %105:bool = lt %104, %x_330
+        if %105 [t: %b15] {  # if_5
+          %b15 = block {  # true
+            %x_334:i32 = load %top
+            %x_335:i32 = add %x_334, 1i
+            store %top, %x_335
+            %x_336:i32 = load %p
+            %109:ptr<function, i32, read_write> = access %stack, %x_335
+            %110:i32 = add %x_336, 1i
+            store %109, %110
+            %x_339:i32 = load %top
+            %x_340:i32 = add %x_339, 1i
+            store %top, %x_340
+            %x_341:i32 = load %h_1
+            %114:ptr<function, i32, read_write> = access %stack, %x_340
+            store %114, %x_341
+            exit_if  # if_5
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        next_iteration %b10
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b16 {
+  %b16 = block {
+    %i_2:ptr<function, i32, read_write> = var
+    %uv:ptr<function, vec2<f32>, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    %x_90:vec4<f32> = load %x_GLF_pos
+    %120:vec4<f32> = add %x_90, vec4<f32>(1.0f, 1.0f, 0.0f, 0.0f)
+    %121:vec4<f32> = mul %120, vec4<f32>(128.0f, 128.0f, 1.0f, 1.0f)
+    store %x_GLF_FragCoord, %121
+    store %i_2, 0i
+    loop [b: %b17, c: %b18] {  # loop_3
+      %b17 = block {  # body
+        %x_97:i32 = load %i_2
+        %123:bool = lt %x_97, 10i
+        if %123 [t: %b19, f: %b20] {  # if_6
+          %b19 = block {  # true
+            exit_if  # if_6
+          }
+          %b20 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_100:i32 = load %i_2
+        %x_101:i32 = load %i_2
+        %126:ptr<private, i32, read_write> = access %obj, 0u, %x_100
+        %127:i32 = sub 10i, %x_101
+        store %126, %127
+        %x_104:i32 = load %i_2
+        %x_105:i32 = load %i_2
+        %130:ptr<private, i32, read_write> = access %obj, 0u, %x_105
+        %x_107:i32 = load %130
+        %x_108:i32 = load %i_2
+        %133:ptr<private, i32, read_write> = access %obj, 0u, %x_108
+        %x_110:i32 = load %133
+        %135:ptr<private, i32, read_write> = access %obj, 0u, %x_104
+        %136:i32 = mul %x_107, %x_110
+        store %135, %136
+        continue %b18
+      }
+      %b18 = block {  # continuing
+        %x_113:i32 = load %i_2
+        %138:i32 = add %x_113, 1i
+        store %i_2, %138
+        next_iteration %b17
+      }
+    }
+    %139:void = call %quicksort_
+    %x_116:vec4<f32> = load %x_GLF_FragCoord
+    %141:ptr<uniform, vec2<f32>, read> = access %x_34, 0u
+    %x_119:vec2<f32> = load %141
+    %143:f32 = access %x_116, 0u
+    %144:f32 = access %x_116, 1u
+    %145:vec2<f32> = construct %143, %144
+    %146:vec2<f32> = div %145, %x_119
+    store %uv, %146
+    store %color, vec3<f32>(1.0f, 2.0f, 3.0f)
+    %147:ptr<private, i32, read_write> = access %obj, 0u, 0i
+    %x_122:i32 = load %147
+    %x_125:f32 = load_vector_element %color, 0u
+    %150:f32 = convert %x_122
+    %151:f32 = add %x_125, %150
+    store_vector_element %color, 0u, %151
+    %x_129:f32 = load_vector_element %uv, 0u
+    %153:bool = gt %x_129, 0.25f
+    if %153 [t: %b21] {  # if_7
+      %b21 = block {  # true
+        %154:ptr<private, i32, read_write> = access %obj, 0u, 1i
+        %x_134:i32 = load %154
+        %x_137:f32 = load_vector_element %color, 0u
+        %157:f32 = convert %x_134
+        %158:f32 = add %x_137, %157
+        store_vector_element %color, 0u, %158
+        exit_if  # if_7
+      }
+    }
+    %x_141:f32 = load_vector_element %uv, 0u
+    %160:bool = gt %x_141, 0.5f
+    if %160 [t: %b22] {  # if_8
+      %b22 = block {  # true
+        %161:ptr<private, i32, read_write> = access %obj, 0u, 2i
+        %x_146:i32 = load %161
+        %x_149:f32 = load_vector_element %color, 1u
+        %164:f32 = convert %x_146
+        %165:f32 = add %x_149, %164
+        store_vector_element %color, 1u, %165
+        exit_if  # if_8
+      }
+    }
+    %x_153:f32 = load_vector_element %uv, 0u
+    %167:bool = gt %x_153, 0.75f
+    if %167 [t: %b23] {  # if_9
+      %b23 = block {  # true
+        %168:ptr<private, i32, read_write> = access %obj, 0u, 3i
+        %x_158:i32 = load %168
+        %x_161:f32 = load_vector_element %color, 2u
+        %171:f32 = convert %x_158
+        %172:f32 = add %x_161, %171
+        store_vector_element %color, 2u, %172
+        exit_if  # if_9
+      }
+    }
+    %173:ptr<private, i32, read_write> = access %obj, 0u, 4i
+    %x_165:i32 = load %173
+    %x_168:f32 = load_vector_element %color, 1u
+    %176:f32 = convert %x_165
+    %177:f32 = add %x_168, %176
+    store_vector_element %color, 1u, %177
+    %x_172:f32 = load_vector_element %uv, 1u
+    %179:bool = gt %x_172, 0.25f
+    if %179 [t: %b24] {  # if_10
+      %b24 = block {  # true
+        %180:ptr<private, i32, read_write> = access %obj, 0u, 5i
+        %x_177:i32 = load %180
+        %x_180:f32 = load_vector_element %color, 0u
+        %183:f32 = convert %x_177
+        %184:f32 = add %x_180, %183
+        store_vector_element %color, 0u, %184
+        exit_if  # if_10
+      }
+    }
+    %x_184:f32 = load_vector_element %uv, 1u
+    %186:bool = gt %x_184, 0.5f
+    if %186 [t: %b25] {  # if_11
+      %b25 = block {  # true
+        %187:ptr<private, i32, read_write> = access %obj, 0u, 6i
+        %x_189:i32 = load %187
+        %x_192:f32 = load_vector_element %color, 1u
+        %190:f32 = convert %x_189
+        %191:f32 = add %x_192, %190
+        store_vector_element %color, 1u, %191
+        exit_if  # if_11
+      }
+    }
+    %x_196:f32 = load_vector_element %uv, 1u
+    %193:bool = gt %x_196, 0.75f
+    if %193 [t: %b26] {  # if_12
+      %b26 = block {  # true
+        %194:ptr<private, i32, read_write> = access %obj, 0u, 7i
+        %x_201:i32 = load %194
+        %x_204:f32 = load_vector_element %color, 2u
+        %197:f32 = convert %x_201
+        %198:f32 = add %x_204, %197
+        store_vector_element %color, 2u, %198
+        exit_if  # if_12
+      }
+    }
+    %199:ptr<private, i32, read_write> = access %obj, 0u, 8i
+    %x_208:i32 = load %199
+    %x_211:f32 = load_vector_element %color, 2u
+    %202:f32 = convert %x_208
+    %203:f32 = add %x_211, %202
+    store_vector_element %color, 2u, %203
+    %x_215:f32 = load_vector_element %uv, 0u
+    %x_217:f32 = load_vector_element %uv, 1u
+    %206:f32 = sub %x_215, %x_217
+    %207:f32 = abs %206
+    %208:bool = lt %207, 0.25f
+    if %208 [t: %b27] {  # if_13
+      %b27 = block {  # true
+        %209:ptr<private, i32, read_write> = access %obj, 0u, 9i
+        %x_224:i32 = load %209
+        %x_227:f32 = load_vector_element %color, 0u
+        %212:f32 = convert %x_224
+        %213:f32 = add %x_227, %212
+        store_vector_element %color, 0u, %213
+        exit_if  # if_13
+      }
+    }
+    %x_230:vec3<f32> = load %color
+    %x_231:vec3<f32> = normalize %x_230
+    %216:f32 = access %x_231, 0u
+    %217:f32 = access %x_231, 1u
+    %218:f32 = access %x_231, 2u
+    %219:vec4<f32> = construct %216, %217, %218, 1.0f
+    store %frag_color, %219
+    %x_236:vec4<f32> = load %x_GLF_pos
+    store %gl_Position, %x_236
+    ret
+  }
+}
+%tint_symbol = @vertex func(%x_GLF_pos_param:vec4<f32> [@location(0)]):main_out -> %b28 {
+  %b28 = block {
+    store %x_GLF_pos, %x_GLF_pos_param
+    %223:void = call %main_1
+    %224:vec4<f32> = load %frag_color
+    %225:vec4<f32> = load %gl_Position
+    %226:main_out = construct %224, %225
+    ret %226
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..5c00989
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.ir.msl
@@ -0,0 +1,434 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+buf1 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  frag_color_1:vec4<f32> @offset(0), @location(0)
+  gl_Position:vec4<f32> @offset(16), @builtin(position)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %x_GLF_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_pos:ptr<private, vec4<f32>, read_write> = var
+  %x_33:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_36:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %frag_color:ptr<private, vec4<f32>, read_write> = var
+  %gl_Position:ptr<private, vec4<f32>, read_write> = var
+}
+
+%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %12:i32 = load %i
+    %13:ptr<private, i32, read_write> = access %obj, 0u, %12
+    %14:i32 = load %13
+    store %temp, %14
+    %x_253:i32 = load %i
+    %16:ptr<private, i32, read_write> = access %obj, 0u, %x_253
+    %17:i32 = load %j
+    %18:ptr<private, i32, read_write> = access %obj, 0u, %17
+    %19:i32 = load %18
+    store %16, %19
+    %x_258:i32 = load %j
+    %21:ptr<private, i32, read_write> = access %obj, 0u, %x_258
+    %22:i32 = load %temp
+    store %21, %22
+    ret
+  }
+}
+%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %pivot:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %33:i32 = load %h
+    %34:ptr<private, i32, read_write> = access %obj, 0u, %33
+    %35:i32 = load %34
+    store %pivot, %35
+    %36:i32 = load %l
+    %37:i32 = sub %36, 1i
+    store %i_1, %37
+    %38:i32 = load %l
+    store %j_1, %38
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %39:i32 = load %j_1
+        %40:i32 = load %h
+        %41:i32 = sub %40, 1i
+        %42:bool = lte %39, %41
+        if %42 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %43:i32 = load %j_1
+        %44:ptr<private, i32, read_write> = access %obj, 0u, %43
+        %45:i32 = load %44
+        %46:i32 = load %pivot
+        %47:bool = lte %45, %46
+        if %47 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            %48:i32 = load %i_1
+            %49:i32 = add %48, 1i
+            store %i_1, %49
+            %50:i32 = load %i_1
+            store %param, %50
+            %51:i32 = load %j_1
+            store %param_1, %51
+            %52:void = call %swap_i1_i1_, %param, %param_1
+            exit_if  # if_2
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %53:i32 = load %j_1
+        %54:i32 = add %53, 1i
+        store %j_1, %54
+        next_iteration %b4
+      }
+    }
+    %55:i32 = load %i_1
+    %56:i32 = add %55, 1i
+    store %param_2, %56
+    %57:i32 = load %h
+    store %param_3, %57
+    %58:void = call %swap_i1_i1_, %param_2, %param_3
+    %x_295:i32 = load %i_1
+    %60:i32 = add %x_295, 1i
+    ret %60
+  }
+}
+%quicksort_ = func():void -> %b9 {
+  %b9 = block {
+    %l_1:ptr<function, i32, read_write> = var
+    %h_1:ptr<function, i32, read_write> = var
+    %top:ptr<function, i32, read_write> = var
+    %stack:ptr<function, array<i32, 10>, read_write> = var
+    %p:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    store %l_1, 0i
+    store %h_1, 9i
+    store %top, -1i
+    %69:i32 = load %top
+    %x_299:i32 = add %69, 1i
+    store %top, %x_299
+    %71:ptr<function, i32, read_write> = access %stack, %x_299
+    %72:i32 = load %l_1
+    store %71, %72
+    %73:i32 = load %top
+    %x_303:i32 = add %73, 1i
+    store %top, %x_303
+    %75:ptr<function, i32, read_write> = access %stack, %x_303
+    %76:i32 = load %h_1
+    store %75, %76
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %77:i32 = load %top
+        %78:bool = gte %77, 0i
+        if %78 [t: %b12, f: %b13] {  # if_3
+          %b12 = block {  # true
+            exit_if  # if_3
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_313:i32 = load %top
+        %80:i32 = load %top
+        %81:i32 = sub %80, 1i
+        store %top, %81
+        %82:ptr<function, i32, read_write> = access %stack, %x_313
+        %83:i32 = load %82
+        store %h_1, %83
+        %x_317:i32 = load %top
+        %85:i32 = load %top
+        %86:i32 = sub %85, 1i
+        store %top, %86
+        %87:ptr<function, i32, read_write> = access %stack, %x_317
+        %88:i32 = load %87
+        store %l_1, %88
+        %89:i32 = load %l_1
+        store %param_4, %89
+        %90:i32 = load %h_1
+        store %param_5, %90
+        %x_323:i32 = call %performPartition_i1_i1_, %param_4, %param_5
+        store %p, %x_323
+        %92:i32 = load %p
+        %93:i32 = sub %92, 1i
+        %94:i32 = load %l_1
+        %95:bool = gt %93, %94
+        if %95 [t: %b14] {  # if_4
+          %b14 = block {  # true
+            %96:i32 = load %top
+            %x_331:i32 = add %96, 1i
+            store %top, %x_331
+            %98:ptr<function, i32, read_write> = access %stack, %x_331
+            %99:i32 = load %l_1
+            store %98, %99
+            %100:i32 = load %top
+            %x_335:i32 = add %100, 1i
+            store %top, %x_335
+            %102:ptr<function, i32, read_write> = access %stack, %x_335
+            %103:i32 = load %p
+            %104:i32 = sub %103, 1i
+            store %102, %104
+            exit_if  # if_4
+          }
+        }
+        %105:i32 = load %p
+        %106:i32 = add %105, 1i
+        %107:i32 = load %h_1
+        %108:bool = lt %106, %107
+        if %108 [t: %b15] {  # if_5
+          %b15 = block {  # true
+            %109:i32 = load %top
+            %x_346:i32 = add %109, 1i
+            store %top, %x_346
+            %111:ptr<function, i32, read_write> = access %stack, %x_346
+            %112:i32 = load %p
+            %113:i32 = add %112, 1i
+            store %111, %113
+            %114:i32 = load %top
+            %x_351:i32 = add %114, 1i
+            store %top, %x_351
+            %116:ptr<function, i32, read_write> = access %stack, %x_351
+            %117:i32 = load %h_1
+            store %116, %117
+            exit_if  # if_5
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        next_iteration %b10
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b16 {
+  %b16 = block {
+    %i_2:ptr<function, i32, read_write> = var
+    %uv:ptr<function, vec2<f32>, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    %122:vec4<f32> = load %x_GLF_pos
+    %123:vec4<f32> = add %122, vec4<f32>(1.0f, 1.0f, 0.0f, 0.0f)
+    %124:vec4<f32> = mul %123, vec4<f32>(128.0f, 128.0f, 1.0f, 1.0f)
+    store %x_GLF_FragCoord, %124
+    store %i_2, 0i
+    loop [b: %b17, c: %b18] {  # loop_3
+      %b17 = block {  # body
+        %125:i32 = load %i_2
+        %126:bool = lt %125, 10i
+        if %126 [t: %b19, f: %b20] {  # if_6
+          %b19 = block {  # true
+            exit_if  # if_6
+          }
+          %b20 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_104:i32 = load %i_2
+        %128:ptr<private, i32, read_write> = access %obj, 0u, %x_104
+        %129:i32 = load %i_2
+        %130:i32 = sub 10i, %129
+        store %128, %130
+        %131:ptr<uniform, vec2<f32>, read> = access %x_33, 0u
+        %132:f32 = load_vector_element %131, 0u
+        %133:ptr<uniform, vec2<f32>, read> = access %x_33, 0u
+        %134:f32 = load_vector_element %133, 1u
+        %135:bool = gt %132, %134
+        if %135 [t: %b21] {  # if_7
+          %b21 = block {  # true
+            exit_loop  # loop_3
+          }
+        }
+        %x_115:i32 = load %i_2
+        %137:ptr<private, i32, read_write> = access %obj, 0u, %x_115
+        %138:i32 = load %i_2
+        %139:ptr<private, i32, read_write> = access %obj, 0u, %138
+        %140:i32 = load %139
+        %141:i32 = load %i_2
+        %142:ptr<private, i32, read_write> = access %obj, 0u, %141
+        %143:i32 = load %142
+        %144:i32 = mul %140, %143
+        store %137, %144
+        continue %b18
+      }
+      %b18 = block {  # continuing
+        %145:i32 = load %i_2
+        %146:i32 = add %145, 1i
+        store %i_2, %146
+        next_iteration %b17
+      }
+    }
+    %147:void = call %quicksort_
+    %148:vec4<f32> = load %x_GLF_FragCoord
+    %149:vec2<f32> = swizzle %148, xy
+    %150:ptr<uniform, vec2<f32>, read> = access %x_36, 0u
+    %151:vec2<f32> = load %150
+    %152:vec2<f32> = div %149, %151
+    store %uv, %152
+    store %color, vec3<f32>(1.0f, 2.0f, 3.0f)
+    %153:f32 = load_vector_element %color, 0u
+    %154:ptr<private, i32, read_write> = access %obj, 0u, 0i
+    %155:i32 = load %154
+    %156:f32 = convert %155
+    %157:f32 = add %153, %156
+    store_vector_element %color, 0u, %157
+    %158:f32 = load_vector_element %uv, 0u
+    %159:bool = gt %158, 0.25f
+    if %159 [t: %b22] {  # if_8
+      %b22 = block {  # true
+        %160:f32 = load_vector_element %color, 0u
+        %161:ptr<private, i32, read_write> = access %obj, 0u, 1i
+        %162:i32 = load %161
+        %163:f32 = convert %162
+        %164:f32 = add %160, %163
+        store_vector_element %color, 0u, %164
+        exit_if  # if_8
+      }
+    }
+    %165:f32 = load_vector_element %uv, 0u
+    %166:bool = gt %165, 0.5f
+    if %166 [t: %b23] {  # if_9
+      %b23 = block {  # true
+        %167:f32 = load_vector_element %color, 1u
+        %168:ptr<private, i32, read_write> = access %obj, 0u, 2i
+        %169:i32 = load %168
+        %170:f32 = convert %169
+        %171:f32 = add %167, %170
+        store_vector_element %color, 1u, %171
+        exit_if  # if_9
+      }
+    }
+    %172:f32 = load_vector_element %uv, 0u
+    %173:bool = gt %172, 0.75f
+    if %173 [t: %b24] {  # if_10
+      %b24 = block {  # true
+        %174:f32 = load_vector_element %color, 2u
+        %175:ptr<private, i32, read_write> = access %obj, 0u, 3i
+        %176:i32 = load %175
+        %177:f32 = convert %176
+        %178:f32 = add %174, %177
+        store_vector_element %color, 2u, %178
+        exit_if  # if_10
+      }
+    }
+    %179:f32 = load_vector_element %color, 1u
+    %180:ptr<private, i32, read_write> = access %obj, 0u, 4i
+    %181:i32 = load %180
+    %182:f32 = convert %181
+    %183:f32 = add %179, %182
+    store_vector_element %color, 1u, %183
+    %184:f32 = load_vector_element %uv, 1u
+    %185:bool = gt %184, 0.25f
+    if %185 [t: %b25] {  # if_11
+      %b25 = block {  # true
+        %186:f32 = load_vector_element %color, 0u
+        %187:ptr<private, i32, read_write> = access %obj, 0u, 5i
+        %188:i32 = load %187
+        %189:f32 = convert %188
+        %190:f32 = add %186, %189
+        store_vector_element %color, 0u, %190
+        exit_if  # if_11
+      }
+    }
+    %191:f32 = load_vector_element %uv, 1u
+    %192:bool = gt %191, 0.5f
+    if %192 [t: %b26] {  # if_12
+      %b26 = block {  # true
+        %193:f32 = load_vector_element %color, 1u
+        %194:ptr<private, i32, read_write> = access %obj, 0u, 6i
+        %195:i32 = load %194
+        %196:f32 = convert %195
+        %197:f32 = add %193, %196
+        store_vector_element %color, 1u, %197
+        exit_if  # if_12
+      }
+    }
+    %198:f32 = load_vector_element %uv, 1u
+    %199:bool = gt %198, 0.75f
+    if %199 [t: %b27] {  # if_13
+      %b27 = block {  # true
+        %200:f32 = load_vector_element %color, 2u
+        %201:ptr<private, i32, read_write> = access %obj, 0u, 7i
+        %202:i32 = load %201
+        %203:f32 = convert %202
+        %204:f32 = add %200, %203
+        store_vector_element %color, 2u, %204
+        exit_if  # if_13
+      }
+    }
+    %205:f32 = load_vector_element %color, 2u
+    %206:ptr<private, i32, read_write> = access %obj, 0u, 8i
+    %207:i32 = load %206
+    %208:f32 = convert %207
+    %209:f32 = add %205, %208
+    store_vector_element %color, 2u, %209
+    %210:f32 = load_vector_element %uv, 0u
+    %211:f32 = load_vector_element %uv, 1u
+    %212:f32 = sub %210, %211
+    %213:f32 = abs %212
+    %214:bool = lt %213, 0.25f
+    if %214 [t: %b28] {  # if_14
+      %b28 = block {  # true
+        %215:f32 = load_vector_element %color, 0u
+        %216:ptr<private, i32, read_write> = access %obj, 0u, 9i
+        %217:i32 = load %216
+        %218:f32 = convert %217
+        %219:f32 = add %215, %218
+        store_vector_element %color, 0u, %219
+        exit_if  # if_14
+      }
+    }
+    %220:vec3<f32> = load %color
+    %x_242:vec3<f32> = normalize %220
+    %222:f32 = access %x_242, 0u
+    %223:f32 = access %x_242, 1u
+    %224:f32 = access %x_242, 2u
+    %225:vec4<f32> = construct %222, %223, %224, 1.0f
+    store %frag_color, %225
+    %226:vec4<f32> = load %x_GLF_pos
+    store %gl_Position, %226
+    ret
+  }
+}
+%tint_symbol = @vertex func(%x_GLF_pos_param:vec4<f32> [@location(0)]):main_out -> %b29 {
+  %b29 = block {
+    store %x_GLF_pos, %x_GLF_pos_param
+    %229:void = call %main_1
+    %230:vec4<f32> = load %frag_color
+    %231:vec4<f32> = load %gl_Position
+    %232:main_out = construct %230, %231
+    ret %232
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..20bec36
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.ir.msl
@@ -0,0 +1,434 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+buf1 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  frag_color_1:vec4<f32> @offset(0), @location(0)
+  gl_Position:vec4<f32> @offset(16), @builtin(position)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %x_GLF_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_pos:ptr<private, vec4<f32>, read_write> = var
+  %x_33:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_36:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %frag_color:ptr<private, vec4<f32>, read_write> = var
+  %gl_Position:ptr<private, vec4<f32>, read_write> = var
+}
+
+%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %x_250:i32 = load %i
+    %13:ptr<private, i32, read_write> = access %obj, 0u, %x_250
+    %x_252:i32 = load %13
+    store %temp, %x_252
+    %x_253:i32 = load %i
+    %x_254:i32 = load %j
+    %17:ptr<private, i32, read_write> = access %obj, 0u, %x_254
+    %x_256:i32 = load %17
+    %19:ptr<private, i32, read_write> = access %obj, 0u, %x_253
+    store %19, %x_256
+    %x_258:i32 = load %j
+    %x_259:i32 = load %temp
+    %22:ptr<private, i32, read_write> = access %obj, 0u, %x_258
+    store %22, %x_259
+    ret
+  }
+}
+%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %pivot:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %x_262:i32 = load %h
+    %34:ptr<private, i32, read_write> = access %obj, 0u, %x_262
+    %x_264:i32 = load %34
+    store %pivot, %x_264
+    %x_265:i32 = load %l
+    %37:i32 = sub %x_265, 1i
+    store %i_1, %37
+    %x_267:i32 = load %l
+    store %j_1, %x_267
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %x_272:i32 = load %j_1
+        %x_273:i32 = load %h
+        %41:i32 = sub %x_273, 1i
+        %42:bool = lte %x_272, %41
+        if %42 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_277:i32 = load %j_1
+        %44:ptr<private, i32, read_write> = access %obj, 0u, %x_277
+        %x_279:i32 = load %44
+        %x_280:i32 = load %pivot
+        %47:bool = lte %x_279, %x_280
+        if %47 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            %x_284:i32 = load %i_1
+            %49:i32 = add %x_284, 1i
+            store %i_1, %49
+            %x_286:i32 = load %i_1
+            store %param, %x_286
+            %x_287:i32 = load %j_1
+            store %param_1, %x_287
+            %52:void = call %swap_i1_i1_, %param, %param_1
+            exit_if  # if_2
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %x_289:i32 = load %j_1
+        %54:i32 = add %x_289, 1i
+        store %j_1, %54
+        next_iteration %b4
+      }
+    }
+    %x_291:i32 = load %i_1
+    %56:i32 = add %x_291, 1i
+    store %param_2, %56
+    %x_293:i32 = load %h
+    store %param_3, %x_293
+    %58:void = call %swap_i1_i1_, %param_2, %param_3
+    %x_295:i32 = load %i_1
+    %60:i32 = add %x_295, 1i
+    ret %60
+  }
+}
+%quicksort_ = func():void -> %b9 {
+  %b9 = block {
+    %l_1:ptr<function, i32, read_write> = var
+    %h_1:ptr<function, i32, read_write> = var
+    %top:ptr<function, i32, read_write> = var
+    %stack:ptr<function, array<i32, 10>, read_write> = var
+    %p:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    store %l_1, 0i
+    store %h_1, 9i
+    store %top, -1i
+    %x_298:i32 = load %top
+    %x_299:i32 = add %x_298, 1i
+    store %top, %x_299
+    %x_300:i32 = load %l_1
+    %72:ptr<function, i32, read_write> = access %stack, %x_299
+    store %72, %x_300
+    %x_302:i32 = load %top
+    %x_303:i32 = add %x_302, 1i
+    store %top, %x_303
+    %x_304:i32 = load %h_1
+    %76:ptr<function, i32, read_write> = access %stack, %x_303
+    store %76, %x_304
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %x_310:i32 = load %top
+        %78:bool = gte %x_310, 0i
+        if %78 [t: %b12, f: %b13] {  # if_3
+          %b12 = block {  # true
+            exit_if  # if_3
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_313:i32 = load %top
+        %80:i32 = sub %x_313, 1i
+        store %top, %80
+        %81:ptr<function, i32, read_write> = access %stack, %x_313
+        %x_316:i32 = load %81
+        store %h_1, %x_316
+        %x_317:i32 = load %top
+        %84:i32 = sub %x_317, 1i
+        store %top, %84
+        %85:ptr<function, i32, read_write> = access %stack, %x_317
+        %x_320:i32 = load %85
+        store %l_1, %x_320
+        %x_321:i32 = load %l_1
+        store %param_4, %x_321
+        %x_322:i32 = load %h_1
+        store %param_5, %x_322
+        %x_323:i32 = call %performPartition_i1_i1_, %param_4, %param_5
+        store %p, %x_323
+        %x_324:i32 = load %p
+        %x_326:i32 = load %l_1
+        %92:i32 = sub %x_324, 1i
+        %93:bool = gt %92, %x_326
+        if %93 [t: %b14] {  # if_4
+          %b14 = block {  # true
+            %x_330:i32 = load %top
+            %x_331:i32 = add %x_330, 1i
+            store %top, %x_331
+            %x_332:i32 = load %l_1
+            %97:ptr<function, i32, read_write> = access %stack, %x_331
+            store %97, %x_332
+            %x_334:i32 = load %top
+            %x_335:i32 = add %x_334, 1i
+            store %top, %x_335
+            %x_336:i32 = load %p
+            %101:ptr<function, i32, read_write> = access %stack, %x_335
+            %102:i32 = sub %x_336, 1i
+            store %101, %102
+            exit_if  # if_4
+          }
+        }
+        %x_339:i32 = load %p
+        %x_341:i32 = load %h_1
+        %105:i32 = add %x_339, 1i
+        %106:bool = lt %105, %x_341
+        if %106 [t: %b15] {  # if_5
+          %b15 = block {  # true
+            %x_345:i32 = load %top
+            %x_346:i32 = add %x_345, 1i
+            store %top, %x_346
+            %x_347:i32 = load %p
+            %110:ptr<function, i32, read_write> = access %stack, %x_346
+            %111:i32 = add %x_347, 1i
+            store %110, %111
+            %x_350:i32 = load %top
+            %x_351:i32 = add %x_350, 1i
+            store %top, %x_351
+            %x_352:i32 = load %h_1
+            %115:ptr<function, i32, read_write> = access %stack, %x_351
+            store %115, %x_352
+            exit_if  # if_5
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        next_iteration %b10
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b16 {
+  %b16 = block {
+    %i_2:ptr<function, i32, read_write> = var
+    %uv:ptr<function, vec2<f32>, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    %x_94:vec4<f32> = load %x_GLF_pos
+    %121:vec4<f32> = add %x_94, vec4<f32>(1.0f, 1.0f, 0.0f, 0.0f)
+    %122:vec4<f32> = mul %121, vec4<f32>(128.0f, 128.0f, 1.0f, 1.0f)
+    store %x_GLF_FragCoord, %122
+    store %i_2, 0i
+    loop [b: %b17, c: %b18] {  # loop_3
+      %b17 = block {  # body
+        %x_101:i32 = load %i_2
+        %124:bool = lt %x_101, 10i
+        if %124 [t: %b19, f: %b20] {  # if_6
+          %b19 = block {  # true
+            exit_if  # if_6
+          }
+          %b20 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_104:i32 = load %i_2
+        %x_105:i32 = load %i_2
+        %127:ptr<private, i32, read_write> = access %obj, 0u, %x_104
+        %128:i32 = sub 10i, %x_105
+        store %127, %128
+        %129:ptr<uniform, vec2<f32>, read> = access %x_33, 0u
+        %x_109:f32 = load_vector_element %129, 0u
+        %131:ptr<uniform, vec2<f32>, read> = access %x_33, 0u
+        %x_111:f32 = load_vector_element %131, 1u
+        %133:bool = gt %x_109, %x_111
+        if %133 [t: %b21] {  # if_7
+          %b21 = block {  # true
+            exit_loop  # loop_3
+          }
+        }
+        %x_115:i32 = load %i_2
+        %x_116:i32 = load %i_2
+        %136:ptr<private, i32, read_write> = access %obj, 0u, %x_116
+        %x_118:i32 = load %136
+        %x_119:i32 = load %i_2
+        %139:ptr<private, i32, read_write> = access %obj, 0u, %x_119
+        %x_121:i32 = load %139
+        %141:ptr<private, i32, read_write> = access %obj, 0u, %x_115
+        %142:i32 = mul %x_118, %x_121
+        store %141, %142
+        continue %b18
+      }
+      %b18 = block {  # continuing
+        %x_124:i32 = load %i_2
+        %144:i32 = add %x_124, 1i
+        store %i_2, %144
+        next_iteration %b17
+      }
+    }
+    %145:void = call %quicksort_
+    %x_127:vec4<f32> = load %x_GLF_FragCoord
+    %147:ptr<uniform, vec2<f32>, read> = access %x_36, 0u
+    %x_130:vec2<f32> = load %147
+    %149:f32 = access %x_127, 0u
+    %150:f32 = access %x_127, 1u
+    %151:vec2<f32> = construct %149, %150
+    %152:vec2<f32> = div %151, %x_130
+    store %uv, %152
+    store %color, vec3<f32>(1.0f, 2.0f, 3.0f)
+    %153:ptr<private, i32, read_write> = access %obj, 0u, 0i
+    %x_133:i32 = load %153
+    %x_136:f32 = load_vector_element %color, 0u
+    %156:f32 = convert %x_133
+    %157:f32 = add %x_136, %156
+    store_vector_element %color, 0u, %157
+    %x_140:f32 = load_vector_element %uv, 0u
+    %159:bool = gt %x_140, 0.25f
+    if %159 [t: %b22] {  # if_8
+      %b22 = block {  # true
+        %160:ptr<private, i32, read_write> = access %obj, 0u, 1i
+        %x_145:i32 = load %160
+        %x_148:f32 = load_vector_element %color, 0u
+        %163:f32 = convert %x_145
+        %164:f32 = add %x_148, %163
+        store_vector_element %color, 0u, %164
+        exit_if  # if_8
+      }
+    }
+    %x_152:f32 = load_vector_element %uv, 0u
+    %166:bool = gt %x_152, 0.5f
+    if %166 [t: %b23] {  # if_9
+      %b23 = block {  # true
+        %167:ptr<private, i32, read_write> = access %obj, 0u, 2i
+        %x_157:i32 = load %167
+        %x_160:f32 = load_vector_element %color, 1u
+        %170:f32 = convert %x_157
+        %171:f32 = add %x_160, %170
+        store_vector_element %color, 1u, %171
+        exit_if  # if_9
+      }
+    }
+    %x_164:f32 = load_vector_element %uv, 0u
+    %173:bool = gt %x_164, 0.75f
+    if %173 [t: %b24] {  # if_10
+      %b24 = block {  # true
+        %174:ptr<private, i32, read_write> = access %obj, 0u, 3i
+        %x_169:i32 = load %174
+        %x_172:f32 = load_vector_element %color, 2u
+        %177:f32 = convert %x_169
+        %178:f32 = add %x_172, %177
+        store_vector_element %color, 2u, %178
+        exit_if  # if_10
+      }
+    }
+    %179:ptr<private, i32, read_write> = access %obj, 0u, 4i
+    %x_176:i32 = load %179
+    %x_179:f32 = load_vector_element %color, 1u
+    %182:f32 = convert %x_176
+    %183:f32 = add %x_179, %182
+    store_vector_element %color, 1u, %183
+    %x_183:f32 = load_vector_element %uv, 1u
+    %185:bool = gt %x_183, 0.25f
+    if %185 [t: %b25] {  # if_11
+      %b25 = block {  # true
+        %186:ptr<private, i32, read_write> = access %obj, 0u, 5i
+        %x_188:i32 = load %186
+        %x_191:f32 = load_vector_element %color, 0u
+        %189:f32 = convert %x_188
+        %190:f32 = add %x_191, %189
+        store_vector_element %color, 0u, %190
+        exit_if  # if_11
+      }
+    }
+    %x_195:f32 = load_vector_element %uv, 1u
+    %192:bool = gt %x_195, 0.5f
+    if %192 [t: %b26] {  # if_12
+      %b26 = block {  # true
+        %193:ptr<private, i32, read_write> = access %obj, 0u, 6i
+        %x_200:i32 = load %193
+        %x_203:f32 = load_vector_element %color, 1u
+        %196:f32 = convert %x_200
+        %197:f32 = add %x_203, %196
+        store_vector_element %color, 1u, %197
+        exit_if  # if_12
+      }
+    }
+    %x_207:f32 = load_vector_element %uv, 1u
+    %199:bool = gt %x_207, 0.75f
+    if %199 [t: %b27] {  # if_13
+      %b27 = block {  # true
+        %200:ptr<private, i32, read_write> = access %obj, 0u, 7i
+        %x_212:i32 = load %200
+        %x_215:f32 = load_vector_element %color, 2u
+        %203:f32 = convert %x_212
+        %204:f32 = add %x_215, %203
+        store_vector_element %color, 2u, %204
+        exit_if  # if_13
+      }
+    }
+    %205:ptr<private, i32, read_write> = access %obj, 0u, 8i
+    %x_219:i32 = load %205
+    %x_222:f32 = load_vector_element %color, 2u
+    %208:f32 = convert %x_219
+    %209:f32 = add %x_222, %208
+    store_vector_element %color, 2u, %209
+    %x_226:f32 = load_vector_element %uv, 0u
+    %x_228:f32 = load_vector_element %uv, 1u
+    %212:f32 = sub %x_226, %x_228
+    %213:f32 = abs %212
+    %214:bool = lt %213, 0.25f
+    if %214 [t: %b28] {  # if_14
+      %b28 = block {  # true
+        %215:ptr<private, i32, read_write> = access %obj, 0u, 9i
+        %x_235:i32 = load %215
+        %x_238:f32 = load_vector_element %color, 0u
+        %218:f32 = convert %x_235
+        %219:f32 = add %x_238, %218
+        store_vector_element %color, 0u, %219
+        exit_if  # if_14
+      }
+    }
+    %x_241:vec3<f32> = load %color
+    %x_242:vec3<f32> = normalize %x_241
+    %222:f32 = access %x_242, 0u
+    %223:f32 = access %x_242, 1u
+    %224:f32 = access %x_242, 2u
+    %225:vec4<f32> = construct %222, %223, %224, 1.0f
+    store %frag_color, %225
+    %x_247:vec4<f32> = load %x_GLF_pos
+    store %gl_Position, %x_247
+    ret
+  }
+}
+%tint_symbol = @vertex func(%x_GLF_pos_param:vec4<f32> [@location(0)]):main_out -> %b29 {
+  %b29 = block {
+    store %x_GLF_pos, %x_GLF_pos_param
+    %229:void = call %main_1
+    %230:vec4<f32> = load %frag_color
+    %231:vec4<f32> = load %gl_Position
+    %232:main_out = construct %230, %231
+    ret %232
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..c8e22d4
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm.expected.ir.msl
@@ -0,0 +1,617 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  frag_color_1:vec4<f32> @offset(0), @location(0)
+  gl_Position:vec4<f32> @offset(16), @builtin(position)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %x_GLF_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_pos:ptr<private, vec4<f32>, read_write> = var
+  %x_34:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %frag_color:ptr<private, vec4<f32>, read_write> = var
+  %gl_Position:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_90:ptr<function, i32, read_write> = var
+    %x_91:ptr<function, i32, read_write> = var
+    %x_92:ptr<function, i32, read_write> = var
+    %x_93:ptr<function, i32, read_write> = var
+    %x_94:ptr<function, i32, read_write> = var
+    %x_95:ptr<function, i32, read_write> = var
+    %x_96:ptr<function, i32, read_write> = var
+    %x_97:ptr<function, i32, read_write> = var
+    %x_98:ptr<function, i32, read_write> = var
+    %x_99:ptr<function, i32, read_write> = var
+    %x_100:ptr<function, i32, read_write> = var
+    %x_101:ptr<function, i32, read_write> = var
+    %x_102:ptr<function, i32, read_write> = var
+    %x_103:ptr<function, array<i32, 10>, read_write> = var
+    %x_104:ptr<function, i32, read_write> = var
+    %x_105:ptr<function, i32, read_write> = var
+    %x_106:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %uv:ptr<function, vec2<f32>, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    %28:vec4<f32> = load %x_GLF_pos
+    %29:vec4<f32> = add %28, vec4<f32>(1.0f, 1.0f, 0.0f, 0.0f)
+    %30:vec4<f32> = mul %29, vec4<f32>(128.0f, 128.0f, 1.0f, 1.0f)
+    store %x_GLF_FragCoord, %30
+    store %i_2, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %31:i32 = load %i_2
+        %32:bool = lt %31, 10i
+        if %32 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_117:i32 = load %i_2
+        %34:ptr<private, i32, read_write> = access %obj, 0u, %x_117
+        %35:i32 = load %i_2
+        %36:i32 = sub 10i, %35
+        store %34, %36
+        %x_121:i32 = load %i_2
+        %38:ptr<private, i32, read_write> = access %obj, 0u, %x_121
+        %39:i32 = load %i_2
+        %40:ptr<private, i32, read_write> = access %obj, 0u, %39
+        %41:i32 = load %40
+        %42:i32 = load %i_2
+        %43:ptr<private, i32, read_write> = access %obj, 0u, %42
+        %44:i32 = load %43
+        %45:i32 = mul %41, %44
+        store %38, %45
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %46:i32 = load %i_2
+        %47:i32 = add %46, 1i
+        store %i_2, %47
+        next_iteration %b3
+      }
+    }
+    store %x_100, 0i
+    store %x_101, 9i
+    store %x_102, -1i
+    %48:i32 = load %x_102
+    %x_133:i32 = add %48, 1i
+    store %x_102, %x_133
+    %50:ptr<function, i32, read_write> = access %x_103, %x_133
+    %51:i32 = load %x_100
+    store %50, %51
+    %52:i32 = load %x_102
+    %x_137:i32 = add %52, 1i
+    store %x_102, %x_137
+    %54:ptr<function, i32, read_write> = access %x_103, %x_137
+    %55:i32 = load %x_101
+    store %54, %55
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %56:i32 = load %x_102
+        %57:bool = gte %56, 0i
+        if %57 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_147:i32 = load %x_102
+        %59:i32 = load %x_102
+        %60:i32 = sub %59, 1i
+        store %x_102, %60
+        %61:ptr<function, i32, read_write> = access %x_103, %x_147
+        %62:i32 = load %61
+        store %x_101, %62
+        %x_151:i32 = load %x_102
+        %64:i32 = load %x_102
+        %65:i32 = sub %64, 1i
+        store %x_102, %65
+        %66:ptr<function, i32, read_write> = access %x_103, %x_151
+        %67:i32 = load %66
+        store %x_100, %67
+        %68:i32 = load %x_100
+        store %x_105, %68
+        %69:i32 = load %x_101
+        store %x_106, %69
+        %70:i32 = load %x_106
+        %71:ptr<private, i32, read_write> = access %obj, 0u, %70
+        %72:i32 = load %71
+        store %x_92, %72
+        %73:i32 = load %x_105
+        %74:i32 = sub %73, 1i
+        store %x_93, %74
+        %75:i32 = load %x_105
+        store %x_94, %75
+        loop [b: %b11, c: %b12] {  # loop_3
+          %b11 = block {  # body
+            %76:i32 = load %x_94
+            %77:i32 = load %x_106
+            %78:i32 = sub %77, 1i
+            %79:bool = lte %76, %78
+            if %79 [t: %b13, f: %b14] {  # if_3
+              %b13 = block {  # true
+                exit_if  # if_3
+              }
+              %b14 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %80:i32 = load %x_94
+            %81:ptr<private, i32, read_write> = access %obj, 0u, %80
+            %82:i32 = load %81
+            %83:i32 = load %x_92
+            %84:bool = lte %82, %83
+            if %84 [t: %b15] {  # if_4
+              %b15 = block {  # true
+                %85:i32 = load %x_93
+                %86:i32 = add %85, 1i
+                store %x_93, %86
+                %87:i32 = load %x_93
+                store %x_95, %87
+                %88:i32 = load %x_94
+                store %x_96, %88
+                %89:i32 = load %x_95
+                %90:ptr<private, i32, read_write> = access %obj, 0u, %89
+                %91:i32 = load %90
+                store %x_91, %91
+                %x_186:i32 = load %x_95
+                %93:ptr<private, i32, read_write> = access %obj, 0u, %x_186
+                %94:i32 = load %x_96
+                %95:ptr<private, i32, read_write> = access %obj, 0u, %94
+                %96:i32 = load %95
+                store %93, %96
+                %x_191:i32 = load %x_96
+                %98:ptr<private, i32, read_write> = access %obj, 0u, %x_191
+                %99:i32 = load %x_91
+                store %98, %99
+                exit_if  # if_4
+              }
+            }
+            continue %b12
+          }
+          %b12 = block {  # continuing
+            %100:i32 = load %x_94
+            %101:i32 = add %100, 1i
+            store %x_94, %101
+            next_iteration %b11
+          }
+        }
+        %102:i32 = load %x_93
+        %103:i32 = add %102, 1i
+        store %x_97, %103
+        %104:i32 = load %x_106
+        store %x_98, %104
+        %105:i32 = load %x_97
+        %106:ptr<private, i32, read_write> = access %obj, 0u, %105
+        %107:i32 = load %106
+        store %x_90, %107
+        %x_202:i32 = load %x_97
+        %109:ptr<private, i32, read_write> = access %obj, 0u, %x_202
+        %110:i32 = load %x_98
+        %111:ptr<private, i32, read_write> = access %obj, 0u, %110
+        %112:i32 = load %111
+        store %109, %112
+        %x_207:i32 = load %x_98
+        %114:ptr<private, i32, read_write> = access %obj, 0u, %x_207
+        %115:i32 = load %x_90
+        store %114, %115
+        %116:i32 = load %x_93
+        %117:i32 = add %116, 1i
+        store %x_99, %117
+        %118:i32 = load %x_99
+        store %x_104, %118
+        %119:i32 = load %x_104
+        %120:i32 = sub %119, 1i
+        %121:i32 = load %x_100
+        %122:bool = gt %120, %121
+        if %122 [t: %b16] {  # if_5
+          %b16 = block {  # true
+            %123:i32 = load %x_102
+            %x_220:i32 = add %123, 1i
+            store %x_102, %x_220
+            %125:ptr<function, i32, read_write> = access %x_103, %x_220
+            %126:i32 = load %x_100
+            store %125, %126
+            %127:i32 = load %x_102
+            %x_224:i32 = add %127, 1i
+            store %x_102, %x_224
+            %129:ptr<function, i32, read_write> = access %x_103, %x_224
+            %130:i32 = load %x_104
+            %131:i32 = sub %130, 1i
+            store %129, %131
+            exit_if  # if_5
+          }
+        }
+        %132:i32 = load %x_104
+        %133:i32 = add %132, 1i
+        %134:i32 = load %x_101
+        %135:bool = lt %133, %134
+        if %135 [t: %b17] {  # if_6
+          %b17 = block {  # true
+            %136:i32 = load %x_102
+            %x_235:i32 = add %136, 1i
+            store %x_102, %x_235
+            %138:ptr<function, i32, read_write> = access %x_103, %x_235
+            %139:i32 = load %x_104
+            %140:i32 = add %139, 1i
+            store %138, %140
+            %141:i32 = load %x_102
+            %x_240:i32 = add %141, 1i
+            store %x_102, %x_240
+            %143:ptr<function, i32, read_write> = access %x_103, %x_240
+            %144:i32 = load %x_101
+            store %143, %144
+            exit_if  # if_6
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        next_iteration %b7
+      }
+    }
+    %145:vec4<f32> = load %x_GLF_FragCoord
+    %146:vec2<f32> = swizzle %145, xy
+    %147:ptr<uniform, vec2<f32>, read> = access %x_34, 0u
+    %148:vec2<f32> = load %147
+    %149:vec2<f32> = div %146, %148
+    store %uv, %149
+    store %color, vec3<f32>(1.0f, 2.0f, 3.0f)
+    %150:f32 = load_vector_element %color, 0u
+    %151:ptr<private, i32, read_write> = access %obj, 0u, 0i
+    %152:i32 = load %151
+    %153:f32 = convert %152
+    %154:f32 = add %150, %153
+    store_vector_element %color, 0u, %154
+    %155:f32 = load_vector_element %uv, 0u
+    %156:bool = gt %155, 0.25f
+    if %156 [t: %b18] {  # if_7
+      %b18 = block {  # true
+        %157:f32 = load_vector_element %color, 0u
+        %158:ptr<private, i32, read_write> = access %obj, 0u, 1i
+        %159:i32 = load %158
+        %160:f32 = convert %159
+        %161:f32 = add %157, %160
+        store_vector_element %color, 0u, %161
+        exit_if  # if_7
+      }
+    }
+    %162:f32 = load_vector_element %uv, 0u
+    %163:bool = gt %162, 0.5f
+    if %163 [t: %b19] {  # if_8
+      %b19 = block {  # true
+        %164:f32 = load_vector_element %color, 1u
+        %165:ptr<private, i32, read_write> = access %obj, 0u, 2i
+        %166:i32 = load %165
+        %167:f32 = convert %166
+        %168:f32 = add %164, %167
+        store_vector_element %color, 1u, %168
+        exit_if  # if_8
+      }
+    }
+    %169:f32 = load_vector_element %uv, 0u
+    %170:bool = gt %169, 0.75f
+    if %170 [t: %b20] {  # if_9
+      %b20 = block {  # true
+        %171:f32 = load_vector_element %color, 2u
+        %172:ptr<private, i32, read_write> = access %obj, 0u, 3i
+        %173:i32 = load %172
+        %174:f32 = convert %173
+        %175:f32 = add %171, %174
+        store_vector_element %color, 2u, %175
+        exit_if  # if_9
+      }
+    }
+    %176:f32 = load_vector_element %color, 1u
+    %177:ptr<private, i32, read_write> = access %obj, 0u, 4i
+    %178:i32 = load %177
+    %179:f32 = convert %178
+    %180:f32 = add %176, %179
+    store_vector_element %color, 1u, %180
+    %181:f32 = load_vector_element %uv, 1u
+    %182:bool = gt %181, 0.25f
+    if %182 [t: %b21] {  # if_10
+      %b21 = block {  # true
+        %183:f32 = load_vector_element %color, 0u
+        %184:ptr<private, i32, read_write> = access %obj, 0u, 5i
+        %185:i32 = load %184
+        %186:f32 = convert %185
+        %187:f32 = add %183, %186
+        store_vector_element %color, 0u, %187
+        exit_if  # if_10
+      }
+    }
+    %188:f32 = load_vector_element %uv, 1u
+    %189:bool = gt %188, 0.5f
+    if %189 [t: %b22] {  # if_11
+      %b22 = block {  # true
+        %190:f32 = load_vector_element %color, 1u
+        %191:ptr<private, i32, read_write> = access %obj, 0u, 6i
+        %192:i32 = load %191
+        %193:f32 = convert %192
+        %194:f32 = add %190, %193
+        store_vector_element %color, 1u, %194
+        exit_if  # if_11
+      }
+    }
+    %195:f32 = load_vector_element %uv, 1u
+    %196:bool = gt %195, 0.75f
+    if %196 [t: %b23] {  # if_12
+      %b23 = block {  # true
+        %197:f32 = load_vector_element %color, 2u
+        %198:ptr<private, i32, read_write> = access %obj, 0u, 7i
+        %199:i32 = load %198
+        %200:f32 = convert %199
+        %201:f32 = add %197, %200
+        store_vector_element %color, 2u, %201
+        exit_if  # if_12
+      }
+    }
+    %202:f32 = load_vector_element %color, 2u
+    %203:ptr<private, i32, read_write> = access %obj, 0u, 8i
+    %204:i32 = load %203
+    %205:f32 = convert %204
+    %206:f32 = add %202, %205
+    store_vector_element %color, 2u, %206
+    %207:f32 = load_vector_element %uv, 0u
+    %208:f32 = load_vector_element %uv, 1u
+    %209:f32 = sub %207, %208
+    %210:f32 = abs %209
+    %211:bool = lt %210, 0.25f
+    if %211 [t: %b24] {  # if_13
+      %b24 = block {  # true
+        %212:f32 = load_vector_element %color, 0u
+        %213:ptr<private, i32, read_write> = access %obj, 0u, 9i
+        %214:i32 = load %213
+        %215:f32 = convert %214
+        %216:f32 = add %212, %215
+        store_vector_element %color, 0u, %216
+        exit_if  # if_13
+      }
+    }
+    %217:vec3<f32> = load %color
+    %x_358:vec3<f32> = normalize %217
+    %219:f32 = access %x_358, 0u
+    %220:f32 = access %x_358, 1u
+    %221:f32 = access %x_358, 2u
+    %222:vec4<f32> = construct %219, %220, %221, 1.0f
+    store %frag_color, %222
+    %223:vec4<f32> = load %x_GLF_pos
+    store %gl_Position, %223
+    ret
+  }
+}
+%tint_symbol = @vertex func(%x_GLF_pos_param:vec4<f32> [@location(0)]):main_out -> %b25 {
+  %b25 = block {
+    store %x_GLF_pos, %x_GLF_pos_param
+    %226:void = call %main_1
+    %227:vec4<f32> = load %frag_color
+    %228:vec4<f32> = load %gl_Position
+    %229:main_out = construct %227, %228
+    ret %229
+  }
+}
+%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>):void -> %b26 {
+  %b26 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %234:i32 = load %i
+    %235:ptr<private, i32, read_write> = access %obj, 0u, %234
+    %236:i32 = load %235
+    store %temp, %236
+    %x_369:i32 = load %i
+    %238:ptr<private, i32, read_write> = access %obj, 0u, %x_369
+    %239:i32 = load %j
+    %240:ptr<private, i32, read_write> = access %obj, 0u, %239
+    %241:i32 = load %240
+    store %238, %241
+    %x_374:i32 = load %j
+    %243:ptr<private, i32, read_write> = access %obj, 0u, %x_374
+    %244:i32 = load %temp
+    store %243, %244
+    ret
+  }
+}
+%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 -> %b27 {
+  %b27 = block {
+    %pivot:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %255:i32 = load %h
+    %256:ptr<private, i32, read_write> = access %obj, 0u, %255
+    %257:i32 = load %256
+    store %pivot, %257
+    %258:i32 = load %l
+    %259:i32 = sub %258, 1i
+    store %i_1, %259
+    %260:i32 = load %l
+    store %j_1, %260
+    loop [b: %b28, c: %b29] {  # loop_4
+      %b28 = block {  # body
+        %261:i32 = load %j_1
+        %262:i32 = load %h
+        %263:i32 = sub %262, 1i
+        %264:bool = lte %261, %263
+        if %264 [t: %b30, f: %b31] {  # if_14
+          %b30 = block {  # true
+            exit_if  # if_14
+          }
+          %b31 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %265:i32 = load %j_1
+        %266:ptr<private, i32, read_write> = access %obj, 0u, %265
+        %267:i32 = load %266
+        %268:i32 = load %pivot
+        %269:bool = lte %267, %268
+        if %269 [t: %b32] {  # if_15
+          %b32 = block {  # true
+            %270:i32 = load %i_1
+            %271:i32 = add %270, 1i
+            store %i_1, %271
+            %272:i32 = load %i_1
+            store %param, %272
+            %273:i32 = load %j_1
+            store %param_1, %273
+            %274:void = call %swap_i1_i1_, %param, %param_1
+            exit_if  # if_15
+          }
+        }
+        continue %b29
+      }
+      %b29 = block {  # continuing
+        %275:i32 = load %j_1
+        %276:i32 = add %275, 1i
+        store %j_1, %276
+        next_iteration %b28
+      }
+    }
+    %277:i32 = load %i_1
+    %278:i32 = add %277, 1i
+    store %param_2, %278
+    %279:i32 = load %h
+    store %param_3, %279
+    %280:void = call %swap_i1_i1_, %param_2, %param_3
+    %x_411:i32 = load %i_1
+    %282:i32 = add %x_411, 1i
+    ret %282
+  }
+}
+%quicksort_ = func():void -> %b33 {
+  %b33 = block {
+    %l_1:ptr<function, i32, read_write> = var
+    %h_1:ptr<function, i32, read_write> = var
+    %top:ptr<function, i32, read_write> = var
+    %stack:ptr<function, array<i32, 10>, read_write> = var
+    %p:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    store %l_1, 0i
+    store %h_1, 9i
+    store %top, -1i
+    %291:i32 = load %top
+    %x_415:i32 = add %291, 1i
+    store %top, %x_415
+    %293:ptr<function, i32, read_write> = access %stack, %x_415
+    %294:i32 = load %l_1
+    store %293, %294
+    %295:i32 = load %top
+    %x_419:i32 = add %295, 1i
+    store %top, %x_419
+    %297:ptr<function, i32, read_write> = access %stack, %x_419
+    %298:i32 = load %h_1
+    store %297, %298
+    loop [b: %b34, c: %b35] {  # loop_5
+      %b34 = block {  # body
+        %299:i32 = load %top
+        %300:bool = gte %299, 0i
+        if %300 [t: %b36, f: %b37] {  # if_16
+          %b36 = block {  # true
+            exit_if  # if_16
+          }
+          %b37 = block {  # false
+            exit_loop  # loop_5
+          }
+        }
+        %x_429:i32 = load %top
+        %302:i32 = load %top
+        %303:i32 = sub %302, 1i
+        store %top, %303
+        %304:ptr<function, i32, read_write> = access %stack, %x_429
+        %305:i32 = load %304
+        store %h_1, %305
+        %x_433:i32 = load %top
+        %307:i32 = load %top
+        %308:i32 = sub %307, 1i
+        store %top, %308
+        %309:ptr<function, i32, read_write> = access %stack, %x_433
+        %310:i32 = load %309
+        store %l_1, %310
+        %311:i32 = load %l_1
+        store %param_4, %311
+        %312:i32 = load %h_1
+        store %param_5, %312
+        %x_439:i32 = call %performPartition_i1_i1_, %param_4, %param_5
+        store %p, %x_439
+        %314:i32 = load %p
+        %315:i32 = sub %314, 1i
+        %316:i32 = load %l_1
+        %317:bool = gt %315, %316
+        if %317 [t: %b38] {  # if_17
+          %b38 = block {  # true
+            %318:i32 = load %top
+            %x_447:i32 = add %318, 1i
+            store %top, %x_447
+            %320:ptr<function, i32, read_write> = access %stack, %x_447
+            %321:i32 = load %l_1
+            store %320, %321
+            %322:i32 = load %top
+            %x_451:i32 = add %322, 1i
+            store %top, %x_451
+            %324:ptr<function, i32, read_write> = access %stack, %x_451
+            %325:i32 = load %p
+            %326:i32 = sub %325, 1i
+            store %324, %326
+            exit_if  # if_17
+          }
+        }
+        %327:i32 = load %p
+        %328:i32 = add %327, 1i
+        %329:i32 = load %h_1
+        %330:bool = lt %328, %329
+        if %330 [t: %b39] {  # if_18
+          %b39 = block {  # true
+            %331:i32 = load %top
+            %x_462:i32 = add %331, 1i
+            store %top, %x_462
+            %333:ptr<function, i32, read_write> = access %stack, %x_462
+            %334:i32 = load %p
+            %335:i32 = add %334, 1i
+            store %333, %335
+            %336:i32 = load %top
+            %x_467:i32 = add %336, 1i
+            store %top, %x_467
+            %338:ptr<function, i32, read_write> = access %stack, %x_467
+            %339:i32 = load %h_1
+            store %338, %339
+            exit_if  # if_18
+          }
+        }
+        continue %b35
+      }
+      %b35 = block {  # continuing
+        next_iteration %b34
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9745417
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl.expected.ir.msl
@@ -0,0 +1,615 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  frag_color_1:vec4<f32> @offset(0), @location(0)
+  gl_Position:vec4<f32> @offset(16), @builtin(position)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %x_GLF_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_pos:ptr<private, vec4<f32>, read_write> = var
+  %x_34:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %frag_color:ptr<private, vec4<f32>, read_write> = var
+  %gl_Position:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_90:ptr<function, i32, read_write> = var
+    %x_91:ptr<function, i32, read_write> = var
+    %x_92:ptr<function, i32, read_write> = var
+    %x_93:ptr<function, i32, read_write> = var
+    %x_94:ptr<function, i32, read_write> = var
+    %x_95:ptr<function, i32, read_write> = var
+    %x_96:ptr<function, i32, read_write> = var
+    %x_97:ptr<function, i32, read_write> = var
+    %x_98:ptr<function, i32, read_write> = var
+    %x_99:ptr<function, i32, read_write> = var
+    %x_100:ptr<function, i32, read_write> = var
+    %x_101:ptr<function, i32, read_write> = var
+    %x_102:ptr<function, i32, read_write> = var
+    %x_103:ptr<function, array<i32, 10>, read_write> = var
+    %x_104:ptr<function, i32, read_write> = var
+    %x_105:ptr<function, i32, read_write> = var
+    %x_106:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %uv:ptr<function, vec2<f32>, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    %x_107:vec4<f32> = load %x_GLF_pos
+    %29:vec4<f32> = add %x_107, vec4<f32>(1.0f, 1.0f, 0.0f, 0.0f)
+    %30:vec4<f32> = mul %29, vec4<f32>(128.0f, 128.0f, 1.0f, 1.0f)
+    store %x_GLF_FragCoord, %30
+    store %i_2, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_114:i32 = load %i_2
+        %32:bool = lt %x_114, 10i
+        if %32 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_117:i32 = load %i_2
+        %x_118:i32 = load %i_2
+        %35:ptr<private, i32, read_write> = access %obj, 0u, %x_117
+        %36:i32 = sub 10i, %x_118
+        store %35, %36
+        %x_121:i32 = load %i_2
+        %x_122:i32 = load %i_2
+        %39:ptr<private, i32, read_write> = access %obj, 0u, %x_122
+        %x_124:i32 = load %39
+        %x_125:i32 = load %i_2
+        %42:ptr<private, i32, read_write> = access %obj, 0u, %x_125
+        %x_127:i32 = load %42
+        %44:ptr<private, i32, read_write> = access %obj, 0u, %x_121
+        %45:i32 = mul %x_124, %x_127
+        store %44, %45
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_130:i32 = load %i_2
+        %47:i32 = add %x_130, 1i
+        store %i_2, %47
+        next_iteration %b3
+      }
+    }
+    store %x_100, 0i
+    store %x_101, 9i
+    store %x_102, -1i
+    %x_132:i32 = load %x_102
+    %x_133:i32 = add %x_132, 1i
+    store %x_102, %x_133
+    %x_134:i32 = load %x_100
+    %51:ptr<function, i32, read_write> = access %x_103, %x_133
+    store %51, %x_134
+    %x_136:i32 = load %x_102
+    %x_137:i32 = add %x_136, 1i
+    store %x_102, %x_137
+    %x_138:i32 = load %x_101
+    %55:ptr<function, i32, read_write> = access %x_103, %x_137
+    store %55, %x_138
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_144:i32 = load %x_102
+        %57:bool = gte %x_144, 0i
+        if %57 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_147:i32 = load %x_102
+        %59:i32 = sub %x_147, 1i
+        store %x_102, %59
+        %60:ptr<function, i32, read_write> = access %x_103, %x_147
+        %x_150:i32 = load %60
+        store %x_101, %x_150
+        %x_151:i32 = load %x_102
+        %63:i32 = sub %x_151, 1i
+        store %x_102, %63
+        %64:ptr<function, i32, read_write> = access %x_103, %x_151
+        %x_154:i32 = load %64
+        store %x_100, %x_154
+        %x_155:i32 = load %x_100
+        store %x_105, %x_155
+        %x_156:i32 = load %x_101
+        store %x_106, %x_156
+        %x_157:i32 = load %x_106
+        %69:ptr<private, i32, read_write> = access %obj, 0u, %x_157
+        %x_159:i32 = load %69
+        store %x_92, %x_159
+        %x_160:i32 = load %x_105
+        %72:i32 = sub %x_160, 1i
+        store %x_93, %72
+        %x_162:i32 = load %x_105
+        store %x_94, %x_162
+        loop [b: %b11, c: %b12] {  # loop_3
+          %b11 = block {  # body
+            %x_167:i32 = load %x_94
+            %x_168:i32 = load %x_106
+            %76:i32 = sub %x_168, 1i
+            %77:bool = lte %x_167, %76
+            if %77 [t: %b13, f: %b14] {  # if_3
+              %b13 = block {  # true
+                exit_if  # if_3
+              }
+              %b14 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %x_172:i32 = load %x_94
+            %79:ptr<private, i32, read_write> = access %obj, 0u, %x_172
+            %x_174:i32 = load %79
+            %x_175:i32 = load %x_92
+            %82:bool = lte %x_174, %x_175
+            if %82 [t: %b15] {  # if_4
+              %b15 = block {  # true
+                %x_179:i32 = load %x_93
+                %84:i32 = add %x_179, 1i
+                store %x_93, %84
+                %x_181:i32 = load %x_93
+                store %x_95, %x_181
+                %x_182:i32 = load %x_94
+                store %x_96, %x_182
+                %x_183:i32 = load %x_95
+                %88:ptr<private, i32, read_write> = access %obj, 0u, %x_183
+                %x_185:i32 = load %88
+                store %x_91, %x_185
+                %x_186:i32 = load %x_95
+                %x_187:i32 = load %x_96
+                %92:ptr<private, i32, read_write> = access %obj, 0u, %x_187
+                %x_189:i32 = load %92
+                %94:ptr<private, i32, read_write> = access %obj, 0u, %x_186
+                store %94, %x_189
+                %x_191:i32 = load %x_96
+                %x_192:i32 = load %x_91
+                %97:ptr<private, i32, read_write> = access %obj, 0u, %x_191
+                store %97, %x_192
+                exit_if  # if_4
+              }
+            }
+            continue %b12
+          }
+          %b12 = block {  # continuing
+            %x_194:i32 = load %x_94
+            %99:i32 = add %x_194, 1i
+            store %x_94, %99
+            next_iteration %b11
+          }
+        }
+        %x_196:i32 = load %x_93
+        %101:i32 = add %x_196, 1i
+        store %x_97, %101
+        %x_198:i32 = load %x_106
+        store %x_98, %x_198
+        %x_199:i32 = load %x_97
+        %104:ptr<private, i32, read_write> = access %obj, 0u, %x_199
+        %x_201:i32 = load %104
+        store %x_90, %x_201
+        %x_202:i32 = load %x_97
+        %x_203:i32 = load %x_98
+        %108:ptr<private, i32, read_write> = access %obj, 0u, %x_203
+        %x_205:i32 = load %108
+        %110:ptr<private, i32, read_write> = access %obj, 0u, %x_202
+        store %110, %x_205
+        %x_207:i32 = load %x_98
+        %x_208:i32 = load %x_90
+        %113:ptr<private, i32, read_write> = access %obj, 0u, %x_207
+        store %113, %x_208
+        %x_210:i32 = load %x_93
+        %115:i32 = add %x_210, 1i
+        store %x_99, %115
+        %x_212:i32 = load %x_99
+        store %x_104, %x_212
+        %x_213:i32 = load %x_104
+        %x_215:i32 = load %x_100
+        %119:i32 = sub %x_213, 1i
+        %120:bool = gt %119, %x_215
+        if %120 [t: %b16] {  # if_5
+          %b16 = block {  # true
+            %x_219:i32 = load %x_102
+            %x_220:i32 = add %x_219, 1i
+            store %x_102, %x_220
+            %x_221:i32 = load %x_100
+            %124:ptr<function, i32, read_write> = access %x_103, %x_220
+            store %124, %x_221
+            %x_223:i32 = load %x_102
+            %x_224:i32 = add %x_223, 1i
+            store %x_102, %x_224
+            %x_225:i32 = load %x_104
+            %128:ptr<function, i32, read_write> = access %x_103, %x_224
+            %129:i32 = sub %x_225, 1i
+            store %128, %129
+            exit_if  # if_5
+          }
+        }
+        %x_228:i32 = load %x_104
+        %x_230:i32 = load %x_101
+        %132:i32 = add %x_228, 1i
+        %133:bool = lt %132, %x_230
+        if %133 [t: %b17] {  # if_6
+          %b17 = block {  # true
+            %x_234:i32 = load %x_102
+            %x_235:i32 = add %x_234, 1i
+            store %x_102, %x_235
+            %x_236:i32 = load %x_104
+            %137:ptr<function, i32, read_write> = access %x_103, %x_235
+            %138:i32 = add %x_236, 1i
+            store %137, %138
+            %x_239:i32 = load %x_102
+            %x_240:i32 = add %x_239, 1i
+            store %x_102, %x_240
+            %x_241:i32 = load %x_101
+            %142:ptr<function, i32, read_write> = access %x_103, %x_240
+            store %142, %x_241
+            exit_if  # if_6
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        next_iteration %b7
+      }
+    }
+    %x_243:vec4<f32> = load %x_GLF_FragCoord
+    %144:ptr<uniform, vec2<f32>, read> = access %x_34, 0u
+    %x_246:vec2<f32> = load %144
+    %146:f32 = access %x_243, 0u
+    %147:f32 = access %x_243, 1u
+    %148:vec2<f32> = construct %146, %147
+    %149:vec2<f32> = div %148, %x_246
+    store %uv, %149
+    store %color, vec3<f32>(1.0f, 2.0f, 3.0f)
+    %150:ptr<private, i32, read_write> = access %obj, 0u, 0i
+    %x_249:i32 = load %150
+    %x_252:f32 = load_vector_element %color, 0u
+    %153:f32 = convert %x_249
+    %154:f32 = add %x_252, %153
+    store_vector_element %color, 0u, %154
+    %x_256:f32 = load_vector_element %uv, 0u
+    %156:bool = gt %x_256, 0.25f
+    if %156 [t: %b18] {  # if_7
+      %b18 = block {  # true
+        %157:ptr<private, i32, read_write> = access %obj, 0u, 1i
+        %x_261:i32 = load %157
+        %x_264:f32 = load_vector_element %color, 0u
+        %160:f32 = convert %x_261
+        %161:f32 = add %x_264, %160
+        store_vector_element %color, 0u, %161
+        exit_if  # if_7
+      }
+    }
+    %x_268:f32 = load_vector_element %uv, 0u
+    %163:bool = gt %x_268, 0.5f
+    if %163 [t: %b19] {  # if_8
+      %b19 = block {  # true
+        %164:ptr<private, i32, read_write> = access %obj, 0u, 2i
+        %x_273:i32 = load %164
+        %x_276:f32 = load_vector_element %color, 1u
+        %167:f32 = convert %x_273
+        %168:f32 = add %x_276, %167
+        store_vector_element %color, 1u, %168
+        exit_if  # if_8
+      }
+    }
+    %x_280:f32 = load_vector_element %uv, 0u
+    %170:bool = gt %x_280, 0.75f
+    if %170 [t: %b20] {  # if_9
+      %b20 = block {  # true
+        %171:ptr<private, i32, read_write> = access %obj, 0u, 3i
+        %x_285:i32 = load %171
+        %x_288:f32 = load_vector_element %color, 2u
+        %174:f32 = convert %x_285
+        %175:f32 = add %x_288, %174
+        store_vector_element %color, 2u, %175
+        exit_if  # if_9
+      }
+    }
+    %176:ptr<private, i32, read_write> = access %obj, 0u, 4i
+    %x_292:i32 = load %176
+    %x_295:f32 = load_vector_element %color, 1u
+    %179:f32 = convert %x_292
+    %180:f32 = add %x_295, %179
+    store_vector_element %color, 1u, %180
+    %x_299:f32 = load_vector_element %uv, 1u
+    %182:bool = gt %x_299, 0.25f
+    if %182 [t: %b21] {  # if_10
+      %b21 = block {  # true
+        %183:ptr<private, i32, read_write> = access %obj, 0u, 5i
+        %x_304:i32 = load %183
+        %x_307:f32 = load_vector_element %color, 0u
+        %186:f32 = convert %x_304
+        %187:f32 = add %x_307, %186
+        store_vector_element %color, 0u, %187
+        exit_if  # if_10
+      }
+    }
+    %x_311:f32 = load_vector_element %uv, 1u
+    %189:bool = gt %x_311, 0.5f
+    if %189 [t: %b22] {  # if_11
+      %b22 = block {  # true
+        %190:ptr<private, i32, read_write> = access %obj, 0u, 6i
+        %x_316:i32 = load %190
+        %x_319:f32 = load_vector_element %color, 1u
+        %193:f32 = convert %x_316
+        %194:f32 = add %x_319, %193
+        store_vector_element %color, 1u, %194
+        exit_if  # if_11
+      }
+    }
+    %x_323:f32 = load_vector_element %uv, 1u
+    %196:bool = gt %x_323, 0.75f
+    if %196 [t: %b23] {  # if_12
+      %b23 = block {  # true
+        %197:ptr<private, i32, read_write> = access %obj, 0u, 7i
+        %x_328:i32 = load %197
+        %x_331:f32 = load_vector_element %color, 2u
+        %200:f32 = convert %x_328
+        %201:f32 = add %x_331, %200
+        store_vector_element %color, 2u, %201
+        exit_if  # if_12
+      }
+    }
+    %202:ptr<private, i32, read_write> = access %obj, 0u, 8i
+    %x_335:i32 = load %202
+    %x_338:f32 = load_vector_element %color, 2u
+    %205:f32 = convert %x_335
+    %206:f32 = add %x_338, %205
+    store_vector_element %color, 2u, %206
+    %x_342:f32 = load_vector_element %uv, 0u
+    %x_344:f32 = load_vector_element %uv, 1u
+    %209:f32 = sub %x_342, %x_344
+    %210:f32 = abs %209
+    %211:bool = lt %210, 0.25f
+    if %211 [t: %b24] {  # if_13
+      %b24 = block {  # true
+        %212:ptr<private, i32, read_write> = access %obj, 0u, 9i
+        %x_351:i32 = load %212
+        %x_354:f32 = load_vector_element %color, 0u
+        %215:f32 = convert %x_351
+        %216:f32 = add %x_354, %215
+        store_vector_element %color, 0u, %216
+        exit_if  # if_13
+      }
+    }
+    %x_357:vec3<f32> = load %color
+    %x_358:vec3<f32> = normalize %x_357
+    %219:f32 = access %x_358, 0u
+    %220:f32 = access %x_358, 1u
+    %221:f32 = access %x_358, 2u
+    %222:vec4<f32> = construct %219, %220, %221, 1.0f
+    store %frag_color, %222
+    %x_363:vec4<f32> = load %x_GLF_pos
+    store %gl_Position, %x_363
+    ret
+  }
+}
+%tint_symbol = @vertex func(%x_GLF_pos_param:vec4<f32> [@location(0)]):main_out -> %b25 {
+  %b25 = block {
+    store %x_GLF_pos, %x_GLF_pos_param
+    %226:void = call %main_1
+    %227:vec4<f32> = load %frag_color
+    %228:vec4<f32> = load %gl_Position
+    %229:main_out = construct %227, %228
+    ret %229
+  }
+}
+%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>):void -> %b26 {
+  %b26 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %x_366:i32 = load %i
+    %235:ptr<private, i32, read_write> = access %obj, 0u, %x_366
+    %x_368:i32 = load %235
+    store %temp, %x_368
+    %x_369:i32 = load %i
+    %x_370:i32 = load %j
+    %239:ptr<private, i32, read_write> = access %obj, 0u, %x_370
+    %x_372:i32 = load %239
+    %241:ptr<private, i32, read_write> = access %obj, 0u, %x_369
+    store %241, %x_372
+    %x_374:i32 = load %j
+    %x_375:i32 = load %temp
+    %244:ptr<private, i32, read_write> = access %obj, 0u, %x_374
+    store %244, %x_375
+    ret
+  }
+}
+%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 -> %b27 {
+  %b27 = block {
+    %pivot:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %x_378:i32 = load %h
+    %256:ptr<private, i32, read_write> = access %obj, 0u, %x_378
+    %x_380:i32 = load %256
+    store %pivot, %x_380
+    %x_381:i32 = load %l
+    %259:i32 = sub %x_381, 1i
+    store %i_1, %259
+    %x_383:i32 = load %l
+    store %j_1, %x_383
+    loop [b: %b28, c: %b29] {  # loop_4
+      %b28 = block {  # body
+        %x_388:i32 = load %j_1
+        %x_389:i32 = load %h
+        %263:i32 = sub %x_389, 1i
+        %264:bool = lte %x_388, %263
+        if %264 [t: %b30, f: %b31] {  # if_14
+          %b30 = block {  # true
+            exit_if  # if_14
+          }
+          %b31 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %x_393:i32 = load %j_1
+        %266:ptr<private, i32, read_write> = access %obj, 0u, %x_393
+        %x_395:i32 = load %266
+        %x_396:i32 = load %pivot
+        %269:bool = lte %x_395, %x_396
+        if %269 [t: %b32] {  # if_15
+          %b32 = block {  # true
+            %x_400:i32 = load %i_1
+            %271:i32 = add %x_400, 1i
+            store %i_1, %271
+            %x_402:i32 = load %i_1
+            store %param, %x_402
+            %x_403:i32 = load %j_1
+            store %param_1, %x_403
+            %274:void = call %swap_i1_i1_, %param, %param_1
+            exit_if  # if_15
+          }
+        }
+        continue %b29
+      }
+      %b29 = block {  # continuing
+        %x_405:i32 = load %j_1
+        %276:i32 = add %x_405, 1i
+        store %j_1, %276
+        next_iteration %b28
+      }
+    }
+    %x_407:i32 = load %i_1
+    %278:i32 = add %x_407, 1i
+    store %param_2, %278
+    %x_409:i32 = load %h
+    store %param_3, %x_409
+    %280:void = call %swap_i1_i1_, %param_2, %param_3
+    %x_411:i32 = load %i_1
+    %282:i32 = add %x_411, 1i
+    ret %282
+  }
+}
+%quicksort_ = func():void -> %b33 {
+  %b33 = block {
+    %l_1:ptr<function, i32, read_write> = var
+    %h_1:ptr<function, i32, read_write> = var
+    %top:ptr<function, i32, read_write> = var
+    %stack:ptr<function, array<i32, 10>, read_write> = var
+    %p:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    store %l_1, 0i
+    store %h_1, 9i
+    store %top, -1i
+    %x_414:i32 = load %top
+    %x_415:i32 = add %x_414, 1i
+    store %top, %x_415
+    %x_416:i32 = load %l_1
+    %294:ptr<function, i32, read_write> = access %stack, %x_415
+    store %294, %x_416
+    %x_418:i32 = load %top
+    %x_419:i32 = add %x_418, 1i
+    store %top, %x_419
+    %x_420:i32 = load %h_1
+    %298:ptr<function, i32, read_write> = access %stack, %x_419
+    store %298, %x_420
+    loop [b: %b34, c: %b35] {  # loop_5
+      %b34 = block {  # body
+        %x_426:i32 = load %top
+        %300:bool = gte %x_426, 0i
+        if %300 [t: %b36, f: %b37] {  # if_16
+          %b36 = block {  # true
+            exit_if  # if_16
+          }
+          %b37 = block {  # false
+            exit_loop  # loop_5
+          }
+        }
+        %x_429:i32 = load %top
+        %302:i32 = sub %x_429, 1i
+        store %top, %302
+        %303:ptr<function, i32, read_write> = access %stack, %x_429
+        %x_432:i32 = load %303
+        store %h_1, %x_432
+        %x_433:i32 = load %top
+        %306:i32 = sub %x_433, 1i
+        store %top, %306
+        %307:ptr<function, i32, read_write> = access %stack, %x_433
+        %x_436:i32 = load %307
+        store %l_1, %x_436
+        %x_437:i32 = load %l_1
+        store %param_4, %x_437
+        %x_438:i32 = load %h_1
+        store %param_5, %x_438
+        %x_439:i32 = call %performPartition_i1_i1_, %param_4, %param_5
+        store %p, %x_439
+        %x_440:i32 = load %p
+        %x_442:i32 = load %l_1
+        %314:i32 = sub %x_440, 1i
+        %315:bool = gt %314, %x_442
+        if %315 [t: %b38] {  # if_17
+          %b38 = block {  # true
+            %x_446:i32 = load %top
+            %x_447:i32 = add %x_446, 1i
+            store %top, %x_447
+            %x_448:i32 = load %l_1
+            %319:ptr<function, i32, read_write> = access %stack, %x_447
+            store %319, %x_448
+            %x_450:i32 = load %top
+            %x_451:i32 = add %x_450, 1i
+            store %top, %x_451
+            %x_452:i32 = load %p
+            %323:ptr<function, i32, read_write> = access %stack, %x_451
+            %324:i32 = sub %x_452, 1i
+            store %323, %324
+            exit_if  # if_17
+          }
+        }
+        %x_455:i32 = load %p
+        %x_457:i32 = load %h_1
+        %327:i32 = add %x_455, 1i
+        %328:bool = lt %327, %x_457
+        if %328 [t: %b39] {  # if_18
+          %b39 = block {  # true
+            %x_461:i32 = load %top
+            %x_462:i32 = add %x_461, 1i
+            store %top, %x_462
+            %x_463:i32 = load %p
+            %332:ptr<function, i32, read_write> = access %stack, %x_462
+            %333:i32 = add %x_463, 1i
+            store %332, %333
+            %x_466:i32 = load %top
+            %x_467:i32 = add %x_466, 1i
+            store %top, %x_467
+            %x_468:i32 = load %h_1
+            %337:ptr<function, i32, read_write> = access %stack, %x_467
+            store %337, %x_468
+            exit_if  # if_18
+          }
+        }
+        continue %b35
+      }
+      %b35 = block {  # continuing
+        next_iteration %b34
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm.expected.ir.msl
new file mode 100644
index 0000000..0649103
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm.expected.ir.msl
@@ -0,0 +1,558 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  frag_color_1:vec4<f32> @offset(0), @location(0)
+  gl_Position:vec4<f32> @offset(16), @builtin(position)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %x_GLF_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_pos:ptr<private, vec4<f32>, read_write> = var
+  %x_34:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %frag_color:ptr<private, vec4<f32>, read_write> = var
+  %gl_Position:ptr<private, vec4<f32>, read_write> = var
+}
+
+%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %x_314:ptr<function, i32, read_write> = var
+    %x_315:ptr<function, i32, read_write> = var
+    %pivot:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %19:i32 = load %h
+    %20:ptr<private, i32, read_write> = access %obj, 0u, %19
+    %21:i32 = load %20
+    store %pivot, %21
+    %22:i32 = load %l
+    %23:i32 = sub %22, 1i
+    store %i_1, %23
+    %24:i32 = load %l
+    store %j_1, %24
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %25:i32 = load %j_1
+        %26:i32 = load %h
+        %27:i32 = sub %26, 1i
+        %28:bool = lte %25, %27
+        if %28 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %29:i32 = load %j_1
+        %30:ptr<private, i32, read_write> = access %obj, 0u, %29
+        %31:i32 = load %30
+        %32:i32 = load %pivot
+        %33:bool = lte %31, %32
+        if %33 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %34:i32 = load %i_1
+            %35:i32 = add %34, 1i
+            store %i_1, %35
+            %36:i32 = load %i_1
+            store %param, %36
+            %37:i32 = load %j_1
+            store %param_1, %37
+            %38:i32 = load %param
+            %39:ptr<private, i32, read_write> = access %obj, 0u, %38
+            %40:i32 = load %39
+            store %x_315, %40
+            %x_345:i32 = load %param
+            %42:ptr<private, i32, read_write> = access %obj, 0u, %x_345
+            %43:i32 = load %param_1
+            %44:ptr<private, i32, read_write> = access %obj, 0u, %43
+            %45:i32 = load %44
+            store %42, %45
+            %x_350:i32 = load %param_1
+            %47:ptr<private, i32, read_write> = access %obj, 0u, %x_350
+            %48:i32 = load %x_315
+            store %47, %48
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %49:i32 = load %j_1
+        %50:i32 = add %49, 1i
+        store %j_1, %50
+        next_iteration %b3
+      }
+    }
+    %51:i32 = load %i_1
+    %52:i32 = add %51, 1i
+    store %param_2, %52
+    %53:i32 = load %h
+    store %param_3, %53
+    %54:i32 = load %param_2
+    %55:ptr<private, i32, read_write> = access %obj, 0u, %54
+    %56:i32 = load %55
+    store %x_314, %56
+    %x_361:i32 = load %param_2
+    %58:ptr<private, i32, read_write> = access %obj, 0u, %x_361
+    %59:i32 = load %param_3
+    %60:ptr<private, i32, read_write> = access %obj, 0u, %59
+    %61:i32 = load %60
+    store %58, %61
+    %x_366:i32 = load %param_3
+    %63:ptr<private, i32, read_write> = access %obj, 0u, %x_366
+    %64:i32 = load %x_314
+    store %63, %64
+    if false [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %x_372:i32 = load %i_1
+        %66:i32 = add %x_372, 1i
+        ret %66
+      }
+    }
+    ret 0i
+  }
+}
+%main_1 = func():void -> %b10 {
+  %b10 = block {
+    %x_91:ptr<function, i32, read_write> = var
+    %x_92:ptr<function, i32, read_write> = var
+    %x_93:ptr<function, i32, read_write> = var
+    %x_94:ptr<function, array<i32, 10>, read_write> = var
+    %x_95:ptr<function, i32, read_write> = var
+    %x_96:ptr<function, i32, read_write> = var
+    %x_97:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %uv:ptr<function, vec2<f32>, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    %78:vec4<f32> = load %x_GLF_pos
+    %79:vec4<f32> = add %78, vec4<f32>(1.0f, 1.0f, 0.0f, 0.0f)
+    %80:vec4<f32> = mul %79, vec4<f32>(128.0f, 128.0f, 1.0f, 1.0f)
+    store %x_GLF_FragCoord, %80
+    store %i_2, 0i
+    loop [b: %b11, c: %b12] {  # loop_2
+      %b11 = block {  # body
+        %81:i32 = load %i_2
+        %82:bool = lt %81, 10i
+        if %82 [t: %b13, f: %b14] {  # if_4
+          %b13 = block {  # true
+            exit_if  # if_4
+          }
+          %b14 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_108:i32 = load %i_2
+        %84:ptr<private, i32, read_write> = access %obj, 0u, %x_108
+        %85:i32 = load %i_2
+        %86:i32 = sub 10i, %85
+        store %84, %86
+        %x_112:i32 = load %i_2
+        %88:ptr<private, i32, read_write> = access %obj, 0u, %x_112
+        %89:i32 = load %i_2
+        %90:ptr<private, i32, read_write> = access %obj, 0u, %89
+        %91:i32 = load %90
+        %92:i32 = load %i_2
+        %93:ptr<private, i32, read_write> = access %obj, 0u, %92
+        %94:i32 = load %93
+        %95:i32 = mul %91, %94
+        store %88, %95
+        continue %b12
+      }
+      %b12 = block {  # continuing
+        %96:i32 = load %i_2
+        %97:i32 = add %96, 1i
+        store %i_2, %97
+        next_iteration %b11
+      }
+    }
+    store %x_91, 0i
+    store %x_92, 9i
+    store %x_93, -1i
+    %98:i32 = load %x_93
+    %x_124:i32 = add %98, 1i
+    store %x_93, %x_124
+    %100:ptr<function, i32, read_write> = access %x_94, %x_124
+    %101:i32 = load %x_91
+    store %100, %101
+    %102:i32 = load %x_93
+    %x_128:i32 = add %102, 1i
+    store %x_93, %x_128
+    %104:ptr<function, i32, read_write> = access %x_94, %x_128
+    %105:i32 = load %x_92
+    store %104, %105
+    loop [b: %b15, c: %b16] {  # loop_3
+      %b15 = block {  # body
+        %106:i32 = load %x_93
+        %107:bool = gte %106, 0i
+        if %107 [t: %b17, f: %b18] {  # if_5
+          %b17 = block {  # true
+            exit_if  # if_5
+          }
+          %b18 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_138:i32 = load %x_93
+        %109:i32 = load %x_93
+        %110:i32 = sub %109, 1i
+        store %x_93, %110
+        %111:ptr<function, i32, read_write> = access %x_94, %x_138
+        %112:i32 = load %111
+        store %x_92, %112
+        %x_142:i32 = load %x_93
+        %114:i32 = load %x_93
+        %115:i32 = sub %114, 1i
+        store %x_93, %115
+        %116:ptr<function, i32, read_write> = access %x_94, %x_142
+        %117:i32 = load %116
+        store %x_91, %117
+        %118:i32 = load %x_91
+        store %x_96, %118
+        %119:i32 = load %x_92
+        store %x_97, %119
+        %x_148:i32 = call %performPartition_i1_i1_, %x_96, %x_97
+        store %x_95, %x_148
+        %121:i32 = load %x_95
+        %122:i32 = sub %121, 1i
+        %123:i32 = load %x_91
+        %124:bool = gt %122, %123
+        if %124 [t: %b19] {  # if_6
+          %b19 = block {  # true
+            %125:i32 = load %x_93
+            %x_156:i32 = add %125, 1i
+            store %x_93, %x_156
+            %127:ptr<function, i32, read_write> = access %x_94, %x_156
+            %128:i32 = load %x_91
+            store %127, %128
+            %129:i32 = load %x_93
+            %x_160:i32 = add %129, 1i
+            store %x_93, %x_160
+            %131:ptr<function, i32, read_write> = access %x_94, %x_160
+            %132:i32 = load %x_95
+            %133:i32 = sub %132, 1i
+            store %131, %133
+            exit_if  # if_6
+          }
+        }
+        %134:i32 = load %x_95
+        %135:i32 = add %134, 1i
+        %136:i32 = load %x_92
+        %137:bool = lt %135, %136
+        if %137 [t: %b20] {  # if_7
+          %b20 = block {  # true
+            %138:i32 = load %x_93
+            %x_171:i32 = add %138, 1i
+            store %x_93, %x_171
+            %140:ptr<function, i32, read_write> = access %x_94, %x_171
+            %141:i32 = load %x_95
+            %142:i32 = add %141, 1i
+            store %140, %142
+            %143:i32 = load %x_93
+            %x_176:i32 = add %143, 1i
+            store %x_93, %x_176
+            %145:ptr<function, i32, read_write> = access %x_94, %x_176
+            %146:i32 = load %x_92
+            store %145, %146
+            exit_if  # if_7
+          }
+        }
+        continue %b16
+      }
+      %b16 = block {  # continuing
+        next_iteration %b15
+      }
+    }
+    %147:vec4<f32> = load %x_GLF_FragCoord
+    %148:vec2<f32> = swizzle %147, xy
+    %149:ptr<uniform, vec2<f32>, read> = access %x_34, 0u
+    %150:vec2<f32> = load %149
+    %151:vec2<f32> = div %148, %150
+    store %uv, %151
+    store %color, vec3<f32>(1.0f, 2.0f, 3.0f)
+    %152:f32 = load_vector_element %color, 0u
+    %153:ptr<private, i32, read_write> = access %obj, 0u, 0i
+    %154:i32 = load %153
+    %155:f32 = convert %154
+    %156:f32 = add %152, %155
+    store_vector_element %color, 0u, %156
+    %157:f32 = load_vector_element %uv, 0u
+    %158:bool = gt %157, 0.25f
+    if %158 [t: %b21] {  # if_8
+      %b21 = block {  # true
+        %159:f32 = load_vector_element %color, 0u
+        %160:ptr<private, i32, read_write> = access %obj, 0u, 1i
+        %161:i32 = load %160
+        %162:f32 = convert %161
+        %163:f32 = add %159, %162
+        store_vector_element %color, 0u, %163
+        exit_if  # if_8
+      }
+    }
+    %164:f32 = load_vector_element %uv, 0u
+    %165:bool = gt %164, 0.5f
+    if %165 [t: %b22] {  # if_9
+      %b22 = block {  # true
+        %166:f32 = load_vector_element %color, 1u
+        %167:ptr<private, i32, read_write> = access %obj, 0u, 2i
+        %168:i32 = load %167
+        %169:f32 = convert %168
+        %170:f32 = add %166, %169
+        store_vector_element %color, 1u, %170
+        exit_if  # if_9
+      }
+    }
+    %171:f32 = load_vector_element %uv, 0u
+    %172:bool = gt %171, 0.75f
+    if %172 [t: %b23] {  # if_10
+      %b23 = block {  # true
+        %173:f32 = load_vector_element %color, 2u
+        %174:ptr<private, i32, read_write> = access %obj, 0u, 3i
+        %175:i32 = load %174
+        %176:f32 = convert %175
+        %177:f32 = add %173, %176
+        store_vector_element %color, 2u, %177
+        exit_if  # if_10
+      }
+    }
+    %178:f32 = load_vector_element %color, 1u
+    %179:ptr<private, i32, read_write> = access %obj, 0u, 4i
+    %180:i32 = load %179
+    %181:f32 = convert %180
+    %182:f32 = add %178, %181
+    store_vector_element %color, 1u, %182
+    %183:f32 = load_vector_element %uv, 1u
+    %184:bool = gt %183, 0.25f
+    if %184 [t: %b24] {  # if_11
+      %b24 = block {  # true
+        %185:f32 = load_vector_element %color, 0u
+        %186:ptr<private, i32, read_write> = access %obj, 0u, 5i
+        %187:i32 = load %186
+        %188:f32 = convert %187
+        %189:f32 = add %185, %188
+        store_vector_element %color, 0u, %189
+        exit_if  # if_11
+      }
+    }
+    %190:f32 = load_vector_element %uv, 1u
+    %191:bool = gt %190, 0.5f
+    if %191 [t: %b25] {  # if_12
+      %b25 = block {  # true
+        %192:f32 = load_vector_element %color, 1u
+        %193:ptr<private, i32, read_write> = access %obj, 0u, 6i
+        %194:i32 = load %193
+        %195:f32 = convert %194
+        %196:f32 = add %192, %195
+        store_vector_element %color, 1u, %196
+        exit_if  # if_12
+      }
+    }
+    %197:f32 = load_vector_element %uv, 1u
+    %198:bool = gt %197, 0.75f
+    if %198 [t: %b26] {  # if_13
+      %b26 = block {  # true
+        %199:f32 = load_vector_element %color, 2u
+        %200:ptr<private, i32, read_write> = access %obj, 0u, 7i
+        %201:i32 = load %200
+        %202:f32 = convert %201
+        %203:f32 = add %199, %202
+        store_vector_element %color, 2u, %203
+        exit_if  # if_13
+      }
+    }
+    %204:f32 = load_vector_element %color, 2u
+    %205:ptr<private, i32, read_write> = access %obj, 0u, 8i
+    %206:i32 = load %205
+    %207:f32 = convert %206
+    %208:f32 = add %204, %207
+    store_vector_element %color, 2u, %208
+    %209:f32 = load_vector_element %uv, 0u
+    %210:f32 = load_vector_element %uv, 1u
+    %211:f32 = sub %209, %210
+    %212:f32 = abs %211
+    %213:bool = lt %212, 0.25f
+    if %213 [t: %b27] {  # if_14
+      %b27 = block {  # true
+        %214:f32 = load_vector_element %color, 0u
+        %215:ptr<private, i32, read_write> = access %obj, 0u, 9i
+        %216:i32 = load %215
+        %217:f32 = convert %216
+        %218:f32 = add %214, %217
+        store_vector_element %color, 0u, %218
+        exit_if  # if_14
+      }
+    }
+    %219:vec3<f32> = load %color
+    %x_294:vec3<f32> = normalize %219
+    %221:f32 = access %x_294, 0u
+    %222:f32 = access %x_294, 1u
+    %223:f32 = access %x_294, 2u
+    %224:vec4<f32> = construct %221, %222, %223, 1.0f
+    store %frag_color, %224
+    %225:vec4<f32> = load %x_GLF_pos
+    store %gl_Position, %225
+    ret
+  }
+}
+%tint_symbol = @vertex func(%x_GLF_pos_param:vec4<f32> [@location(0)]):main_out -> %b28 {
+  %b28 = block {
+    store %x_GLF_pos, %x_GLF_pos_param
+    %228:void = call %main_1
+    %229:vec4<f32> = load %frag_color
+    %230:vec4<f32> = load %gl_Position
+    %231:main_out = construct %229, %230
+    ret %231
+  }
+}
+%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>):void -> %b29 {
+  %b29 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %236:i32 = load %i
+    %237:ptr<private, i32, read_write> = access %obj, 0u, %236
+    %238:i32 = load %237
+    store %temp, %238
+    %x_305:i32 = load %i
+    %240:ptr<private, i32, read_write> = access %obj, 0u, %x_305
+    %241:i32 = load %j
+    %242:ptr<private, i32, read_write> = access %obj, 0u, %241
+    %243:i32 = load %242
+    store %240, %243
+    %x_310:i32 = load %j
+    %245:ptr<private, i32, read_write> = access %obj, 0u, %x_310
+    %246:i32 = load %temp
+    store %245, %246
+    ret
+  }
+}
+%quicksort_ = func():void -> %b30 {
+  %b30 = block {
+    %l_1:ptr<function, i32, read_write> = var
+    %h_1:ptr<function, i32, read_write> = var
+    %top:ptr<function, i32, read_write> = var
+    %stack:ptr<function, array<i32, 10>, read_write> = var
+    %p:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    store %l_1, 0i
+    store %h_1, 9i
+    store %top, -1i
+    %255:i32 = load %top
+    %x_377:i32 = add %255, 1i
+    store %top, %x_377
+    %257:ptr<function, i32, read_write> = access %stack, %x_377
+    %258:i32 = load %l_1
+    store %257, %258
+    %259:i32 = load %top
+    %x_381:i32 = add %259, 1i
+    store %top, %x_381
+    %261:ptr<function, i32, read_write> = access %stack, %x_381
+    %262:i32 = load %h_1
+    store %261, %262
+    loop [b: %b31, c: %b32] {  # loop_4
+      %b31 = block {  # body
+        %263:i32 = load %top
+        %264:bool = gte %263, 0i
+        if %264 [t: %b33, f: %b34] {  # if_15
+          %b33 = block {  # true
+            exit_if  # if_15
+          }
+          %b34 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %x_391:i32 = load %top
+        %266:i32 = load %top
+        %267:i32 = sub %266, 1i
+        store %top, %267
+        %268:ptr<function, i32, read_write> = access %stack, %x_391
+        %269:i32 = load %268
+        store %h_1, %269
+        %x_395:i32 = load %top
+        %271:i32 = load %top
+        %272:i32 = sub %271, 1i
+        store %top, %272
+        %273:ptr<function, i32, read_write> = access %stack, %x_395
+        %274:i32 = load %273
+        store %l_1, %274
+        %275:i32 = load %l_1
+        store %param_4, %275
+        %276:i32 = load %h_1
+        store %param_5, %276
+        %x_401:i32 = call %performPartition_i1_i1_, %param_4, %param_5
+        store %p, %x_401
+        %278:i32 = load %p
+        %279:i32 = sub %278, 1i
+        %280:i32 = load %l_1
+        %281:bool = gt %279, %280
+        if %281 [t: %b35] {  # if_16
+          %b35 = block {  # true
+            %282:i32 = load %top
+            %x_409:i32 = add %282, 1i
+            store %top, %x_409
+            %284:ptr<function, i32, read_write> = access %stack, %x_409
+            %285:i32 = load %l_1
+            store %284, %285
+            %286:i32 = load %top
+            %x_413:i32 = add %286, 1i
+            store %top, %x_413
+            %288:ptr<function, i32, read_write> = access %stack, %x_413
+            %289:i32 = load %p
+            %290:i32 = sub %289, 1i
+            store %288, %290
+            exit_if  # if_16
+          }
+        }
+        %291:i32 = load %p
+        %292:i32 = add %291, 1i
+        %293:i32 = load %h_1
+        %294:bool = lt %292, %293
+        if %294 [t: %b36] {  # if_17
+          %b36 = block {  # true
+            %295:i32 = load %top
+            %x_424:i32 = add %295, 1i
+            store %top, %x_424
+            %297:ptr<function, i32, read_write> = access %stack, %x_424
+            %298:i32 = load %p
+            %299:i32 = add %298, 1i
+            store %297, %299
+            %300:i32 = load %top
+            %x_429:i32 = add %300, 1i
+            store %top, %x_429
+            %302:ptr<function, i32, read_write> = access %stack, %x_429
+            %303:i32 = load %h_1
+            store %302, %303
+            exit_if  # if_17
+          }
+        }
+        continue %b32
+      }
+      %b32 = block {  # continuing
+        next_iteration %b31
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..23914dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl.expected.ir.msl
@@ -0,0 +1,556 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  frag_color_1:vec4<f32> @offset(0), @location(0)
+  gl_Position:vec4<f32> @offset(16), @builtin(position)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %x_GLF_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_pos:ptr<private, vec4<f32>, read_write> = var
+  %x_34:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %frag_color:ptr<private, vec4<f32>, read_write> = var
+  %gl_Position:ptr<private, vec4<f32>, read_write> = var
+}
+
+%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %x_314:ptr<function, i32, read_write> = var
+    %x_315:ptr<function, i32, read_write> = var
+    %pivot:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %x_316:i32 = load %h
+    %20:ptr<private, i32, read_write> = access %obj, 0u, %x_316
+    %x_318:i32 = load %20
+    store %pivot, %x_318
+    %x_319:i32 = load %l
+    %23:i32 = sub %x_319, 1i
+    store %i_1, %23
+    %x_321:i32 = load %l
+    store %j_1, %x_321
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_326:i32 = load %j_1
+        %x_327:i32 = load %h
+        %27:i32 = sub %x_327, 1i
+        %28:bool = lte %x_326, %27
+        if %28 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_331:i32 = load %j_1
+        %30:ptr<private, i32, read_write> = access %obj, 0u, %x_331
+        %x_333:i32 = load %30
+        %x_334:i32 = load %pivot
+        %33:bool = lte %x_333, %x_334
+        if %33 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %x_338:i32 = load %i_1
+            %35:i32 = add %x_338, 1i
+            store %i_1, %35
+            %x_340:i32 = load %i_1
+            store %param, %x_340
+            %x_341:i32 = load %j_1
+            store %param_1, %x_341
+            %x_342:i32 = load %param
+            %39:ptr<private, i32, read_write> = access %obj, 0u, %x_342
+            %x_344:i32 = load %39
+            store %x_315, %x_344
+            %x_345:i32 = load %param
+            %x_346:i32 = load %param_1
+            %43:ptr<private, i32, read_write> = access %obj, 0u, %x_346
+            %x_348:i32 = load %43
+            %45:ptr<private, i32, read_write> = access %obj, 0u, %x_345
+            store %45, %x_348
+            %x_350:i32 = load %param_1
+            %x_351:i32 = load %x_315
+            %48:ptr<private, i32, read_write> = access %obj, 0u, %x_350
+            store %48, %x_351
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_353:i32 = load %j_1
+        %50:i32 = add %x_353, 1i
+        store %j_1, %50
+        next_iteration %b3
+      }
+    }
+    %x_355:i32 = load %i_1
+    %52:i32 = add %x_355, 1i
+    store %param_2, %52
+    %x_357:i32 = load %h
+    store %param_3, %x_357
+    %x_358:i32 = load %param_2
+    %55:ptr<private, i32, read_write> = access %obj, 0u, %x_358
+    %x_360:i32 = load %55
+    store %x_314, %x_360
+    %x_361:i32 = load %param_2
+    %x_362:i32 = load %param_3
+    %59:ptr<private, i32, read_write> = access %obj, 0u, %x_362
+    %x_364:i32 = load %59
+    %61:ptr<private, i32, read_write> = access %obj, 0u, %x_361
+    store %61, %x_364
+    %x_366:i32 = load %param_3
+    %x_367:i32 = load %x_314
+    %64:ptr<private, i32, read_write> = access %obj, 0u, %x_366
+    store %64, %x_367
+    if false [t: %b8, f: %b9] {  # if_3
+      %b8 = block {  # true
+        exit_if  # if_3
+      }
+      %b9 = block {  # false
+        %x_372:i32 = load %i_1
+        %66:i32 = add %x_372, 1i
+        ret %66
+      }
+    }
+    ret 0i
+  }
+}
+%main_1 = func():void -> %b10 {
+  %b10 = block {
+    %x_91:ptr<function, i32, read_write> = var
+    %x_92:ptr<function, i32, read_write> = var
+    %x_93:ptr<function, i32, read_write> = var
+    %x_94:ptr<function, array<i32, 10>, read_write> = var
+    %x_95:ptr<function, i32, read_write> = var
+    %x_96:ptr<function, i32, read_write> = var
+    %x_97:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    %uv:ptr<function, vec2<f32>, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    %x_98:vec4<f32> = load %x_GLF_pos
+    %79:vec4<f32> = add %x_98, vec4<f32>(1.0f, 1.0f, 0.0f, 0.0f)
+    %80:vec4<f32> = mul %79, vec4<f32>(128.0f, 128.0f, 1.0f, 1.0f)
+    store %x_GLF_FragCoord, %80
+    store %i_2, 0i
+    loop [b: %b11, c: %b12] {  # loop_2
+      %b11 = block {  # body
+        %x_105:i32 = load %i_2
+        %82:bool = lt %x_105, 10i
+        if %82 [t: %b13, f: %b14] {  # if_4
+          %b13 = block {  # true
+            exit_if  # if_4
+          }
+          %b14 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_108:i32 = load %i_2
+        %x_109:i32 = load %i_2
+        %85:ptr<private, i32, read_write> = access %obj, 0u, %x_108
+        %86:i32 = sub 10i, %x_109
+        store %85, %86
+        %x_112:i32 = load %i_2
+        %x_113:i32 = load %i_2
+        %89:ptr<private, i32, read_write> = access %obj, 0u, %x_113
+        %x_115:i32 = load %89
+        %x_116:i32 = load %i_2
+        %92:ptr<private, i32, read_write> = access %obj, 0u, %x_116
+        %x_118:i32 = load %92
+        %94:ptr<private, i32, read_write> = access %obj, 0u, %x_112
+        %95:i32 = mul %x_115, %x_118
+        store %94, %95
+        continue %b12
+      }
+      %b12 = block {  # continuing
+        %x_121:i32 = load %i_2
+        %97:i32 = add %x_121, 1i
+        store %i_2, %97
+        next_iteration %b11
+      }
+    }
+    store %x_91, 0i
+    store %x_92, 9i
+    store %x_93, -1i
+    %x_123:i32 = load %x_93
+    %x_124:i32 = add %x_123, 1i
+    store %x_93, %x_124
+    %x_125:i32 = load %x_91
+    %101:ptr<function, i32, read_write> = access %x_94, %x_124
+    store %101, %x_125
+    %x_127:i32 = load %x_93
+    %x_128:i32 = add %x_127, 1i
+    store %x_93, %x_128
+    %x_129:i32 = load %x_92
+    %105:ptr<function, i32, read_write> = access %x_94, %x_128
+    store %105, %x_129
+    loop [b: %b15, c: %b16] {  # loop_3
+      %b15 = block {  # body
+        %x_135:i32 = load %x_93
+        %107:bool = gte %x_135, 0i
+        if %107 [t: %b17, f: %b18] {  # if_5
+          %b17 = block {  # true
+            exit_if  # if_5
+          }
+          %b18 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_138:i32 = load %x_93
+        %109:i32 = sub %x_138, 1i
+        store %x_93, %109
+        %110:ptr<function, i32, read_write> = access %x_94, %x_138
+        %x_141:i32 = load %110
+        store %x_92, %x_141
+        %x_142:i32 = load %x_93
+        %113:i32 = sub %x_142, 1i
+        store %x_93, %113
+        %114:ptr<function, i32, read_write> = access %x_94, %x_142
+        %x_145:i32 = load %114
+        store %x_91, %x_145
+        %x_146:i32 = load %x_91
+        store %x_96, %x_146
+        %x_147:i32 = load %x_92
+        store %x_97, %x_147
+        %x_148:i32 = call %performPartition_i1_i1_, %x_96, %x_97
+        store %x_95, %x_148
+        %x_149:i32 = load %x_95
+        %x_151:i32 = load %x_91
+        %121:i32 = sub %x_149, 1i
+        %122:bool = gt %121, %x_151
+        if %122 [t: %b19] {  # if_6
+          %b19 = block {  # true
+            %x_155:i32 = load %x_93
+            %x_156:i32 = add %x_155, 1i
+            store %x_93, %x_156
+            %x_157:i32 = load %x_91
+            %126:ptr<function, i32, read_write> = access %x_94, %x_156
+            store %126, %x_157
+            %x_159:i32 = load %x_93
+            %x_160:i32 = add %x_159, 1i
+            store %x_93, %x_160
+            %x_161:i32 = load %x_95
+            %130:ptr<function, i32, read_write> = access %x_94, %x_160
+            %131:i32 = sub %x_161, 1i
+            store %130, %131
+            exit_if  # if_6
+          }
+        }
+        %x_164:i32 = load %x_95
+        %x_166:i32 = load %x_92
+        %134:i32 = add %x_164, 1i
+        %135:bool = lt %134, %x_166
+        if %135 [t: %b20] {  # if_7
+          %b20 = block {  # true
+            %x_170:i32 = load %x_93
+            %x_171:i32 = add %x_170, 1i
+            store %x_93, %x_171
+            %x_172:i32 = load %x_95
+            %139:ptr<function, i32, read_write> = access %x_94, %x_171
+            %140:i32 = add %x_172, 1i
+            store %139, %140
+            %x_175:i32 = load %x_93
+            %x_176:i32 = add %x_175, 1i
+            store %x_93, %x_176
+            %x_177:i32 = load %x_92
+            %144:ptr<function, i32, read_write> = access %x_94, %x_176
+            store %144, %x_177
+            exit_if  # if_7
+          }
+        }
+        continue %b16
+      }
+      %b16 = block {  # continuing
+        next_iteration %b15
+      }
+    }
+    %x_179:vec4<f32> = load %x_GLF_FragCoord
+    %146:ptr<uniform, vec2<f32>, read> = access %x_34, 0u
+    %x_182:vec2<f32> = load %146
+    %148:f32 = access %x_179, 0u
+    %149:f32 = access %x_179, 1u
+    %150:vec2<f32> = construct %148, %149
+    %151:vec2<f32> = div %150, %x_182
+    store %uv, %151
+    store %color, vec3<f32>(1.0f, 2.0f, 3.0f)
+    %152:ptr<private, i32, read_write> = access %obj, 0u, 0i
+    %x_185:i32 = load %152
+    %x_188:f32 = load_vector_element %color, 0u
+    %155:f32 = convert %x_185
+    %156:f32 = add %x_188, %155
+    store_vector_element %color, 0u, %156
+    %x_192:f32 = load_vector_element %uv, 0u
+    %158:bool = gt %x_192, 0.25f
+    if %158 [t: %b21] {  # if_8
+      %b21 = block {  # true
+        %159:ptr<private, i32, read_write> = access %obj, 0u, 1i
+        %x_197:i32 = load %159
+        %x_200:f32 = load_vector_element %color, 0u
+        %162:f32 = convert %x_197
+        %163:f32 = add %x_200, %162
+        store_vector_element %color, 0u, %163
+        exit_if  # if_8
+      }
+    }
+    %x_204:f32 = load_vector_element %uv, 0u
+    %165:bool = gt %x_204, 0.5f
+    if %165 [t: %b22] {  # if_9
+      %b22 = block {  # true
+        %166:ptr<private, i32, read_write> = access %obj, 0u, 2i
+        %x_209:i32 = load %166
+        %x_212:f32 = load_vector_element %color, 1u
+        %169:f32 = convert %x_209
+        %170:f32 = add %x_212, %169
+        store_vector_element %color, 1u, %170
+        exit_if  # if_9
+      }
+    }
+    %x_216:f32 = load_vector_element %uv, 0u
+    %172:bool = gt %x_216, 0.75f
+    if %172 [t: %b23] {  # if_10
+      %b23 = block {  # true
+        %173:ptr<private, i32, read_write> = access %obj, 0u, 3i
+        %x_221:i32 = load %173
+        %x_224:f32 = load_vector_element %color, 2u
+        %176:f32 = convert %x_221
+        %177:f32 = add %x_224, %176
+        store_vector_element %color, 2u, %177
+        exit_if  # if_10
+      }
+    }
+    %178:ptr<private, i32, read_write> = access %obj, 0u, 4i
+    %x_228:i32 = load %178
+    %x_231:f32 = load_vector_element %color, 1u
+    %181:f32 = convert %x_228
+    %182:f32 = add %x_231, %181
+    store_vector_element %color, 1u, %182
+    %x_235:f32 = load_vector_element %uv, 1u
+    %184:bool = gt %x_235, 0.25f
+    if %184 [t: %b24] {  # if_11
+      %b24 = block {  # true
+        %185:ptr<private, i32, read_write> = access %obj, 0u, 5i
+        %x_240:i32 = load %185
+        %x_243:f32 = load_vector_element %color, 0u
+        %188:f32 = convert %x_240
+        %189:f32 = add %x_243, %188
+        store_vector_element %color, 0u, %189
+        exit_if  # if_11
+      }
+    }
+    %x_247:f32 = load_vector_element %uv, 1u
+    %191:bool = gt %x_247, 0.5f
+    if %191 [t: %b25] {  # if_12
+      %b25 = block {  # true
+        %192:ptr<private, i32, read_write> = access %obj, 0u, 6i
+        %x_252:i32 = load %192
+        %x_255:f32 = load_vector_element %color, 1u
+        %195:f32 = convert %x_252
+        %196:f32 = add %x_255, %195
+        store_vector_element %color, 1u, %196
+        exit_if  # if_12
+      }
+    }
+    %x_259:f32 = load_vector_element %uv, 1u
+    %198:bool = gt %x_259, 0.75f
+    if %198 [t: %b26] {  # if_13
+      %b26 = block {  # true
+        %199:ptr<private, i32, read_write> = access %obj, 0u, 7i
+        %x_264:i32 = load %199
+        %x_267:f32 = load_vector_element %color, 2u
+        %202:f32 = convert %x_264
+        %203:f32 = add %x_267, %202
+        store_vector_element %color, 2u, %203
+        exit_if  # if_13
+      }
+    }
+    %204:ptr<private, i32, read_write> = access %obj, 0u, 8i
+    %x_271:i32 = load %204
+    %x_274:f32 = load_vector_element %color, 2u
+    %207:f32 = convert %x_271
+    %208:f32 = add %x_274, %207
+    store_vector_element %color, 2u, %208
+    %x_278:f32 = load_vector_element %uv, 0u
+    %x_280:f32 = load_vector_element %uv, 1u
+    %211:f32 = sub %x_278, %x_280
+    %212:f32 = abs %211
+    %213:bool = lt %212, 0.25f
+    if %213 [t: %b27] {  # if_14
+      %b27 = block {  # true
+        %214:ptr<private, i32, read_write> = access %obj, 0u, 9i
+        %x_287:i32 = load %214
+        %x_290:f32 = load_vector_element %color, 0u
+        %217:f32 = convert %x_287
+        %218:f32 = add %x_290, %217
+        store_vector_element %color, 0u, %218
+        exit_if  # if_14
+      }
+    }
+    %x_293:vec3<f32> = load %color
+    %x_294:vec3<f32> = normalize %x_293
+    %221:f32 = access %x_294, 0u
+    %222:f32 = access %x_294, 1u
+    %223:f32 = access %x_294, 2u
+    %224:vec4<f32> = construct %221, %222, %223, 1.0f
+    store %frag_color, %224
+    %x_299:vec4<f32> = load %x_GLF_pos
+    store %gl_Position, %x_299
+    ret
+  }
+}
+%tint_symbol = @vertex func(%x_GLF_pos_param:vec4<f32> [@location(0)]):main_out -> %b28 {
+  %b28 = block {
+    store %x_GLF_pos, %x_GLF_pos_param
+    %228:void = call %main_1
+    %229:vec4<f32> = load %frag_color
+    %230:vec4<f32> = load %gl_Position
+    %231:main_out = construct %229, %230
+    ret %231
+  }
+}
+%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>):void -> %b29 {
+  %b29 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %x_302:i32 = load %i
+    %237:ptr<private, i32, read_write> = access %obj, 0u, %x_302
+    %x_304:i32 = load %237
+    store %temp, %x_304
+    %x_305:i32 = load %i
+    %x_306:i32 = load %j
+    %241:ptr<private, i32, read_write> = access %obj, 0u, %x_306
+    %x_308:i32 = load %241
+    %243:ptr<private, i32, read_write> = access %obj, 0u, %x_305
+    store %243, %x_308
+    %x_310:i32 = load %j
+    %x_311:i32 = load %temp
+    %246:ptr<private, i32, read_write> = access %obj, 0u, %x_310
+    store %246, %x_311
+    ret
+  }
+}
+%quicksort_ = func():void -> %b30 {
+  %b30 = block {
+    %l_1:ptr<function, i32, read_write> = var
+    %h_1:ptr<function, i32, read_write> = var
+    %top:ptr<function, i32, read_write> = var
+    %stack:ptr<function, array<i32, 10>, read_write> = var
+    %p:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    store %l_1, 0i
+    store %h_1, 9i
+    store %top, -1i
+    %x_376:i32 = load %top
+    %x_377:i32 = add %x_376, 1i
+    store %top, %x_377
+    %x_378:i32 = load %l_1
+    %258:ptr<function, i32, read_write> = access %stack, %x_377
+    store %258, %x_378
+    %x_380:i32 = load %top
+    %x_381:i32 = add %x_380, 1i
+    store %top, %x_381
+    %x_382:i32 = load %h_1
+    %262:ptr<function, i32, read_write> = access %stack, %x_381
+    store %262, %x_382
+    loop [b: %b31, c: %b32] {  # loop_4
+      %b31 = block {  # body
+        %x_388:i32 = load %top
+        %264:bool = gte %x_388, 0i
+        if %264 [t: %b33, f: %b34] {  # if_15
+          %b33 = block {  # true
+            exit_if  # if_15
+          }
+          %b34 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %x_391:i32 = load %top
+        %266:i32 = sub %x_391, 1i
+        store %top, %266
+        %267:ptr<function, i32, read_write> = access %stack, %x_391
+        %x_394:i32 = load %267
+        store %h_1, %x_394
+        %x_395:i32 = load %top
+        %270:i32 = sub %x_395, 1i
+        store %top, %270
+        %271:ptr<function, i32, read_write> = access %stack, %x_395
+        %x_398:i32 = load %271
+        store %l_1, %x_398
+        %x_399:i32 = load %l_1
+        store %param_4, %x_399
+        %x_400:i32 = load %h_1
+        store %param_5, %x_400
+        %x_401:i32 = call %performPartition_i1_i1_, %param_4, %param_5
+        store %p, %x_401
+        %x_402:i32 = load %p
+        %x_404:i32 = load %l_1
+        %278:i32 = sub %x_402, 1i
+        %279:bool = gt %278, %x_404
+        if %279 [t: %b35] {  # if_16
+          %b35 = block {  # true
+            %x_408:i32 = load %top
+            %x_409:i32 = add %x_408, 1i
+            store %top, %x_409
+            %x_410:i32 = load %l_1
+            %283:ptr<function, i32, read_write> = access %stack, %x_409
+            store %283, %x_410
+            %x_412:i32 = load %top
+            %x_413:i32 = add %x_412, 1i
+            store %top, %x_413
+            %x_414:i32 = load %p
+            %287:ptr<function, i32, read_write> = access %stack, %x_413
+            %288:i32 = sub %x_414, 1i
+            store %287, %288
+            exit_if  # if_16
+          }
+        }
+        %x_417:i32 = load %p
+        %x_419:i32 = load %h_1
+        %291:i32 = add %x_417, 1i
+        %292:bool = lt %291, %x_419
+        if %292 [t: %b36] {  # if_17
+          %b36 = block {  # true
+            %x_423:i32 = load %top
+            %x_424:i32 = add %x_423, 1i
+            store %top, %x_424
+            %x_425:i32 = load %p
+            %296:ptr<function, i32, read_write> = access %stack, %x_424
+            %297:i32 = add %x_425, 1i
+            store %296, %297
+            %x_428:i32 = load %top
+            %x_429:i32 = add %x_428, 1i
+            store %top, %x_429
+            %x_430:i32 = load %h_1
+            %301:ptr<function, i32, read_write> = access %stack, %x_429
+            store %301, %x_430
+            exit_if  # if_17
+          }
+        }
+        continue %b32
+      }
+      %b32 = block {  # continuing
+        next_iteration %b31
+      }
+    }
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..fb5e600
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.spvasm.expected.ir.msl
@@ -0,0 +1,438 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+buf1 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  frag_color_1:vec4<f32> @offset(0), @location(0)
+  gl_Position:vec4<f32> @offset(16), @builtin(position)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %x_GLF_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_pos:ptr<private, vec4<f32>, read_write> = var
+  %x_34:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_37:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %frag_color:ptr<private, vec4<f32>, read_write> = var
+  %gl_Position:ptr<private, vec4<f32>, read_write> = var
+}
+
+%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %12:i32 = load %i
+    %13:ptr<private, i32, read_write> = access %obj, 0u, %12
+    %14:i32 = load %13
+    store %temp, %14
+    %x_260:i32 = load %i
+    %16:ptr<private, i32, read_write> = access %obj, 0u, %x_260
+    %17:i32 = load %j
+    %18:ptr<private, i32, read_write> = access %obj, 0u, %17
+    %19:i32 = load %18
+    store %16, %19
+    %x_265:i32 = load %j
+    %21:ptr<private, i32, read_write> = access %obj, 0u, %x_265
+    %22:i32 = load %temp
+    store %21, %22
+    ret
+  }
+}
+%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %pivot:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %33:i32 = load %h
+    %34:ptr<private, i32, read_write> = access %obj, 0u, %33
+    %35:i32 = load %34
+    store %pivot, %35
+    %36:i32 = load %l
+    %37:i32 = sub %36, 1i
+    store %i_1, %37
+    %38:i32 = load %l
+    store %j_1, %38
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %39:i32 = load %j_1
+        %40:i32 = load %h
+        %41:i32 = sub %40, 1i
+        %42:bool = lte %39, %41
+        if %42 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %43:i32 = load %j_1
+        %44:ptr<private, i32, read_write> = access %obj, 0u, %43
+        %45:i32 = load %44
+        %46:i32 = load %pivot
+        %47:bool = lte %45, %46
+        if %47 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            %48:i32 = load %i_1
+            %49:i32 = add %48, 1i
+            store %i_1, %49
+            %50:i32 = load %i_1
+            store %param, %50
+            %51:i32 = load %j_1
+            store %param_1, %51
+            %52:void = call %swap_i1_i1_, %param, %param_1
+            exit_if  # if_2
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %53:i32 = load %j_1
+        %54:i32 = add %53, 1i
+        store %j_1, %54
+        next_iteration %b4
+      }
+    }
+    %55:i32 = load %i_1
+    %56:i32 = add %55, 1i
+    store %param_2, %56
+    %57:i32 = load %h
+    store %param_3, %57
+    %58:void = call %swap_i1_i1_, %param_2, %param_3
+    %x_302:i32 = load %i_1
+    %60:i32 = add %x_302, 1i
+    ret %60
+  }
+}
+%quicksort_ = func():void -> %b9 {
+  %b9 = block {
+    %l_1:ptr<function, i32, read_write> = var
+    %h_1:ptr<function, i32, read_write> = var
+    %top:ptr<function, i32, read_write> = var
+    %stack:ptr<function, array<i32, 10>, read_write> = var
+    %p:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    store %l_1, 0i
+    store %h_1, 9i
+    store %top, -1i
+    %69:i32 = load %top
+    %x_306:i32 = add %69, 1i
+    store %top, %x_306
+    %71:ptr<function, i32, read_write> = access %stack, %x_306
+    %72:i32 = load %l_1
+    store %71, %72
+    %73:i32 = load %top
+    %x_310:i32 = add %73, 1i
+    store %top, %x_310
+    %75:ptr<function, i32, read_write> = access %stack, %x_310
+    %76:i32 = load %h_1
+    store %75, %76
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %77:i32 = load %top
+        %78:bool = gte %77, 0i
+        if %78 [t: %b12, f: %b13] {  # if_3
+          %b12 = block {  # true
+            exit_if  # if_3
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_320:i32 = load %top
+        %80:i32 = load %top
+        %81:i32 = sub %80, 1i
+        store %top, %81
+        %82:ptr<function, i32, read_write> = access %stack, %x_320
+        %83:i32 = load %82
+        store %h_1, %83
+        %x_324:i32 = load %top
+        %85:i32 = load %top
+        %86:i32 = sub %85, 1i
+        store %top, %86
+        %87:ptr<function, i32, read_write> = access %stack, %x_324
+        %88:i32 = load %87
+        store %l_1, %88
+        %89:i32 = load %l_1
+        store %param_4, %89
+        %90:i32 = load %h_1
+        store %param_5, %90
+        %x_330:i32 = call %performPartition_i1_i1_, %param_4, %param_5
+        store %p, %x_330
+        %92:i32 = load %p
+        %93:i32 = sub %92, 1i
+        %94:i32 = load %l_1
+        %95:bool = gt %93, %94
+        if %95 [t: %b14] {  # if_4
+          %b14 = block {  # true
+            %96:i32 = load %top
+            %x_338:i32 = add %96, 1i
+            store %top, %x_338
+            %98:ptr<function, i32, read_write> = access %stack, %x_338
+            %99:i32 = load %l_1
+            store %98, %99
+            %100:i32 = load %top
+            %x_342:i32 = add %100, 1i
+            store %top, %x_342
+            %102:ptr<function, i32, read_write> = access %stack, %x_342
+            %103:i32 = load %p
+            %104:i32 = sub %103, 1i
+            store %102, %104
+            exit_if  # if_4
+          }
+        }
+        %105:i32 = load %p
+        %106:i32 = add %105, 1i
+        %107:i32 = load %h_1
+        %108:bool = lt %106, %107
+        if %108 [t: %b15] {  # if_5
+          %b15 = block {  # true
+            %109:i32 = load %top
+            %x_353:i32 = add %109, 1i
+            store %top, %x_353
+            %111:ptr<function, i32, read_write> = access %stack, %x_353
+            %112:i32 = load %p
+            %113:i32 = add %112, 1i
+            store %111, %113
+            %114:i32 = load %top
+            %x_358:i32 = add %114, 1i
+            store %top, %x_358
+            %116:ptr<function, i32, read_write> = access %stack, %x_358
+            %117:i32 = load %h_1
+            store %116, %117
+            exit_if  # if_5
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        next_iteration %b10
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b16 {
+  %b16 = block {
+    %i_2:ptr<function, i32, read_write> = var
+    %uv:ptr<function, vec2<f32>, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    %122:vec4<f32> = load %x_GLF_pos
+    %123:vec4<f32> = add %122, vec4<f32>(1.0f, 1.0f, 0.0f, 0.0f)
+    %124:vec4<f32> = mul %123, vec4<f32>(128.0f, 128.0f, 1.0f, 1.0f)
+    store %x_GLF_FragCoord, %124
+    store %i_2, 0i
+    loop [b: %b17, c: %b18] {  # loop_3
+      %b17 = block {  # body
+        %125:i32 = load %i_2
+        %126:bool = lt %125, 10i
+        if %126 [t: %b19, f: %b20] {  # if_6
+          %b19 = block {  # true
+            exit_if  # if_6
+          }
+          %b20 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_104:i32 = load %i_2
+        %128:ptr<private, i32, read_write> = access %obj, 0u, %x_104
+        %129:i32 = load %i_2
+        %130:i32 = sub 10i, %129
+        store %128, %130
+        %x_108:i32 = load %i_2
+        %132:ptr<private, i32, read_write> = access %obj, 0u, %x_108
+        %133:i32 = load %i_2
+        %134:ptr<private, i32, read_write> = access %obj, 0u, %133
+        %135:i32 = load %134
+        %136:i32 = load %i_2
+        %137:ptr<private, i32, read_write> = access %obj, 0u, %136
+        %138:i32 = load %137
+        %139:i32 = mul %135, %138
+        store %132, %139
+        continue %b18
+      }
+      %b18 = block {  # continuing
+        %140:i32 = load %i_2
+        %141:i32 = add %140, 1i
+        store %i_2, %141
+        next_iteration %b17
+      }
+    }
+    %142:void = call %quicksort_
+    %143:vec4<f32> = load %x_GLF_FragCoord
+    %144:vec2<f32> = swizzle %143, xy
+    %145:ptr<uniform, vec2<f32>, read> = access %x_34, 0u
+    %146:vec2<f32> = load %145
+    %147:vec2<f32> = div %144, %146
+    store %uv, %147
+    store %color, vec3<f32>(1.0f, 2.0f, 3.0f)
+    %148:f32 = load_vector_element %color, 0u
+    %149:ptr<private, i32, read_write> = access %obj, 0u, 0i
+    %150:i32 = load %149
+    %151:f32 = convert %150
+    %152:f32 = add %148, %151
+    store_vector_element %color, 0u, %152
+    %153:f32 = load_vector_element %uv, 0u
+    %154:bool = gt %153, 0.25f
+    if %154 [t: %b21] {  # if_7
+      %b21 = block {  # true
+        %155:f32 = load_vector_element %color, 0u
+        %156:ptr<private, i32, read_write> = access %obj, 0u, 1i
+        %157:i32 = load %156
+        %158:f32 = convert %157
+        %159:f32 = add %155, %158
+        store_vector_element %color, 0u, %159
+        exit_if  # if_7
+      }
+    }
+    %160:f32 = load_vector_element %uv, 0u
+    %161:bool = gt %160, 0.5f
+    if %161 [t: %b22] {  # if_8
+      %b22 = block {  # true
+        %162:f32 = load_vector_element %color, 1u
+        %163:ptr<uniform, vec2<f32>, read> = access %x_37, 0u
+        %164:f32 = load_vector_element %163, 1u
+        %165:i32 = convert %164
+        %166:i32 = mul 2i, %165
+        %167:i32 = max %166, 2i
+        %168:ptr<private, i32, read_write> = access %obj, 0u, %167
+        %169:i32 = load %168
+        %170:f32 = convert %169
+        %171:ptr<uniform, vec2<f32>, read> = access %x_37, 0u
+        %172:f32 = load_vector_element %171, 1u
+        %173:i32 = convert %172
+        %174:i32 = mul 2i, %173
+        %175:i32 = max %174, 2i
+        %176:ptr<private, i32, read_write> = access %obj, 0u, %175
+        %177:i32 = load %176
+        %178:f32 = convert %177
+        %179:f32 = max %170, %178
+        %180:f32 = add %162, %179
+        store_vector_element %color, 1u, %180
+        exit_if  # if_8
+      }
+    }
+    %181:f32 = load_vector_element %uv, 0u
+    %182:bool = gt %181, 0.75f
+    if %182 [t: %b23] {  # if_9
+      %b23 = block {  # true
+        %183:f32 = load_vector_element %color, 2u
+        %184:ptr<private, i32, read_write> = access %obj, 0u, 3i
+        %185:i32 = load %184
+        %186:f32 = convert %185
+        %187:f32 = add %183, %186
+        store_vector_element %color, 2u, %187
+        exit_if  # if_9
+      }
+    }
+    %188:f32 = load_vector_element %color, 1u
+    %189:ptr<private, i32, read_write> = access %obj, 0u, 4i
+    %190:i32 = load %189
+    %191:f32 = convert %190
+    %192:f32 = add %188, %191
+    store_vector_element %color, 1u, %192
+    %193:f32 = load_vector_element %uv, 1u
+    %194:bool = gt %193, 0.25f
+    if %194 [t: %b24] {  # if_10
+      %b24 = block {  # true
+        %195:f32 = load_vector_element %color, 0u
+        %196:ptr<private, i32, read_write> = access %obj, 0u, 5i
+        %197:i32 = load %196
+        %198:f32 = convert %197
+        %199:f32 = add %195, %198
+        store_vector_element %color, 0u, %199
+        exit_if  # if_10
+      }
+    }
+    %200:f32 = load_vector_element %uv, 1u
+    %201:bool = gt %200, 0.5f
+    if %201 [t: %b25] {  # if_11
+      %b25 = block {  # true
+        %202:f32 = load_vector_element %color, 1u
+        %203:ptr<private, i32, read_write> = access %obj, 0u, 6i
+        %204:i32 = load %203
+        %205:f32 = convert %204
+        %206:f32 = add %202, %205
+        store_vector_element %color, 1u, %206
+        exit_if  # if_11
+      }
+    }
+    %207:f32 = load_vector_element %uv, 1u
+    %208:bool = gt %207, 0.75f
+    if %208 [t: %b26] {  # if_12
+      %b26 = block {  # true
+        %209:f32 = load_vector_element %color, 2u
+        %210:ptr<private, i32, read_write> = access %obj, 0u, 7i
+        %211:i32 = load %210
+        %212:f32 = convert %211
+        %213:f32 = add %209, %212
+        store_vector_element %color, 2u, %213
+        exit_if  # if_12
+      }
+    }
+    %214:f32 = load_vector_element %color, 2u
+    %215:ptr<private, i32, read_write> = access %obj, 0u, 8i
+    %216:i32 = load %215
+    %217:f32 = convert %216
+    %218:f32 = add %214, %217
+    store_vector_element %color, 2u, %218
+    %219:f32 = load_vector_element %uv, 0u
+    %220:f32 = load_vector_element %uv, 1u
+    %221:f32 = sub %219, %220
+    %222:f32 = abs %221
+    %223:bool = lt %222, 0.25f
+    if %223 [t: %b27] {  # if_13
+      %b27 = block {  # true
+        %224:f32 = load_vector_element %color, 0u
+        %225:ptr<private, i32, read_write> = access %obj, 0u, 9i
+        %226:i32 = load %225
+        %227:f32 = convert %226
+        %228:f32 = add %224, %227
+        store_vector_element %color, 0u, %228
+        exit_if  # if_13
+      }
+    }
+    %229:vec3<f32> = load %color
+    %x_249:vec3<f32> = normalize %229
+    %231:f32 = access %x_249, 0u
+    %232:f32 = access %x_249, 1u
+    %233:f32 = access %x_249, 2u
+    %234:vec4<f32> = construct %231, %232, %233, 1.0f
+    store %frag_color, %234
+    %235:vec4<f32> = load %x_GLF_pos
+    store %gl_Position, %235
+    ret
+  }
+}
+%tint_symbol = @vertex func(%x_GLF_pos_param:vec4<f32> [@location(0)]):main_out -> %b28 {
+  %b28 = block {
+    store %x_GLF_pos, %x_GLF_pos_param
+    %238:void = call %main_1
+    %239:vec4<f32> = load %frag_color
+    %240:vec4<f32> = load %gl_Position
+    %241:main_out = construct %239, %240
+    ret %241
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..88de7f7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl.expected.ir.msl
@@ -0,0 +1,438 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: QuicksortObject = struct @align(4) {
+  numbers:array<i32, 10> @offset(0)
+}
+
+buf1 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  frag_color_1:vec4<f32> @offset(0), @location(0)
+  gl_Position:vec4<f32> @offset(16), @builtin(position)
+}
+
+%b1 = block {  # root
+  %obj:ptr<private, QuicksortObject, read_write> = var
+  %x_GLF_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_pos:ptr<private, vec4<f32>, read_write> = var
+  %x_34:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_37:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %frag_color:ptr<private, vec4<f32>, read_write> = var
+  %gl_Position:ptr<private, vec4<f32>, read_write> = var
+}
+
+%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %temp:ptr<function, i32, read_write> = var
+    %x_257:i32 = load %i
+    %13:ptr<private, i32, read_write> = access %obj, 0u, %x_257
+    %x_259:i32 = load %13
+    store %temp, %x_259
+    %x_260:i32 = load %i
+    %x_261:i32 = load %j
+    %17:ptr<private, i32, read_write> = access %obj, 0u, %x_261
+    %x_263:i32 = load %17
+    %19:ptr<private, i32, read_write> = access %obj, 0u, %x_260
+    store %19, %x_263
+    %x_265:i32 = load %j
+    %x_266:i32 = load %temp
+    %22:ptr<private, i32, read_write> = access %obj, 0u, %x_265
+    store %22, %x_266
+    ret
+  }
+}
+%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %pivot:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %j_1:ptr<function, i32, read_write> = var
+    %param:ptr<function, i32, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, i32, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %x_269:i32 = load %h
+    %34:ptr<private, i32, read_write> = access %obj, 0u, %x_269
+    %x_271:i32 = load %34
+    store %pivot, %x_271
+    %x_272:i32 = load %l
+    %37:i32 = sub %x_272, 1i
+    store %i_1, %37
+    %x_274:i32 = load %l
+    store %j_1, %x_274
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %x_279:i32 = load %j_1
+        %x_280:i32 = load %h
+        %41:i32 = sub %x_280, 1i
+        %42:bool = lte %x_279, %41
+        if %42 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_284:i32 = load %j_1
+        %44:ptr<private, i32, read_write> = access %obj, 0u, %x_284
+        %x_286:i32 = load %44
+        %x_287:i32 = load %pivot
+        %47:bool = lte %x_286, %x_287
+        if %47 [t: %b8] {  # if_2
+          %b8 = block {  # true
+            %x_291:i32 = load %i_1
+            %49:i32 = add %x_291, 1i
+            store %i_1, %49
+            %x_293:i32 = load %i_1
+            store %param, %x_293
+            %x_294:i32 = load %j_1
+            store %param_1, %x_294
+            %52:void = call %swap_i1_i1_, %param, %param_1
+            exit_if  # if_2
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        %x_296:i32 = load %j_1
+        %54:i32 = add %x_296, 1i
+        store %j_1, %54
+        next_iteration %b4
+      }
+    }
+    %x_298:i32 = load %i_1
+    %56:i32 = add %x_298, 1i
+    store %param_2, %56
+    %x_300:i32 = load %h
+    store %param_3, %x_300
+    %58:void = call %swap_i1_i1_, %param_2, %param_3
+    %x_302:i32 = load %i_1
+    %60:i32 = add %x_302, 1i
+    ret %60
+  }
+}
+%quicksort_ = func():void -> %b9 {
+  %b9 = block {
+    %l_1:ptr<function, i32, read_write> = var
+    %h_1:ptr<function, i32, read_write> = var
+    %top:ptr<function, i32, read_write> = var
+    %stack:ptr<function, array<i32, 10>, read_write> = var
+    %p:ptr<function, i32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    %param_5:ptr<function, i32, read_write> = var
+    store %l_1, 0i
+    store %h_1, 9i
+    store %top, -1i
+    %x_305:i32 = load %top
+    %x_306:i32 = add %x_305, 1i
+    store %top, %x_306
+    %x_307:i32 = load %l_1
+    %72:ptr<function, i32, read_write> = access %stack, %x_306
+    store %72, %x_307
+    %x_309:i32 = load %top
+    %x_310:i32 = add %x_309, 1i
+    store %top, %x_310
+    %x_311:i32 = load %h_1
+    %76:ptr<function, i32, read_write> = access %stack, %x_310
+    store %76, %x_311
+    loop [b: %b10, c: %b11] {  # loop_2
+      %b10 = block {  # body
+        %x_317:i32 = load %top
+        %78:bool = gte %x_317, 0i
+        if %78 [t: %b12, f: %b13] {  # if_3
+          %b12 = block {  # true
+            exit_if  # if_3
+          }
+          %b13 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_320:i32 = load %top
+        %80:i32 = sub %x_320, 1i
+        store %top, %80
+        %81:ptr<function, i32, read_write> = access %stack, %x_320
+        %x_323:i32 = load %81
+        store %h_1, %x_323
+        %x_324:i32 = load %top
+        %84:i32 = sub %x_324, 1i
+        store %top, %84
+        %85:ptr<function, i32, read_write> = access %stack, %x_324
+        %x_327:i32 = load %85
+        store %l_1, %x_327
+        %x_328:i32 = load %l_1
+        store %param_4, %x_328
+        %x_329:i32 = load %h_1
+        store %param_5, %x_329
+        %x_330:i32 = call %performPartition_i1_i1_, %param_4, %param_5
+        store %p, %x_330
+        %x_331:i32 = load %p
+        %x_333:i32 = load %l_1
+        %92:i32 = sub %x_331, 1i
+        %93:bool = gt %92, %x_333
+        if %93 [t: %b14] {  # if_4
+          %b14 = block {  # true
+            %x_337:i32 = load %top
+            %x_338:i32 = add %x_337, 1i
+            store %top, %x_338
+            %x_339:i32 = load %l_1
+            %97:ptr<function, i32, read_write> = access %stack, %x_338
+            store %97, %x_339
+            %x_341:i32 = load %top
+            %x_342:i32 = add %x_341, 1i
+            store %top, %x_342
+            %x_343:i32 = load %p
+            %101:ptr<function, i32, read_write> = access %stack, %x_342
+            %102:i32 = sub %x_343, 1i
+            store %101, %102
+            exit_if  # if_4
+          }
+        }
+        %x_346:i32 = load %p
+        %x_348:i32 = load %h_1
+        %105:i32 = add %x_346, 1i
+        %106:bool = lt %105, %x_348
+        if %106 [t: %b15] {  # if_5
+          %b15 = block {  # true
+            %x_352:i32 = load %top
+            %x_353:i32 = add %x_352, 1i
+            store %top, %x_353
+            %x_354:i32 = load %p
+            %110:ptr<function, i32, read_write> = access %stack, %x_353
+            %111:i32 = add %x_354, 1i
+            store %110, %111
+            %x_357:i32 = load %top
+            %x_358:i32 = add %x_357, 1i
+            store %top, %x_358
+            %x_359:i32 = load %h_1
+            %115:ptr<function, i32, read_write> = access %stack, %x_358
+            store %115, %x_359
+            exit_if  # if_5
+          }
+        }
+        continue %b11
+      }
+      %b11 = block {  # continuing
+        next_iteration %b10
+      }
+    }
+    ret
+  }
+}
+%main_1 = func():void -> %b16 {
+  %b16 = block {
+    %i_2:ptr<function, i32, read_write> = var
+    %uv:ptr<function, vec2<f32>, read_write> = var
+    %color:ptr<function, vec3<f32>, read_write> = var
+    %x_94:vec4<f32> = load %x_GLF_pos
+    %121:vec4<f32> = add %x_94, vec4<f32>(1.0f, 1.0f, 0.0f, 0.0f)
+    %122:vec4<f32> = mul %121, vec4<f32>(128.0f, 128.0f, 1.0f, 1.0f)
+    store %x_GLF_FragCoord, %122
+    store %i_2, 0i
+    loop [b: %b17, c: %b18] {  # loop_3
+      %b17 = block {  # body
+        %x_101:i32 = load %i_2
+        %124:bool = lt %x_101, 10i
+        if %124 [t: %b19, f: %b20] {  # if_6
+          %b19 = block {  # true
+            exit_if  # if_6
+          }
+          %b20 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_104:i32 = load %i_2
+        %x_105:i32 = load %i_2
+        %127:ptr<private, i32, read_write> = access %obj, 0u, %x_104
+        %128:i32 = sub 10i, %x_105
+        store %127, %128
+        %x_108:i32 = load %i_2
+        %x_109:i32 = load %i_2
+        %131:ptr<private, i32, read_write> = access %obj, 0u, %x_109
+        %x_111:i32 = load %131
+        %x_112:i32 = load %i_2
+        %134:ptr<private, i32, read_write> = access %obj, 0u, %x_112
+        %x_114:i32 = load %134
+        %136:ptr<private, i32, read_write> = access %obj, 0u, %x_108
+        %137:i32 = mul %x_111, %x_114
+        store %136, %137
+        continue %b18
+      }
+      %b18 = block {  # continuing
+        %x_117:i32 = load %i_2
+        %139:i32 = add %x_117, 1i
+        store %i_2, %139
+        next_iteration %b17
+      }
+    }
+    %140:void = call %quicksort_
+    %x_120:vec4<f32> = load %x_GLF_FragCoord
+    %142:ptr<uniform, vec2<f32>, read> = access %x_34, 0u
+    %x_123:vec2<f32> = load %142
+    %144:f32 = access %x_120, 0u
+    %145:f32 = access %x_120, 1u
+    %146:vec2<f32> = construct %144, %145
+    %147:vec2<f32> = div %146, %x_123
+    store %uv, %147
+    store %color, vec3<f32>(1.0f, 2.0f, 3.0f)
+    %148:ptr<private, i32, read_write> = access %obj, 0u, 0i
+    %x_126:i32 = load %148
+    %x_129:f32 = load_vector_element %color, 0u
+    %151:f32 = convert %x_126
+    %152:f32 = add %x_129, %151
+    store_vector_element %color, 0u, %152
+    %x_133:f32 = load_vector_element %uv, 0u
+    %154:bool = gt %x_133, 0.25f
+    if %154 [t: %b21] {  # if_7
+      %b21 = block {  # true
+        %155:ptr<private, i32, read_write> = access %obj, 0u, 1i
+        %x_138:i32 = load %155
+        %x_141:f32 = load_vector_element %color, 0u
+        %158:f32 = convert %x_138
+        %159:f32 = add %x_141, %158
+        store_vector_element %color, 0u, %159
+        exit_if  # if_7
+      }
+    }
+    %x_145:f32 = load_vector_element %uv, 0u
+    %161:bool = gt %x_145, 0.5f
+    if %161 [t: %b22] {  # if_8
+      %b22 = block {  # true
+        %162:ptr<uniform, vec2<f32>, read> = access %x_37, 0u
+        %x_150:f32 = load_vector_element %162, 1u
+        %164:i32 = convert %x_150
+        %165:i32 = mul 2i, %164
+        %166:i32 = max %165, 2i
+        %167:ptr<private, i32, read_write> = access %obj, 0u, %166
+        %x_155:i32 = load %167
+        %169:ptr<uniform, vec2<f32>, read> = access %x_37, 0u
+        %x_158:f32 = load_vector_element %169, 1u
+        %171:i32 = convert %x_158
+        %172:i32 = mul 2i, %171
+        %173:i32 = max %172, 2i
+        %174:ptr<private, i32, read_write> = access %obj, 0u, %173
+        %x_163:i32 = load %174
+        %x_167:f32 = load_vector_element %color, 1u
+        %177:f32 = convert %x_155
+        %178:f32 = convert %x_163
+        %179:f32 = max %177, %178
+        %180:f32 = add %x_167, %179
+        store_vector_element %color, 1u, %180
+        exit_if  # if_8
+      }
+    }
+    %x_171:f32 = load_vector_element %uv, 0u
+    %182:bool = gt %x_171, 0.75f
+    if %182 [t: %b23] {  # if_9
+      %b23 = block {  # true
+        %183:ptr<private, i32, read_write> = access %obj, 0u, 3i
+        %x_176:i32 = load %183
+        %x_179:f32 = load_vector_element %color, 2u
+        %186:f32 = convert %x_176
+        %187:f32 = add %x_179, %186
+        store_vector_element %color, 2u, %187
+        exit_if  # if_9
+      }
+    }
+    %188:ptr<private, i32, read_write> = access %obj, 0u, 4i
+    %x_183:i32 = load %188
+    %x_186:f32 = load_vector_element %color, 1u
+    %191:f32 = convert %x_183
+    %192:f32 = add %x_186, %191
+    store_vector_element %color, 1u, %192
+    %x_190:f32 = load_vector_element %uv, 1u
+    %194:bool = gt %x_190, 0.25f
+    if %194 [t: %b24] {  # if_10
+      %b24 = block {  # true
+        %195:ptr<private, i32, read_write> = access %obj, 0u, 5i
+        %x_195:i32 = load %195
+        %x_198:f32 = load_vector_element %color, 0u
+        %198:f32 = convert %x_195
+        %199:f32 = add %x_198, %198
+        store_vector_element %color, 0u, %199
+        exit_if  # if_10
+      }
+    }
+    %x_202:f32 = load_vector_element %uv, 1u
+    %201:bool = gt %x_202, 0.5f
+    if %201 [t: %b25] {  # if_11
+      %b25 = block {  # true
+        %202:ptr<private, i32, read_write> = access %obj, 0u, 6i
+        %x_207:i32 = load %202
+        %x_210:f32 = load_vector_element %color, 1u
+        %205:f32 = convert %x_207
+        %206:f32 = add %x_210, %205
+        store_vector_element %color, 1u, %206
+        exit_if  # if_11
+      }
+    }
+    %x_214:f32 = load_vector_element %uv, 1u
+    %208:bool = gt %x_214, 0.75f
+    if %208 [t: %b26] {  # if_12
+      %b26 = block {  # true
+        %209:ptr<private, i32, read_write> = access %obj, 0u, 7i
+        %x_219:i32 = load %209
+        %x_222:f32 = load_vector_element %color, 2u
+        %212:f32 = convert %x_219
+        %213:f32 = add %x_222, %212
+        store_vector_element %color, 2u, %213
+        exit_if  # if_12
+      }
+    }
+    %214:ptr<private, i32, read_write> = access %obj, 0u, 8i
+    %x_226:i32 = load %214
+    %x_229:f32 = load_vector_element %color, 2u
+    %217:f32 = convert %x_226
+    %218:f32 = add %x_229, %217
+    store_vector_element %color, 2u, %218
+    %x_233:f32 = load_vector_element %uv, 0u
+    %x_235:f32 = load_vector_element %uv, 1u
+    %221:f32 = sub %x_233, %x_235
+    %222:f32 = abs %221
+    %223:bool = lt %222, 0.25f
+    if %223 [t: %b27] {  # if_13
+      %b27 = block {  # true
+        %224:ptr<private, i32, read_write> = access %obj, 0u, 9i
+        %x_242:i32 = load %224
+        %x_245:f32 = load_vector_element %color, 0u
+        %227:f32 = convert %x_242
+        %228:f32 = add %x_245, %227
+        store_vector_element %color, 0u, %228
+        exit_if  # if_13
+      }
+    }
+    %x_248:vec3<f32> = load %color
+    %x_249:vec3<f32> = normalize %x_248
+    %231:f32 = access %x_249, 0u
+    %232:f32 = access %x_249, 1u
+    %233:f32 = access %x_249, 2u
+    %234:vec4<f32> = construct %231, %232, %233, 1.0f
+    store %frag_color, %234
+    %x_254:vec4<f32> = load %x_GLF_pos
+    store %gl_Position, %x_254
+    ret
+  }
+}
+%tint_symbol = @vertex func(%x_GLF_pos_param:vec4<f32> [@location(0)]):main_out -> %b28 {
+  %b28 = block {
+    store %x_GLF_pos, %x_GLF_pos_param
+    %238:void = call %main_1
+    %239:vec4<f32> = load %frag_color
+    %240:vec4<f32> = load %gl_Position
+    %241:main_out = construct %239, %240
+    ret %241
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..47fe76e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm.expected.ir.msl
@@ -0,0 +1,199 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_20:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%collision_vf2_vf4_ = func(%pos:ptr<function, vec2<f32>, read_write>, %quad:ptr<function, vec4<f32>, read_write>):bool -> %b2 {
+  %b2 = block {
+    %7:f32 = load_vector_element %pos, 0u
+    %8:f32 = load_vector_element %quad, 0u
+    %9:bool = lt %7, %8
+    if %9 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret false
+      }
+    }
+    %10:f32 = load_vector_element %pos, 1u
+    %11:f32 = load_vector_element %quad, 1u
+    %12:bool = lt %10, %11
+    if %12 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        ret false
+      }
+    }
+    %13:f32 = load_vector_element %pos, 0u
+    %14:f32 = load_vector_element %quad, 0u
+    %15:f32 = load_vector_element %quad, 2u
+    %16:f32 = add %14, %15
+    %17:bool = gt %13, %16
+    if %17 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        ret false
+      }
+    }
+    %18:f32 = load_vector_element %pos, 1u
+    %19:f32 = load_vector_element %quad, 1u
+    %20:f32 = load_vector_element %quad, 3u
+    %21:f32 = add %19, %20
+    %22:bool = gt %18, %21
+    if %22 [t: %b6] {  # if_4
+      %b6 = block {  # true
+        ret false
+      }
+    }
+    ret true
+  }
+}
+%match_vf2_ = func(%pos_1:ptr<function, vec2<f32>, read_write>):vec4<f32> -> %b7 {
+  %b7 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var
+    %x_144:ptr<function, f32, read_write> = var
+    %x_145:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec4<f32>, read_write> = var
+    %indexable:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %indexable_1:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %indexable_2:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %indexable_3:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %35:f32 = load_vector_element %gl_FragCoord, 0u
+    %36:bool = lt %35, 0.0f
+    if %36 [t: %b8, f: %b9] {  # if_5
+      %b8 = block {  # true
+        store %x_144, -1.0f
+        exit_if  # if_5
+      }
+      %b9 = block {  # false
+        %37:f32 = load_vector_element %gl_FragCoord, 0u
+        %38:bool = gte %37, 0.0f
+        if %38 [t: %b10, f: %b11] {  # if_6
+          %b10 = block {  # true
+            %39:f32 = load_vector_element %gl_FragCoord, 0u
+            %40:bool = gte %39, 0.0f
+            %41:f32 = select 1.0f, 0.5f, %40
+            store %x_145, %41
+            exit_if  # if_6
+          }
+          %b11 = block {  # false
+            store %x_145, 1.0f
+            exit_if  # if_6
+          }
+        }
+        %42:f32 = load %x_145
+        %43:f32 = min %42, 0.5f
+        store %x_144, %43
+        exit_if  # if_5
+      }
+    }
+    %44:f32 = load %x_144
+    %45:f32 = clamp 0.5f, 0.5f, %44
+    %46:vec4<f32> = construct %45, 0.5f, 1.0f, 1.0f
+    store %res, %46
+    store %i, 0i
+    loop [b: %b12, c: %b13] {  # loop_1
+      %b12 = block {  # body
+        %47:i32 = load %i
+        %48:bool = lt %47, 8i
+        if %48 [t: %b14, f: %b15] {  # if_7
+          %b14 = block {  # true
+            exit_if  # if_7
+          }
+          %b15 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_174:i32 = load %i
+        %50:vec2<f32> = load %pos_1
+        store %param, %50
+        store %indexable, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+        %51:ptr<function, vec4<f32>, read_write> = access %indexable, %x_174
+        %52:vec4<f32> = load %51
+        store %param_1, %52
+        %x_178:bool = call %collision_vf2_vf4_, %param, %param_1
+        if %x_178 [t: %b16] {  # if_8
+          %b16 = block {  # true
+            %x_181:i32 = load %i
+            store %indexable_1, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %55:ptr<function, vec4<f32>, read_write> = access %indexable_1, %x_181
+            %x_183:f32 = load_vector_element %55, 0u
+            %x_185:i32 = load %i
+            store %indexable_2, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %58:ptr<function, vec4<f32>, read_write> = access %indexable_2, %x_185
+            %x_187:f32 = load_vector_element %58, 1u
+            %x_190:i32 = load %i
+            store %indexable_3, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+            %61:i32 = convert %x_183
+            %62:i32 = convert %x_187
+            %63:i32 = mul %61, %62
+            %64:i32 = mul %x_190, 9i
+            %65:i32 = add %63, %64
+            %66:i32 = add %65, 11i
+            %67:i32 = mod %66, 16i
+            %68:ptr<function, vec4<f32>, read_write> = access %indexable_3, %67
+            %69:vec4<f32> = load %68
+            store %res, %69
+            exit_if  # if_8
+          }
+        }
+        continue %b13
+      }
+      %b13 = block {  # continuing
+        %70:i32 = load %i
+        %71:i32 = add %70, 1i
+        store %i, %71
+        next_iteration %b12
+      }
+    }
+    %x_199:vec4<f32> = load %res
+    ret %x_199
+  }
+}
+%main_1 = func():void -> %b17 {
+  %b17 = block {
+    %lin:ptr<function, vec2<f32>, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %76:vec4<f32> = load %gl_FragCoord
+    %77:vec2<f32> = swizzle %76, xy
+    %78:ptr<uniform, vec2<f32>, read> = access %x_20, 0u
+    %79:vec2<f32> = load %78
+    %80:vec2<f32> = div %77, %79
+    store %lin, %80
+    %81:vec2<f32> = load %lin
+    %82:vec2<f32> = mul %81, 32.0f
+    %83:vec2<f32> = floor %82
+    store %lin, %83
+    %84:vec2<f32> = load %lin
+    store %param_2, %84
+    %x_107:vec4<f32> = call %match_vf2_, %param_2
+    store %x_GLF_color, %x_107
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b18 {
+  %b18 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %88:void = call %main_1
+    %89:vec4<f32> = load %x_GLF_color
+    %90:main_out = construct %89
+    ret %90
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b1dffe7
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl.expected.ir.msl
@@ -0,0 +1,201 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_20:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%collision_vf2_vf4_ = func(%pos:ptr<function, vec2<f32>, read_write>, %quad:ptr<function, vec4<f32>, read_write>):bool -> %b2 {
+  %b2 = block {
+    %x_110:f32 = load_vector_element %pos, 0u
+    %x_112:f32 = load_vector_element %quad, 0u
+    %9:bool = lt %x_110, %x_112
+    if %9 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret false
+      }
+    }
+    %x_117:f32 = load_vector_element %pos, 1u
+    %x_119:f32 = load_vector_element %quad, 1u
+    %12:bool = lt %x_117, %x_119
+    if %12 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        ret false
+      }
+    }
+    %x_124:f32 = load_vector_element %pos, 0u
+    %x_126:f32 = load_vector_element %quad, 0u
+    %x_128:f32 = load_vector_element %quad, 2u
+    %16:f32 = add %x_126, %x_128
+    %17:bool = gt %x_124, %16
+    if %17 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        ret false
+      }
+    }
+    %x_134:f32 = load_vector_element %pos, 1u
+    %x_136:f32 = load_vector_element %quad, 1u
+    %x_138:f32 = load_vector_element %quad, 3u
+    %21:f32 = add %x_136, %x_138
+    %22:bool = gt %x_134, %21
+    if %22 [t: %b6] {  # if_4
+      %b6 = block {  # true
+        ret false
+      }
+    }
+    ret true
+  }
+}
+%match_vf2_ = func(%pos_1:ptr<function, vec2<f32>, read_write>):vec4<f32> -> %b7 {
+  %b7 = block {
+    %res:ptr<function, vec4<f32>, read_write> = var
+    %x_144:ptr<function, f32, read_write> = var
+    %x_145:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec4<f32>, read_write> = var
+    %indexable:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %indexable_1:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %indexable_2:ptr<function, array<vec4<f32>, 8>, read_write> = var
+    %indexable_3:ptr<function, array<vec4<f32>, 16>, read_write> = var
+    %x_147:f32 = load_vector_element %gl_FragCoord, 0u
+    %36:bool = lt %x_147, 0.0f
+    if %36 [t: %b8, f: %b9] {  # if_5
+      %b8 = block {  # true
+        store %x_144, -1.0f
+        exit_if  # if_5
+      }
+      %b9 = block {  # false
+        %x_153:f32 = load_vector_element %gl_FragCoord, 0u
+        %38:bool = gte %x_153, 0.0f
+        if %38 [t: %b10, f: %b11] {  # if_6
+          %b10 = block {  # true
+            %x_159:f32 = load_vector_element %gl_FragCoord, 0u
+            %40:bool = gte %x_159, 0.0f
+            %41:f32 = select 1.0f, 0.5f, %40
+            store %x_145, %41
+            exit_if  # if_6
+          }
+          %b11 = block {  # false
+            store %x_145, 1.0f
+            exit_if  # if_6
+          }
+        }
+        %x_162:f32 = load %x_145
+        %43:f32 = min %x_162, 0.5f
+        store %x_144, %43
+        exit_if  # if_5
+      }
+    }
+    %x_164:f32 = load %x_144
+    %45:f32 = clamp 0.5f, 0.5f, %x_164
+    %46:vec4<f32> = construct %45, 0.5f, 1.0f, 1.0f
+    store %res, %46
+    store %i, 0i
+    loop [b: %b12, c: %b13] {  # loop_1
+      %b12 = block {  # body
+        %x_171:i32 = load %i
+        %48:bool = lt %x_171, 8i
+        if %48 [t: %b14, f: %b15] {  # if_7
+          %b14 = block {  # true
+            exit_if  # if_7
+          }
+          %b15 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_174:i32 = load %i
+        %x_175:vec2<f32> = load %pos_1
+        store %param, %x_175
+        store %indexable, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+        %51:ptr<function, vec4<f32>, read_write> = access %indexable, %x_174
+        %x_177:vec4<f32> = load %51
+        store %param_1, %x_177
+        %x_178:bool = call %collision_vf2_vf4_, %param, %param_1
+        if %x_178 [t: %b16] {  # if_8
+          %b16 = block {  # true
+            %x_181:i32 = load %i
+            store %indexable_1, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %55:ptr<function, vec4<f32>, read_write> = access %indexable_1, %x_181
+            %x_183:f32 = load_vector_element %55, 0u
+            %x_185:i32 = load %i
+            store %indexable_2, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
+            %58:ptr<function, vec4<f32>, read_write> = access %indexable_2, %x_185
+            %x_187:f32 = load_vector_element %58, 1u
+            %x_190:i32 = load %i
+            store %indexable_3, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
+            %61:i32 = convert %x_183
+            %62:i32 = convert %x_187
+            %63:i32 = mul %61, %62
+            %64:i32 = mul %x_190, 9i
+            %65:i32 = add %63, %64
+            %66:i32 = add %65, 11i
+            %67:i32 = mod %66, 16i
+            %68:ptr<function, vec4<f32>, read_write> = access %indexable_3, %67
+            %x_196:vec4<f32> = load %68
+            store %res, %x_196
+            exit_if  # if_8
+          }
+        }
+        continue %b13
+      }
+      %b13 = block {  # continuing
+        %x_197:i32 = load %i
+        %71:i32 = add %x_197, 1i
+        store %i, %71
+        next_iteration %b12
+      }
+    }
+    %x_199:vec4<f32> = load %res
+    ret %x_199
+  }
+}
+%main_1 = func():void -> %b17 {
+  %b17 = block {
+    %lin:ptr<function, vec2<f32>, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %x_98:vec4<f32> = load %gl_FragCoord
+    %77:ptr<uniform, vec2<f32>, read> = access %x_20, 0u
+    %x_101:vec2<f32> = load %77
+    %79:f32 = access %x_98, 0u
+    %80:f32 = access %x_98, 1u
+    %81:vec2<f32> = construct %79, %80
+    %82:vec2<f32> = div %81, %x_101
+    store %lin, %82
+    %x_103:vec2<f32> = load %lin
+    %84:vec2<f32> = mul %x_103, 32.0f
+    %85:vec2<f32> = floor %84
+    store %lin, %85
+    %x_106:vec2<f32> = load %lin
+    store %param_2, %x_106
+    %x_107:vec4<f32> = call %match_vf2_, %param_2
+    store %x_GLF_color, %x_107
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b18 {
+  %b18 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %90:void = call %main_1
+    %91:vec4<f32> = load %x_GLF_color
+    %92:main_out = construct %91
+    ret %92
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..c0aa8fc
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,213 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_24:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%cross2d_vf2_vf2_ = func(%a:ptr<function, vec2<f32>, read_write>, %b:ptr<function, vec2<f32>, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %x_79:f32 = load_vector_element %a, 0u
+    %x_81:f32 = load_vector_element %b, 1u
+    %x_84:f32 = load_vector_element %b, 0u
+    %x_86:f32 = load_vector_element %a, 1u
+    %11:f32 = mul %x_79, %x_81
+    %12:f32 = mul %x_84, %x_86
+    %13:f32 = sub %11, %12
+    ret %13
+  }
+}
+%pointInTriangle_vf2_vf2_vf2_vf2_ = func(%p:ptr<function, vec2<f32>, read_write>, %a_1:ptr<function, vec2<f32>, read_write>, %b_1:ptr<function, vec2<f32>, read_write>, %c:ptr<function, vec2<f32>, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %x_90:ptr<function, bool, read_write> = var, false
+    %x_91:ptr<function, i32, read_write> = var
+    %pab:ptr<function, f32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec2<f32>, read_write> = var
+    %pbc:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %param_3:ptr<function, vec2<f32>, read_write> = var
+    %pca:ptr<function, f32, read_write> = var
+    %param_4:ptr<function, vec2<f32>, read_write> = var
+    %param_5:ptr<function, vec2<f32>, read_write> = var
+    %x_140:ptr<function, bool, read_write> = var
+    %x_141:ptr<function, bool, read_write> = var
+    %x_168:ptr<function, bool, read_write> = var
+    %x_169:ptr<function, bool, read_write> = var
+    %x_173:ptr<function, i32, read_write> = var
+    switch 0u [c: (default, %b4)] {  # switch_1
+      %b4 = block {  # case
+        %x_106:f32 = load_vector_element %b_1, 0u
+        %x_107:f32 = load_vector_element %a_1, 0u
+        %x_110:f32 = load_vector_element %b_1, 1u
+        %x_111:f32 = load_vector_element %a_1, 1u
+        %39:f32 = load_vector_element %p, 0u
+        %40:f32 = load_vector_element %a_1, 0u
+        %41:f32 = sub %39, %40
+        %42:f32 = load_vector_element %p, 1u
+        %43:f32 = load_vector_element %a_1, 1u
+        %44:f32 = sub %42, %43
+        %45:vec2<f32> = construct %41, %44
+        store %param, %45
+        %46:f32 = sub %x_106, %x_107
+        %47:f32 = sub %x_110, %x_111
+        %48:vec2<f32> = construct %46, %47
+        store %param_1, %48
+        %x_114:f32 = call %cross2d_vf2_vf2_, %param, %param_1
+        store %pab, %x_114
+        %x_123:f32 = load_vector_element %c, 0u
+        %x_124:f32 = load_vector_element %b_1, 0u
+        %x_127:f32 = load_vector_element %c, 1u
+        %x_128:f32 = load_vector_element %b_1, 1u
+        %54:f32 = load_vector_element %p, 0u
+        %55:f32 = load_vector_element %b_1, 0u
+        %56:f32 = sub %54, %55
+        %57:f32 = load_vector_element %p, 1u
+        %58:f32 = load_vector_element %b_1, 1u
+        %59:f32 = sub %57, %58
+        %60:vec2<f32> = construct %56, %59
+        store %param_2, %60
+        %61:f32 = sub %x_123, %x_124
+        %62:f32 = sub %x_127, %x_128
+        %63:vec2<f32> = construct %61, %62
+        store %param_3, %63
+        %x_131:f32 = call %cross2d_vf2_vf2_, %param_2, %param_3
+        store %pbc, %x_131
+        %65:bool = lt %x_114, 0.0f
+        %66:bool = lt %x_131, 0.0f
+        %x_134:bool = and %65, %66
+        store %x_141, %x_134
+        %68:bool = eq %x_134, false
+        if %68 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            %69:bool = gte %x_114, 0.0f
+            %70:bool = gte %x_131, 0.0f
+            %71:bool = and %69, %70
+            store %x_140, %71
+            %72:bool = load %x_140
+            store %x_141, %72
+            exit_if  # if_1
+          }
+        }
+        %73:bool = load %x_141
+        %74:bool = eq %73, false
+        if %74 [t: %b6] {  # if_2
+          %b6 = block {  # true
+            store %x_90, true
+            store %x_91, 0i
+            store %x_173, 0i
+            exit_switch  # switch_1
+          }
+        }
+        %x_152:f32 = load_vector_element %a_1, 0u
+        %x_153:f32 = load_vector_element %c, 0u
+        %x_155:f32 = load_vector_element %a_1, 1u
+        %x_156:f32 = load_vector_element %c, 1u
+        %79:f32 = load_vector_element %p, 0u
+        %80:f32 = load_vector_element %c, 0u
+        %81:f32 = sub %79, %80
+        %82:f32 = load_vector_element %p, 1u
+        %83:f32 = load_vector_element %c, 1u
+        %84:f32 = sub %82, %83
+        %85:vec2<f32> = construct %81, %84
+        store %param_4, %85
+        %86:f32 = sub %x_152, %x_153
+        %87:f32 = sub %x_155, %x_156
+        %88:vec2<f32> = construct %86, %87
+        store %param_5, %88
+        %x_159:f32 = call %cross2d_vf2_vf2_, %param_4, %param_5
+        store %pca, %x_159
+        %90:bool = lt %x_114, 0.0f
+        %91:bool = lt %x_159, 0.0f
+        %x_162:bool = and %90, %91
+        store %x_169, %x_162
+        %93:bool = eq %x_162, false
+        if %93 [t: %b7] {  # if_3
+          %b7 = block {  # true
+            %94:bool = gte %x_114, 0.0f
+            %95:bool = gte %x_159, 0.0f
+            %96:bool = and %94, %95
+            store %x_168, %96
+            %97:bool = load %x_168
+            store %x_169, %97
+            exit_if  # if_3
+          }
+        }
+        %98:bool = load %x_169
+        %99:bool = eq %98, false
+        if %99 [t: %b8] {  # if_4
+          %b8 = block {  # true
+            store %x_90, true
+            store %x_91, 0i
+            store %x_173, 0i
+            exit_switch  # switch_1
+          }
+        }
+        store %x_90, true
+        store %x_91, 1i
+        store %x_173, 1i
+        exit_switch  # switch_1
+      }
+    }
+    %100:i32 = load %x_173
+    ret %100
+  }
+}
+%main_1 = func():void -> %b9 {
+  %b9 = block {
+    %pos:ptr<function, vec2<f32>, read_write> = var
+    %param_6:ptr<function, vec2<f32>, read_write> = var
+    %param_7:ptr<function, vec2<f32>, read_write> = var
+    %param_8:ptr<function, vec2<f32>, read_write> = var
+    %param_9:ptr<function, vec2<f32>, read_write> = var
+    %107:vec4<f32> = load %gl_FragCoord
+    %108:vec2<f32> = swizzle %107, xy
+    %109:ptr<uniform, vec2<f32>, read> = access %x_24, 0u
+    %110:vec2<f32> = load %109
+    %x_71:vec2<f32> = div %108, %110
+    store %pos, %x_71
+    store %param_6, %x_71
+    store %param_7, vec2<f32>(0.69999998807907104492f, 0.30000001192092895508f)
+    store %param_8, vec2<f32>(0.5f, 0.89999997615814208984f)
+    store %param_9, vec2<f32>(0.10000000149011611938f, 0.40000000596046447754f)
+    %x_72:i32 = call %pointInTriangle_vf2_vf2_vf2_vf2_, %param_6, %param_7, %param_8, %param_9
+    %113:bool = eq %x_72, 1i
+    if %113 [t: %b10, f: %b11] {  # if_5
+      %b10 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_5
+      }
+      %b11 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b12 {
+  %b12 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %116:void = call %main_1
+    %117:vec4<f32> = load %x_GLF_color
+    %118:main_out = construct %117
+    ret %118
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..18ff9b4
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,215 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_24:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%cross2d_vf2_vf2_ = func(%a:ptr<function, vec2<f32>, read_write>, %b:ptr<function, vec2<f32>, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %x_79:f32 = load_vector_element %a, 0u
+    %x_81:f32 = load_vector_element %b, 1u
+    %x_84:f32 = load_vector_element %b, 0u
+    %x_86:f32 = load_vector_element %a, 1u
+    %11:f32 = mul %x_79, %x_81
+    %12:f32 = mul %x_84, %x_86
+    %13:f32 = sub %11, %12
+    ret %13
+  }
+}
+%pointInTriangle_vf2_vf2_vf2_vf2_ = func(%p:ptr<function, vec2<f32>, read_write>, %a_1:ptr<function, vec2<f32>, read_write>, %b_1:ptr<function, vec2<f32>, read_write>, %c:ptr<function, vec2<f32>, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %x_90:ptr<function, bool, read_write> = var, false
+    %x_91:ptr<function, i32, read_write> = var
+    %pab:ptr<function, f32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec2<f32>, read_write> = var
+    %pbc:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %param_3:ptr<function, vec2<f32>, read_write> = var
+    %pca:ptr<function, f32, read_write> = var
+    %param_4:ptr<function, vec2<f32>, read_write> = var
+    %param_5:ptr<function, vec2<f32>, read_write> = var
+    %x_140:ptr<function, bool, read_write> = var
+    %x_168:ptr<function, bool, read_write> = var
+    %x_141_phi:ptr<function, bool, read_write> = var
+    %x_169_phi:ptr<function, bool, read_write> = var
+    %x_173_phi:ptr<function, i32, read_write> = var
+    switch 0u [c: (default, %b4)] {  # switch_1
+      %b4 = block {  # case
+        %x_95:f32 = load_vector_element %p, 0u
+        %x_97:f32 = load_vector_element %a_1, 0u
+        %x_100:f32 = load_vector_element %p, 1u
+        %x_102:f32 = load_vector_element %a_1, 1u
+        %x_106:f32 = load_vector_element %b_1, 0u
+        %x_107:f32 = load_vector_element %a_1, 0u
+        %x_110:f32 = load_vector_element %b_1, 1u
+        %x_111:f32 = load_vector_element %a_1, 1u
+        %43:f32 = sub %x_95, %x_97
+        %44:f32 = sub %x_100, %x_102
+        %45:vec2<f32> = construct %43, %44
+        store %param, %45
+        %46:f32 = sub %x_106, %x_107
+        %47:f32 = sub %x_110, %x_111
+        %48:vec2<f32> = construct %46, %47
+        store %param_1, %48
+        %x_114:f32 = call %cross2d_vf2_vf2_, %param, %param_1
+        store %pab, %x_114
+        %x_115:f32 = load_vector_element %p, 0u
+        %x_116:f32 = load_vector_element %b_1, 0u
+        %x_118:f32 = load_vector_element %p, 1u
+        %x_119:f32 = load_vector_element %b_1, 1u
+        %x_123:f32 = load_vector_element %c, 0u
+        %x_124:f32 = load_vector_element %b_1, 0u
+        %x_127:f32 = load_vector_element %c, 1u
+        %x_128:f32 = load_vector_element %b_1, 1u
+        %58:f32 = sub %x_115, %x_116
+        %59:f32 = sub %x_118, %x_119
+        %60:vec2<f32> = construct %58, %59
+        store %param_2, %60
+        %61:f32 = sub %x_123, %x_124
+        %62:f32 = sub %x_127, %x_128
+        %63:vec2<f32> = construct %61, %62
+        store %param_3, %63
+        %x_131:f32 = call %cross2d_vf2_vf2_, %param_2, %param_3
+        store %pbc, %x_131
+        %65:bool = lt %x_114, 0.0f
+        %66:bool = lt %x_131, 0.0f
+        %x_134:bool = and %65, %66
+        store %x_141_phi, %x_134
+        %68:bool = eq %x_134, false
+        if %68 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            %69:bool = gte %x_114, 0.0f
+            %70:bool = gte %x_131, 0.0f
+            %71:bool = and %69, %70
+            store %x_140, %71
+            %72:bool = load %x_140
+            store %x_141_phi, %72
+            exit_if  # if_1
+          }
+        }
+        %x_141:bool = load %x_141_phi
+        %74:bool = eq %x_141, false
+        if %74 [t: %b6] {  # if_2
+          %b6 = block {  # true
+            store %x_90, true
+            store %x_91, 0i
+            store %x_173_phi, 0i
+            exit_switch  # switch_1
+          }
+        }
+        %x_145:f32 = load_vector_element %p, 0u
+        %x_146:f32 = load_vector_element %c, 0u
+        %x_148:f32 = load_vector_element %p, 1u
+        %x_149:f32 = load_vector_element %c, 1u
+        %x_152:f32 = load_vector_element %a_1, 0u
+        %x_153:f32 = load_vector_element %c, 0u
+        %x_155:f32 = load_vector_element %a_1, 1u
+        %x_156:f32 = load_vector_element %c, 1u
+        %83:f32 = sub %x_145, %x_146
+        %84:f32 = sub %x_148, %x_149
+        %85:vec2<f32> = construct %83, %84
+        store %param_4, %85
+        %86:f32 = sub %x_152, %x_153
+        %87:f32 = sub %x_155, %x_156
+        %88:vec2<f32> = construct %86, %87
+        store %param_5, %88
+        %x_159:f32 = call %cross2d_vf2_vf2_, %param_4, %param_5
+        store %pca, %x_159
+        %90:bool = lt %x_114, 0.0f
+        %91:bool = lt %x_159, 0.0f
+        %x_162:bool = and %90, %91
+        store %x_169_phi, %x_162
+        %93:bool = eq %x_162, false
+        if %93 [t: %b7] {  # if_3
+          %b7 = block {  # true
+            %94:bool = gte %x_114, 0.0f
+            %95:bool = gte %x_159, 0.0f
+            %96:bool = and %94, %95
+            store %x_168, %96
+            %97:bool = load %x_168
+            store %x_169_phi, %97
+            exit_if  # if_3
+          }
+        }
+        %x_169:bool = load %x_169_phi
+        %99:bool = eq %x_169, false
+        if %99 [t: %b8] {  # if_4
+          %b8 = block {  # true
+            store %x_90, true
+            store %x_91, 0i
+            store %x_173_phi, 0i
+            exit_switch  # switch_1
+          }
+        }
+        store %x_90, true
+        store %x_91, 1i
+        store %x_173_phi, 1i
+        exit_switch  # switch_1
+      }
+    }
+    %x_173:i32 = load %x_173_phi
+    ret %x_173
+  }
+}
+%main_1 = func():void -> %b9 {
+  %b9 = block {
+    %pos:ptr<function, vec2<f32>, read_write> = var
+    %param_6:ptr<function, vec2<f32>, read_write> = var
+    %param_7:ptr<function, vec2<f32>, read_write> = var
+    %param_8:ptr<function, vec2<f32>, read_write> = var
+    %param_9:ptr<function, vec2<f32>, read_write> = var
+    %x_67:vec4<f32> = load %gl_FragCoord
+    %108:ptr<uniform, vec2<f32>, read> = access %x_24, 0u
+    %x_70:vec2<f32> = load %108
+    %110:f32 = access %x_67, 0u
+    %111:f32 = access %x_67, 1u
+    %112:vec2<f32> = construct %110, %111
+    %x_71:vec2<f32> = div %112, %x_70
+    store %pos, %x_71
+    store %param_6, %x_71
+    store %param_7, vec2<f32>(0.69999998807907104492f, 0.30000001192092895508f)
+    store %param_8, vec2<f32>(0.5f, 0.89999997615814208984f)
+    store %param_9, vec2<f32>(0.10000000149011611938f, 0.40000000596046447754f)
+    %x_72:i32 = call %pointInTriangle_vf2_vf2_vf2_vf2_, %param_6, %param_7, %param_8, %param_9
+    %115:bool = eq %x_72, 1i
+    if %115 [t: %b10, f: %b11] {  # if_5
+      %b10 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_5
+      }
+      %b11 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b12 {
+  %b12 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %118:void = call %main_1
+    %119:vec4<f32> = load %x_GLF_color
+    %120:main_out = construct %119
+    ret %120
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..120dd26
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.spvasm.expected.ir.msl
@@ -0,0 +1,204 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_24:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%cross2d_vf2_vf2_ = func(%a:ptr<function, vec2<f32>, read_write>, %b:ptr<function, vec2<f32>, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %x_76:f32 = load_vector_element %a, 0u
+    %x_78:f32 = load_vector_element %b, 1u
+    %x_81:f32 = load_vector_element %b, 0u
+    %x_83:f32 = load_vector_element %a, 1u
+    %11:f32 = mul %x_76, %x_78
+    %12:f32 = mul %x_81, %x_83
+    %13:f32 = sub %11, %12
+    ret %13
+  }
+}
+%pointInTriangle_vf2_vf2_vf2_vf2_ = func(%p:ptr<function, vec2<f32>, read_write>, %a_1:ptr<function, vec2<f32>, read_write>, %b_1:ptr<function, vec2<f32>, read_write>, %c:ptr<function, vec2<f32>, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %pab:ptr<function, f32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec2<f32>, read_write> = var
+    %pbc:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %param_3:ptr<function, vec2<f32>, read_write> = var
+    %pca:ptr<function, f32, read_write> = var
+    %param_4:ptr<function, vec2<f32>, read_write> = var
+    %param_5:ptr<function, vec2<f32>, read_write> = var
+    %x_137:ptr<function, bool, read_write> = var
+    %x_138:ptr<function, bool, read_write> = var
+    %x_169:ptr<function, bool, read_write> = var
+    %x_170:ptr<function, bool, read_write> = var
+    %x_99:f32 = load_vector_element %b_1, 0u
+    %x_100:f32 = load_vector_element %a_1, 0u
+    %x_103:f32 = load_vector_element %b_1, 1u
+    %x_104:f32 = load_vector_element %a_1, 1u
+    %36:f32 = load_vector_element %p, 0u
+    %37:f32 = load_vector_element %a_1, 0u
+    %38:f32 = sub %36, %37
+    %39:f32 = load_vector_element %p, 1u
+    %40:f32 = load_vector_element %a_1, 1u
+    %41:f32 = sub %39, %40
+    %42:vec2<f32> = construct %38, %41
+    store %param, %42
+    %43:f32 = sub %x_99, %x_100
+    %44:f32 = sub %x_103, %x_104
+    %45:vec2<f32> = construct %43, %44
+    store %param_1, %45
+    %x_107:f32 = call %cross2d_vf2_vf2_, %param, %param_1
+    store %pab, %x_107
+    %x_116:f32 = load_vector_element %c, 0u
+    %x_117:f32 = load_vector_element %b_1, 0u
+    %x_120:f32 = load_vector_element %c, 1u
+    %x_121:f32 = load_vector_element %b_1, 1u
+    %51:f32 = load_vector_element %p, 0u
+    %52:f32 = load_vector_element %b_1, 0u
+    %53:f32 = sub %51, %52
+    %54:f32 = load_vector_element %p, 1u
+    %55:f32 = load_vector_element %b_1, 1u
+    %56:f32 = sub %54, %55
+    %57:vec2<f32> = construct %53, %56
+    store %param_2, %57
+    %58:f32 = sub %x_116, %x_117
+    %59:f32 = sub %x_120, %x_121
+    %60:vec2<f32> = construct %58, %59
+    store %param_3, %60
+    %x_124:f32 = call %cross2d_vf2_vf2_, %param_2, %param_3
+    store %pbc, %x_124
+    %62:f32 = load %pab
+    %63:bool = lt %62, 0.0f
+    %64:f32 = load %pbc
+    %65:bool = lt %64, 0.0f
+    %x_129:bool = and %63, %65
+    store %x_138, %x_129
+    %67:bool = eq %x_129, false
+    if %67 [t: %b4] {  # if_1
+      %b4 = block {  # true
+        %68:f32 = load %pab
+        %69:bool = gte %68, 0.0f
+        %70:f32 = load %pbc
+        %71:bool = gte %70, 0.0f
+        %72:bool = and %69, %71
+        store %x_137, %72
+        %73:bool = load %x_137
+        store %x_138, %73
+        exit_if  # if_1
+      }
+    }
+    %74:bool = load %x_138
+    %75:bool = eq %74, false
+    if %75 [t: %b5] {  # if_2
+      %b5 = block {  # true
+        ret 0i
+      }
+    }
+    %x_149:f32 = load_vector_element %a_1, 0u
+    %x_150:f32 = load_vector_element %c, 0u
+    %x_152:f32 = load_vector_element %a_1, 1u
+    %x_153:f32 = load_vector_element %c, 1u
+    %80:f32 = load_vector_element %p, 0u
+    %81:f32 = load_vector_element %c, 0u
+    %82:f32 = sub %80, %81
+    %83:f32 = load_vector_element %p, 1u
+    %84:f32 = load_vector_element %c, 1u
+    %85:f32 = sub %83, %84
+    %86:vec2<f32> = construct %82, %85
+    store %param_4, %86
+    %87:f32 = sub %x_149, %x_150
+    %88:f32 = sub %x_152, %x_153
+    %89:vec2<f32> = construct %87, %88
+    store %param_5, %89
+    %x_156:f32 = call %cross2d_vf2_vf2_, %param_4, %param_5
+    store %pca, %x_156
+    %91:f32 = load %pab
+    %92:bool = lt %91, 0.0f
+    %93:f32 = load %pca
+    %94:bool = lt %93, 0.0f
+    %x_161:bool = and %92, %94
+    store %x_170, %x_161
+    %96:bool = eq %x_161, false
+    if %96 [t: %b6] {  # if_3
+      %b6 = block {  # true
+        %97:f32 = load %pab
+        %98:bool = gte %97, 0.0f
+        %99:f32 = load %pca
+        %100:bool = gte %99, 0.0f
+        %101:bool = and %98, %100
+        store %x_169, %101
+        %102:bool = load %x_169
+        store %x_170, %102
+        exit_if  # if_3
+      }
+    }
+    %103:bool = load %x_170
+    %104:bool = eq %103, false
+    if %104 [t: %b7] {  # if_4
+      %b7 = block {  # true
+        ret 0i
+      }
+    }
+    ret 1i
+  }
+}
+%main_1 = func():void -> %b8 {
+  %b8 = block {
+    %pos:ptr<function, vec2<f32>, read_write> = var
+    %param_6:ptr<function, vec2<f32>, read_write> = var
+    %param_7:ptr<function, vec2<f32>, read_write> = var
+    %param_8:ptr<function, vec2<f32>, read_write> = var
+    %param_9:ptr<function, vec2<f32>, read_write> = var
+    %111:vec4<f32> = load %gl_FragCoord
+    %112:vec2<f32> = swizzle %111, xy
+    %113:ptr<uniform, vec2<f32>, read> = access %x_24, 0u
+    %114:vec2<f32> = load %113
+    %115:vec2<f32> = div %112, %114
+    store %pos, %115
+    %116:vec2<f32> = load %pos
+    store %param_6, %116
+    store %param_7, vec2<f32>(0.69999998807907104492f, 0.30000001192092895508f)
+    store %param_8, vec2<f32>(0.5f, 0.89999997615814208984f)
+    store %param_9, vec2<f32>(0.10000000149011611938f, 0.40000000596046447754f)
+    %x_69:i32 = call %pointInTriangle_vf2_vf2_vf2_vf2_, %param_6, %param_7, %param_8, %param_9
+    %118:bool = eq %x_69, 1i
+    if %118 [t: %b9, f: %b10] {  # if_5
+      %b9 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_5
+      }
+      %b10 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b11 {
+  %b11 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %121:void = call %main_1
+    %122:vec4<f32> = load %x_GLF_color
+    %123:main_out = construct %122
+    ret %123
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..05d44c5
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl.expected.ir.msl
@@ -0,0 +1,206 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_24:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%cross2d_vf2_vf2_ = func(%a:ptr<function, vec2<f32>, read_write>, %b:ptr<function, vec2<f32>, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %x_76:f32 = load_vector_element %a, 0u
+    %x_78:f32 = load_vector_element %b, 1u
+    %x_81:f32 = load_vector_element %b, 0u
+    %x_83:f32 = load_vector_element %a, 1u
+    %11:f32 = mul %x_76, %x_78
+    %12:f32 = mul %x_81, %x_83
+    %13:f32 = sub %11, %12
+    ret %13
+  }
+}
+%pointInTriangle_vf2_vf2_vf2_vf2_ = func(%p:ptr<function, vec2<f32>, read_write>, %a_1:ptr<function, vec2<f32>, read_write>, %b_1:ptr<function, vec2<f32>, read_write>, %c:ptr<function, vec2<f32>, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %pab:ptr<function, f32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec2<f32>, read_write> = var
+    %pbc:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %param_3:ptr<function, vec2<f32>, read_write> = var
+    %pca:ptr<function, f32, read_write> = var
+    %param_4:ptr<function, vec2<f32>, read_write> = var
+    %param_5:ptr<function, vec2<f32>, read_write> = var
+    %x_137:ptr<function, bool, read_write> = var
+    %x_169:ptr<function, bool, read_write> = var
+    %x_138_phi:ptr<function, bool, read_write> = var
+    %x_170_phi:ptr<function, bool, read_write> = var
+    %x_88:f32 = load_vector_element %p, 0u
+    %x_90:f32 = load_vector_element %a_1, 0u
+    %x_93:f32 = load_vector_element %p, 1u
+    %x_95:f32 = load_vector_element %a_1, 1u
+    %x_99:f32 = load_vector_element %b_1, 0u
+    %x_100:f32 = load_vector_element %a_1, 0u
+    %x_103:f32 = load_vector_element %b_1, 1u
+    %x_104:f32 = load_vector_element %a_1, 1u
+    %40:f32 = sub %x_88, %x_90
+    %41:f32 = sub %x_93, %x_95
+    %42:vec2<f32> = construct %40, %41
+    store %param, %42
+    %43:f32 = sub %x_99, %x_100
+    %44:f32 = sub %x_103, %x_104
+    %45:vec2<f32> = construct %43, %44
+    store %param_1, %45
+    %x_107:f32 = call %cross2d_vf2_vf2_, %param, %param_1
+    store %pab, %x_107
+    %x_108:f32 = load_vector_element %p, 0u
+    %x_109:f32 = load_vector_element %b_1, 0u
+    %x_111:f32 = load_vector_element %p, 1u
+    %x_112:f32 = load_vector_element %b_1, 1u
+    %x_116:f32 = load_vector_element %c, 0u
+    %x_117:f32 = load_vector_element %b_1, 0u
+    %x_120:f32 = load_vector_element %c, 1u
+    %x_121:f32 = load_vector_element %b_1, 1u
+    %55:f32 = sub %x_108, %x_109
+    %56:f32 = sub %x_111, %x_112
+    %57:vec2<f32> = construct %55, %56
+    store %param_2, %57
+    %58:f32 = sub %x_116, %x_117
+    %59:f32 = sub %x_120, %x_121
+    %60:vec2<f32> = construct %58, %59
+    store %param_3, %60
+    %x_124:f32 = call %cross2d_vf2_vf2_, %param_2, %param_3
+    store %pbc, %x_124
+    %x_125:f32 = load %pab
+    %x_127:f32 = load %pbc
+    %64:bool = lt %x_125, 0.0f
+    %65:bool = lt %x_127, 0.0f
+    %x_129:bool = and %64, %65
+    store %x_138_phi, %x_129
+    %67:bool = eq %x_129, false
+    if %67 [t: %b4] {  # if_1
+      %b4 = block {  # true
+        %x_133:f32 = load %pab
+        %x_135:f32 = load %pbc
+        %70:bool = gte %x_133, 0.0f
+        %71:bool = gte %x_135, 0.0f
+        %72:bool = and %70, %71
+        store %x_137, %72
+        %73:bool = load %x_137
+        store %x_138_phi, %73
+        exit_if  # if_1
+      }
+    }
+    %x_138:bool = load %x_138_phi
+    %75:bool = eq %x_138, false
+    if %75 [t: %b5] {  # if_2
+      %b5 = block {  # true
+        ret 0i
+      }
+    }
+    %x_142:f32 = load_vector_element %p, 0u
+    %x_143:f32 = load_vector_element %c, 0u
+    %x_145:f32 = load_vector_element %p, 1u
+    %x_146:f32 = load_vector_element %c, 1u
+    %x_149:f32 = load_vector_element %a_1, 0u
+    %x_150:f32 = load_vector_element %c, 0u
+    %x_152:f32 = load_vector_element %a_1, 1u
+    %x_153:f32 = load_vector_element %c, 1u
+    %84:f32 = sub %x_142, %x_143
+    %85:f32 = sub %x_145, %x_146
+    %86:vec2<f32> = construct %84, %85
+    store %param_4, %86
+    %87:f32 = sub %x_149, %x_150
+    %88:f32 = sub %x_152, %x_153
+    %89:vec2<f32> = construct %87, %88
+    store %param_5, %89
+    %x_156:f32 = call %cross2d_vf2_vf2_, %param_4, %param_5
+    store %pca, %x_156
+    %x_157:f32 = load %pab
+    %x_159:f32 = load %pca
+    %93:bool = lt %x_157, 0.0f
+    %94:bool = lt %x_159, 0.0f
+    %x_161:bool = and %93, %94
+    store %x_170_phi, %x_161
+    %96:bool = eq %x_161, false
+    if %96 [t: %b6] {  # if_3
+      %b6 = block {  # true
+        %x_165:f32 = load %pab
+        %x_167:f32 = load %pca
+        %99:bool = gte %x_165, 0.0f
+        %100:bool = gte %x_167, 0.0f
+        %101:bool = and %99, %100
+        store %x_169, %101
+        %102:bool = load %x_169
+        store %x_170_phi, %102
+        exit_if  # if_3
+      }
+    }
+    %x_170:bool = load %x_170_phi
+    %104:bool = eq %x_170, false
+    if %104 [t: %b7] {  # if_4
+      %b7 = block {  # true
+        ret 0i
+      }
+    }
+    ret 1i
+  }
+}
+%main_1 = func():void -> %b8 {
+  %b8 = block {
+    %pos:ptr<function, vec2<f32>, read_write> = var
+    %param_6:ptr<function, vec2<f32>, read_write> = var
+    %param_7:ptr<function, vec2<f32>, read_write> = var
+    %param_8:ptr<function, vec2<f32>, read_write> = var
+    %param_9:ptr<function, vec2<f32>, read_write> = var
+    %x_63:vec4<f32> = load %gl_FragCoord
+    %112:ptr<uniform, vec2<f32>, read> = access %x_24, 0u
+    %x_66:vec2<f32> = load %112
+    %114:f32 = access %x_63, 0u
+    %115:f32 = access %x_63, 1u
+    %116:vec2<f32> = construct %114, %115
+    %117:vec2<f32> = div %116, %x_66
+    store %pos, %117
+    %x_68:vec2<f32> = load %pos
+    store %param_6, %x_68
+    store %param_7, vec2<f32>(0.69999998807907104492f, 0.30000001192092895508f)
+    store %param_8, vec2<f32>(0.5f, 0.89999997615814208984f)
+    store %param_9, vec2<f32>(0.10000000149011611938f, 0.40000000596046447754f)
+    %x_69:i32 = call %pointInTriangle_vf2_vf2_vf2_vf2_, %param_6, %param_7, %param_8, %param_9
+    %120:bool = eq %x_69, 1i
+    if %120 [t: %b9, f: %b10] {  # if_5
+      %b9 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_5
+      }
+      %b10 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b11 {
+  %b11 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %123:void = call %main_1
+    %124:vec4<f32> = load %x_GLF_color
+    %125:main_out = construct %124
+    ret %125
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..56771a3
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.spvasm.expected.ir.msl
@@ -0,0 +1,248 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_15:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%cross2d_vf2_vf2_ = func(%a:ptr<function, vec2<f32>, read_write>, %b:ptr<function, vec2<f32>, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %x_85:f32 = load_vector_element %a, 0u
+    %x_87:f32 = load_vector_element %b, 1u
+    %x_90:f32 = load_vector_element %b, 0u
+    %x_92:f32 = load_vector_element %a, 1u
+    %11:f32 = mul %x_85, %x_87
+    %12:f32 = mul %x_90, %x_92
+    %13:f32 = sub %11, %12
+    ret %13
+  }
+}
+%pointInTriangle_vf2_vf2_vf2_vf2_ = func(%p:ptr<function, vec2<f32>, read_write>, %a_1:ptr<function, vec2<f32>, read_write>, %b_1:ptr<function, vec2<f32>, read_write>, %c:ptr<function, vec2<f32>, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %var_y:ptr<function, f32, read_write> = var
+    %x_96:ptr<function, f32, read_write> = var
+    %x_97:ptr<function, f32, read_write> = var
+    %clamp_y:ptr<function, f32, read_write> = var
+    %pab:ptr<function, f32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec2<f32>, read_write> = var
+    %pbc:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %param_3:ptr<function, vec2<f32>, read_write> = var
+    %pca:ptr<function, f32, read_write> = var
+    %param_4:ptr<function, vec2<f32>, read_write> = var
+    %param_5:ptr<function, vec2<f32>, read_write> = var
+    %x_173:ptr<function, bool, read_write> = var
+    %x_174:ptr<function, bool, read_write> = var
+    %x_205:ptr<function, bool, read_write> = var
+    %x_206:ptr<function, bool, read_write> = var
+    %36:ptr<uniform, vec2<f32>, read> = access %x_15, 0u
+    %37:f32 = load_vector_element %36, 0u
+    %38:ptr<uniform, vec2<f32>, read> = access %x_15, 0u
+    %39:f32 = load_vector_element %38, 1u
+    %40:bool = eq %37, %39
+    if %40 [t: %b4, f: %b5] {  # if_1
+      %b4 = block {  # true
+        %x_107:f32 = load_vector_element %c, 1u
+        %x_108:vec2<f32> = construct 0.0f, %x_107
+        if true [t: %b6, f: %b7] {  # if_2
+          %b6 = block {  # true
+            %43:f32 = load_vector_element %c, 1u
+            store %x_97, %43
+            exit_if  # if_2
+          }
+          %b7 = block {  # false
+            store %x_97, 1.0f
+            exit_if  # if_2
+          }
+        }
+        %44:f32 = load %x_97
+        %45:f32 = load_vector_element %c, 1u
+        %46:f32 = max %44, %45
+        %x_116:vec2<f32> = construct 1.0f, %46
+        %x_117:vec2<f32> = swizzle %x_108, xy
+        store %x_96, %x_107
+        exit_if  # if_1
+      }
+      %b5 = block {  # false
+        store %x_96, -1.0f
+        exit_if  # if_1
+      }
+    }
+    %49:f32 = load %x_96
+    store %var_y, %49
+    %50:f32 = load_vector_element %c, 1u
+    %51:f32 = load_vector_element %c, 1u
+    %52:f32 = load %var_y
+    %53:f32 = clamp %50, %51, %52
+    store %clamp_y, %53
+    %x_136:f32 = load_vector_element %b_1, 0u
+    %x_137:f32 = load_vector_element %a_1, 0u
+    %x_140:f32 = load_vector_element %b_1, 1u
+    %x_141:f32 = load_vector_element %a_1, 1u
+    %58:f32 = load_vector_element %p, 0u
+    %59:f32 = load_vector_element %a_1, 0u
+    %60:f32 = sub %58, %59
+    %61:f32 = load_vector_element %p, 1u
+    %62:f32 = load_vector_element %a_1, 1u
+    %63:f32 = sub %61, %62
+    %64:vec2<f32> = construct %60, %63
+    store %param, %64
+    %65:f32 = sub %x_136, %x_137
+    %66:f32 = sub %x_140, %x_141
+    %67:vec2<f32> = construct %65, %66
+    store %param_1, %67
+    %x_144:f32 = call %cross2d_vf2_vf2_, %param, %param_1
+    store %pab, %x_144
+    %x_153:f32 = load_vector_element %c, 0u
+    %x_154:f32 = load_vector_element %b_1, 0u
+    %x_156:f32 = load %clamp_y
+    %x_157:f32 = load_vector_element %b_1, 1u
+    %73:f32 = load_vector_element %p, 0u
+    %74:f32 = load_vector_element %b_1, 0u
+    %75:f32 = sub %73, %74
+    %76:f32 = load_vector_element %p, 1u
+    %77:f32 = load_vector_element %b_1, 1u
+    %78:f32 = sub %76, %77
+    %79:vec2<f32> = construct %75, %78
+    store %param_2, %79
+    %80:f32 = sub %x_153, %x_154
+    %81:f32 = sub %x_156, %x_157
+    %82:vec2<f32> = construct %80, %81
+    store %param_3, %82
+    %x_160:f32 = call %cross2d_vf2_vf2_, %param_2, %param_3
+    store %pbc, %x_160
+    %84:f32 = load %pab
+    %85:bool = lt %84, 0.0f
+    %86:f32 = load %pbc
+    %87:bool = lt %86, 0.0f
+    %x_165:bool = and %85, %87
+    store %x_174, %x_165
+    %89:bool = eq %x_165, false
+    if %89 [t: %b8] {  # if_3
+      %b8 = block {  # true
+        %90:f32 = load %pab
+        %91:bool = gte %90, 0.0f
+        %92:f32 = load %pbc
+        %93:bool = gte %92, 0.0f
+        %94:bool = and %91, %93
+        store %x_173, %94
+        %95:bool = load %x_173
+        store %x_174, %95
+        exit_if  # if_3
+      }
+    }
+    %96:bool = load %x_174
+    %97:bool = eq %96, false
+    if %97 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        ret 0i
+      }
+    }
+    %x_185:f32 = load_vector_element %a_1, 0u
+    %x_186:f32 = load_vector_element %c, 0u
+    %x_188:f32 = load_vector_element %a_1, 1u
+    %x_189:f32 = load_vector_element %c, 1u
+    %102:f32 = load_vector_element %p, 0u
+    %103:f32 = load_vector_element %c, 0u
+    %104:f32 = sub %102, %103
+    %105:f32 = load_vector_element %p, 1u
+    %106:f32 = load_vector_element %c, 1u
+    %107:f32 = sub %105, %106
+    %108:vec2<f32> = construct %104, %107
+    store %param_4, %108
+    %109:f32 = sub %x_185, %x_186
+    %110:f32 = sub %x_188, %x_189
+    %111:vec2<f32> = construct %109, %110
+    store %param_5, %111
+    %x_192:f32 = call %cross2d_vf2_vf2_, %param_4, %param_5
+    store %pca, %x_192
+    %113:f32 = load %pab
+    %114:bool = lt %113, 0.0f
+    %115:f32 = load %pca
+    %116:bool = lt %115, 0.0f
+    %x_197:bool = and %114, %116
+    store %x_206, %x_197
+    %118:bool = eq %x_197, false
+    if %118 [t: %b10] {  # if_5
+      %b10 = block {  # true
+        %119:f32 = load %pab
+        %120:bool = gte %119, 0.0f
+        %121:f32 = load %pca
+        %122:bool = gte %121, 0.0f
+        %123:bool = and %120, %122
+        store %x_205, %123
+        %124:bool = load %x_205
+        store %x_206, %124
+        exit_if  # if_5
+      }
+    }
+    %125:bool = load %x_206
+    %126:bool = eq %125, false
+    if %126 [t: %b11] {  # if_6
+      %b11 = block {  # true
+        ret 0i
+      }
+    }
+    ret 1i
+  }
+}
+%main_1 = func():void -> %b12 {
+  %b12 = block {
+    %pos:ptr<function, vec2<f32>, read_write> = var
+    %param_6:ptr<function, vec2<f32>, read_write> = var
+    %param_7:ptr<function, vec2<f32>, read_write> = var
+    %param_8:ptr<function, vec2<f32>, read_write> = var
+    %param_9:ptr<function, vec2<f32>, read_write> = var
+    %133:vec4<f32> = load %gl_FragCoord
+    %134:vec2<f32> = swizzle %133, xy
+    %135:ptr<uniform, vec2<f32>, read> = access %x_15, 0u
+    %136:vec2<f32> = load %135
+    %137:vec2<f32> = div %134, %136
+    store %pos, %137
+    %138:vec2<f32> = load %pos
+    store %param_6, %138
+    store %param_7, vec2<f32>(0.69999998807907104492f, 0.30000001192092895508f)
+    store %param_8, vec2<f32>(0.5f, 0.89999997615814208984f)
+    store %param_9, vec2<f32>(0.10000000149011611938f, 0.40000000596046447754f)
+    %x_78:i32 = call %pointInTriangle_vf2_vf2_vf2_vf2_, %param_6, %param_7, %param_8, %param_9
+    %140:bool = eq %x_78, 1i
+    if %140 [t: %b13, f: %b14] {  # if_7
+      %b13 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_7
+      }
+      %b14 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b15 {
+  %b15 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %143:void = call %main_1
+    %144:vec4<f32> = load %x_GLF_color
+    %145:main_out = construct %144
+    ret %145
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..cfc7833
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl.expected.ir.msl
@@ -0,0 +1,252 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_15:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%cross2d_vf2_vf2_ = func(%a:ptr<function, vec2<f32>, read_write>, %b:ptr<function, vec2<f32>, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %x_85:f32 = load_vector_element %a, 0u
+    %x_87:f32 = load_vector_element %b, 1u
+    %x_90:f32 = load_vector_element %b, 0u
+    %x_92:f32 = load_vector_element %a, 1u
+    %11:f32 = mul %x_85, %x_87
+    %12:f32 = mul %x_90, %x_92
+    %13:f32 = sub %11, %12
+    ret %13
+  }
+}
+%pointInTriangle_vf2_vf2_vf2_vf2_ = func(%p:ptr<function, vec2<f32>, read_write>, %a_1:ptr<function, vec2<f32>, read_write>, %b_1:ptr<function, vec2<f32>, read_write>, %c:ptr<function, vec2<f32>, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %var_y:ptr<function, f32, read_write> = var
+    %x_96:ptr<function, f32, read_write> = var
+    %x_97:ptr<function, f32, read_write> = var
+    %clamp_y:ptr<function, f32, read_write> = var
+    %pab:ptr<function, f32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec2<f32>, read_write> = var
+    %pbc:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %param_3:ptr<function, vec2<f32>, read_write> = var
+    %pca:ptr<function, f32, read_write> = var
+    %param_4:ptr<function, vec2<f32>, read_write> = var
+    %param_5:ptr<function, vec2<f32>, read_write> = var
+    %x_173:ptr<function, bool, read_write> = var
+    %x_205:ptr<function, bool, read_write> = var
+    %x_174_phi:ptr<function, bool, read_write> = var
+    %x_206_phi:ptr<function, bool, read_write> = var
+    %36:ptr<uniform, vec2<f32>, read> = access %x_15, 0u
+    %x_99:f32 = load_vector_element %36, 0u
+    %38:ptr<uniform, vec2<f32>, read> = access %x_15, 0u
+    %x_101:f32 = load_vector_element %38, 1u
+    %40:bool = eq %x_99, %x_101
+    if %40 [t: %b4, f: %b5] {  # if_1
+      %b4 = block {  # true
+        %x_107:f32 = load_vector_element %c, 1u
+        %x_108:vec2<f32> = construct 0.0f, %x_107
+        if true [t: %b6, f: %b7] {  # if_2
+          %b6 = block {  # true
+            %x_112:f32 = load_vector_element %c, 1u
+            store %x_97, %x_112
+            exit_if  # if_2
+          }
+          %b7 = block {  # false
+            store %x_97, 1.0f
+            exit_if  # if_2
+          }
+        }
+        %x_113:f32 = load %x_97
+        %x_114:f32 = load_vector_element %c, 1u
+        %46:f32 = max %x_113, %x_114
+        %x_116:vec2<f32> = construct 1.0f, %46
+        %48:f32 = access %x_108, 0u
+        %49:f32 = access %x_108, 1u
+        %x_117:vec2<f32> = construct %48, %49
+        store %x_96, %x_107
+        exit_if  # if_1
+      }
+      %b5 = block {  # false
+        store %x_96, -1.0f
+        exit_if  # if_1
+      }
+    }
+    %x_118:f32 = load %x_96
+    store %var_y, %x_118
+    %x_120:f32 = load_vector_element %c, 1u
+    %x_121:f32 = load_vector_element %c, 1u
+    %x_122:f32 = load %var_y
+    %55:f32 = clamp %x_120, %x_121, %x_122
+    store %clamp_y, %55
+    %x_125:f32 = load_vector_element %p, 0u
+    %x_127:f32 = load_vector_element %a_1, 0u
+    %x_130:f32 = load_vector_element %p, 1u
+    %x_132:f32 = load_vector_element %a_1, 1u
+    %x_136:f32 = load_vector_element %b_1, 0u
+    %x_137:f32 = load_vector_element %a_1, 0u
+    %x_140:f32 = load_vector_element %b_1, 1u
+    %x_141:f32 = load_vector_element %a_1, 1u
+    %64:f32 = sub %x_125, %x_127
+    %65:f32 = sub %x_130, %x_132
+    %66:vec2<f32> = construct %64, %65
+    store %param, %66
+    %67:f32 = sub %x_136, %x_137
+    %68:f32 = sub %x_140, %x_141
+    %69:vec2<f32> = construct %67, %68
+    store %param_1, %69
+    %x_144:f32 = call %cross2d_vf2_vf2_, %param, %param_1
+    store %pab, %x_144
+    %x_145:f32 = load_vector_element %p, 0u
+    %x_146:f32 = load_vector_element %b_1, 0u
+    %x_148:f32 = load_vector_element %p, 1u
+    %x_149:f32 = load_vector_element %b_1, 1u
+    %x_153:f32 = load_vector_element %c, 0u
+    %x_154:f32 = load_vector_element %b_1, 0u
+    %x_156:f32 = load %clamp_y
+    %x_157:f32 = load_vector_element %b_1, 1u
+    %79:f32 = sub %x_145, %x_146
+    %80:f32 = sub %x_148, %x_149
+    %81:vec2<f32> = construct %79, %80
+    store %param_2, %81
+    %82:f32 = sub %x_153, %x_154
+    %83:f32 = sub %x_156, %x_157
+    %84:vec2<f32> = construct %82, %83
+    store %param_3, %84
+    %x_160:f32 = call %cross2d_vf2_vf2_, %param_2, %param_3
+    store %pbc, %x_160
+    %x_161:f32 = load %pab
+    %x_163:f32 = load %pbc
+    %88:bool = lt %x_161, 0.0f
+    %89:bool = lt %x_163, 0.0f
+    %x_165:bool = and %88, %89
+    store %x_174_phi, %x_165
+    %91:bool = eq %x_165, false
+    if %91 [t: %b8] {  # if_3
+      %b8 = block {  # true
+        %x_169:f32 = load %pab
+        %x_171:f32 = load %pbc
+        %94:bool = gte %x_169, 0.0f
+        %95:bool = gte %x_171, 0.0f
+        %96:bool = and %94, %95
+        store %x_173, %96
+        %97:bool = load %x_173
+        store %x_174_phi, %97
+        exit_if  # if_3
+      }
+    }
+    %x_174:bool = load %x_174_phi
+    %99:bool = eq %x_174, false
+    if %99 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        ret 0i
+      }
+    }
+    %x_178:f32 = load_vector_element %p, 0u
+    %x_179:f32 = load_vector_element %c, 0u
+    %x_181:f32 = load_vector_element %p, 1u
+    %x_182:f32 = load_vector_element %c, 1u
+    %x_185:f32 = load_vector_element %a_1, 0u
+    %x_186:f32 = load_vector_element %c, 0u
+    %x_188:f32 = load_vector_element %a_1, 1u
+    %x_189:f32 = load_vector_element %c, 1u
+    %108:f32 = sub %x_178, %x_179
+    %109:f32 = sub %x_181, %x_182
+    %110:vec2<f32> = construct %108, %109
+    store %param_4, %110
+    %111:f32 = sub %x_185, %x_186
+    %112:f32 = sub %x_188, %x_189
+    %113:vec2<f32> = construct %111, %112
+    store %param_5, %113
+    %x_192:f32 = call %cross2d_vf2_vf2_, %param_4, %param_5
+    store %pca, %x_192
+    %x_193:f32 = load %pab
+    %x_195:f32 = load %pca
+    %117:bool = lt %x_193, 0.0f
+    %118:bool = lt %x_195, 0.0f
+    %x_197:bool = and %117, %118
+    store %x_206_phi, %x_197
+    %120:bool = eq %x_197, false
+    if %120 [t: %b10] {  # if_5
+      %b10 = block {  # true
+        %x_201:f32 = load %pab
+        %x_203:f32 = load %pca
+        %123:bool = gte %x_201, 0.0f
+        %124:bool = gte %x_203, 0.0f
+        %125:bool = and %123, %124
+        store %x_205, %125
+        %126:bool = load %x_205
+        store %x_206_phi, %126
+        exit_if  # if_5
+      }
+    }
+    %x_206:bool = load %x_206_phi
+    %128:bool = eq %x_206, false
+    if %128 [t: %b11] {  # if_6
+      %b11 = block {  # true
+        ret 0i
+      }
+    }
+    ret 1i
+  }
+}
+%main_1 = func():void -> %b12 {
+  %b12 = block {
+    %pos:ptr<function, vec2<f32>, read_write> = var
+    %param_6:ptr<function, vec2<f32>, read_write> = var
+    %param_7:ptr<function, vec2<f32>, read_write> = var
+    %param_8:ptr<function, vec2<f32>, read_write> = var
+    %param_9:ptr<function, vec2<f32>, read_write> = var
+    %x_72:vec4<f32> = load %gl_FragCoord
+    %136:ptr<uniform, vec2<f32>, read> = access %x_15, 0u
+    %x_75:vec2<f32> = load %136
+    %138:f32 = access %x_72, 0u
+    %139:f32 = access %x_72, 1u
+    %140:vec2<f32> = construct %138, %139
+    %141:vec2<f32> = div %140, %x_75
+    store %pos, %141
+    %x_77:vec2<f32> = load %pos
+    store %param_6, %x_77
+    store %param_7, vec2<f32>(0.69999998807907104492f, 0.30000001192092895508f)
+    store %param_8, vec2<f32>(0.5f, 0.89999997615814208984f)
+    store %param_9, vec2<f32>(0.10000000149011611938f, 0.40000000596046447754f)
+    %x_78:i32 = call %pointInTriangle_vf2_vf2_vf2_vf2_, %param_6, %param_7, %param_8, %param_9
+    %144:bool = eq %x_78, 1i
+    if %144 [t: %b13, f: %b14] {  # if_7
+      %b13 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_7
+      }
+      %b14 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b15 {
+  %b15 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %147:void = call %main_1
+    %148:vec4<f32> = load %x_GLF_color
+    %149:main_out = construct %148
+    ret %149
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..877b119
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.spvasm.expected.ir.msl
@@ -0,0 +1,204 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_24:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%cross2d_vf2_vf2_ = func(%a:ptr<function, vec2<f32>, read_write>, %b:ptr<function, vec2<f32>, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %x_76:f32 = load_vector_element %a, 0u
+    %x_78:f32 = load_vector_element %b, 1u
+    %x_81:f32 = load_vector_element %b, 0u
+    %x_83:f32 = load_vector_element %a, 1u
+    %11:f32 = mul %x_76, %x_78
+    %12:f32 = mul %x_81, %x_83
+    %13:f32 = sub %11, %12
+    ret %13
+  }
+}
+%pointInTriangle_vf2_vf2_vf2_vf2_ = func(%p:ptr<function, vec2<f32>, read_write>, %a_1:ptr<function, vec2<f32>, read_write>, %b_1:ptr<function, vec2<f32>, read_write>, %c:ptr<function, vec2<f32>, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %pab:ptr<function, f32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec2<f32>, read_write> = var
+    %pbc:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %param_3:ptr<function, vec2<f32>, read_write> = var
+    %pca:ptr<function, f32, read_write> = var
+    %param_4:ptr<function, vec2<f32>, read_write> = var
+    %param_5:ptr<function, vec2<f32>, read_write> = var
+    %x_145:ptr<function, bool, read_write> = var
+    %x_146:ptr<function, bool, read_write> = var
+    %x_185:ptr<function, bool, read_write> = var
+    %x_186:ptr<function, bool, read_write> = var
+    %x_99:f32 = load_vector_element %b_1, 0u
+    %x_101:f32 = load_vector_element %a_1, 0u
+    %x_104:f32 = load_vector_element %b_1, 1u
+    %x_106:f32 = load_vector_element %a_1, 1u
+    %36:f32 = load_vector_element %p, 0u
+    %37:f32 = load_vector_element %a_1, 0u
+    %38:f32 = sub %36, %37
+    %39:f32 = load_vector_element %p, 1u
+    %40:f32 = load_vector_element %a_1, 1u
+    %41:f32 = sub %39, %40
+    %42:vec2<f32> = construct %38, %41
+    store %param, %42
+    %43:f32 = sub %x_99, %x_101
+    %44:f32 = sub %x_104, %x_106
+    %45:vec2<f32> = construct %43, %44
+    store %param_1, %45
+    %x_109:f32 = call %cross2d_vf2_vf2_, %param, %param_1
+    store %pab, %x_109
+    %x_122:f32 = load_vector_element %c, 0u
+    %x_124:f32 = load_vector_element %b_1, 0u
+    %x_127:f32 = load_vector_element %c, 1u
+    %x_129:f32 = load_vector_element %b_1, 1u
+    %51:f32 = load_vector_element %p, 0u
+    %52:f32 = load_vector_element %b_1, 0u
+    %53:f32 = sub %51, %52
+    %54:f32 = load_vector_element %p, 1u
+    %55:f32 = load_vector_element %b_1, 1u
+    %56:f32 = sub %54, %55
+    %57:vec2<f32> = construct %53, %56
+    store %param_2, %57
+    %58:f32 = sub %x_122, %x_124
+    %59:f32 = sub %x_127, %x_129
+    %60:vec2<f32> = construct %58, %59
+    store %param_3, %60
+    %x_132:f32 = call %cross2d_vf2_vf2_, %param_2, %param_3
+    store %pbc, %x_132
+    %62:f32 = load %pab
+    %63:bool = lt %62, 0.0f
+    %64:f32 = load %pbc
+    %65:bool = lt %64, 0.0f
+    %x_137:bool = and %63, %65
+    store %x_146, %x_137
+    %67:bool = eq %x_137, false
+    if %67 [t: %b4] {  # if_1
+      %b4 = block {  # true
+        %68:f32 = load %pab
+        %69:bool = gte %68, 0.0f
+        %70:f32 = load %pbc
+        %71:bool = gte %70, 0.0f
+        %72:bool = and %69, %71
+        store %x_145, %72
+        %73:bool = load %x_145
+        store %x_146, %73
+        exit_if  # if_1
+      }
+    }
+    %74:bool = load %x_146
+    %75:bool = eq %74, false
+    if %75 [t: %b5] {  # if_2
+      %b5 = block {  # true
+        ret 0i
+      }
+    }
+    %x_162:f32 = load_vector_element %a_1, 0u
+    %x_164:f32 = load_vector_element %c, 0u
+    %x_167:f32 = load_vector_element %a_1, 1u
+    %x_169:f32 = load_vector_element %c, 1u
+    %80:f32 = load_vector_element %p, 0u
+    %81:f32 = load_vector_element %c, 0u
+    %82:f32 = sub %80, %81
+    %83:f32 = load_vector_element %p, 1u
+    %84:f32 = load_vector_element %c, 1u
+    %85:f32 = sub %83, %84
+    %86:vec2<f32> = construct %82, %85
+    store %param_4, %86
+    %87:f32 = sub %x_162, %x_164
+    %88:f32 = sub %x_167, %x_169
+    %89:vec2<f32> = construct %87, %88
+    store %param_5, %89
+    %x_172:f32 = call %cross2d_vf2_vf2_, %param_4, %param_5
+    store %pca, %x_172
+    %91:f32 = load %pab
+    %92:bool = lt %91, 0.0f
+    %93:f32 = load %pca
+    %94:bool = lt %93, 0.0f
+    %x_177:bool = and %92, %94
+    store %x_186, %x_177
+    %96:bool = eq %x_177, false
+    if %96 [t: %b6] {  # if_3
+      %b6 = block {  # true
+        %97:f32 = load %pab
+        %98:bool = gte %97, 0.0f
+        %99:f32 = load %pca
+        %100:bool = gte %99, 0.0f
+        %101:bool = and %98, %100
+        store %x_185, %101
+        %102:bool = load %x_185
+        store %x_186, %102
+        exit_if  # if_3
+      }
+    }
+    %103:bool = load %x_186
+    %104:bool = eq %103, false
+    if %104 [t: %b7] {  # if_4
+      %b7 = block {  # true
+        ret 0i
+      }
+    }
+    ret 1i
+  }
+}
+%main_1 = func():void -> %b8 {
+  %b8 = block {
+    %pos:ptr<function, vec2<f32>, read_write> = var
+    %param_6:ptr<function, vec2<f32>, read_write> = var
+    %param_7:ptr<function, vec2<f32>, read_write> = var
+    %param_8:ptr<function, vec2<f32>, read_write> = var
+    %param_9:ptr<function, vec2<f32>, read_write> = var
+    %111:vec4<f32> = load %gl_FragCoord
+    %112:vec2<f32> = swizzle %111, xy
+    %113:ptr<uniform, vec2<f32>, read> = access %x_24, 0u
+    %114:vec2<f32> = load %113
+    %115:vec2<f32> = div %112, %114
+    store %pos, %115
+    %116:vec2<f32> = load %pos
+    store %param_6, %116
+    store %param_7, vec2<f32>(0.69999998807907104492f, 0.30000001192092895508f)
+    store %param_8, vec2<f32>(0.5f, 0.89999997615814208984f)
+    store %param_9, vec2<f32>(0.10000000149011611938f, 0.40000000596046447754f)
+    %x_69:i32 = call %pointInTriangle_vf2_vf2_vf2_vf2_, %param_6, %param_7, %param_8, %param_9
+    %118:bool = eq %x_69, 1i
+    if %118 [t: %b9, f: %b10] {  # if_5
+      %b9 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_5
+      }
+      %b10 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b11 {
+  %b11 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %121:void = call %main_1
+    %122:vec4<f32> = load %x_GLF_color
+    %123:main_out = construct %122
+    ret %123
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..aa8c14c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl.expected.ir.msl
@@ -0,0 +1,206 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_24:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%cross2d_vf2_vf2_ = func(%a:ptr<function, vec2<f32>, read_write>, %b:ptr<function, vec2<f32>, read_write>):f32 -> %b2 {
+  %b2 = block {
+    %x_76:f32 = load_vector_element %a, 0u
+    %x_78:f32 = load_vector_element %b, 1u
+    %x_81:f32 = load_vector_element %b, 0u
+    %x_83:f32 = load_vector_element %a, 1u
+    %11:f32 = mul %x_76, %x_78
+    %12:f32 = mul %x_81, %x_83
+    %13:f32 = sub %11, %12
+    ret %13
+  }
+}
+%pointInTriangle_vf2_vf2_vf2_vf2_ = func(%p:ptr<function, vec2<f32>, read_write>, %a_1:ptr<function, vec2<f32>, read_write>, %b_1:ptr<function, vec2<f32>, read_write>, %c:ptr<function, vec2<f32>, read_write>):i32 -> %b3 {
+  %b3 = block {
+    %pab:ptr<function, f32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec2<f32>, read_write> = var
+    %pbc:ptr<function, f32, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %param_3:ptr<function, vec2<f32>, read_write> = var
+    %pca:ptr<function, f32, read_write> = var
+    %param_4:ptr<function, vec2<f32>, read_write> = var
+    %param_5:ptr<function, vec2<f32>, read_write> = var
+    %x_145:ptr<function, bool, read_write> = var
+    %x_185:ptr<function, bool, read_write> = var
+    %x_146_phi:ptr<function, bool, read_write> = var
+    %x_186_phi:ptr<function, bool, read_write> = var
+    %x_88:f32 = load_vector_element %p, 0u
+    %x_90:f32 = load_vector_element %a_1, 0u
+    %x_93:f32 = load_vector_element %p, 1u
+    %x_95:f32 = load_vector_element %a_1, 1u
+    %x_99:f32 = load_vector_element %b_1, 0u
+    %x_101:f32 = load_vector_element %a_1, 0u
+    %x_104:f32 = load_vector_element %b_1, 1u
+    %x_106:f32 = load_vector_element %a_1, 1u
+    %40:f32 = sub %x_88, %x_90
+    %41:f32 = sub %x_93, %x_95
+    %42:vec2<f32> = construct %40, %41
+    store %param, %42
+    %43:f32 = sub %x_99, %x_101
+    %44:f32 = sub %x_104, %x_106
+    %45:vec2<f32> = construct %43, %44
+    store %param_1, %45
+    %x_109:f32 = call %cross2d_vf2_vf2_, %param, %param_1
+    store %pab, %x_109
+    %x_111:f32 = load_vector_element %p, 0u
+    %x_113:f32 = load_vector_element %b_1, 0u
+    %x_116:f32 = load_vector_element %p, 1u
+    %x_118:f32 = load_vector_element %b_1, 1u
+    %x_122:f32 = load_vector_element %c, 0u
+    %x_124:f32 = load_vector_element %b_1, 0u
+    %x_127:f32 = load_vector_element %c, 1u
+    %x_129:f32 = load_vector_element %b_1, 1u
+    %55:f32 = sub %x_111, %x_113
+    %56:f32 = sub %x_116, %x_118
+    %57:vec2<f32> = construct %55, %56
+    store %param_2, %57
+    %58:f32 = sub %x_122, %x_124
+    %59:f32 = sub %x_127, %x_129
+    %60:vec2<f32> = construct %58, %59
+    store %param_3, %60
+    %x_132:f32 = call %cross2d_vf2_vf2_, %param_2, %param_3
+    store %pbc, %x_132
+    %x_133:f32 = load %pab
+    %x_135:f32 = load %pbc
+    %64:bool = lt %x_133, 0.0f
+    %65:bool = lt %x_135, 0.0f
+    %x_137:bool = and %64, %65
+    store %x_146_phi, %x_137
+    %67:bool = eq %x_137, false
+    if %67 [t: %b4] {  # if_1
+      %b4 = block {  # true
+        %x_141:f32 = load %pab
+        %x_143:f32 = load %pbc
+        %70:bool = gte %x_141, 0.0f
+        %71:bool = gte %x_143, 0.0f
+        %72:bool = and %70, %71
+        store %x_145, %72
+        %73:bool = load %x_145
+        store %x_146_phi, %73
+        exit_if  # if_1
+      }
+    }
+    %x_146:bool = load %x_146_phi
+    %75:bool = eq %x_146, false
+    if %75 [t: %b5] {  # if_2
+      %b5 = block {  # true
+        ret 0i
+      }
+    }
+    %x_151:f32 = load_vector_element %p, 0u
+    %x_153:f32 = load_vector_element %c, 0u
+    %x_156:f32 = load_vector_element %p, 1u
+    %x_158:f32 = load_vector_element %c, 1u
+    %x_162:f32 = load_vector_element %a_1, 0u
+    %x_164:f32 = load_vector_element %c, 0u
+    %x_167:f32 = load_vector_element %a_1, 1u
+    %x_169:f32 = load_vector_element %c, 1u
+    %84:f32 = sub %x_151, %x_153
+    %85:f32 = sub %x_156, %x_158
+    %86:vec2<f32> = construct %84, %85
+    store %param_4, %86
+    %87:f32 = sub %x_162, %x_164
+    %88:f32 = sub %x_167, %x_169
+    %89:vec2<f32> = construct %87, %88
+    store %param_5, %89
+    %x_172:f32 = call %cross2d_vf2_vf2_, %param_4, %param_5
+    store %pca, %x_172
+    %x_173:f32 = load %pab
+    %x_175:f32 = load %pca
+    %93:bool = lt %x_173, 0.0f
+    %94:bool = lt %x_175, 0.0f
+    %x_177:bool = and %93, %94
+    store %x_186_phi, %x_177
+    %96:bool = eq %x_177, false
+    if %96 [t: %b6] {  # if_3
+      %b6 = block {  # true
+        %x_181:f32 = load %pab
+        %x_183:f32 = load %pca
+        %99:bool = gte %x_181, 0.0f
+        %100:bool = gte %x_183, 0.0f
+        %101:bool = and %99, %100
+        store %x_185, %101
+        %102:bool = load %x_185
+        store %x_186_phi, %102
+        exit_if  # if_3
+      }
+    }
+    %x_186:bool = load %x_186_phi
+    %104:bool = eq %x_186, false
+    if %104 [t: %b7] {  # if_4
+      %b7 = block {  # true
+        ret 0i
+      }
+    }
+    ret 1i
+  }
+}
+%main_1 = func():void -> %b8 {
+  %b8 = block {
+    %pos:ptr<function, vec2<f32>, read_write> = var
+    %param_6:ptr<function, vec2<f32>, read_write> = var
+    %param_7:ptr<function, vec2<f32>, read_write> = var
+    %param_8:ptr<function, vec2<f32>, read_write> = var
+    %param_9:ptr<function, vec2<f32>, read_write> = var
+    %x_63:vec4<f32> = load %gl_FragCoord
+    %112:ptr<uniform, vec2<f32>, read> = access %x_24, 0u
+    %x_66:vec2<f32> = load %112
+    %114:f32 = access %x_63, 0u
+    %115:f32 = access %x_63, 1u
+    %116:vec2<f32> = construct %114, %115
+    %117:vec2<f32> = div %116, %x_66
+    store %pos, %117
+    %x_68:vec2<f32> = load %pos
+    store %param_6, %x_68
+    store %param_7, vec2<f32>(0.69999998807907104492f, 0.30000001192092895508f)
+    store %param_8, vec2<f32>(0.5f, 0.89999997615814208984f)
+    store %param_9, vec2<f32>(0.10000000149011611938f, 0.40000000596046447754f)
+    %x_69:i32 = call %pointInTriangle_vf2_vf2_vf2_vf2_, %param_6, %param_7, %param_8, %param_9
+    %120:bool = eq %x_69, 1i
+    if %120 [t: %b9, f: %b10] {  # if_5
+      %b9 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_5
+      }
+      %b10 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b11 {
+  %b11 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %123:void = call %main_1
+    %124:vec4<f32> = load %x_GLF_color
+    %125:main_out = construct %124
+    ret %125
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..dfa456a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.spvasm.expected.ir.msl
@@ -0,0 +1,198 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_17:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%pointInTriangle_vf2_vf2_vf2_vf2_ = func(%p:ptr<function, vec2<f32>, read_write>, %a:ptr<function, vec2<f32>, read_write>, %b:ptr<function, vec2<f32>, read_write>, %c:ptr<function, vec2<f32>, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %x_66:ptr<function, f32, read_write> = var
+    %x_67:ptr<function, f32, read_write> = var
+    %x_68:ptr<function, f32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec2<f32>, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %param_3:ptr<function, vec2<f32>, read_write> = var
+    %param_4:ptr<function, vec2<f32>, read_write> = var
+    %param_5:ptr<function, vec2<f32>, read_write> = var
+    %x_135:ptr<function, bool, read_write> = var
+    %x_136:ptr<function, bool, read_write> = var
+    %x_172:ptr<function, bool, read_write> = var
+    %x_173:ptr<function, bool, read_write> = var
+    %x_81:f32 = load_vector_element %b, 0u
+    %x_82:f32 = load_vector_element %a, 0u
+    %x_85:f32 = load_vector_element %b, 1u
+    %x_86:f32 = load_vector_element %a, 1u
+    %26:f32 = load_vector_element %p, 0u
+    %27:f32 = load_vector_element %a, 0u
+    %28:f32 = sub %26, %27
+    %29:f32 = load_vector_element %p, 1u
+    %30:f32 = load_vector_element %a, 1u
+    %31:f32 = sub %29, %30
+    %32:vec2<f32> = construct %28, %31
+    store %param, %32
+    %33:f32 = sub %x_81, %x_82
+    %34:f32 = sub %x_85, %x_86
+    %35:vec2<f32> = construct %33, %34
+    store %param_1, %35
+    %36:f32 = load_vector_element %param, 0u
+    %37:f32 = load_vector_element %param_1, 1u
+    %38:f32 = mul %36, %37
+    %39:f32 = load_vector_element %param_1, 0u
+    %40:f32 = load_vector_element %param, 1u
+    %41:f32 = mul %39, %40
+    %x_99:f32 = sub %38, %41
+    store %x_68, %x_99
+    %x_108:f32 = load_vector_element %c, 0u
+    %x_109:f32 = load_vector_element %b, 0u
+    %x_112:f32 = load_vector_element %c, 1u
+    %x_113:f32 = load_vector_element %b, 1u
+    %47:f32 = load_vector_element %p, 0u
+    %48:f32 = load_vector_element %b, 0u
+    %49:f32 = sub %47, %48
+    %50:f32 = load_vector_element %p, 1u
+    %51:f32 = load_vector_element %b, 1u
+    %52:f32 = sub %50, %51
+    %53:vec2<f32> = construct %49, %52
+    store %param_2, %53
+    %54:f32 = sub %x_108, %x_109
+    %55:f32 = sub %x_112, %x_113
+    %56:vec2<f32> = construct %54, %55
+    store %param_3, %56
+    %57:f32 = load_vector_element %param_2, 0u
+    %58:f32 = load_vector_element %param_3, 1u
+    %59:f32 = mul %57, %58
+    %60:f32 = load_vector_element %param_3, 0u
+    %61:f32 = load_vector_element %param_2, 1u
+    %62:f32 = mul %60, %61
+    %x_126:f32 = sub %59, %62
+    store %x_67, %x_126
+    %x_127:bool = lt %x_99, 0.0f
+    %65:bool = lt %x_126, 0.0f
+    %x_129:bool = and %x_127, %65
+    store %x_136, %x_129
+    %67:bool = eq %x_129, false
+    if %67 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %68:bool = gte %x_99, 0.0f
+        %69:bool = gte %x_126, 0.0f
+        %70:bool = and %68, %69
+        store %x_135, %70
+        %71:bool = load %x_135
+        store %x_136, %71
+        exit_if  # if_1
+      }
+    }
+    %72:bool = load %x_136
+    %73:bool = eq %72, false
+    if %73 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        ret 0i
+      }
+    }
+    %x_147:f32 = load_vector_element %a, 0u
+    %x_148:f32 = load_vector_element %c, 0u
+    %x_150:f32 = load_vector_element %a, 1u
+    %x_151:f32 = load_vector_element %c, 1u
+    %78:f32 = load_vector_element %p, 0u
+    %79:f32 = load_vector_element %c, 0u
+    %80:f32 = sub %78, %79
+    %81:f32 = load_vector_element %p, 1u
+    %82:f32 = load_vector_element %c, 1u
+    %83:f32 = sub %81, %82
+    %84:vec2<f32> = construct %80, %83
+    store %param_4, %84
+    %85:f32 = sub %x_147, %x_148
+    %86:f32 = sub %x_150, %x_151
+    %87:vec2<f32> = construct %85, %86
+    store %param_5, %87
+    %88:f32 = load_vector_element %param_4, 0u
+    %89:f32 = load_vector_element %param_5, 1u
+    %90:f32 = mul %88, %89
+    %91:f32 = load_vector_element %param_5, 0u
+    %92:f32 = load_vector_element %param_4, 1u
+    %93:f32 = mul %91, %92
+    %x_164:f32 = sub %90, %93
+    store %x_66, %x_164
+    %95:bool = lt %x_164, 0.0f
+    %x_166:bool = and %x_127, %95
+    store %x_173, %x_166
+    %97:bool = eq %x_166, false
+    if %97 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        %98:bool = gte %x_99, 0.0f
+        %99:bool = gte %x_164, 0.0f
+        %100:bool = and %98, %99
+        store %x_172, %100
+        %101:bool = load %x_172
+        store %x_173, %101
+        exit_if  # if_3
+      }
+    }
+    %102:bool = load %x_173
+    %103:bool = eq %102, false
+    if %103 [t: %b6] {  # if_4
+      %b6 = block {  # true
+        ret 0i
+      }
+    }
+    ret 1i
+  }
+}
+%main_1 = func():void -> %b7 {
+  %b7 = block {
+    %param_6:ptr<function, vec2<f32>, read_write> = var
+    %param_7:ptr<function, vec2<f32>, read_write> = var
+    %param_8:ptr<function, vec2<f32>, read_write> = var
+    %param_9:ptr<function, vec2<f32>, read_write> = var
+    %109:vec4<f32> = load %gl_FragCoord
+    %110:vec2<f32> = swizzle %109, xy
+    %111:ptr<uniform, vec2<f32>, read> = access %x_17, 0u
+    %112:vec2<f32> = load %111
+    %113:vec2<f32> = div %110, %112
+    store %param_6, %113
+    store %param_7, vec2<f32>(0.69999998807907104492f, 0.30000001192092895508f)
+    store %param_8, vec2<f32>(0.5f, 0.89999997615814208984f)
+    store %param_9, vec2<f32>(0.10000000149011611938f, 0.40000000596046447754f)
+    %x_60:i32 = call %pointInTriangle_vf2_vf2_vf2_vf2_, %param_6, %param_7, %param_8, %param_9
+    %115:bool = eq %x_60, 1i
+    if %115 [t: %b8, f: %b9] {  # if_5
+      %b8 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_5
+      }
+      %b9 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b10 {
+  %b10 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %118:void = call %main_1
+    %119:vec4<f32> = load %x_GLF_color
+    %120:main_out = construct %119
+    ret %120
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4e9bd9c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl.expected.ir.msl
@@ -0,0 +1,200 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_17:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%pointInTriangle_vf2_vf2_vf2_vf2_ = func(%p:ptr<function, vec2<f32>, read_write>, %a:ptr<function, vec2<f32>, read_write>, %b:ptr<function, vec2<f32>, read_write>, %c:ptr<function, vec2<f32>, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %x_66:ptr<function, f32, read_write> = var
+    %x_67:ptr<function, f32, read_write> = var
+    %x_68:ptr<function, f32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec2<f32>, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %param_3:ptr<function, vec2<f32>, read_write> = var
+    %param_4:ptr<function, vec2<f32>, read_write> = var
+    %param_5:ptr<function, vec2<f32>, read_write> = var
+    %x_135:ptr<function, bool, read_write> = var
+    %x_172:ptr<function, bool, read_write> = var
+    %x_136_phi:ptr<function, bool, read_write> = var
+    %x_173_phi:ptr<function, bool, read_write> = var
+    %x_70:f32 = load_vector_element %p, 0u
+    %x_72:f32 = load_vector_element %a, 0u
+    %x_75:f32 = load_vector_element %p, 1u
+    %x_77:f32 = load_vector_element %a, 1u
+    %x_81:f32 = load_vector_element %b, 0u
+    %x_82:f32 = load_vector_element %a, 0u
+    %x_85:f32 = load_vector_element %b, 1u
+    %x_86:f32 = load_vector_element %a, 1u
+    %30:f32 = sub %x_70, %x_72
+    %31:f32 = sub %x_75, %x_77
+    %32:vec2<f32> = construct %30, %31
+    store %param, %32
+    %33:f32 = sub %x_81, %x_82
+    %34:f32 = sub %x_85, %x_86
+    %35:vec2<f32> = construct %33, %34
+    store %param_1, %35
+    %x_90:f32 = load_vector_element %param, 0u
+    %x_92:f32 = load_vector_element %param_1, 1u
+    %x_95:f32 = load_vector_element %param_1, 0u
+    %x_97:f32 = load_vector_element %param, 1u
+    %40:f32 = mul %x_90, %x_92
+    %41:f32 = mul %x_95, %x_97
+    %x_99:f32 = sub %40, %41
+    store %x_68, %x_99
+    %x_100:f32 = load_vector_element %p, 0u
+    %x_101:f32 = load_vector_element %b, 0u
+    %x_103:f32 = load_vector_element %p, 1u
+    %x_104:f32 = load_vector_element %b, 1u
+    %x_108:f32 = load_vector_element %c, 0u
+    %x_109:f32 = load_vector_element %b, 0u
+    %x_112:f32 = load_vector_element %c, 1u
+    %x_113:f32 = load_vector_element %b, 1u
+    %51:f32 = sub %x_100, %x_101
+    %52:f32 = sub %x_103, %x_104
+    %53:vec2<f32> = construct %51, %52
+    store %param_2, %53
+    %54:f32 = sub %x_108, %x_109
+    %55:f32 = sub %x_112, %x_113
+    %56:vec2<f32> = construct %54, %55
+    store %param_3, %56
+    %x_117:f32 = load_vector_element %param_2, 0u
+    %x_119:f32 = load_vector_element %param_3, 1u
+    %x_122:f32 = load_vector_element %param_3, 0u
+    %x_124:f32 = load_vector_element %param_2, 1u
+    %61:f32 = mul %x_117, %x_119
+    %62:f32 = mul %x_122, %x_124
+    %x_126:f32 = sub %61, %62
+    store %x_67, %x_126
+    %x_127:bool = lt %x_99, 0.0f
+    %65:bool = lt %x_126, 0.0f
+    %x_129:bool = and %x_127, %65
+    store %x_136_phi, %x_129
+    %67:bool = eq %x_129, false
+    if %67 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %68:bool = gte %x_99, 0.0f
+        %69:bool = gte %x_126, 0.0f
+        %70:bool = and %68, %69
+        store %x_135, %70
+        %71:bool = load %x_135
+        store %x_136_phi, %71
+        exit_if  # if_1
+      }
+    }
+    %x_136:bool = load %x_136_phi
+    %73:bool = eq %x_136, false
+    if %73 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        ret 0i
+      }
+    }
+    %x_140:f32 = load_vector_element %p, 0u
+    %x_141:f32 = load_vector_element %c, 0u
+    %x_143:f32 = load_vector_element %p, 1u
+    %x_144:f32 = load_vector_element %c, 1u
+    %x_147:f32 = load_vector_element %a, 0u
+    %x_148:f32 = load_vector_element %c, 0u
+    %x_150:f32 = load_vector_element %a, 1u
+    %x_151:f32 = load_vector_element %c, 1u
+    %82:f32 = sub %x_140, %x_141
+    %83:f32 = sub %x_143, %x_144
+    %84:vec2<f32> = construct %82, %83
+    store %param_4, %84
+    %85:f32 = sub %x_147, %x_148
+    %86:f32 = sub %x_150, %x_151
+    %87:vec2<f32> = construct %85, %86
+    store %param_5, %87
+    %x_155:f32 = load_vector_element %param_4, 0u
+    %x_157:f32 = load_vector_element %param_5, 1u
+    %x_160:f32 = load_vector_element %param_5, 0u
+    %x_162:f32 = load_vector_element %param_4, 1u
+    %92:f32 = mul %x_155, %x_157
+    %93:f32 = mul %x_160, %x_162
+    %x_164:f32 = sub %92, %93
+    store %x_66, %x_164
+    %95:bool = lt %x_164, 0.0f
+    %x_166:bool = and %x_127, %95
+    store %x_173_phi, %x_166
+    %97:bool = eq %x_166, false
+    if %97 [t: %b5] {  # if_3
+      %b5 = block {  # true
+        %98:bool = gte %x_99, 0.0f
+        %99:bool = gte %x_164, 0.0f
+        %100:bool = and %98, %99
+        store %x_172, %100
+        %101:bool = load %x_172
+        store %x_173_phi, %101
+        exit_if  # if_3
+      }
+    }
+    %x_173:bool = load %x_173_phi
+    %103:bool = eq %x_173, false
+    if %103 [t: %b6] {  # if_4
+      %b6 = block {  # true
+        ret 0i
+      }
+    }
+    ret 1i
+  }
+}
+%main_1 = func():void -> %b7 {
+  %b7 = block {
+    %param_6:ptr<function, vec2<f32>, read_write> = var
+    %param_7:ptr<function, vec2<f32>, read_write> = var
+    %param_8:ptr<function, vec2<f32>, read_write> = var
+    %param_9:ptr<function, vec2<f32>, read_write> = var
+    %x_55:vec4<f32> = load %gl_FragCoord
+    %110:ptr<uniform, vec2<f32>, read> = access %x_17, 0u
+    %x_58:vec2<f32> = load %110
+    %112:f32 = access %x_55, 0u
+    %113:f32 = access %x_55, 1u
+    %114:vec2<f32> = construct %112, %113
+    %115:vec2<f32> = div %114, %x_58
+    store %param_6, %115
+    store %param_7, vec2<f32>(0.69999998807907104492f, 0.30000001192092895508f)
+    store %param_8, vec2<f32>(0.5f, 0.89999997615814208984f)
+    store %param_9, vec2<f32>(0.10000000149011611938f, 0.40000000596046447754f)
+    %x_60:i32 = call %pointInTriangle_vf2_vf2_vf2_vf2_, %param_6, %param_7, %param_8, %param_9
+    %117:bool = eq %x_60, 1i
+    if %117 [t: %b8, f: %b9] {  # if_5
+      %b8 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_5
+      }
+      %b9 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b10 {
+  %b10 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %120:void = call %main_1
+    %121:vec4<f32> = load %x_GLF_color
+    %122:main_out = construct %121
+    ret %122
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f9e8d82
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.spvasm.expected.ir.msl
@@ -0,0 +1,270 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_11:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_19:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%pointInTriangle_vf2_vf2_vf2_vf2_ = func(%p:ptr<function, vec2<f32>, read_write>, %a:ptr<function, vec2<f32>, read_write>, %b:ptr<function, vec2<f32>, read_write>, %c:ptr<function, vec2<f32>, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %x_78:ptr<function, f32, read_write> = var
+    %x_79:ptr<function, f32, read_write> = var
+    %x_80:ptr<function, f32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec2<f32>, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %param_3:ptr<function, vec2<f32>, read_write> = var
+    %param_4:ptr<function, vec2<f32>, read_write> = var
+    %param_5:ptr<function, vec2<f32>, read_write> = var
+    %x_147:ptr<function, bool, read_write> = var
+    %x_148:ptr<function, bool, read_write> = var
+    %x_203:ptr<function, bool, read_write> = var
+    %x_204:ptr<function, bool, read_write> = var
+    %x_93:f32 = load_vector_element %b, 0u
+    %x_94:f32 = load_vector_element %a, 0u
+    %x_97:f32 = load_vector_element %b, 1u
+    %x_98:f32 = load_vector_element %a, 1u
+    %27:f32 = load_vector_element %p, 0u
+    %28:f32 = load_vector_element %a, 0u
+    %29:f32 = sub %27, %28
+    %30:f32 = load_vector_element %p, 1u
+    %31:f32 = load_vector_element %a, 1u
+    %32:f32 = sub %30, %31
+    %33:vec2<f32> = construct %29, %32
+    store %param, %33
+    %34:f32 = sub %x_93, %x_94
+    %35:f32 = sub %x_97, %x_98
+    %36:vec2<f32> = construct %34, %35
+    store %param_1, %36
+    %37:f32 = load_vector_element %param, 0u
+    %38:f32 = load_vector_element %param_1, 1u
+    %39:f32 = mul %37, %38
+    %40:f32 = load_vector_element %param_1, 0u
+    %41:f32 = load_vector_element %param, 1u
+    %42:f32 = mul %40, %41
+    %x_111:f32 = sub %39, %42
+    store %x_80, %x_111
+    %x_120:f32 = load_vector_element %c, 0u
+    %x_121:f32 = load_vector_element %b, 0u
+    %x_124:f32 = load_vector_element %c, 1u
+    %x_125:f32 = load_vector_element %b, 1u
+    %48:f32 = load_vector_element %p, 0u
+    %49:f32 = load_vector_element %b, 0u
+    %50:f32 = sub %48, %49
+    %51:f32 = load_vector_element %p, 1u
+    %52:f32 = load_vector_element %b, 1u
+    %53:f32 = sub %51, %52
+    %54:vec2<f32> = construct %50, %53
+    store %param_2, %54
+    %55:f32 = sub %x_120, %x_121
+    %56:f32 = sub %x_124, %x_125
+    %57:vec2<f32> = construct %55, %56
+    store %param_3, %57
+    %58:f32 = load_vector_element %param_2, 0u
+    %59:f32 = load_vector_element %param_3, 1u
+    %60:f32 = mul %58, %59
+    %61:f32 = load_vector_element %param_3, 0u
+    %62:f32 = load_vector_element %param_2, 1u
+    %63:f32 = mul %61, %62
+    %x_138:f32 = sub %60, %63
+    store %x_79, %x_138
+    %x_139:bool = lt %x_111, 0.0f
+    %66:bool = lt %x_138, 0.0f
+    %x_141:bool = and %x_139, %66
+    store %x_148, %x_141
+    %68:bool = eq %x_141, false
+    if %68 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %69:bool = gte %x_111, 0.0f
+        %70:bool = gte %x_138, 0.0f
+        %71:bool = and %69, %70
+        store %x_147, %71
+        %72:bool = load %x_147
+        store %x_148, %72
+        exit_if  # if_1
+      }
+    }
+    %x_153:ptr<function, i32, read_write> = var
+    %74:bool = load %x_148
+    %75:bool = eq %74, false
+    if %75 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        store %x_153, 0i
+        loop [b: %b5, c: %b6] {  # loop_1
+          %b5 = block {  # body
+            %x_164:ptr<function, i32, read_write> = var
+            %x_154:ptr<function, i32, read_write> = var
+            %78:ptr<uniform, vec2<f32>, read> = access %x_11, 0u
+            %79:f32 = load_vector_element %78, 1u
+            %x_160:i32 = convert %79
+            %81:i32 = load %x_153
+            %82:bool = lt %81, %x_160
+            if %82 [t: %b7, f: %b8] {  # if_3
+              %b7 = block {  # true
+                exit_if  # if_3
+              }
+              %b8 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            store %x_GLF_color, vec4<f32>(1.0f)
+            store %x_164, 0i
+            loop [b: %b9, c: %b10] {  # loop_2
+              %b9 = block {  # body
+                %x_165:ptr<function, i32, read_write> = var
+                %84:i32 = load %x_164
+                %85:bool = lt %84, %x_160
+                if %85 [t: %b11, f: %b12] {  # if_4
+                  %b11 = block {  # true
+                    exit_if  # if_4
+                  }
+                  %b12 = block {  # false
+                    exit_loop  # loop_2
+                  }
+                }
+                store %x_GLF_color, vec4<f32>(1.0f)
+                continue %b10
+              }
+              %b10 = block {  # continuing
+                %86:i32 = load %x_164
+                %87:i32 = add %86, 1i
+                store %x_165, %87
+                %88:i32 = load %x_165
+                store %x_164, %88
+                next_iteration %b9
+              }
+            }
+            continue %b6
+          }
+          %b6 = block {  # continuing
+            %89:i32 = load %x_153
+            %90:i32 = add %89, 1i
+            store %x_154, %90
+            %91:i32 = load %x_154
+            store %x_153, %91
+            next_iteration %b5
+          }
+        }
+        ret 0i
+      }
+    }
+    %x_178:f32 = load_vector_element %a, 0u
+    %x_179:f32 = load_vector_element %c, 0u
+    %x_181:f32 = load_vector_element %a, 1u
+    %x_182:f32 = load_vector_element %c, 1u
+    %96:f32 = load_vector_element %p, 0u
+    %97:f32 = load_vector_element %c, 0u
+    %98:f32 = sub %96, %97
+    %99:f32 = load_vector_element %p, 1u
+    %100:f32 = load_vector_element %c, 1u
+    %101:f32 = sub %99, %100
+    %102:vec2<f32> = construct %98, %101
+    store %param_4, %102
+    %103:f32 = sub %x_178, %x_179
+    %104:f32 = sub %x_181, %x_182
+    %105:vec2<f32> = construct %103, %104
+    store %param_5, %105
+    %106:f32 = load_vector_element %param_4, 0u
+    %107:f32 = load_vector_element %param_5, 1u
+    %108:f32 = mul %106, %107
+    %109:f32 = load_vector_element %param_5, 0u
+    %110:f32 = load_vector_element %param_4, 1u
+    %111:f32 = mul %109, %110
+    %x_195:f32 = sub %108, %111
+    store %x_78, %x_195
+    %113:bool = lt %x_195, 0.0f
+    %x_197:bool = and %x_139, %113
+    store %x_204, %x_197
+    %115:bool = eq %x_197, false
+    if %115 [t: %b13] {  # if_5
+      %b13 = block {  # true
+        %116:bool = gte %x_111, 0.0f
+        %117:bool = gte %x_195, 0.0f
+        %118:bool = and %116, %117
+        store %x_203, %118
+        %119:bool = load %x_203
+        store %x_204, %119
+        exit_if  # if_5
+      }
+    }
+    %120:bool = load %x_204
+    %121:bool = eq %120, false
+    if %121 [t: %b14] {  # if_6
+      %b14 = block {  # true
+        ret 0i
+      }
+    }
+    ret 1i
+  }
+}
+%main_1 = func():void -> %b15 {
+  %b15 = block {
+    %param_6:ptr<function, vec2<f32>, read_write> = var
+    %param_7:ptr<function, vec2<f32>, read_write> = var
+    %param_8:ptr<function, vec2<f32>, read_write> = var
+    %param_9:ptr<function, vec2<f32>, read_write> = var
+    %127:vec4<f32> = load %gl_FragCoord
+    %128:vec2<f32> = swizzle %127, xy
+    %129:ptr<uniform, vec2<f32>, read> = access %x_19, 0u
+    %130:vec2<f32> = load %129
+    %131:vec2<f32> = div %128, %130
+    store %param_6, %131
+    store %param_7, vec2<f32>(0.69999998807907104492f, 0.30000001192092895508f)
+    store %param_8, vec2<f32>(0.5f, 0.89999997615814208984f)
+    store %param_9, vec2<f32>(0.10000000149011611938f, 0.40000000596046447754f)
+    %x_65:i32 = call %pointInTriangle_vf2_vf2_vf2_vf2_, %param_6, %param_7, %param_8, %param_9
+    %133:bool = eq %x_65, 1i
+    if %133 [t: %b16, f: %b17] {  # if_7
+      %b16 = block {  # true
+        %134:ptr<uniform, vec2<f32>, read> = access %x_11, 0u
+        %135:f32 = load_vector_element %134, 1u
+        %136:ptr<uniform, vec2<f32>, read> = access %x_11, 0u
+        %137:f32 = load_vector_element %136, 0u
+        %138:bool = gte %135, %137
+        if %138 [t: %b18] {  # if_8
+          %b18 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+            exit_if  # if_8
+          }
+        }
+        exit_if  # if_7
+      }
+      %b17 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b19 {
+  %b19 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %141:void = call %main_1
+    %142:vec4<f32> = load %x_GLF_color
+    %143:main_out = construct %142
+    ret %143
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3cbc44a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl.expected.ir.msl
@@ -0,0 +1,270 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf1 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+buf0 = struct @align(8) {
+  resolution:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_11:ptr<uniform, buf1, read> = var @binding_point(0, 1)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_19:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%pointInTriangle_vf2_vf2_vf2_vf2_ = func(%p:ptr<function, vec2<f32>, read_write>, %a:ptr<function, vec2<f32>, read_write>, %b:ptr<function, vec2<f32>, read_write>, %c:ptr<function, vec2<f32>, read_write>):i32 -> %b2 {
+  %b2 = block {
+    %x_78:ptr<function, f32, read_write> = var
+    %x_79:ptr<function, f32, read_write> = var
+    %x_80:ptr<function, f32, read_write> = var
+    %param:ptr<function, vec2<f32>, read_write> = var
+    %param_1:ptr<function, vec2<f32>, read_write> = var
+    %param_2:ptr<function, vec2<f32>, read_write> = var
+    %param_3:ptr<function, vec2<f32>, read_write> = var
+    %param_4:ptr<function, vec2<f32>, read_write> = var
+    %param_5:ptr<function, vec2<f32>, read_write> = var
+    %x_147:ptr<function, bool, read_write> = var
+    %x_203:ptr<function, bool, read_write> = var
+    %x_148_phi:ptr<function, bool, read_write> = var
+    %x_204_phi:ptr<function, bool, read_write> = var
+    %x_82:f32 = load_vector_element %p, 0u
+    %x_84:f32 = load_vector_element %a, 0u
+    %x_87:f32 = load_vector_element %p, 1u
+    %x_89:f32 = load_vector_element %a, 1u
+    %x_93:f32 = load_vector_element %b, 0u
+    %x_94:f32 = load_vector_element %a, 0u
+    %x_97:f32 = load_vector_element %b, 1u
+    %x_98:f32 = load_vector_element %a, 1u
+    %31:f32 = sub %x_82, %x_84
+    %32:f32 = sub %x_87, %x_89
+    %33:vec2<f32> = construct %31, %32
+    store %param, %33
+    %34:f32 = sub %x_93, %x_94
+    %35:f32 = sub %x_97, %x_98
+    %36:vec2<f32> = construct %34, %35
+    store %param_1, %36
+    %x_102:f32 = load_vector_element %param, 0u
+    %x_104:f32 = load_vector_element %param_1, 1u
+    %x_107:f32 = load_vector_element %param_1, 0u
+    %x_109:f32 = load_vector_element %param, 1u
+    %41:f32 = mul %x_102, %x_104
+    %42:f32 = mul %x_107, %x_109
+    %x_111:f32 = sub %41, %42
+    store %x_80, %x_111
+    %x_112:f32 = load_vector_element %p, 0u
+    %x_113:f32 = load_vector_element %b, 0u
+    %x_115:f32 = load_vector_element %p, 1u
+    %x_116:f32 = load_vector_element %b, 1u
+    %x_120:f32 = load_vector_element %c, 0u
+    %x_121:f32 = load_vector_element %b, 0u
+    %x_124:f32 = load_vector_element %c, 1u
+    %x_125:f32 = load_vector_element %b, 1u
+    %52:f32 = sub %x_112, %x_113
+    %53:f32 = sub %x_115, %x_116
+    %54:vec2<f32> = construct %52, %53
+    store %param_2, %54
+    %55:f32 = sub %x_120, %x_121
+    %56:f32 = sub %x_124, %x_125
+    %57:vec2<f32> = construct %55, %56
+    store %param_3, %57
+    %x_129:f32 = load_vector_element %param_2, 0u
+    %x_131:f32 = load_vector_element %param_3, 1u
+    %x_134:f32 = load_vector_element %param_3, 0u
+    %x_136:f32 = load_vector_element %param_2, 1u
+    %62:f32 = mul %x_129, %x_131
+    %63:f32 = mul %x_134, %x_136
+    %x_138:f32 = sub %62, %63
+    store %x_79, %x_138
+    %x_139:bool = lt %x_111, 0.0f
+    %66:bool = lt %x_138, 0.0f
+    %x_141:bool = and %x_139, %66
+    store %x_148_phi, %x_141
+    %68:bool = eq %x_141, false
+    if %68 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %69:bool = gte %x_111, 0.0f
+        %70:bool = gte %x_138, 0.0f
+        %71:bool = and %69, %70
+        store %x_147, %71
+        %72:bool = load %x_147
+        store %x_148_phi, %72
+        exit_if  # if_1
+      }
+    }
+    %x_153_phi:ptr<function, i32, read_write> = var
+    %x_148:bool = load %x_148_phi
+    %75:bool = eq %x_148, false
+    if %75 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        store %x_153_phi, 0i
+        loop [b: %b5, c: %b6] {  # loop_1
+          %b5 = block {  # body
+            %x_154:ptr<function, i32, read_write> = var
+            %x_164_phi:ptr<function, i32, read_write> = var
+            %x_153:i32 = load %x_153_phi
+            %79:ptr<uniform, vec2<f32>, read> = access %x_11, 0u
+            %x_159:f32 = load_vector_element %79, 1u
+            %x_160:i32 = convert %x_159
+            %82:bool = lt %x_153, %x_160
+            if %82 [t: %b7, f: %b8] {  # if_3
+              %b7 = block {  # true
+                exit_if  # if_3
+              }
+              %b8 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            store %x_GLF_color, vec4<f32>(1.0f)
+            store %x_164_phi, 0i
+            loop [b: %b9, c: %b10] {  # loop_2
+              %b9 = block {  # body
+                %x_165:ptr<function, i32, read_write> = var
+                %x_164:i32 = load %x_164_phi
+                %85:bool = lt %x_164, %x_160
+                if %85 [t: %b11, f: %b12] {  # if_4
+                  %b11 = block {  # true
+                    exit_if  # if_4
+                  }
+                  %b12 = block {  # false
+                    exit_loop  # loop_2
+                  }
+                }
+                store %x_GLF_color, vec4<f32>(1.0f)
+                continue %b10
+              }
+              %b10 = block {  # continuing
+                %86:i32 = add %x_164, 1i
+                store %x_165, %86
+                %87:i32 = load %x_165
+                store %x_164_phi, %87
+                next_iteration %b9
+              }
+            }
+            continue %b6
+          }
+          %b6 = block {  # continuing
+            %88:i32 = add %x_153, 1i
+            store %x_154, %88
+            %89:i32 = load %x_154
+            store %x_153_phi, %89
+            next_iteration %b5
+          }
+        }
+        ret 0i
+      }
+    }
+    %x_171:f32 = load_vector_element %p, 0u
+    %x_172:f32 = load_vector_element %c, 0u
+    %x_174:f32 = load_vector_element %p, 1u
+    %x_175:f32 = load_vector_element %c, 1u
+    %x_178:f32 = load_vector_element %a, 0u
+    %x_179:f32 = load_vector_element %c, 0u
+    %x_181:f32 = load_vector_element %a, 1u
+    %x_182:f32 = load_vector_element %c, 1u
+    %98:f32 = sub %x_171, %x_172
+    %99:f32 = sub %x_174, %x_175
+    %100:vec2<f32> = construct %98, %99
+    store %param_4, %100
+    %101:f32 = sub %x_178, %x_179
+    %102:f32 = sub %x_181, %x_182
+    %103:vec2<f32> = construct %101, %102
+    store %param_5, %103
+    %x_186:f32 = load_vector_element %param_4, 0u
+    %x_188:f32 = load_vector_element %param_5, 1u
+    %x_191:f32 = load_vector_element %param_5, 0u
+    %x_193:f32 = load_vector_element %param_4, 1u
+    %108:f32 = mul %x_186, %x_188
+    %109:f32 = mul %x_191, %x_193
+    %x_195:f32 = sub %108, %109
+    store %x_78, %x_195
+    %111:bool = lt %x_195, 0.0f
+    %x_197:bool = and %x_139, %111
+    store %x_204_phi, %x_197
+    %113:bool = eq %x_197, false
+    if %113 [t: %b13] {  # if_5
+      %b13 = block {  # true
+        %114:bool = gte %x_111, 0.0f
+        %115:bool = gte %x_195, 0.0f
+        %116:bool = and %114, %115
+        store %x_203, %116
+        %117:bool = load %x_203
+        store %x_204_phi, %117
+        exit_if  # if_5
+      }
+    }
+    %x_204:bool = load %x_204_phi
+    %119:bool = eq %x_204, false
+    if %119 [t: %b14] {  # if_6
+      %b14 = block {  # true
+        ret 0i
+      }
+    }
+    ret 1i
+  }
+}
+%main_1 = func():void -> %b15 {
+  %b15 = block {
+    %param_6:ptr<function, vec2<f32>, read_write> = var
+    %param_7:ptr<function, vec2<f32>, read_write> = var
+    %param_8:ptr<function, vec2<f32>, read_write> = var
+    %param_9:ptr<function, vec2<f32>, read_write> = var
+    %x_60:vec4<f32> = load %gl_FragCoord
+    %126:ptr<uniform, vec2<f32>, read> = access %x_19, 0u
+    %x_63:vec2<f32> = load %126
+    %128:f32 = access %x_60, 0u
+    %129:f32 = access %x_60, 1u
+    %130:vec2<f32> = construct %128, %129
+    %131:vec2<f32> = div %130, %x_63
+    store %param_6, %131
+    store %param_7, vec2<f32>(0.69999998807907104492f, 0.30000001192092895508f)
+    store %param_8, vec2<f32>(0.5f, 0.89999997615814208984f)
+    store %param_9, vec2<f32>(0.10000000149011611938f, 0.40000000596046447754f)
+    %x_65:i32 = call %pointInTriangle_vf2_vf2_vf2_vf2_, %param_6, %param_7, %param_8, %param_9
+    %133:bool = eq %x_65, 1i
+    if %133 [t: %b16, f: %b17] {  # if_7
+      %b16 = block {  # true
+        %134:ptr<uniform, vec2<f32>, read> = access %x_11, 0u
+        %x_71:f32 = load_vector_element %134, 1u
+        %136:ptr<uniform, vec2<f32>, read> = access %x_11, 0u
+        %x_73:f32 = load_vector_element %136, 0u
+        %138:bool = gte %x_71, %x_73
+        if %138 [t: %b18] {  # if_8
+          %b18 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+            exit_if  # if_8
+          }
+        }
+        exit_if  # if_7
+      }
+      %b17 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b19 {
+  %b19 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %141:void = call %main_1
+    %142:vec4<f32> = load %x_GLF_color
+    %143:main_out = construct %142
+    ret %143
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..941c27d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm.expected.ir.msl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: struct_base = struct @align(4) {
+  data:i32 @offset(0)
+  leftIndex:i32 @offset(4)
+  rightIndex:i32 @offset(8)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %struct_array:ptr<private, array<struct_base, 3>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %index:ptr<function, i32, read_write> = var
+    store %struct_array, array<struct_base, 3>(struct_base(1i))
+    store %index, 1i
+    %6:ptr<private, i32, read_write> = access %struct_array, 1i, 2u
+    store %6, 1i
+    %7:ptr<private, i32, read_write> = access %struct_array, 1i, 1u
+    %8:i32 = load %7
+    %9:bool = eq %8, 1i
+    if %9 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %10:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %11:f32 = load_vector_element %10, 0u
+        %12:i32 = convert %11
+        %13:ptr<private, i32, read_write> = access %struct_array, %12, 2u
+        %14:i32 = load %13
+        store %index, %14
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %15:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %16:f32 = load_vector_element %15, 1u
+        %17:i32 = convert %16
+        %18:ptr<private, i32, read_write> = access %struct_array, %17, 1u
+        %19:i32 = load %18
+        store %index, %19
+        exit_if  # if_1
+      }
+    }
+    %20:ptr<private, i32, read_write> = access %struct_array, 1i, 1u
+    %21:i32 = load %20
+    %22:bool = eq %21, 1i
+    if %22 [t: %b5, f: %b6] {  # if_2
+      %b5 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b6 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %24:void = call %main_1
+    %25:vec4<f32> = load %x_GLF_color
+    %26:main_out = construct %25
+    ret %26
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..55c7eaa
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl.expected.ir.msl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: struct_base = struct @align(4) {
+  data:i32 @offset(0)
+  leftIndex:i32 @offset(4)
+  rightIndex:i32 @offset(8)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %struct_array:ptr<private, array<struct_base, 3>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %index:ptr<function, i32, read_write> = var
+    store %struct_array, array<struct_base, 3>(struct_base(1i))
+    store %index, 1i
+    %6:ptr<private, i32, read_write> = access %struct_array, 1i, 2u
+    store %6, 1i
+    %7:ptr<private, i32, read_write> = access %struct_array, 1i, 1u
+    %x_39:i32 = load %7
+    %9:bool = eq %x_39, 1i
+    if %9 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        %10:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %x_45:f32 = load_vector_element %10, 0u
+        %12:i32 = convert %x_45
+        %13:ptr<private, i32, read_write> = access %struct_array, %12, 2u
+        %x_48:i32 = load %13
+        store %index, %x_48
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %15:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %x_50:f32 = load_vector_element %15, 1u
+        %17:i32 = convert %x_50
+        %18:ptr<private, i32, read_write> = access %struct_array, %17, 1u
+        %x_53:i32 = load %18
+        store %index, %x_53
+        exit_if  # if_1
+      }
+    }
+    %20:ptr<private, i32, read_write> = access %struct_array, 1i, 1u
+    %x_55:i32 = load %20
+    %22:bool = eq %x_55, 1i
+    if %22 [t: %b5, f: %b6] {  # if_2
+      %b5 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_2
+      }
+      %b6 = block {  # false
+        store %x_GLF_color, vec4<f32>(1.0f)
+        exit_if  # if_2
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %24:void = call %main_1
+    %25:vec4<f32> = load %x_GLF_color
+    %26:main_out = construct %25
+    ret %26
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..fd518ca
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+S = struct @align(16) {
+  f0:i32 @offset(0)
+  f1:vec3<bool> @offset(16)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %ll:ptr<function, S, read_write> = var
+    %sums:ptr<function, array<f32, 9>, read_write> = var
+    store %ll, S(0i, vec3<bool>(true))
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %6:ptr<function, i32, read_write> = access %ll, 0u
+        %7:i32 = load %6
+        %8:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+        %9:f32 = load_vector_element %8, 1u
+        %10:i32 = convert %9
+        %11:bool = neq %7, %10
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %12:ptr<function, f32, read_write> = access %sums, 0i
+        store %12, 0.0f
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_13:S = load %ll
+        %x_50:S = load %ll
+        %x_51_1:ptr<function, S, read_write> = var, %x_50
+        %16:ptr<function, i32, read_write> = access %x_51_1, 0u
+        %17:i32 = access %x_13, 0u
+        %18:i32 = add %17, 1i
+        store %16, %18
+        %19:S = load %x_51_1
+        store %ll, %19
+        next_iteration %b3
+      }
+    }
+    %20:ptr<function, f32, read_write> = access %sums, 0i
+    %21:f32 = load %20
+    %x_54:vec2<f32> = construct %21
+    %23:f32 = access %x_54, 0u
+    %24:f32 = access %x_54, 1u
+    %25:vec4<f32> = construct 1.0f, %23, %24, 1.0f
+    store %x_GLF_color, %25
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %27:void = call %main_1
+    %28:vec4<f32> = load %x_GLF_color
+    %29:main_out = construct %28
+    ret %29
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b8aeaa0
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+S = struct @align(16) {
+  f0:i32 @offset(0)
+  f1:vec3<bool> @offset(16)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %ll:ptr<function, S, read_write> = var
+    %sums:ptr<function, array<f32, 9>, read_write> = var
+    store %ll, S(0i, vec3<bool>(true))
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_12:S = load %ll
+        %7:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+        %x_45:f32 = load_vector_element %7, 1u
+        %9:i32 = access %x_12, 0u
+        %10:i32 = convert %x_45
+        %11:bool = neq %9, %10
+        if %11 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %12:ptr<function, f32, read_write> = access %sums, 0i
+        store %12, 0.0f
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_13:S = load %ll
+        %x_50:S = load %ll
+        %x_51_1:ptr<function, S, read_write> = var, %x_50
+        %16:ptr<function, i32, read_write> = access %x_51_1, 0u
+        %17:i32 = access %x_13, 0u
+        %18:i32 = add %17, 1i
+        store %16, %18
+        %x_51:S = load %x_51_1
+        store %ll, %x_51
+        next_iteration %b3
+      }
+    }
+    %20:ptr<function, f32, read_write> = access %sums, 0i
+    %x_53:f32 = load %20
+    %x_54:vec2<f32> = construct %x_53, %x_53
+    %23:f32 = access %x_54, 0u
+    %24:f32 = access %x_54, 1u
+    %25:vec4<f32> = construct 1.0f, %23, %24, 1.0f
+    store %x_GLF_color, %25
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %27:void = call %main_1
+    %28:vec4<f32> = load %x_GLF_color
+    %29:main_out = construct %28
+    ret %29
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..51e0679
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,48 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  field0:vec4<f32> @offset(0)
+}
+
+S_1 = struct @align(16) {
+  field0:vec4<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_3_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_3:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, vec4<f32>, read> = access %x_5, 0u
+    %x_20:vec4<f32> = load %4
+    %x_21_1:ptr<function, S_1, read_write> = var, S_1(vec4<f32>(0.0f))
+    %7:ptr<function, vec4<f32>, read_write> = access %x_21_1, 0u
+    store %7, %x_20
+    %8:ptr<function, vec4<f32>, read_write> = access %x_21_1, 0u
+    %9:vec4<f32> = load %8
+    store %x_3, %9
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b3 {
+  %b3 = block {
+    %11:void = call %main_1
+    %12:vec4<f32> = load %x_3
+    %13:main_out = construct %12
+    ret %13
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..23ba2dd
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,48 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
+  field0:vec4<f32> @offset(0)
+}
+
+S_1 = struct @align(16) {
+  field0:vec4<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_3_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_3:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, S, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, vec4<f32>, read> = access %x_5, 0u
+    %x_20:vec4<f32> = load %4
+    %x_21_1:ptr<function, S_1, read_write> = var, S_1(vec4<f32>(0.0f))
+    %7:ptr<function, vec4<f32>, read_write> = access %x_21_1, 0u
+    store %7, %x_20
+    %x_21:S_1 = load %x_21_1
+    %9:vec4<f32> = access %x_21, 0u
+    store %x_3, %9
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b3 {
+  %b3 = block {
+    %11:void = call %main_1
+    %12:vec4<f32> = load %x_3
+    %13:main_out = construct %12
+    ret %13
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..747316c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,59 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+    %x_25:f32 = load_vector_element %4, 1u
+    %6:i32 = convert %x_25
+    switch %6 [c: (-1i, %b3), c: (default, %b4)] {  # switch_1
+      %b3 = block {  # case
+        %7:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+        %8:f32 = load_vector_element %7, 1u
+        %9:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+        %10:f32 = load_vector_element %9, 0u
+        %11:bool = gt %8, %10
+        if %11 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            discard
+            exit_if  # if_1
+          }
+        }
+        exit_switch  # switch_1
+      }
+      %b4 = block {  # case
+        exit_switch  # switch_1
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %13:void = call %main_1
+    %14:vec4<f32> = load %x_GLF_color
+    %15:main_out = construct %14
+    ret %15
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3d9e5ca
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,59 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+    %x_25:f32 = load_vector_element %4, 1u
+    %6:i32 = convert %x_25
+    switch %6 [c: (-1i, %b3), c: (default, %b4)] {  # switch_1
+      %b3 = block {  # case
+        %7:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+        %x_30:f32 = load_vector_element %7, 1u
+        %9:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+        %x_32:f32 = load_vector_element %9, 0u
+        %11:bool = gt %x_30, %x_32
+        if %11 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            discard
+            exit_if  # if_1
+          }
+        }
+        exit_switch  # switch_1
+      }
+      %b4 = block {  # case
+        exit_switch  # switch_1
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b6 {
+  %b6 = block {
+    %13:void = call %main_1
+    %14:vec4<f32> = load %x_GLF_color
+    %15:main_out = construct %14
+    ret %15
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..dc1f239
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,76 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%merge_ = func():i32 -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, f32, read> = access %x_6, 0u
+    %5:f32 = load %4
+    %6:bool = lt %5, 0.0f
+    if %6 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret 0i
+      }
+    }
+    ret 0i
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    %res:ptr<function, i32, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %9:ptr<uniform, f32, read> = access %x_6, 0u
+        %x_32:f32 = load %9
+        %11:i32 = convert %x_32
+        switch %11 [c: (0i, %b7), c: (default, %b8)] {  # switch_1
+          %b7 = block {  # case
+            ret
+          }
+          %b8 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        break_if true %b5
+      }
+    }
+    %x_8:i32 = call %merge_
+    store %res, %x_8
+    %13:i32 = load %res
+    %14:f32 = convert %13
+    %15:vec4<f32> = construct %14
+    store %x_GLF_color, %15
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %17:void = call %main_1
+    %18:vec4<f32> = load %x_GLF_color
+    %19:main_out = construct %18
+    ret %19
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4673466
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,76 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  zero:f32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%merge_ = func():i32 -> %b2 {
+  %b2 = block {
+    %4:ptr<uniform, f32, read> = access %x_6, 0u
+    %x_40:f32 = load %4
+    %6:bool = lt %x_40, 0.0f
+    if %6 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        ret 0i
+      }
+    }
+    ret 0i
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    %res:ptr<function, i32, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %9:ptr<uniform, f32, read> = access %x_6, 0u
+        %x_32:f32 = load %9
+        %11:i32 = convert %x_32
+        switch %11 [c: (0i, %b7), c: (default, %b8)] {  # switch_1
+          %b7 = block {  # case
+            ret
+          }
+          %b8 = block {  # case
+            exit_switch  # switch_1
+          }
+        }
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        break_if true %b5
+      }
+    }
+    %x_8:i32 = call %merge_
+    store %res, %x_8
+    %x_9:i32 = load %res
+    %x_36:f32 = convert %x_9
+    %15:vec4<f32> = construct %x_36, %x_36, %x_36, %x_36
+    store %x_GLF_color, %15
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %17:void = call %main_1
+    %18:vec4<f32> = load %x_GLF_color
+    %19:main_out = construct %18
+    ret %19
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2b8690e6
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Switch
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..83dd560
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,191 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %odd_index:ptr<function, i32, read_write> = var
+    %even_index:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %ll:ptr<function, i32, read_write> = var
+    %x_59:ptr<function, bool, read_write> = var
+    %x_60:ptr<function, bool, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    %11:f32 = load_vector_element %gl_FragCoord, 0u
+    %x_54:bool = lt %11, 128.0f
+    store %x_60, %x_54
+    if %x_54 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %13:f32 = load_vector_element %gl_FragCoord, 1u
+        %14:bool = lt %13, 128.0f
+        store %x_59, %14
+        %15:bool = load %x_59
+        store %x_60, %15
+        exit_if  # if_1
+      }
+    }
+    %16:bool = load %x_60
+    if %16 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        ret
+      }
+    }
+    store %odd_index, 0i
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %17:i32 = load %odd_index
+        %18:bool = lte %17, 1i
+        if %18 [t: %b7, f: %b8] {  # if_3
+          %b7 = block {  # true
+            exit_if  # if_3
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %19:f32 = load_vector_element %x_GLF_color, 0u
+        %20:f32 = add %19, 0.25f
+        store_vector_element %x_GLF_color, 0u, %20
+        %21:i32 = load %odd_index
+        %22:i32 = add %21, 1i
+        store %odd_index, %22
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        next_iteration %b5
+      }
+    }
+    store %even_index, 1i
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %23:i32 = load %even_index
+        %24:bool = gte %23, 0i
+        if %24 [t: %b11, f: %b12] {  # if_4
+          %b11 = block {  # true
+            exit_if  # if_4
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %25:f32 = load_vector_element %x_GLF_color, 0u
+        %26:f32 = add %25, 0.25f
+        store_vector_element %x_GLF_color, 0u, %26
+        %27:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %28:f32 = load_vector_element %27, 0u
+        %29:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %30:f32 = load_vector_element %29, 1u
+        %31:bool = gt %28, %30
+        if %31 [t: %b13] {  # if_5
+          %b13 = block {  # true
+            continue %b10
+          }
+        }
+        %32:i32 = load %even_index
+        %33:bool = gte %32, 1i
+        if %33 [t: %b14] {  # if_6
+          %b14 = block {  # true
+            discard
+            exit_if  # if_6
+          }
+        }
+        store %j, 1i
+        loop [b: %b15, c: %b16] {  # loop_3
+          %b15 = block {  # body
+            if true [t: %b17, f: %b18] {  # if_7
+              %b17 = block {  # true
+                exit_if  # if_7
+              }
+              %b18 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %34:i32 = load %ll
+            %35:bool = gte %34, 3i
+            if %35 [t: %b19] {  # if_8
+              %b19 = block {  # true
+                exit_loop  # loop_3
+              }
+            }
+            %36:i32 = load %ll
+            %37:i32 = add %36, 1i
+            store %ll, %37
+            %38:i32 = load %j
+            %39:u32 = bitcast %38
+            %40:bool = lt %39, 1u
+            if %40 [t: %b20] {  # if_9
+              %b20 = block {  # true
+                continue %b16
+              }
+            }
+            %41:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+            %42:f32 = load_vector_element %41, 0u
+            %43:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+            %44:f32 = load_vector_element %43, 1u
+            %45:bool = gt %42, %44
+            if %45 [t: %b21] {  # if_10
+              %b21 = block {  # true
+                exit_loop  # loop_3
+              }
+            }
+            continue %b16
+          }
+          %b16 = block {  # continuing
+            %46:i32 = load %j
+            %47:i32 = add %46, 1i
+            store %j, %47
+            next_iteration %b15
+          }
+        }
+        %48:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %49:f32 = load_vector_element %48, 0u
+        %50:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %51:f32 = load_vector_element %50, 1u
+        %52:bool = gt %49, %51
+        if %52 [t: %b22] {  # if_11
+          %b22 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f)
+            exit_if  # if_11
+          }
+        }
+        %53:i32 = load %even_index
+        %54:i32 = sub %53, 1i
+        store %even_index, %54
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b23 {
+  %b23 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %57:void = call %main_1
+    %58:vec4<f32> = load %x_GLF_color
+    %59:main_out = construct %58
+    ret %59
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..243c928
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,191 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %odd_index:ptr<function, i32, read_write> = var
+    %even_index:ptr<function, i32, read_write> = var
+    %j:ptr<function, i32, read_write> = var
+    %ll:ptr<function, i32, read_write> = var
+    %x_59:ptr<function, bool, read_write> = var
+    %x_60_phi:ptr<function, bool, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    %x_53:f32 = load_vector_element %gl_FragCoord, 0u
+    %x_54:bool = lt %x_53, 128.0f
+    store %x_60_phi, %x_54
+    if %x_54 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_58:f32 = load_vector_element %gl_FragCoord, 1u
+        %14:bool = lt %x_58, 128.0f
+        store %x_59, %14
+        %15:bool = load %x_59
+        store %x_60_phi, %15
+        exit_if  # if_1
+      }
+    }
+    %x_60:bool = load %x_60_phi
+    if %x_60 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        ret
+      }
+    }
+    store %odd_index, 0i
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %x_11:i32 = load %odd_index
+        %18:bool = lte %x_11, 1i
+        if %18 [t: %b7, f: %b8] {  # if_3
+          %b7 = block {  # true
+            exit_if  # if_3
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_70:f32 = load_vector_element %x_GLF_color, 0u
+        %20:f32 = add %x_70, 0.25f
+        store_vector_element %x_GLF_color, 0u, %20
+        %x_12:i32 = load %odd_index
+        %22:i32 = add %x_12, 1i
+        store %odd_index, %22
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        next_iteration %b5
+      }
+    }
+    store %even_index, 1i
+    loop [b: %b9, c: %b10] {  # loop_2
+      %b9 = block {  # body
+        %x_14:i32 = load %even_index
+        %24:bool = gte %x_14, 0i
+        if %24 [t: %b11, f: %b12] {  # if_4
+          %b11 = block {  # true
+            exit_if  # if_4
+          }
+          %b12 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_80:f32 = load_vector_element %x_GLF_color, 0u
+        %26:f32 = add %x_80, 0.25f
+        store_vector_element %x_GLF_color, 0u, %26
+        %27:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %x_84:f32 = load_vector_element %27, 0u
+        %29:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %x_86:f32 = load_vector_element %29, 1u
+        %31:bool = gt %x_84, %x_86
+        if %31 [t: %b13] {  # if_5
+          %b13 = block {  # true
+            continue %b10
+          }
+        }
+        %x_15:i32 = load %even_index
+        %33:bool = gte %x_15, 1i
+        if %33 [t: %b14] {  # if_6
+          %b14 = block {  # true
+            discard
+            exit_if  # if_6
+          }
+        }
+        store %j, 1i
+        loop [b: %b15, c: %b16] {  # loop_3
+          %b15 = block {  # body
+            if true [t: %b17, f: %b18] {  # if_7
+              %b17 = block {  # true
+                exit_if  # if_7
+              }
+              %b18 = block {  # false
+                exit_loop  # loop_3
+              }
+            }
+            %x_16:i32 = load %ll
+            %35:bool = gte %x_16, 3i
+            if %35 [t: %b19] {  # if_8
+              %b19 = block {  # true
+                exit_loop  # loop_3
+              }
+            }
+            %x_17:i32 = load %ll
+            %37:i32 = add %x_17, 1i
+            store %ll, %37
+            %x_19:i32 = load %j
+            %39:u32 = bitcast %x_19
+            %40:bool = lt %39, 1u
+            if %40 [t: %b20] {  # if_9
+              %b20 = block {  # true
+                continue %b16
+              }
+            }
+            %41:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+            %x_106:f32 = load_vector_element %41, 0u
+            %43:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+            %x_108:f32 = load_vector_element %43, 1u
+            %45:bool = gt %x_106, %x_108
+            if %45 [t: %b21] {  # if_10
+              %b21 = block {  # true
+                exit_loop  # loop_3
+              }
+            }
+            continue %b16
+          }
+          %b16 = block {  # continuing
+            %x_20:i32 = load %j
+            %47:i32 = add %x_20, 1i
+            store %j, %47
+            next_iteration %b15
+          }
+        }
+        %48:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %x_113:f32 = load_vector_element %48, 0u
+        %50:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
+        %x_115:f32 = load_vector_element %50, 1u
+        %52:bool = gt %x_113, %x_115
+        if %52 [t: %b22] {  # if_11
+          %b22 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f)
+            exit_if  # if_11
+          }
+        }
+        %x_22:i32 = load %even_index
+        %54:i32 = sub %x_22, 1i
+        store %even_index, %54
+        continue %b10
+      }
+      %b10 = block {  # continuing
+        next_iteration %b9
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b23 {
+  %b23 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %57:void = call %main_1
+    %58:vec4<f32> = load %x_GLF_color
+    %59:main_out = construct %58
+    ret %59
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..8f9f4b8
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm.expected.ir.msl
@@ -0,0 +1,108 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(16) {
+  matrix_a_uni:mat4x4<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x:ptr<function, i32, read_write> = var
+    %matrix_u:ptr<function, vec4<f32>, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %matrix_b:ptr<function, vec4<f32>, read_write> = var
+    %x_42:ptr<function, vec4<f32>, read_write> = var
+    store %x, 4i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %9:i32 = load %x
+        %10:bool = gte %9, 1i
+        if %10 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_11:i32 = load %x
+        store_vector_element %matrix_u, %x_11, 1.0f
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %12:i32 = load %x
+        %13:i32 = sub %12, 1i
+        store %x, %13
+        next_iteration %b3
+      }
+    }
+    store %b, 4i
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %14:ptr<uniform, vec4<f32>, read> = access %x_8, 0u, 0i
+        %15:f32 = load_vector_element %14, 0u
+        %16:bool = lt %15, -1.0f
+        if %16 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_14:i32 = load %b
+        %18:i32 = load %b
+        %19:bool = gt %18, 1i
+        if %19 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            %20:vec4<f32> = load %matrix_b
+            %21:vec4<f32> = load %matrix_b
+            %22:vec4<f32> = min %20, %21
+            store %x_42, %22
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            %23:vec4<f32> = load %matrix_u
+            store %x_42, %23
+            exit_if  # if_3
+          }
+        }
+        %24:f32 = load_vector_element %x_42, 1u
+        store_vector_element %matrix_b, %x_14, %24
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %25:i32 = load %b
+        %26:i32 = sub %25, 1i
+        store %b, %26
+        next_iteration %b7
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %28:void = call %main_1
+    %29:vec4<f32> = load %x_GLF_color
+    %30:main_out = construct %29
+    ret %30
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f0cc327
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl.expected.ir.msl
@@ -0,0 +1,108 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(16) {
+  matrix_a_uni:mat4x4<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x:ptr<function, i32, read_write> = var
+    %matrix_u:ptr<function, vec4<f32>, read_write> = var
+    %b:ptr<function, i32, read_write> = var
+    %matrix_b:ptr<function, vec4<f32>, read_write> = var
+    %x_42:ptr<function, vec4<f32>, read_write> = var
+    store %x, 4i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_10:i32 = load %x
+        %10:bool = gte %x_10, 1i
+        if %10 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_11:i32 = load %x
+        store_vector_element %matrix_u, %x_11, 1.0f
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_12:i32 = load %x
+        %13:i32 = sub %x_12, 1i
+        store %x, %13
+        next_iteration %b3
+      }
+    }
+    store %b, 4i
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %14:ptr<uniform, vec4<f32>, read> = access %x_8, 0u, 0i
+        %x_55:f32 = load_vector_element %14, 0u
+        %16:bool = lt %x_55, -1.0f
+        if %16 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_14:i32 = load %b
+        %x_15:i32 = load %b
+        %19:bool = gt %x_15, 1i
+        if %19 [t: %b11, f: %b12] {  # if_3
+          %b11 = block {  # true
+            %x_62:vec4<f32> = load %matrix_b
+            %x_63:vec4<f32> = load %matrix_b
+            %22:vec4<f32> = min %x_62, %x_63
+            store %x_42, %22
+            exit_if  # if_3
+          }
+          %b12 = block {  # false
+            %x_65:vec4<f32> = load %matrix_u
+            store %x_42, %x_65
+            exit_if  # if_3
+          }
+        }
+        %x_67:f32 = load_vector_element %x_42, 1u
+        store_vector_element %matrix_b, %x_14, %x_67
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %x_16:i32 = load %b
+        %26:i32 = sub %x_16, 1i
+        store %b, %26
+        next_iteration %b7
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b13 {
+  %b13 = block {
+    %28:void = call %main_1
+    %29:vec4<f32> = load %x_GLF_color
+    %30:main_out = construct %29
+    ret %30
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2436908
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.spvasm.expected.ir.msl
@@ -0,0 +1,126 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+StructType = struct @align(16) {
+  col:vec3<f32> @offset(0)
+  bbbb:vec4<bool> @offset(16)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_33:ptr<function, StructType, read_write> = var
+    %x_9:ptr<function, i32, read_write> = var
+    %x_38:ptr<function, i32, read_write> = var
+    %x_42:ptr<function, StructType, read_write> = var
+    %x_10:ptr<function, i32, read_write> = var
+    store %x_33, StructType(vec3<f32>(0.0f), vec4<bool>(false))
+    store %x_9, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_34:ptr<function, StructType, read_write> = var
+        %x_7:ptr<function, i32, read_write> = var
+        %11:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+        %12:f32 = load_vector_element %11, 1u
+        %13:i32 = convert %12
+        store %x_38, %13
+        %14:i32 = load %x_9
+        %15:i32 = load %x_38
+        %16:bool = lt %14, %15
+        if %16 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %17:StructType = load %x_33
+        store %x_34, %17
+        %18:ptr<function, vec3<f32>, read_write> = access %x_34, 0u
+        store %18, vec3<f32>(1.0f, 0.0f, 0.0f)
+        %19:i32 = load %x_9
+        %20:i32 = add %19, 1i
+        store %x_7, %20
+        %21:StructType = load %x_34
+        store %x_33, %21
+        %22:i32 = load %x_7
+        store %x_9, %22
+        next_iteration %b3
+      }
+    }
+    %23:StructType = load %x_33
+    store %x_42, %23
+    store %x_10, 0i
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_43:ptr<function, StructType, read_write> = var
+        %x_8:ptr<function, i32, read_write> = var
+        %26:i32 = load %x_10
+        %27:i32 = load %x_38
+        %28:bool = lt %26, %27
+        if %28 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %29:StructType = load %x_42
+        store %x_43, %29
+        %30:ptr<function, vec3<f32>, read_write> = access %x_43, 0u
+        store %30, vec3<f32>(1.0f, 0.0f, 0.0f)
+        %31:i32 = load %x_10
+        %32:i32 = add %31, 1i
+        store %x_8, %32
+        %33:StructType = load %x_43
+        store %x_42, %33
+        %34:i32 = load %x_8
+        store %x_10, %34
+        next_iteration %b7
+      }
+    }
+    %35:ptr<function, vec3<f32>, read_write> = access %x_42, 0u
+    %x_47:vec3<f32> = load %35
+    %37:f32 = access %x_47, 0u
+    %38:f32 = access %x_47, 1u
+    %39:f32 = access %x_47, 2u
+    %40:vec4<f32> = construct %37, %38, %39, 1.0f
+    store %x_GLF_color, %40
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %42:void = call %main_1
+    %43:vec4<f32> = load %x_GLF_color
+    %44:main_out = construct %43
+    ret %44
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0e7ba7f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl.expected.ir.msl
@@ -0,0 +1,130 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+StructType = struct @align(16) {
+  col:vec3<f32> @offset(0)
+  bbbb:vec4<bool> @offset(16)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_33:ptr<function, StructType, read_write> = var
+    %x_38:ptr<function, i32, read_write> = var
+    %x_42:ptr<function, StructType, read_write> = var
+    %x_33_phi:ptr<function, StructType, read_write> = var
+    %x_9_phi:ptr<function, i32, read_write> = var
+    %x_42_phi:ptr<function, StructType, read_write> = var
+    %x_10_phi:ptr<function, i32, read_write> = var
+    store %x_33_phi, StructType(vec3<f32>(0.0f), vec4<bool>(false))
+    store %x_9_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_34:ptr<function, StructType, read_write> = var
+        %x_7:ptr<function, i32, read_write> = var
+        %13:StructType = load %x_33_phi
+        store %x_33, %13
+        %x_9:i32 = load %x_9_phi
+        %15:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+        %x_37:f32 = load_vector_element %15, 1u
+        %17:i32 = convert %x_37
+        store %x_38, %17
+        %18:i32 = load %x_38
+        %19:bool = lt %x_9, %18
+        if %19 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %20:StructType = load %x_33
+        store %x_34, %20
+        %21:ptr<function, vec3<f32>, read_write> = access %x_34, 0u
+        store %21, vec3<f32>(1.0f, 0.0f, 0.0f)
+        %22:i32 = add %x_9, 1i
+        store %x_7, %22
+        %23:StructType = load %x_34
+        store %x_33_phi, %23
+        %24:i32 = load %x_7
+        store %x_9_phi, %24
+        next_iteration %b3
+      }
+    }
+    %25:StructType = load %x_33
+    store %x_42_phi, %25
+    store %x_10_phi, 0i
+    loop [b: %b7, c: %b8] {  # loop_2
+      %b7 = block {  # body
+        %x_43:ptr<function, StructType, read_write> = var
+        %x_8:ptr<function, i32, read_write> = var
+        %28:StructType = load %x_42_phi
+        store %x_42, %28
+        %x_10:i32 = load %x_10_phi
+        %30:i32 = load %x_38
+        %31:bool = lt %x_10, %30
+        if %31 [t: %b9, f: %b10] {  # if_2
+          %b9 = block {  # true
+            exit_if  # if_2
+          }
+          %b10 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        continue %b8
+      }
+      %b8 = block {  # continuing
+        %32:StructType = load %x_42
+        store %x_43, %32
+        %33:ptr<function, vec3<f32>, read_write> = access %x_43, 0u
+        store %33, vec3<f32>(1.0f, 0.0f, 0.0f)
+        %34:i32 = add %x_10, 1i
+        store %x_8, %34
+        %35:StructType = load %x_43
+        store %x_42_phi, %35
+        %36:i32 = load %x_8
+        store %x_10_phi, %36
+        next_iteration %b7
+      }
+    }
+    %37:ptr<function, vec3<f32>, read_write> = access %x_42, 0u
+    %x_47:vec3<f32> = load %37
+    %39:f32 = access %x_47, 0u
+    %40:f32 = access %x_47, 1u
+    %41:f32 = access %x_47, 2u
+    %42:vec4<f32> = construct %39, %40, %41, 1.0f
+    store %x_GLF_color, %42
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b11 {
+  %b11 = block {
+    %44:void = call %main_1
+    %45:vec4<f32> = load %x_GLF_color
+    %46:main_out = construct %45
+    ret %46
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..b176b51
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,140 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    store %i, 0i
+    %8:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %9:f32 = load_vector_element %8, 1u
+    %10:bool = lt %9, 0.0f
+    if %10 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %x_42:ptr<function, bool, read_write> = var
+        %12:f32 = load_vector_element %gl_FragCoord, 1u
+        %13:bool = lt %12, -1.0f
+        store %x_42, %13
+        %14:bool = load %x_42
+        if %14 [t: %b5, f: %b6] {  # if_2
+          %b5 = block {  # true
+            exit_if  # if_2
+          }
+          %b6 = block {  # false
+            loop [b: %b7, c: %b8] {  # loop_1
+              %b7 = block {  # body
+                %15:i32 = load %i
+                %16:bool = gte %15, 256i
+                if %16 [t: %b9] {  # if_3
+                  %b9 = block {  # true
+                    exit_loop  # loop_1
+                  }
+                }
+                loop [b: %b10, c: %b11] {  # loop_2
+                  %b10 = block {  # body
+                    store %i_1, 0i
+                    loop [b: %b12, c: %b13] {  # loop_3
+                      %b12 = block {  # body
+                        %17:i32 = load %i_1
+                        %18:bool = lt %17, 1i
+                        if %18 [t: %b14, f: %b15] {  # if_4
+                          %b14 = block {  # true
+                            exit_if  # if_4
+                          }
+                          %b15 = block {  # false
+                            exit_loop  # loop_3
+                          }
+                        }
+                        %19:bool = load %x_42
+                        if %19 [t: %b16] {  # if_5
+                          %b16 = block {  # true
+                            store %i_2, 0i
+                            loop [b: %b17, c: %b18] {  # loop_4
+                              %b17 = block {  # body
+                                %20:i32 = load %i_2
+                                %21:bool = lt %20, 1i
+                                if %21 [t: %b19, f: %b20] {  # if_6
+                                  %b19 = block {  # true
+                                    exit_if  # if_6
+                                  }
+                                  %b20 = block {  # false
+                                    exit_loop  # loop_4
+                                  }
+                                }
+                                continue %b18
+                              }
+                              %b18 = block {  # continuing
+                                %22:i32 = load %i_2
+                                %23:i32 = add %22, 1i
+                                store %i_2, %23
+                                next_iteration %b17
+                              }
+                            }
+                            continue %b13
+                          }
+                        }
+                        ret
+                      }
+                      %b13 = block {  # continuing
+                        %24:i32 = load %i_1
+                        %25:i32 = add %24, 1i
+                        store %i_1, %25
+                        next_iteration %b12
+                      }
+                    }
+                    continue %b11
+                  }
+                  %b11 = block {  # continuing
+                    break_if true %b10
+                  }
+                }
+                continue %b8
+              }
+              %b8 = block {  # continuing
+                break_if true %b7
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b21 {
+  %b21 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %28:void = call %main_1
+    %29:vec4<f32> = load %x_GLF_color
+    %30:main_out = construct %29
+    ret %30
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4a17cb9
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,140 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    %i_2:ptr<function, i32, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    store %i, 0i
+    %8:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %x_35:f32 = load_vector_element %8, 1u
+    %10:bool = lt %x_35, 0.0f
+    if %10 [t: %b3, f: %b4] {  # if_1
+      %b3 = block {  # true
+        exit_if  # if_1
+      }
+      %b4 = block {  # false
+        %x_42:ptr<function, bool, read_write> = var
+        %x_41:f32 = load_vector_element %gl_FragCoord, 1u
+        %13:bool = lt %x_41, -1.0f
+        store %x_42, %13
+        %14:bool = load %x_42
+        if %14 [t: %b5, f: %b6] {  # if_2
+          %b5 = block {  # true
+            exit_if  # if_2
+          }
+          %b6 = block {  # false
+            loop [b: %b7, c: %b8] {  # loop_1
+              %b7 = block {  # body
+                %x_50:i32 = load %i
+                %16:bool = gte %x_50, 256i
+                if %16 [t: %b9] {  # if_3
+                  %b9 = block {  # true
+                    exit_loop  # loop_1
+                  }
+                }
+                loop [b: %b10, c: %b11] {  # loop_2
+                  %b10 = block {  # body
+                    store %i_1, 0i
+                    loop [b: %b12, c: %b13] {  # loop_3
+                      %b12 = block {  # body
+                        %x_58:i32 = load %i_1
+                        %18:bool = lt %x_58, 1i
+                        if %18 [t: %b14, f: %b15] {  # if_4
+                          %b14 = block {  # true
+                            exit_if  # if_4
+                          }
+                          %b15 = block {  # false
+                            exit_loop  # loop_3
+                          }
+                        }
+                        %19:bool = load %x_42
+                        if %19 [t: %b16] {  # if_5
+                          %b16 = block {  # true
+                            store %i_2, 0i
+                            loop [b: %b17, c: %b18] {  # loop_4
+                              %b17 = block {  # body
+                                %x_66:i32 = load %i_2
+                                %21:bool = lt %x_66, 1i
+                                if %21 [t: %b19, f: %b20] {  # if_6
+                                  %b19 = block {  # true
+                                    exit_if  # if_6
+                                  }
+                                  %b20 = block {  # false
+                                    exit_loop  # loop_4
+                                  }
+                                }
+                                continue %b18
+                              }
+                              %b18 = block {  # continuing
+                                %x_70:i32 = load %i_2
+                                %23:i32 = add %x_70, 1i
+                                store %i_2, %23
+                                next_iteration %b17
+                              }
+                            }
+                            continue %b13
+                          }
+                        }
+                        ret
+                      }
+                      %b13 = block {  # continuing
+                        %x_72:i32 = load %i_1
+                        %25:i32 = add %x_72, 1i
+                        store %i_1, %25
+                        next_iteration %b12
+                      }
+                    }
+                    continue %b11
+                  }
+                  %b11 = block {  # continuing
+                    break_if true %b10
+                  }
+                }
+                continue %b8
+              }
+              %b8 = block {  # continuing
+                break_if true %b7
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b21 {
+  %b21 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %28:void = call %main_1
+    %29:vec4<f32> = load %x_GLF_color
+    %30:main_out = construct %29
+    ret %30
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..52ef3f6
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,101 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: doesNotMatter = struct @align(4) {
+  x_compute_data:array<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_9:ptr<storage, doesNotMatter, read_write> = var @binding_point(0, 0)
+}
+
+%nb_mod_ = func():f32 -> %b2 {
+  %b2 = block {
+    %s:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %GLF_live1i:ptr<function, i32, read_write> = var
+    %GLF_live1_looplimiter2:ptr<function, i32, read_write> = var
+    %x_51:ptr<function, f32, read_write> = var
+    %x_56:ptr<function, f32, read_write> = var
+    store %s, 0.0f
+    store %i, 5i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_50:ptr<function, f32, read_write> = var
+        store %x_56, 0.0f
+        if true [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        store %GLF_live1i, 0i
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            store %x_51, 0.0f
+            if true [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            if false [t: %b11] {  # if_3
+              %b11 = block {  # true
+                store %x_50, 1.0f
+                %10:f32 = load %x_50
+                store %s, %10
+                %11:f32 = load %x_50
+                store %x_51, %11
+                exit_loop  # loop_2
+              }
+            }
+            ret 42.0f
+          }
+          %b8 = block {  # continuing
+            next_iteration %b7
+          }
+        }
+        %12:f32 = load %x_51
+        %13:bool = lte 5.0f, %12
+        if %13 [t: %b12] {  # if_4
+          %b12 = block {  # true
+            %14:f32 = load %x_51
+            store %x_56, %14
+            exit_loop  # loop_1
+          }
+        }
+        ret 42.0f
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %15:f32 = load %x_56
+    ret %15
+  }
+}
+%main_1 = func():void -> %b13 {
+  %b13 = block {
+    %x_32:f32 = call %nb_mod_
+    %18:ptr<storage, f32, read_write> = access %x_9, 0u, 0i
+    store %18, %x_32
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b14 {
+  %b14 = block {
+    %20:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..36f2dbb
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,104 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: doesNotMatter = struct @align(4) {
+  x_compute_data:array<f32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_9:ptr<storage, doesNotMatter, read_write> = var @binding_point(0, 0)
+}
+
+%nb_mod_ = func():f32 -> %b2 {
+  %b2 = block {
+    %s:ptr<function, f32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %GLF_live1i:ptr<function, i32, read_write> = var
+    %GLF_live1_looplimiter2:ptr<function, i32, read_write> = var
+    %x_51:ptr<function, f32, read_write> = var
+    %x_56_phi:ptr<function, f32, read_write> = var
+    store %s, 0.0f
+    store %i, 5i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_50:ptr<function, f32, read_write> = var
+        %x_51_phi:ptr<function, f32, read_write> = var
+        store %x_56_phi, 0.0f
+        if true [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        store %GLF_live1i, 0i
+        loop [b: %b7, c: %b8] {  # loop_2
+          %b7 = block {  # body
+            store %x_51_phi, 0.0f
+            if true [t: %b9, f: %b10] {  # if_2
+              %b9 = block {  # true
+                exit_if  # if_2
+              }
+              %b10 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            if false [t: %b11] {  # if_3
+              %b11 = block {  # true
+                store %x_50, 1.0f
+                %11:f32 = load %x_50
+                store %s, %11
+                %12:f32 = load %x_50
+                store %x_51_phi, %12
+                exit_loop  # loop_2
+              }
+            }
+            ret 42.0f
+          }
+          %b8 = block {  # continuing
+            next_iteration %b7
+          }
+        }
+        %13:f32 = load %x_51_phi
+        store %x_51, %13
+        %14:f32 = load %x_51
+        %15:bool = lte 5.0f, %14
+        if %15 [t: %b12] {  # if_4
+          %b12 = block {  # true
+            %16:f32 = load %x_51
+            store %x_56_phi, %16
+            exit_loop  # loop_1
+          }
+        }
+        ret 42.0f
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    %x_56:f32 = load %x_56_phi
+    ret %x_56
+  }
+}
+%main_1 = func():void -> %b13 {
+  %b13 = block {
+    %x_32:f32 = call %nb_mod_
+    %20:ptr<storage, f32, read_write> = access %x_9, 0u, 0i
+    store %20, %x_32
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b14 {
+  %b14 = block {
+    %22:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..098e69f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.ir.msl
@@ -0,0 +1,71 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %GLF_dead6index:ptr<function, i32, read_write> = var
+    %GLF_dead6currentNode:ptr<function, i32, read_write> = var
+    %donor_replacementGLF_dead6tree:ptr<function, array<i32, 1>, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    store %GLF_dead6index, 0i
+    %7:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %8:f32 = load_vector_element %7, 1u
+    %9:bool = lt %8, 0.0f
+    if %9 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            if true [t: %b6, f: %b7] {  # if_2
+              %b6 = block {  # true
+                exit_if  # if_2
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            %10:i32 = load %GLF_dead6index
+            %11:ptr<function, i32, read_write> = access %donor_replacementGLF_dead6tree, %10
+            %12:i32 = load %11
+            store %GLF_dead6currentNode, %12
+            %13:i32 = load %GLF_dead6currentNode
+            store %GLF_dead6index, %13
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            next_iteration %b4
+          }
+        }
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %15:void = call %main_1
+    %16:vec4<f32> = load %x_GLF_color
+    %17:main_out = construct %16
+    ret %17
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a38ae8b
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.ir.msl
@@ -0,0 +1,71 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %GLF_dead6index:ptr<function, i32, read_write> = var
+    %GLF_dead6currentNode:ptr<function, i32, read_write> = var
+    %donor_replacementGLF_dead6tree:ptr<function, array<i32, 1>, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    store %GLF_dead6index, 0i
+    %7:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_34:f32 = load_vector_element %7, 1u
+    %9:bool = lt %x_34, 0.0f
+    if %9 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            if true [t: %b6, f: %b7] {  # if_2
+              %b6 = block {  # true
+                exit_if  # if_2
+              }
+              %b7 = block {  # false
+                exit_loop  # loop_1
+              }
+            }
+            %x_9:i32 = load %GLF_dead6index
+            %11:ptr<function, i32, read_write> = access %donor_replacementGLF_dead6tree, %x_9
+            %x_10:i32 = load %11
+            store %GLF_dead6currentNode, %x_10
+            %x_11:i32 = load %GLF_dead6currentNode
+            store %GLF_dead6index, %x_11
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            next_iteration %b4
+          }
+        }
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b8 {
+  %b8 = block {
+    %15:void = call %main_1
+    %16:vec4<f32> = load %x_GLF_color
+    %17:main_out = construct %16
+    ret %17
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..be8a9a9
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,107 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%performPartition_ = func():i32 -> %b2 {
+  %b2 = block {
+    %GLF_live0i:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %x_10:ptr<function, i32, read_write> = var
+    %x_11:ptr<function, i32, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    store %x_10, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_42:ptr<function, bool, read_write> = var
+        %9:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %10:f32 = load_vector_element %9, 1u
+        %11:bool = lt %10, 0.0f
+        store %x_42, %11
+        %12:bool = load %x_42
+        if %12 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            %13:i32 = load %x_10
+            store %x_11, %13
+            continue %b4
+          }
+          %b6 = block {  # false
+            store %GLF_live0i, 0i
+            loop [b: %b7, c: %b8] {  # loop_2
+              %b7 = block {  # body
+                %x_47:bool = let true
+                %15:bool = load %x_42
+                if %15 [t: %b9] {  # if_2
+                  %b9 = block {  # true
+                    exit_loop  # loop_2
+                  }
+                }
+                ret 1i
+              }
+              %b8 = block {  # continuing
+                next_iteration %b7
+              }
+            }
+            %16:bool = load %x_42
+            if %16 [t: %b10] {  # if_3
+              %b10 = block {  # true
+                loop [b: %b11, c: %b12] {  # loop_3
+                  %b11 = block {  # body
+                    ret 1i
+                  }
+                  %b12 = block {  # continuing
+                    next_iteration %b11
+                  }
+                }
+                exit_if  # if_3
+              }
+            }
+            %17:i32 = load %x_10
+            store %x_11, %17
+            continue %b4
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %18:i32 = load %x_11
+        store %x_10, %18
+        break_if true %b3
+      }
+    }
+    %19:i32 = load %x_11
+    ret %19
+  }
+}
+%main_1 = func():void -> %b13 {
+  %b13 = block {
+    %x_9:i32 = call %performPartition_
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b14 {
+  %b14 = block {
+    %23:void = call %main_1
+    %24:vec4<f32> = load %x_GLF_color
+    %25:main_out = construct %24
+    ret %25
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2763073
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,109 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%performPartition_ = func():i32 -> %b2 {
+  %b2 = block {
+    %GLF_live0i:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %x_11:ptr<function, i32, read_write> = var
+    %x_10_phi:ptr<function, i32, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    store %x_10_phi, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_11_phi:ptr<function, i32, read_write> = var
+        %x_10:i32 = load %x_10_phi
+        %x_42:ptr<function, bool, read_write> = var
+        %11:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %x_41:f32 = load_vector_element %11, 1u
+        %13:bool = lt %x_41, 0.0f
+        store %x_42, %13
+        %14:bool = load %x_42
+        if %14 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            store %x_11_phi, %x_10
+            continue %b4
+          }
+          %b6 = block {  # false
+            store %GLF_live0i, 0i
+            loop [b: %b7, c: %b8] {  # loop_2
+              %b7 = block {  # body
+                %x_47:bool = let true
+                %16:bool = load %x_42
+                if %16 [t: %b9] {  # if_2
+                  %b9 = block {  # true
+                    exit_loop  # loop_2
+                  }
+                }
+                ret 1i
+              }
+              %b8 = block {  # continuing
+                next_iteration %b7
+              }
+            }
+            %17:bool = load %x_42
+            if %17 [t: %b10] {  # if_3
+              %b10 = block {  # true
+                loop [b: %b11, c: %b12] {  # loop_3
+                  %b11 = block {  # body
+                    ret 1i
+                  }
+                  %b12 = block {  # continuing
+                    next_iteration %b11
+                  }
+                }
+                exit_if  # if_3
+              }
+            }
+            store %x_11_phi, %x_10
+            continue %b4
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %18:i32 = load %x_11_phi
+        store %x_11, %18
+        %19:i32 = load %x_11
+        store %x_10_phi, %19
+        break_if true %b3
+      }
+    }
+    %20:i32 = load %x_11
+    ret %20
+  }
+}
+%main_1 = func():void -> %b13 {
+  %b13 = block {
+    %x_9:i32 = call %performPartition_
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b14 {
+  %b14 = block {
+    %24:void = call %main_1
+    %25:vec4<f32> = load %x_GLF_color
+    %26:main_out = construct %25
+    ret %26
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..c2c0d95
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,66 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_30:ptr<function, f32, read_write> = var
+    %x_32:ptr<function, f32, read_write> = var
+    store %x_32, 0.0f
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_33:ptr<function, f32, read_write> = var
+        %7:f32 = load %x_32
+        store %x_33, %7
+        %8:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+        %9:f32 = load_vector_element %8, 0u
+        %10:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+        %11:f32 = load_vector_element %10, 1u
+        %12:bool = lt %9, %11
+        if %12 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+            ret
+          }
+          %b6 = block {  # false
+            continue %b4
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %13:f32 = load %x_33
+        store %x_32, %13
+        next_iteration %b3
+      }
+    }
+    unreachable
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %15:void = call %main_1
+    %16:vec4<f32> = load %x_GLF_color
+    %17:main_out = construct %16
+    ret %17
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2bca960
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,66 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_30:ptr<function, f32, read_write> = var
+    %x_32_phi:ptr<function, f32, read_write> = var
+    store %x_32_phi, 0.0f
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_33_phi:ptr<function, f32, read_write> = var
+        %x_32:f32 = load %x_32_phi
+        store %x_33_phi, %x_32
+        %x_33:f32 = load %x_33_phi
+        %9:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+        %x_39:f32 = load_vector_element %9, 0u
+        %11:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+        %x_41:f32 = load_vector_element %11, 1u
+        %13:bool = lt %x_39, %x_41
+        if %13 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+            ret
+          }
+          %b6 = block {  # false
+            continue %b4
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        store %x_32_phi, %x_33
+        next_iteration %b3
+      }
+    }
+    unreachable
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b7 {
+  %b7 = block {
+    %15:void = call %main_1
+    %16:vec4<f32> = load %x_GLF_color
+    %17:main_out = construct %16
+    ret %17
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..e69c2be
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.spvasm.expected.ir.msl
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%computeColor_ = func():vec3<f32> -> %b2 {
+  %b2 = block {
+    %x_injected_loop_counter:ptr<function, i32, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    store %x_injected_loop_counter, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %5:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+        %6:f32 = load_vector_element %5, 0u
+        %7:bool = gt %6, 1.0f
+        if %7 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            %8:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+            %9:f32 = load_vector_element %8, 0u
+            %10:bool = gt %9, 1.0f
+            if %10 [t: %b6, f: %b7] {  # if_2
+              %b6 = block {  # true
+                continue %b4
+              }
+              %b7 = block {  # false
+                continue %b4
+              }
+            }
+            exit_if  # if_1
+          }
+        }
+        ret vec3<f32>(1.0f)
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    unreachable
+  }
+}
+%main_1 = func():void -> %b8 {
+  %b8 = block {
+    %x_31:vec3<f32> = call %computeColor_
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %14:void = call %main_1
+    %15:vec4<f32> = load %x_GLF_color
+    %16:main_out = construct %15
+    ret %16
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..f0605a9a
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl.expected.ir.msl
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%computeColor_ = func():vec3<f32> -> %b2 {
+  %b2 = block {
+    %x_injected_loop_counter:ptr<function, i32, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    store %x_injected_loop_counter, 1i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %5:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+        %x_38:f32 = load_vector_element %5, 0u
+        %7:bool = gt %x_38, 1.0f
+        if %7 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            %8:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+            %x_43:f32 = load_vector_element %8, 0u
+            %10:bool = gt %x_43, 1.0f
+            if %10 [t: %b6, f: %b7] {  # if_2
+              %b6 = block {  # true
+                continue %b4
+              }
+              %b7 = block {  # false
+                continue %b4
+              }
+            }
+            exit_if  # if_1
+          }
+        }
+        ret vec3<f32>(1.0f)
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    unreachable
+  }
+}
+%main_1 = func():void -> %b8 {
+  %b8 = block {
+    %x_31:vec3<f32> = call %computeColor_
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %14:void = call %main_1
+    %15:vec4<f32> = load %x_GLF_color
+    %16:main_out = construct %15
+    ret %16
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..8cb6f56
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%computePoint_ = func():vec3<f32> -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %6:f32 = load_vector_element %5, 0u
+    %7:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %8:f32 = load_vector_element %7, 1u
+    %9:bool = gt %6, %8
+    if %9 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        discard
+        exit_if  # if_1
+      }
+    }
+    ret vec3<f32>(0.0f)
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    %x_34:ptr<function, bool, read_write> = var, false
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %x_36:vec3<f32> = call %computePoint_
+        %13:f32 = load_vector_element %gl_FragCoord, 0u
+        %14:bool = lt %13, 0.0f
+        if %14 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            store %x_34, true
+            exit_loop  # loop_1
+          }
+        }
+        %x_45:vec3<f32> = call %computePoint_
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        store %x_34, true
+        exit_loop  # loop_1
+      }
+      %b6 = block {  # continuing
+        next_iteration %b5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b8 {
+  %b8 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %18:void = call %main_1
+    %19:vec4<f32> = load %x_GLF_color
+    %20:main_out = construct %19
+    ret %20
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..c3848c9
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%computePoint_ = func():vec3<f32> -> %b2 {
+  %b2 = block {
+    %5:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %x_48:f32 = load_vector_element %5, 0u
+    %7:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
+    %x_50:f32 = load_vector_element %7, 1u
+    %9:bool = gt %x_48, %x_50
+    if %9 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        discard
+        exit_if  # if_1
+      }
+    }
+    ret vec3<f32>(0.0f)
+  }
+}
+%main_1 = func():void -> %b4 {
+  %b4 = block {
+    %x_34:ptr<function, bool, read_write> = var, false
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %x_36:vec3<f32> = call %computePoint_
+        %x_41:f32 = load_vector_element %gl_FragCoord, 0u
+        %14:bool = lt %x_41, 0.0f
+        if %14 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            store %x_34, true
+            exit_loop  # loop_1
+          }
+        }
+        %x_45:vec3<f32> = call %computePoint_
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        store %x_34, true
+        exit_loop  # loop_1
+      }
+      %b6 = block {  # continuing
+        next_iteration %b5
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b8 {
+  %b8 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %18:void = call %main_1
+    %19:vec4<f32> = load %x_GLF_color
+    %20:main_out = construct %19
+    ret %20
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..470029e
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,74 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injected:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, i32, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    %5:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+    %6:f32 = load_vector_element %5, 0u
+    %7:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+    %8:f32 = load_vector_element %7, 1u
+    %9:bool = gt %6, %8
+    if %9 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            break_if true %b4
+          }
+        }
+        store %m, 1i
+        loop [b: %b6, c: %b7] {  # loop_2
+          %b6 = block {  # body
+            if true [t: %b8, f: %b9] {  # if_2
+              %b8 = block {  # true
+                exit_if  # if_2
+              }
+              %b9 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+            continue %b7
+          }
+          %b7 = block {  # continuing
+            next_iteration %b6
+          }
+        }
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %11:void = call %main_1
+    %12:vec4<f32> = load %x_GLF_color
+    %13:main_out = construct %12
+    ret %13
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..3e2da70
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,74 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injected:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %m:ptr<function, i32, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    %5:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+    %x_30:f32 = load_vector_element %5, 0u
+    %7:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
+    %x_32:f32 = load_vector_element %7, 1u
+    %9:bool = gt %x_30, %x_32
+    if %9 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        loop [b: %b4, c: %b5] {  # loop_1
+          %b4 = block {  # body
+            continue %b5
+          }
+          %b5 = block {  # continuing
+            break_if true %b4
+          }
+        }
+        store %m, 1i
+        loop [b: %b6, c: %b7] {  # loop_2
+          %b6 = block {  # body
+            if true [t: %b8, f: %b9] {  # if_2
+              %b8 = block {  # true
+                exit_if  # if_2
+              }
+              %b9 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+            continue %b7
+          }
+          %b7 = block {  # continuing
+            next_iteration %b6
+          }
+        }
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b10 {
+  %b10 = block {
+    %11:void = call %main_1
+    %12:vec4<f32> = load %x_GLF_color
+    %13:main_out = construct %12
+    ret %13
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..169b1a6
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,189 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():f32 -> %b2 {
+  %b2 = block {
+    %alwaysFalse:ptr<function, bool, read_write> = var
+    %value:ptr<function, vec4<f32>, read_write> = var
+    %a:ptr<function, vec2<f32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %x_121:ptr<function, bool, read_write> = var
+    %x_122:ptr<function, bool, read_write> = var
+    %11:f32 = load_vector_element %gl_FragCoord, 0u
+    %12:bool = lt %11, -1.0f
+    store %alwaysFalse, %12
+    %13:bool = load %alwaysFalse
+    if %13 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %14:vec2<f32> = load %a
+        %15:vec2<f32> = swizzle %14, xy
+        %16:vec4<f32> = load %value
+        %17:vec2<f32> = swizzle %16, zw
+        %18:vec4<f32> = construct %15, %17
+        store %value, %18
+        exit_if  # if_1
+      }
+    }
+    %19:bool = load %alwaysFalse
+    %20:bool = eq %19, false
+    if %20 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %21:ptr<uniform, vec2<f32>, read> = access %x_10, 0u
+        %22:vec2<f32> = load %21
+        %23:vec2<f32> = swizzle %22, xy
+        %24:vec4<f32> = load %value
+        %25:vec2<f32> = swizzle %24, zw
+        %26:vec4<f32> = construct %23, %25
+        store %value, %26
+        exit_if  # if_2
+      }
+    }
+    %27:vec4<f32> = load %value
+    %28:vec2<f32> = swizzle %27, xy
+    %29:vec4<f32> = load %gl_FragCoord
+    %30:vec2<f32> = swizzle %29, xy
+    %31:vec4<f32> = load %value
+    %32:vec2<f32> = swizzle %31, xy
+    %33:vec2<f32> = mul %30, %32
+    %34:vec2<f32> = mul %33, vec2<f32>(2.0f)
+    %35:vec4<f32> = load %value
+    %36:vec2<f32> = swizzle %35, xy
+    %37:vec2<f32> = add %34, %36
+    %38:vec2<f32> = swizzle %37, xy
+    %39:vec4<f32> = construct %28, %38
+    store %value, %39
+    store %i, 0i
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %40:i32 = load %i
+        %41:ptr<uniform, vec2<f32>, read> = access %x_10, 0u
+        %42:f32 = load_vector_element %41, 1u
+        %43:i32 = convert %42
+        %44:i32 = add %43, 1i
+        %45:bool = lt %40, %44
+        if %45 [t: %b7, f: %b8] {  # if_3
+          %b7 = block {  # true
+            exit_if  # if_3
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %46:i32 = load %i
+        %47:f32 = convert %46
+        store_vector_element %value, 0u, %47
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        %48:i32 = load %i
+        %49:i32 = add %48, 1i
+        store %i, %49
+        next_iteration %b5
+      }
+    }
+    %50:f32 = load_vector_element %value, 0u
+    %x_116:bool = eq %50, 1.0f
+    store %x_122, %x_116
+    if %x_116 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        %52:f32 = load_vector_element %value, 1u
+        %53:bool = eq %52, 1.0f
+        store %x_121, %53
+        %54:bool = load %x_121
+        store %x_122, %54
+        exit_if  # if_4
+      }
+    }
+    %55:bool = load %x_122
+    if %55 [t: %b10, f: %b11] {  # if_5
+      %b10 = block {  # true
+        ret 1.0f
+      }
+      %b11 = block {  # false
+        ret 0.0f
+      }
+    }
+    unreachable
+  }
+}
+%main_1 = func():void -> %b12 {
+  %b12 = block {
+    %count:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    store %count, 0i
+    store %i_1, 0i
+    loop [b: %b13, c: %b14] {  # loop_2
+      %b13 = block {  # body
+        %59:i32 = load %i_1
+        %60:ptr<uniform, vec2<f32>, read> = access %x_10, 0u
+        %61:f32 = load_vector_element %60, 1u
+        %62:i32 = convert %61
+        %63:i32 = add %62, 1i
+        %64:bool = lt %59, %63
+        if %64 [t: %b15, f: %b16] {  # if_6
+          %b15 = block {  # true
+            exit_if  # if_6
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_58:f32 = call %func_
+        %66:i32 = load %count
+        %67:i32 = convert %x_58
+        %68:i32 = add %66, %67
+        store %count, %68
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %69:i32 = load %i_1
+        %70:i32 = add %69, 1i
+        store %i_1, %70
+        next_iteration %b13
+      }
+    }
+    %71:i32 = load %count
+    %72:bool = eq %71, 2i
+    if %72 [t: %b17, f: %b18] {  # if_7
+      %b17 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_7
+      }
+      %b18 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b19 {
+  %b19 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %75:void = call %main_1
+    %76:vec4<f32> = load %x_GLF_color
+    %77:main_out = construct %76
+    ret %77
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0dd22ab
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,201 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%func_ = func():f32 -> %b2 {
+  %b2 = block {
+    %alwaysFalse:ptr<function, bool, read_write> = var
+    %value:ptr<function, vec4<f32>, read_write> = var
+    %a:ptr<function, vec2<f32>, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %x_121:ptr<function, bool, read_write> = var
+    %x_122_phi:ptr<function, bool, read_write> = var
+    %x_71:f32 = load_vector_element %gl_FragCoord, 0u
+    %12:bool = lt %x_71, -1.0f
+    store %alwaysFalse, %12
+    %x_73:bool = load %alwaysFalse
+    if %x_73 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_76:vec2<f32> = load %a
+        %x_77:vec4<f32> = load %value
+        %16:f32 = access %x_76, 0u
+        %17:f32 = access %x_76, 1u
+        %18:f32 = access %x_77, 2u
+        %19:f32 = access %x_77, 3u
+        %20:vec4<f32> = construct %16, %17, %18, %19
+        store %value, %20
+        exit_if  # if_1
+      }
+    }
+    %x_79:bool = load %alwaysFalse
+    %22:bool = eq %x_79, false
+    if %22 [t: %b4] {  # if_2
+      %b4 = block {  # true
+        %23:ptr<uniform, vec2<f32>, read> = access %x_10, 0u
+        %x_84:vec2<f32> = load %23
+        %x_85:vec4<f32> = load %value
+        %26:f32 = access %x_84, 0u
+        %27:f32 = access %x_84, 1u
+        %28:f32 = access %x_85, 2u
+        %29:f32 = access %x_85, 3u
+        %30:vec4<f32> = construct %26, %27, %28, %29
+        store %value, %30
+        exit_if  # if_2
+      }
+    }
+    %x_87:vec4<f32> = load %gl_FragCoord
+    %x_89:vec4<f32> = load %value
+    %x_93:vec4<f32> = load %value
+    %34:f32 = access %x_87, 0u
+    %35:f32 = access %x_87, 1u
+    %36:vec2<f32> = construct %34, %35
+    %37:f32 = access %x_89, 0u
+    %38:f32 = access %x_89, 1u
+    %39:vec2<f32> = construct %37, %38
+    %40:vec2<f32> = mul %36, %39
+    %41:vec2<f32> = mul %40, vec2<f32>(2.0f)
+    %42:f32 = access %x_93, 0u
+    %43:f32 = access %x_93, 1u
+    %44:vec2<f32> = construct %42, %43
+    %x_95:vec2<f32> = add %41, %44
+    %x_96:vec4<f32> = load %value
+    %47:f32 = access %x_96, 0u
+    %48:f32 = access %x_96, 1u
+    %49:f32 = access %x_95, 0u
+    %50:f32 = access %x_95, 1u
+    %51:vec4<f32> = construct %47, %48, %49, %50
+    store %value, %51
+    store %i, 0i
+    loop [b: %b5, c: %b6] {  # loop_1
+      %b5 = block {  # body
+        %x_102:i32 = load %i
+        %53:ptr<uniform, vec2<f32>, read> = access %x_10, 0u
+        %x_104:f32 = load_vector_element %53, 1u
+        %55:i32 = convert %x_104
+        %56:i32 = add %55, 1i
+        %57:bool = lt %x_102, %56
+        if %57 [t: %b7, f: %b8] {  # if_3
+          %b7 = block {  # true
+            exit_if  # if_3
+          }
+          %b8 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_109:i32 = load %i
+        %59:f32 = convert %x_109
+        store_vector_element %value, 0u, %59
+        continue %b6
+      }
+      %b6 = block {  # continuing
+        %x_112:i32 = load %i
+        %61:i32 = add %x_112, 1i
+        store %i, %61
+        next_iteration %b5
+      }
+    }
+    %x_115:f32 = load_vector_element %value, 0u
+    %x_116:bool = eq %x_115, 1.0f
+    store %x_122_phi, %x_116
+    if %x_116 [t: %b9] {  # if_4
+      %b9 = block {  # true
+        %x_120:f32 = load_vector_element %value, 1u
+        %65:bool = eq %x_120, 1.0f
+        store %x_121, %65
+        %66:bool = load %x_121
+        store %x_122_phi, %66
+        exit_if  # if_4
+      }
+    }
+    %x_122:bool = load %x_122_phi
+    if %x_122 [t: %b10, f: %b11] {  # if_5
+      %b10 = block {  # true
+        ret 1.0f
+      }
+      %b11 = block {  # false
+        ret 0.0f
+      }
+    }
+    unreachable
+  }
+}
+%main_1 = func():void -> %b12 {
+  %b12 = block {
+    %count:ptr<function, i32, read_write> = var
+    %i_1:ptr<function, i32, read_write> = var
+    store %count, 0i
+    store %i_1, 0i
+    loop [b: %b13, c: %b14] {  # loop_2
+      %b13 = block {  # body
+        %x_51:i32 = load %i_1
+        %72:ptr<uniform, vec2<f32>, read> = access %x_10, 0u
+        %x_53:f32 = load_vector_element %72, 1u
+        %74:i32 = convert %x_53
+        %75:i32 = add %74, 1i
+        %76:bool = lt %x_51, %75
+        if %76 [t: %b15, f: %b16] {  # if_6
+          %b15 = block {  # true
+            exit_if  # if_6
+          }
+          %b16 = block {  # false
+            exit_loop  # loop_2
+          }
+        }
+        %x_58:f32 = call %func_
+        %x_60:i32 = load %count
+        %79:i32 = convert %x_58
+        %80:i32 = add %x_60, %79
+        store %count, %80
+        continue %b14
+      }
+      %b14 = block {  # continuing
+        %x_62:i32 = load %i_1
+        %82:i32 = add %x_62, 1i
+        store %i_1, %82
+        next_iteration %b13
+      }
+    }
+    %x_64:i32 = load %count
+    %84:bool = eq %x_64, 2i
+    if %84 [t: %b17, f: %b18] {  # if_7
+      %b17 = block {  # true
+        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_7
+      }
+      %b18 = block {  # false
+        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
+        exit_if  # if_7
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b19 {
+  %b19 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %87:void = call %main_1
+    %88:vec4<f32> = load %x_GLF_color
+    %89:main_out = construct %88
+    ret %89
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..446dc2d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,77 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %j:ptr<function, i32, read_write> = var
+    %x_41:ptr<function, f32, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %6:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %7:f32 = load_vector_element %6, 0u
+        %8:i32 = convert %7
+        store %j, %8
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %9:i32 = load %j
+            %10:bool = lt %9, 2i
+            if %10 [t: %b7, f: %b8] {  # if_1
+              %b7 = block {  # true
+                exit_if  # if_1
+              }
+              %b8 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            ret
+          }
+          %b6 = block {  # continuing
+            next_iteration %b5
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %11:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %12:f32 = load_vector_element %11, 1u
+        store %x_41, %12
+        %13:f32 = load %x_41
+        %14:bool = gt 0.0f, %13
+        %15:bool = eq %14, false
+        break_if %15 %b3
+      }
+    }
+    %16:f32 = load %x_41
+    %x_43:i32 = convert %16
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..b5c520f
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,77 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %j:ptr<function, i32, read_write> = var
+    %x_41:ptr<function, f32, read_write> = var
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %6:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %x_32:f32 = load_vector_element %6, 0u
+        %8:i32 = convert %x_32
+        store %j, %8
+        loop [b: %b5, c: %b6] {  # loop_2
+          %b5 = block {  # body
+            %x_8:i32 = load %j
+            %10:bool = lt %x_8, 2i
+            if %10 [t: %b7, f: %b8] {  # if_1
+              %b7 = block {  # true
+                exit_if  # if_1
+              }
+              %b8 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            ret
+          }
+          %b6 = block {  # continuing
+            next_iteration %b5
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %11:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+        %12:f32 = load_vector_element %11, 1u
+        store %x_41, %12
+        %13:f32 = load %x_41
+        %14:bool = gt 0.0f, %13
+        %15:bool = eq %14, false
+        break_if %15 %b3
+      }
+    }
+    %16:f32 = load %x_41
+    %x_43:i32 = convert %16
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b9 {
+  %b9 = block {
+    %19:void = call %main_1
+    %20:vec4<f32> = load %x_GLF_color
+    %21:main_out = construct %20
+    ret %21
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..a922f48
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,171 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  injected:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %idx:ptr<function, i32, read_write> = var
+    %m43:ptr<function, mat4x3<f32>, read_write> = var
+    %ll_1:ptr<function, i32, read_write> = var
+    %GLF_live6rows:ptr<function, i32, read_write> = var
+    %z:ptr<function, i32, read_write> = var
+    %ll_2:ptr<function, i32, read_write> = var
+    %ctr:ptr<function, i32, read_write> = var
+    %tempm43:ptr<function, mat4x3<f32>, read_write> = var
+    %ll_3:ptr<function, i32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %d:ptr<function, i32, read_write> = var
+    %GLF_live6sums:ptr<function, array<f32, 9>, read_write> = var
+    store %idx, 0i
+    store %m43, mat4x3<f32>(vec3<f32>(1.0f, 0.0f, 0.0f), vec3<f32>(0.0f, 1.0f, 0.0f), vec3<f32>(0.0f, 0.0f, 1.0f), vec3<f32>(0.0f))
+    store %ll_1, 0i
+    store %GLF_live6rows, 2i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %16:i32 = load %ll_1
+        %17:ptr<uniform, i32, read> = access %x_9, 0u
+        %18:i32 = load %17
+        %19:bool = gte %16, %18
+        if %19 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+            exit_loop  # loop_1
+          }
+        }
+        %20:i32 = load %ll_1
+        %21:i32 = add %20, 1i
+        store %ll_1, %21
+        %22:ptr<uniform, i32, read> = access %x_9, 0u
+        %23:i32 = load %22
+        store %z, %23
+        store %ll_2, 0i
+        store %ctr, 0i
+        loop [b: %b6, c: %b7] {  # loop_2
+          %b6 = block {  # body
+            %24:i32 = load %ctr
+            %25:bool = lt %24, 1i
+            if %25 [t: %b8, f: %b9] {  # if_2
+              %b8 = block {  # true
+                exit_if  # if_2
+              }
+              %b9 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %26:i32 = load %ll_2
+            %27:ptr<uniform, i32, read> = access %x_9, 0u
+            %28:i32 = load %27
+            %29:bool = gte %26, %28
+            if %29 [t: %b10] {  # if_3
+              %b10 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            %30:i32 = load %ll_2
+            %31:i32 = add %30, 1i
+            store %ll_2, %31
+            %32:mat4x3<f32> = load %m43
+            store %tempm43, %32
+            store %ll_3, 0i
+            store %c, 0i
+            loop [b: %b11, c: %b12] {  # loop_3
+              %b11 = block {  # body
+                %33:i32 = load %z
+                %34:bool = lt 1i, %33
+                if %34 [t: %b13, f: %b14] {  # if_4
+                  %b13 = block {  # true
+                    exit_if  # if_4
+                  }
+                  %b14 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                store %d, 0i
+                %x_29:i32 = load %c
+                %x_30:i32 = load %c
+                %x_31:i32 = load %c
+                %x_32:i32 = load %d
+                %x_33:i32 = load %d
+                %x_34:i32 = load %d
+                %41:bool = gte %x_29, 0i
+                %42:bool = lt %x_30, 4i
+                %43:bool = and %41, %42
+                %44:i32 = select 0i, %x_31, %43
+                %45:ptr<function, vec3<f32>, read_write> = access %tempm43, %44
+                %46:bool = gte %x_32, 0i
+                %47:bool = lt %x_33, 3i
+                %48:bool = and %46, %47
+                %49:i32 = select 0i, %x_34, %48
+                store_vector_element %45, %49, 1.0f
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %50:i32 = load %c
+                %51:i32 = add %50, 1i
+                store %c, %51
+                next_iteration %b11
+              }
+            }
+            %52:i32 = load %idx
+            %53:i32 = load %idx
+            %54:bool = gte %53, 0i
+            %55:i32 = load %idx
+            %56:bool = lt %55, 9i
+            %57:bool = and %54, %56
+            %x_117:i32 = select 0i, %52, %57
+            %59:ptr<function, f32, read_write> = access %GLF_live6sums, %x_117
+            %60:ptr<function, f32, read_write> = access %GLF_live6sums, %x_117
+            %61:f32 = load %60
+            %62:i32 = load %ctr
+            %63:ptr<function, vec3<f32>, read_write> = access %m43, %62
+            %64:f32 = load_vector_element %63, 1u
+            %65:f32 = add %61, %64
+            store %59, %65
+            continue %b7
+          }
+          %b7 = block {  # continuing
+            %66:i32 = load %ctr
+            %67:i32 = add %66, 1i
+            store %ctr, %67
+            next_iteration %b6
+          }
+        }
+        %68:i32 = load %idx
+        %69:i32 = add %68, 1i
+        store %idx, %69
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b15 {
+  %b15 = block {
+    %71:void = call %main_1
+    %72:vec4<f32> = load %x_GLF_color
+    %73:main_out = construct %72
+    ret %73
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4c071ce
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,171 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
+  injected:i32 @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %idx:ptr<function, i32, read_write> = var
+    %m43:ptr<function, mat4x3<f32>, read_write> = var
+    %ll_1:ptr<function, i32, read_write> = var
+    %GLF_live6rows:ptr<function, i32, read_write> = var
+    %z:ptr<function, i32, read_write> = var
+    %ll_2:ptr<function, i32, read_write> = var
+    %ctr:ptr<function, i32, read_write> = var
+    %tempm43:ptr<function, mat4x3<f32>, read_write> = var
+    %ll_3:ptr<function, i32, read_write> = var
+    %c:ptr<function, i32, read_write> = var
+    %d:ptr<function, i32, read_write> = var
+    %GLF_live6sums:ptr<function, array<f32, 9>, read_write> = var
+    store %idx, 0i
+    store %m43, mat4x3<f32>(vec3<f32>(1.0f, 0.0f, 0.0f), vec3<f32>(0.0f, 1.0f, 0.0f), vec3<f32>(0.0f, 0.0f, 1.0f), vec3<f32>(0.0f))
+    store %ll_1, 0i
+    store %GLF_live6rows, 2i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_18:i32 = load %ll_1
+        %17:ptr<uniform, i32, read> = access %x_9, 0u
+        %x_19:i32 = load %17
+        %19:bool = gte %x_18, %x_19
+        if %19 [t: %b5] {  # if_1
+          %b5 = block {  # true
+            store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+            exit_loop  # loop_1
+          }
+        }
+        %x_20:i32 = load %ll_1
+        %21:i32 = add %x_20, 1i
+        store %ll_1, %21
+        %22:ptr<uniform, i32, read> = access %x_9, 0u
+        %x_22:i32 = load %22
+        store %z, %x_22
+        store %ll_2, 0i
+        store %ctr, 0i
+        loop [b: %b6, c: %b7] {  # loop_2
+          %b6 = block {  # body
+            %x_23:i32 = load %ctr
+            %25:bool = lt %x_23, 1i
+            if %25 [t: %b8, f: %b9] {  # if_2
+              %b8 = block {  # true
+                exit_if  # if_2
+              }
+              %b9 = block {  # false
+                exit_loop  # loop_2
+              }
+            }
+            %x_24:i32 = load %ll_2
+            %27:ptr<uniform, i32, read> = access %x_9, 0u
+            %x_25:i32 = load %27
+            %29:bool = gte %x_24, %x_25
+            if %29 [t: %b10] {  # if_3
+              %b10 = block {  # true
+                exit_loop  # loop_2
+              }
+            }
+            %x_26:i32 = load %ll_2
+            %31:i32 = add %x_26, 1i
+            store %ll_2, %31
+            %x_98:mat4x3<f32> = load %m43
+            store %tempm43, %x_98
+            store %ll_3, 0i
+            store %c, 0i
+            loop [b: %b11, c: %b12] {  # loop_3
+              %b11 = block {  # body
+                %x_28:i32 = load %z
+                %34:bool = lt 1i, %x_28
+                if %34 [t: %b13, f: %b14] {  # if_4
+                  %b13 = block {  # true
+                    exit_if  # if_4
+                  }
+                  %b14 = block {  # false
+                    exit_loop  # loop_3
+                  }
+                }
+                store %d, 0i
+                %x_29:i32 = load %c
+                %x_30:i32 = load %c
+                %x_31:i32 = load %c
+                %x_32:i32 = load %d
+                %x_33:i32 = load %d
+                %x_34:i32 = load %d
+                %41:bool = gte %x_29, 0i
+                %42:bool = lt %x_30, 4i
+                %43:bool = and %41, %42
+                %44:i32 = select 0i, %x_31, %43
+                %45:ptr<function, vec3<f32>, read_write> = access %tempm43, %44
+                %46:bool = gte %x_32, 0i
+                %47:bool = lt %x_33, 3i
+                %48:bool = and %46, %47
+                %49:i32 = select 0i, %x_34, %48
+                store_vector_element %45, %49, 1.0f
+                continue %b12
+              }
+              %b12 = block {  # continuing
+                %x_35:i32 = load %c
+                %51:i32 = add %x_35, 1i
+                store %c, %51
+                next_iteration %b11
+              }
+            }
+            %x_37:i32 = load %idx
+            %x_38:i32 = load %idx
+            %x_39:i32 = load %idx
+            %55:bool = gte %x_37, 0i
+            %56:bool = lt %x_38, 9i
+            %57:bool = and %55, %56
+            %x_117:i32 = select 0i, %x_39, %57
+            %x_40:i32 = load %ctr
+            %60:ptr<function, vec3<f32>, read_write> = access %m43, %x_40
+            %x_119:f32 = load_vector_element %60, 1u
+            %62:ptr<function, f32, read_write> = access %GLF_live6sums, %x_117
+            %x_121:f32 = load %62
+            %64:ptr<function, f32, read_write> = access %GLF_live6sums, %x_117
+            %65:f32 = add %x_121, %x_119
+            store %64, %65
+            continue %b7
+          }
+          %b7 = block {  # continuing
+            %x_41:i32 = load %ctr
+            %67:i32 = add %x_41, 1i
+            store %ctr, %67
+            next_iteration %b6
+          }
+        }
+        %x_43:i32 = load %idx
+        %69:i32 = add %x_43, 1i
+        store %idx, %69
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b15 {
+  %b15 = block {
+    %71:void = call %main_1
+    %72:vec4<f32> = load %x_GLF_color
+    %73:main_out = construct %72
+    ret %73
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..e603e15
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,614 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: BST = struct @align(4) {
+  data:i32 @offset(0)
+  leftIndex:i32 @offset(4)
+  rightIndex:i32 @offset(8)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+Obj = struct @align(4) {
+  odd_numbers:array<f32, 10> @offset(0)
+  even_numbers:array<f32, 10> @offset(40)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %tree_1:ptr<private, array<BST, 10>, read_write> = var
+  %x_27:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = func(%tree:ptr<function, BST, read_write>, %data:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %8:ptr<function, i32, read_write> = access %tree, 0u
+    %9:i32 = load %data
+    store %8, %9
+    %10:ptr<function, i32, read_write> = access %tree, 1u
+    store %10, -1i
+    %11:ptr<function, i32, read_write> = access %tree, 2u
+    store %11, -1i
+    ret
+  }
+}
+%insert_i1_i1_ = func(%treeIndex:ptr<function, i32, read_write>, %data_1:ptr<function, i32, read_write>):void -> %b3 {
+  %b3 = block {
+    %baseIndex:ptr<function, i32, read_write> = var
+    %param:ptr<function, BST, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, BST, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %GLF_live8i:ptr<function, i32, read_write> = var
+    %GLF_live8A:ptr<function, array<f32, 50>, read_write> = var
+    store %baseIndex, 0i
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %22:i32 = load %baseIndex
+        %23:i32 = load %treeIndex
+        %24:bool = lte %22, %23
+        if %24 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %25:i32 = load %data_1
+        %26:i32 = load %baseIndex
+        %27:ptr<private, i32, read_write> = access %tree_1, %26, 0u
+        %28:i32 = load %27
+        %29:bool = lte %25, %28
+        if %29 [t: %b8, f: %b9] {  # if_2
+          %b8 = block {  # true
+            %30:i32 = load %baseIndex
+            %31:ptr<private, i32, read_write> = access %tree_1, %30, 1u
+            %32:i32 = load %31
+            %33:bool = eq %32, -1i
+            if %33 [t: %b10, f: %b11] {  # if_3
+              %b10 = block {  # true
+                %x_82:i32 = load %baseIndex
+                %35:ptr<private, i32, read_write> = access %tree_1, %x_82, 1u
+                %36:i32 = load %treeIndex
+                store %35, %36
+                %x_84:i32 = load %treeIndex
+                %38:ptr<private, BST, read_write> = access %tree_1, %x_84
+                %39:BST = load %38
+                store %param, %39
+                %40:i32 = load %data_1
+                store %param_1, %40
+                %41:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param, %param_1
+                %42:ptr<private, BST, read_write> = access %tree_1, %x_84
+                %43:BST = load %param
+                store %42, %43
+                ret
+              }
+              %b11 = block {  # false
+                %44:i32 = load %baseIndex
+                %45:ptr<private, i32, read_write> = access %tree_1, %44, 1u
+                %46:i32 = load %45
+                store %baseIndex, %46
+                continue %b5
+              }
+            }
+            exit_if  # if_2
+          }
+          %b9 = block {  # false
+            %47:i32 = load %baseIndex
+            %48:ptr<private, i32, read_write> = access %tree_1, %47, 2u
+            %49:i32 = load %48
+            %50:bool = eq %49, -1i
+            if %50 [t: %b12, f: %b13] {  # if_4
+              %b12 = block {  # true
+                %x_90:i32 = load %baseIndex
+                %52:ptr<private, i32, read_write> = access %tree_1, %x_90, 2u
+                %53:i32 = load %treeIndex
+                store %52, %53
+                %x_92:i32 = load %treeIndex
+                %55:ptr<private, BST, read_write> = access %tree_1, %x_92
+                %56:BST = load %55
+                store %param_2, %56
+                %57:i32 = load %data_1
+                store %param_3, %57
+                %58:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param_2, %param_3
+                %59:ptr<private, BST, read_write> = access %tree_1, %x_92
+                %60:BST = load %param_2
+                store %59, %60
+                ret
+              }
+              %b13 = block {  # false
+                store %GLF_live8i, 1i
+                %61:i32 = load %GLF_live8i
+                %62:i32 = load %GLF_live8i
+                %63:bool = gte %62, 0i
+                %64:i32 = load %GLF_live8i
+                %65:bool = lt %64, 50i
+                %66:bool = and %63, %65
+                %x_369:i32 = select 0i, %61, %66
+                %68:ptr<function, f32, read_write> = access %GLF_live8A, %x_369
+                %69:ptr<function, f32, read_write> = access %GLF_live8A, %x_369
+                %70:f32 = load %69
+                %71:ptr<function, f32, read_write> = access %GLF_live8A, 0i
+                %72:f32 = load %71
+                %73:f32 = add %70, %72
+                store %68, %73
+                loop [b: %b14, c: %b15] {  # loop_2
+                  %b14 = block {  # body
+                    %74:i32 = load %baseIndex
+                    %75:ptr<private, i32, read_write> = access %tree_1, %74, 2u
+                    %76:i32 = load %75
+                    store %baseIndex, %76
+                    continue %b15
+                  }
+                  %b15 = block {  # continuing
+                    %77:ptr<uniform, vec2<f32>, read> = access %x_27, 0u
+                    %x_382:f32 = load_vector_element %77, 0u
+                    %79:ptr<uniform, vec2<f32>, read> = access %x_27, 0u
+                    %x_384:f32 = load_vector_element %79, 1u
+                    %81:bool = gt %x_382, %x_384
+                    %82:bool = eq %81, false
+                    break_if %82 %b14
+                  }
+                }
+                continue %b5
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        next_iteration %b4
+      }
+    }
+    ret
+  }
+}
+%search_i1_ = func(%t:ptr<function, i32, read_write>):i32 -> %b16 {
+  %b16 = block {
+    %index:ptr<function, i32, read_write> = var
+    %currentNode:ptr<function, BST, read_write> = var
+    %x_387:ptr<function, i32, read_write> = var
+    store %index, 0i
+    loop [b: %b17, c: %b18] {  # loop_3
+      %b17 = block {  # body
+        %88:i32 = load %index
+        %89:bool = neq %88, -1i
+        if %89 [t: %b19, f: %b20] {  # if_5
+          %b19 = block {  # true
+            exit_if  # if_5
+          }
+          %b20 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %90:i32 = load %index
+        %91:ptr<private, BST, read_write> = access %tree_1, %90
+        %92:BST = load %91
+        store %currentNode, %92
+        %93:ptr<function, i32, read_write> = access %currentNode, 0u
+        %94:i32 = load %93
+        %95:i32 = load %t
+        %96:bool = eq %94, %95
+        if %96 [t: %b21] {  # if_6
+          %b21 = block {  # true
+            %x_103:i32 = load %t
+            ret %x_103
+          }
+        }
+        %98:i32 = load %t
+        %99:ptr<function, i32, read_write> = access %currentNode, 0u
+        %100:i32 = load %99
+        %101:bool = gt %98, %100
+        if %101 [t: %b22, f: %b23] {  # if_7
+          %b22 = block {  # true
+            %102:ptr<function, i32, read_write> = access %currentNode, 2u
+            %103:i32 = load %102
+            store %x_387, %103
+            exit_if  # if_7
+          }
+          %b23 = block {  # false
+            %104:ptr<function, i32, read_write> = access %currentNode, 1u
+            %105:i32 = load %104
+            store %x_387, %105
+            exit_if  # if_7
+          }
+        }
+        %106:i32 = load %x_387
+        store %index, %106
+        continue %b18
+      }
+      %b18 = block {  # continuing
+        next_iteration %b17
+      }
+    }
+    ret -1i
+  }
+}
+%makeFrame_f1_ = func(%v:ptr<function, f32, read_write>):f32 -> %b24 {
+  %b24 = block {
+    %param_5:ptr<function, i32, read_write> = var
+    %param_6:ptr<function, i32, read_write> = var
+    %param_7:ptr<function, i32, read_write> = var
+    %112:f32 = load %v
+    %113:f32 = mul %112, 6.5f
+    store %v, %113
+    %114:f32 = load %v
+    %115:bool = lt %114, 1.5f
+    if %115 [t: %b25] {  # if_8
+      %b25 = block {  # true
+        store %param_5, 100i
+        %x_110:i32 = call %search_i1_, %param_5
+        %117:f32 = convert %x_110
+        ret %117
+      }
+    }
+    %118:f32 = load %v
+    %119:bool = lt %118, 4.0f
+    if %119 [t: %b26] {  # if_9
+      %b26 = block {  # true
+        ret 0.0f
+      }
+    }
+    %x_429:f32 = load %v
+    store %param_6, 6i
+    %x_111:i32 = call %search_i1_, %param_6
+    %122:f32 = convert %x_111
+    %123:bool = lt %x_429, %122
+    if %123 [t: %b27] {  # if_10
+      %b27 = block {  # true
+        ret 1.0f
+      }
+    }
+    store %param_7, 30i
+    %x_112:i32 = call %search_i1_, %param_7
+    %125:f32 = convert %x_112
+    %126:f32 = add 10.0f, %125
+    ret %126
+  }
+}
+%hueColor_f1_ = func(%angle:ptr<function, f32, read_write>):vec3<f32> -> %b28 {
+  %b28 = block {
+    %nodeData:ptr<function, f32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    store %param_4, 15i
+    %x_109:i32 = call %search_i1_, %param_4
+    %132:f32 = convert %x_109
+    store %nodeData, %132
+    %x_409:f32 = load %angle
+    %x_410:f32 = load %nodeData
+    %135:vec3<f32> = construct 1.0f, 5.0f, %x_410
+    %136:vec3<f32> = mul %135, %x_409
+    %137:vec3<f32> = add vec3<f32>(30.0f), %136
+    %138:vec3<f32> = div %137, vec3<f32>(50.0f)
+    ret %138
+  }
+}
+%main_1 = func():void -> %b29 {
+  %b29 = block {
+    %treeIndex_1:ptr<function, i32, read_write> = var
+    %param_8:ptr<function, BST, read_write> = var
+    %param_9:ptr<function, i32, read_write> = var
+    %param_10:ptr<function, i32, read_write> = var
+    %param_11:ptr<function, i32, read_write> = var
+    %GLF_live1_looplimiter2:ptr<function, i32, read_write> = var
+    %GLF_live1i:ptr<function, i32, read_write> = var
+    %param_12:ptr<function, i32, read_write> = var
+    %param_13:ptr<function, i32, read_write> = var
+    %param_14:ptr<function, i32, read_write> = var
+    %param_15:ptr<function, i32, read_write> = var
+    %param_16:ptr<function, i32, read_write> = var
+    %param_17:ptr<function, i32, read_write> = var
+    %param_18:ptr<function, i32, read_write> = var
+    %param_19:ptr<function, i32, read_write> = var
+    %param_20:ptr<function, i32, read_write> = var
+    %param_21:ptr<function, i32, read_write> = var
+    %param_22:ptr<function, i32, read_write> = var
+    %param_23:ptr<function, i32, read_write> = var
+    %GLF_live4_looplimiter3:ptr<function, i32, read_write> = var
+    %GLF_live4i:ptr<function, i32, read_write> = var
+    %GLF_live4index:ptr<function, i32, read_write> = var
+    %GLF_live4obj:ptr<function, Obj, read_write> = var
+    %param_24:ptr<function, i32, read_write> = var
+    %param_25:ptr<function, i32, read_write> = var
+    %param_26:ptr<function, i32, read_write> = var
+    %param_27:ptr<function, i32, read_write> = var
+    %z:ptr<function, vec2<f32>, read_write> = var
+    %x:ptr<function, f32, read_write> = var
+    %param_28:ptr<function, f32, read_write> = var
+    %y:ptr<function, f32, read_write> = var
+    %param_29:ptr<function, f32, read_write> = var
+    %sum:ptr<function, i32, read_write> = var
+    %t_1:ptr<function, i32, read_write> = var
+    %result:ptr<function, i32, read_write> = var
+    %param_30:ptr<function, i32, read_write> = var
+    %a:ptr<function, f32, read_write> = var
+    %x_235:ptr<function, vec3<f32>, read_write> = var
+    %param_31:ptr<function, f32, read_write> = var
+    store %treeIndex_1, 0i
+    %179:ptr<private, BST, read_write> = access %tree_1, 0i
+    %180:BST = load %179
+    store %param_8, %180
+    store %param_9, 9i
+    %181:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param_8, %param_9
+    %182:ptr<private, BST, read_write> = access %tree_1, 0i
+    %183:BST = load %param_8
+    store %182, %183
+    %184:i32 = load %treeIndex_1
+    %185:i32 = add %184, 1i
+    store %treeIndex_1, %185
+    %186:i32 = load %treeIndex_1
+    store %param_10, %186
+    store %param_11, 5i
+    %187:void = call %insert_i1_i1_, %param_10, %param_11
+    %188:i32 = load %treeIndex_1
+    %189:i32 = add %188, 1i
+    store %treeIndex_1, %189
+    store %GLF_live1_looplimiter2, 0i
+    store %GLF_live1i, 0i
+    loop [b: %b30, c: %b31] {  # loop_4
+      %b30 = block {  # body
+        if true [t: %b32, f: %b33] {  # if_11
+          %b32 = block {  # true
+            exit_if  # if_11
+          }
+          %b33 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %190:i32 = load %GLF_live1_looplimiter2
+        %191:bool = gte %190, 7i
+        if %191 [t: %b34] {  # if_12
+          %b34 = block {  # true
+            exit_loop  # loop_4
+          }
+        }
+        %192:i32 = load %GLF_live1_looplimiter2
+        %193:i32 = add %192, 1i
+        store %GLF_live1_looplimiter2, %193
+        continue %b31
+      }
+      %b31 = block {  # continuing
+        %194:i32 = load %GLF_live1i
+        %195:i32 = add %194, 1i
+        store %GLF_live1i, %195
+        next_iteration %b30
+      }
+    }
+    %196:i32 = load %treeIndex_1
+    store %param_12, %196
+    store %param_13, 12i
+    %197:void = call %insert_i1_i1_, %param_12, %param_13
+    %198:i32 = load %treeIndex_1
+    %199:i32 = add %198, 1i
+    store %treeIndex_1, %199
+    %200:i32 = load %treeIndex_1
+    store %param_14, %200
+    store %param_15, 15i
+    %201:void = call %insert_i1_i1_, %param_14, %param_15
+    %202:i32 = load %treeIndex_1
+    %203:i32 = add %202, 1i
+    store %treeIndex_1, %203
+    %204:i32 = load %treeIndex_1
+    store %param_16, %204
+    store %param_17, 7i
+    %205:void = call %insert_i1_i1_, %param_16, %param_17
+    %206:i32 = load %treeIndex_1
+    %207:i32 = add %206, 1i
+    store %treeIndex_1, %207
+    %208:i32 = load %treeIndex_1
+    store %param_18, %208
+    store %param_19, 8i
+    %209:void = call %insert_i1_i1_, %param_18, %param_19
+    %210:i32 = load %treeIndex_1
+    %211:i32 = add %210, 1i
+    store %treeIndex_1, %211
+    %212:i32 = load %treeIndex_1
+    store %param_20, %212
+    store %param_21, 2i
+    %213:void = call %insert_i1_i1_, %param_20, %param_21
+    %214:i32 = load %treeIndex_1
+    %215:i32 = add %214, 1i
+    store %treeIndex_1, %215
+    %216:i32 = load %treeIndex_1
+    store %param_22, %216
+    store %param_23, 6i
+    %217:void = call %insert_i1_i1_, %param_22, %param_23
+    %218:i32 = load %treeIndex_1
+    %219:i32 = add %218, 1i
+    store %treeIndex_1, %219
+    store %GLF_live4_looplimiter3, 0i
+    store %GLF_live4i, 0i
+    loop [b: %b35, c: %b36] {  # loop_5
+      %b35 = block {  # body
+        if true [t: %b37, f: %b38] {  # if_13
+          %b37 = block {  # true
+            exit_if  # if_13
+          }
+          %b38 = block {  # false
+            exit_loop  # loop_5
+          }
+        }
+        %220:i32 = load %GLF_live4_looplimiter3
+        %221:bool = gte %220, 3i
+        if %221 [t: %b39] {  # if_14
+          %b39 = block {  # true
+            exit_loop  # loop_5
+          }
+        }
+        %222:i32 = load %GLF_live4_looplimiter3
+        %223:i32 = add %222, 1i
+        store %GLF_live4_looplimiter3, %223
+        store %GLF_live4index, 1i
+        %x_144:i32 = load %GLF_live4index
+        %x_145:i32 = load %GLF_live4index
+        %x_146:i32 = load %GLF_live4index
+        %227:bool = gte %x_144, 0i
+        %228:bool = lt %x_145, 10i
+        %229:bool = and %227, %228
+        %230:i32 = select 0i, %x_146, %229
+        %231:ptr<function, f32, read_write> = access %GLF_live4obj, 1u, %230
+        %232:ptr<function, f32, read_write> = access %GLF_live4obj, 1u, 1i
+        %233:f32 = load %232
+        store %231, %233
+        %x_147:i32 = load %GLF_live4i
+        %x_148:i32 = load %GLF_live4i
+        %x_149:i32 = load %GLF_live4i
+        %237:bool = gte %x_147, 0i
+        %238:bool = lt %x_148, 10i
+        %239:bool = and %237, %238
+        %240:i32 = select 0i, %x_149, %239
+        %241:ptr<function, f32, read_write> = access %GLF_live4obj, 1u, %240
+        store %241, 1.0f
+        continue %b36
+      }
+      %b36 = block {  # continuing
+        %242:i32 = load %GLF_live4i
+        %243:i32 = add %242, 1i
+        store %GLF_live4i, %243
+        next_iteration %b35
+      }
+    }
+    %244:i32 = load %treeIndex_1
+    store %param_24, %244
+    store %param_25, 17i
+    %245:void = call %insert_i1_i1_, %param_24, %param_25
+    %246:ptr<uniform, vec2<f32>, read> = access %x_27, 0u
+    %247:f32 = load_vector_element %246, 0u
+    %248:ptr<uniform, vec2<f32>, read> = access %x_27, 0u
+    %249:f32 = load_vector_element %248, 1u
+    %250:bool = gt %247, %249
+    if %250 [t: %b40] {  # if_15
+      %b40 = block {  # true
+        ret
+      }
+    }
+    %251:i32 = load %treeIndex_1
+    %252:i32 = add %251, 1i
+    store %treeIndex_1, %252
+    %253:i32 = load %treeIndex_1
+    store %param_26, %253
+    store %param_27, 13i
+    %254:void = call %insert_i1_i1_, %param_26, %param_27
+    %255:vec4<f32> = load %gl_FragCoord
+    %256:vec2<f32> = swizzle %255, yx
+    %257:vec2<f32> = div %256, vec2<f32>(256.0f)
+    store %z, %257
+    %258:f32 = load_vector_element %z, 0u
+    store %param_28, %258
+    %x_290:f32 = call %makeFrame_f1_, %param_28
+    store %x, %x_290
+    %260:f32 = load_vector_element %z, 1u
+    store %param_29, %260
+    %x_293:f32 = call %makeFrame_f1_, %param_29
+    store %y, %x_293
+    store %sum, -100i
+    store %t_1, 0i
+    loop [b: %b41, c: %b42] {  # loop_6
+      %b41 = block {  # body
+        %262:i32 = load %t_1
+        %263:bool = lt %262, 20i
+        if %263 [t: %b43, f: %b44] {  # if_16
+          %b43 = block {  # true
+            exit_if  # if_16
+          }
+          %b44 = block {  # false
+            exit_loop  # loop_6
+          }
+        }
+        %264:i32 = load %t_1
+        store %param_30, %264
+        %x_158:i32 = call %search_i1_, %param_30
+        store %result, %x_158
+        %266:i32 = load %result
+        %267:bool = gt %266, 0i
+        if %267 [t: %b45, f: %b46] {  # if_17
+          %b45 = block {  # true
+            exit_if  # if_17
+          }
+          %b46 = block {  # false
+            %x_160:i32 = load %result
+            switch %x_160 [c: (0i, %b47), c: (-1i, %b48), c: (default, %b49)] {  # switch_1
+              %b47 = block {  # case
+                ret
+              }
+              %b48 = block {  # case
+                %269:i32 = load %sum
+                %270:i32 = add %269, 1i
+                store %sum, %270
+                exit_switch  # switch_1
+              }
+              %b49 = block {  # case
+                exit_switch  # switch_1
+              }
+            }
+            exit_if  # if_17
+          }
+        }
+        continue %b42
+      }
+      %b42 = block {  # continuing
+        %271:i32 = load %t_1
+        %272:i32 = add %271, 1i
+        store %t_1, %272
+        next_iteration %b41
+      }
+    }
+    %273:f32 = load %x
+    %274:f32 = load %y
+    %275:i32 = load %sum
+    %276:f32 = convert %275
+    %277:f32 = mul %274, %276
+    %278:f32 = add %273, %277
+    store %a, %278
+    %279:ptr<uniform, vec2<f32>, read> = access %x_27, 0u
+    %280:f32 = load_vector_element %279, 0u
+    %281:ptr<uniform, vec2<f32>, read> = access %x_27, 0u
+    %282:f32 = load_vector_element %281, 1u
+    %283:bool = lt %280, %282
+    if %283 [t: %b50, f: %b51] {  # if_18
+      %b50 = block {  # true
+        store %x_235, vec3<f32>(1.0f, 0.0f, 0.0f)
+        exit_if  # if_18
+      }
+      %b51 = block {  # false
+        %284:f32 = load %a
+        store %param_31, %284
+        %x_321:vec3<f32> = call %hueColor_f1_, %param_31
+        store %x_235, %x_321
+        exit_if  # if_18
+      }
+    }
+    %286:f32 = load_vector_element %x_235, 0u
+    %287:f32 = load_vector_element %x_235, 1u
+    %288:f32 = load_vector_element %x_235, 2u
+    %289:vec4<f32> = construct %286, %287, %288, 1.0f
+    store %x_GLF_color, %289
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b52 {
+  %b52 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %292:void = call %main_1
+    %293:vec4<f32> = load %x_GLF_color
+    %294:main_out = construct %293
+    ret %294
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..0834031
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,617 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: BST = struct @align(4) {
+  data:i32 @offset(0)
+  leftIndex:i32 @offset(4)
+  rightIndex:i32 @offset(8)
+}
+
+buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+Obj = struct @align(4) {
+  odd_numbers:array<f32, 10> @offset(0)
+  even_numbers:array<f32, 10> @offset(40)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %tree_1:ptr<private, array<BST, 10>, read_write> = var
+  %x_27:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = func(%tree:ptr<function, BST, read_write>, %data:ptr<function, i32, read_write>):void -> %b2 {
+  %b2 = block {
+    %x_74:i32 = load %data
+    %9:ptr<function, i32, read_write> = access %tree, 0u
+    store %9, %x_74
+    %10:ptr<function, i32, read_write> = access %tree, 1u
+    store %10, -1i
+    %11:ptr<function, i32, read_write> = access %tree, 2u
+    store %11, -1i
+    ret
+  }
+}
+%insert_i1_i1_ = func(%treeIndex:ptr<function, i32, read_write>, %data_1:ptr<function, i32, read_write>):void -> %b3 {
+  %b3 = block {
+    %baseIndex:ptr<function, i32, read_write> = var
+    %param:ptr<function, BST, read_write> = var
+    %param_1:ptr<function, i32, read_write> = var
+    %param_2:ptr<function, BST, read_write> = var
+    %param_3:ptr<function, i32, read_write> = var
+    %GLF_live8i:ptr<function, i32, read_write> = var
+    %GLF_live8A:ptr<function, array<f32, 50>, read_write> = var
+    store %baseIndex, 0i
+    loop [b: %b4, c: %b5] {  # loop_1
+      %b4 = block {  # body
+        %x_75:i32 = load %baseIndex
+        %x_76:i32 = load %treeIndex
+        %24:bool = lte %x_75, %x_76
+        if %24 [t: %b6, f: %b7] {  # if_1
+          %b6 = block {  # true
+            exit_if  # if_1
+          }
+          %b7 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_77:i32 = load %data_1
+        %x_78:i32 = load %baseIndex
+        %27:ptr<private, i32, read_write> = access %tree_1, %x_78, 0u
+        %x_79:i32 = load %27
+        %29:bool = lte %x_77, %x_79
+        if %29 [t: %b8, f: %b9] {  # if_2
+          %b8 = block {  # true
+            %x_80:i32 = load %baseIndex
+            %31:ptr<private, i32, read_write> = access %tree_1, %x_80, 1u
+            %x_81:i32 = load %31
+            %33:bool = eq %x_81, -1i
+            if %33 [t: %b10, f: %b11] {  # if_3
+              %b10 = block {  # true
+                %x_82:i32 = load %baseIndex
+                %x_83:i32 = load %treeIndex
+                %36:ptr<private, i32, read_write> = access %tree_1, %x_82, 1u
+                store %36, %x_83
+                %x_84:i32 = load %treeIndex
+                %38:ptr<private, BST, read_write> = access %tree_1, %x_84
+                %x_350:BST = load %38
+                store %param, %x_350
+                %x_85:i32 = load %data_1
+                store %param_1, %x_85
+                %41:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param, %param_1
+                %x_352:BST = load %param
+                %43:ptr<private, BST, read_write> = access %tree_1, %x_84
+                store %43, %x_352
+                ret
+              }
+              %b11 = block {  # false
+                %x_86:i32 = load %baseIndex
+                %45:ptr<private, i32, read_write> = access %tree_1, %x_86, 1u
+                %x_87:i32 = load %45
+                store %baseIndex, %x_87
+                continue %b5
+              }
+            }
+            exit_if  # if_2
+          }
+          %b9 = block {  # false
+            %x_88:i32 = load %baseIndex
+            %48:ptr<private, i32, read_write> = access %tree_1, %x_88, 2u
+            %x_89:i32 = load %48
+            %50:bool = eq %x_89, -1i
+            if %50 [t: %b12, f: %b13] {  # if_4
+              %b12 = block {  # true
+                %x_90:i32 = load %baseIndex
+                %x_91:i32 = load %treeIndex
+                %53:ptr<private, i32, read_write> = access %tree_1, %x_90, 2u
+                store %53, %x_91
+                %x_92:i32 = load %treeIndex
+                %55:ptr<private, BST, read_write> = access %tree_1, %x_92
+                %x_362:BST = load %55
+                store %param_2, %x_362
+                %x_93:i32 = load %data_1
+                store %param_3, %x_93
+                %58:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param_2, %param_3
+                %x_364:BST = load %param_2
+                %60:ptr<private, BST, read_write> = access %tree_1, %x_92
+                store %60, %x_364
+                ret
+              }
+              %b13 = block {  # false
+                store %GLF_live8i, 1i
+                %x_94:i32 = load %GLF_live8i
+                %x_95:i32 = load %GLF_live8i
+                %x_96:i32 = load %GLF_live8i
+                %64:bool = gte %x_94, 0i
+                %65:bool = lt %x_95, 50i
+                %66:bool = and %64, %65
+                %x_369:i32 = select 0i, %x_96, %66
+                %68:ptr<function, f32, read_write> = access %GLF_live8A, 0i
+                %x_371:f32 = load %68
+                %70:ptr<function, f32, read_write> = access %GLF_live8A, %x_369
+                %x_373:f32 = load %70
+                %72:ptr<function, f32, read_write> = access %GLF_live8A, %x_369
+                %73:f32 = add %x_373, %x_371
+                store %72, %73
+                loop [b: %b14, c: %b15] {  # loop_2
+                  %b14 = block {  # body
+                    %x_97:i32 = load %baseIndex
+                    %75:ptr<private, i32, read_write> = access %tree_1, %x_97, 2u
+                    %x_98:i32 = load %75
+                    store %baseIndex, %x_98
+                    continue %b15
+                  }
+                  %b15 = block {  # continuing
+                    %77:ptr<uniform, vec2<f32>, read> = access %x_27, 0u
+                    %x_382:f32 = load_vector_element %77, 0u
+                    %79:ptr<uniform, vec2<f32>, read> = access %x_27, 0u
+                    %x_384:f32 = load_vector_element %79, 1u
+                    %81:bool = gt %x_382, %x_384
+                    %82:bool = eq %81, false
+                    break_if %82 %b14
+                  }
+                }
+                continue %b5
+              }
+            }
+            exit_if  # if_2
+          }
+        }
+        continue %b5
+      }
+      %b5 = block {  # continuing
+        next_iteration %b4
+      }
+    }
+    ret
+  }
+}
+%search_i1_ = func(%t:ptr<function, i32, read_write>):i32 -> %b16 {
+  %b16 = block {
+    %index:ptr<function, i32, read_write> = var
+    %currentNode:ptr<function, BST, read_write> = var
+    %x_387:ptr<function, i32, read_write> = var
+    store %index, 0i
+    loop [b: %b17, c: %b18] {  # loop_3
+      %b17 = block {  # body
+        %x_99:i32 = load %index
+        %89:bool = neq %x_99, -1i
+        if %89 [t: %b19, f: %b20] {  # if_5
+          %b19 = block {  # true
+            exit_if  # if_5
+          }
+          %b20 = block {  # false
+            exit_loop  # loop_3
+          }
+        }
+        %x_100:i32 = load %index
+        %91:ptr<private, BST, read_write> = access %tree_1, %x_100
+        %x_395:BST = load %91
+        store %currentNode, %x_395
+        %93:ptr<function, i32, read_write> = access %currentNode, 0u
+        %x_101:i32 = load %93
+        %x_102:i32 = load %t
+        %96:bool = eq %x_101, %x_102
+        if %96 [t: %b21] {  # if_6
+          %b21 = block {  # true
+            %x_103:i32 = load %t
+            ret %x_103
+          }
+        }
+        %x_104:i32 = load %t
+        %99:ptr<function, i32, read_write> = access %currentNode, 0u
+        %x_105:i32 = load %99
+        %101:bool = gt %x_104, %x_105
+        if %101 [t: %b22, f: %b23] {  # if_7
+          %b22 = block {  # true
+            %102:ptr<function, i32, read_write> = access %currentNode, 2u
+            %x_106:i32 = load %102
+            store %x_387, %x_106
+            exit_if  # if_7
+          }
+          %b23 = block {  # false
+            %104:ptr<function, i32, read_write> = access %currentNode, 1u
+            %x_107:i32 = load %104
+            store %x_387, %x_107
+            exit_if  # if_7
+          }
+        }
+        %x_108:i32 = load %x_387
+        store %index, %x_108
+        continue %b18
+      }
+      %b18 = block {  # continuing
+        next_iteration %b17
+      }
+    }
+    ret -1i
+  }
+}
+%makeFrame_f1_ = func(%v:ptr<function, f32, read_write>):f32 -> %b24 {
+  %b24 = block {
+    %param_5:ptr<function, i32, read_write> = var
+    %param_6:ptr<function, i32, read_write> = var
+    %param_7:ptr<function, i32, read_write> = var
+    %x_418:f32 = load %v
+    %113:f32 = mul %x_418, 6.5f
+    store %v, %113
+    %x_420:f32 = load %v
+    %115:bool = lt %x_420, 1.5f
+    if %115 [t: %b25] {  # if_8
+      %b25 = block {  # true
+        store %param_5, 100i
+        %x_110:i32 = call %search_i1_, %param_5
+        %117:f32 = convert %x_110
+        ret %117
+      }
+    }
+    %x_425:f32 = load %v
+    %119:bool = lt %x_425, 4.0f
+    if %119 [t: %b26] {  # if_9
+      %b26 = block {  # true
+        ret 0.0f
+      }
+    }
+    %x_429:f32 = load %v
+    store %param_6, 6i
+    %x_111:i32 = call %search_i1_, %param_6
+    %122:f32 = convert %x_111
+    %123:bool = lt %x_429, %122
+    if %123 [t: %b27] {  # if_10
+      %b27 = block {  # true
+        ret 1.0f
+      }
+    }
+    store %param_7, 30i
+    %x_112:i32 = call %search_i1_, %param_7
+    %125:f32 = convert %x_112
+    %126:f32 = add 10.0f, %125
+    ret %126
+  }
+}
+%hueColor_f1_ = func(%angle:ptr<function, f32, read_write>):vec3<f32> -> %b28 {
+  %b28 = block {
+    %nodeData:ptr<function, f32, read_write> = var
+    %param_4:ptr<function, i32, read_write> = var
+    store %param_4, 15i
+    %x_109:i32 = call %search_i1_, %param_4
+    %132:f32 = convert %x_109
+    store %nodeData, %132
+    %x_409:f32 = load %angle
+    %x_410:f32 = load %nodeData
+    %135:vec3<f32> = construct 1.0f, 5.0f, %x_410
+    %136:vec3<f32> = mul %135, %x_409
+    %137:vec3<f32> = add vec3<f32>(30.0f), %136
+    %138:vec3<f32> = div %137, vec3<f32>(50.0f)
+    ret %138
+  }
+}
+%main_1 = func():void -> %b29 {
+  %b29 = block {
+    %treeIndex_1:ptr<function, i32, read_write> = var
+    %param_8:ptr<function, BST, read_write> = var
+    %param_9:ptr<function, i32, read_write> = var
+    %param_10:ptr<function, i32, read_write> = var
+    %param_11:ptr<function, i32, read_write> = var
+    %GLF_live1_looplimiter2:ptr<function, i32, read_write> = var
+    %GLF_live1i:ptr<function, i32, read_write> = var
+    %param_12:ptr<function, i32, read_write> = var
+    %param_13:ptr<function, i32, read_write> = var
+    %param_14:ptr<function, i32, read_write> = var
+    %param_15:ptr<function, i32, read_write> = var
+    %param_16:ptr<function, i32, read_write> = var
+    %param_17:ptr<function, i32, read_write> = var
+    %param_18:ptr<function, i32, read_write> = var
+    %param_19:ptr<function, i32, read_write> = var
+    %param_20:ptr<function, i32, read_write> = var
+    %param_21:ptr<function, i32, read_write> = var
+    %param_22:ptr<function, i32, read_write> = var
+    %param_23:ptr<function, i32, read_write> = var
+    %GLF_live4_looplimiter3:ptr<function, i32, read_write> = var
+    %GLF_live4i:ptr<function, i32, read_write> = var
+    %GLF_live4index:ptr<function, i32, read_write> = var
+    %GLF_live4obj:ptr<function, Obj, read_write> = var
+    %param_24:ptr<function, i32, read_write> = var
+    %param_25:ptr<function, i32, read_write> = var
+    %param_26:ptr<function, i32, read_write> = var
+    %param_27:ptr<function, i32, read_write> = var
+    %z:ptr<function, vec2<f32>, read_write> = var
+    %x:ptr<function, f32, read_write> = var
+    %param_28:ptr<function, f32, read_write> = var
+    %y:ptr<function, f32, read_write> = var
+    %param_29:ptr<function, f32, read_write> = var
+    %sum:ptr<function, i32, read_write> = var
+    %t_1:ptr<function, i32, read_write> = var
+    %result:ptr<function, i32, read_write> = var
+    %param_30:ptr<function, i32, read_write> = var
+    %a:ptr<function, f32, read_write> = var
+    %x_235:ptr<function, vec3<f32>, read_write> = var
+    %param_31:ptr<function, f32, read_write> = var
+    store %treeIndex_1, 0i
+    %179:ptr<private, BST, read_write> = access %tree_1, 0i
+    %x_237:BST = load %179
+    store %param_8, %x_237
+    store %param_9, 9i
+    %181:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param_8, %param_9
+    %x_239:BST = load %param_8
+    %183:ptr<private, BST, read_write> = access %tree_1, 0i
+    store %183, %x_239
+    %x_113:i32 = load %treeIndex_1
+    %185:i32 = add %x_113, 1i
+    store %treeIndex_1, %185
+    %x_115:i32 = load %treeIndex_1
+    store %param_10, %x_115
+    store %param_11, 5i
+    %187:void = call %insert_i1_i1_, %param_10, %param_11
+    %x_116:i32 = load %treeIndex_1
+    %189:i32 = add %x_116, 1i
+    store %treeIndex_1, %189
+    store %GLF_live1_looplimiter2, 0i
+    store %GLF_live1i, 0i
+    loop [b: %b30, c: %b31] {  # loop_4
+      %b30 = block {  # body
+        if true [t: %b32, f: %b33] {  # if_11
+          %b32 = block {  # true
+            exit_if  # if_11
+          }
+          %b33 = block {  # false
+            exit_loop  # loop_4
+          }
+        }
+        %x_118:i32 = load %GLF_live1_looplimiter2
+        %191:bool = gte %x_118, 7i
+        if %191 [t: %b34] {  # if_12
+          %b34 = block {  # true
+            exit_loop  # loop_4
+          }
+        }
+        %x_119:i32 = load %GLF_live1_looplimiter2
+        %193:i32 = add %x_119, 1i
+        store %GLF_live1_looplimiter2, %193
+        continue %b31
+      }
+      %b31 = block {  # continuing
+        %x_121:i32 = load %GLF_live1i
+        %195:i32 = add %x_121, 1i
+        store %GLF_live1i, %195
+        next_iteration %b30
+      }
+    }
+    %x_123:i32 = load %treeIndex_1
+    store %param_12, %x_123
+    store %param_13, 12i
+    %197:void = call %insert_i1_i1_, %param_12, %param_13
+    %x_124:i32 = load %treeIndex_1
+    %199:i32 = add %x_124, 1i
+    store %treeIndex_1, %199
+    %x_126:i32 = load %treeIndex_1
+    store %param_14, %x_126
+    store %param_15, 15i
+    %201:void = call %insert_i1_i1_, %param_14, %param_15
+    %x_127:i32 = load %treeIndex_1
+    %203:i32 = add %x_127, 1i
+    store %treeIndex_1, %203
+    %x_129:i32 = load %treeIndex_1
+    store %param_16, %x_129
+    store %param_17, 7i
+    %205:void = call %insert_i1_i1_, %param_16, %param_17
+    %x_130:i32 = load %treeIndex_1
+    %207:i32 = add %x_130, 1i
+    store %treeIndex_1, %207
+    %x_132:i32 = load %treeIndex_1
+    store %param_18, %x_132
+    store %param_19, 8i
+    %209:void = call %insert_i1_i1_, %param_18, %param_19
+    %x_133:i32 = load %treeIndex_1
+    %211:i32 = add %x_133, 1i
+    store %treeIndex_1, %211
+    %x_135:i32 = load %treeIndex_1
+    store %param_20, %x_135
+    store %param_21, 2i
+    %213:void = call %insert_i1_i1_, %param_20, %param_21
+    %x_136:i32 = load %treeIndex_1
+    %215:i32 = add %x_136, 1i
+    store %treeIndex_1, %215
+    %x_138:i32 = load %treeIndex_1
+    store %param_22, %x_138
+    store %param_23, 6i
+    %217:void = call %insert_i1_i1_, %param_22, %param_23
+    %x_139:i32 = load %treeIndex_1
+    %219:i32 = add %x_139, 1i
+    store %treeIndex_1, %219
+    store %GLF_live4_looplimiter3, 0i
+    store %GLF_live4i, 0i
+    loop [b: %b35, c: %b36] {  # loop_5
+      %b35 = block {  # body
+        if true [t: %b37, f: %b38] {  # if_13
+          %b37 = block {  # true
+            exit_if  # if_13
+          }
+          %b38 = block {  # false
+            exit_loop  # loop_5
+          }
+        }
+        %x_141:i32 = load %GLF_live4_looplimiter3
+        %221:bool = gte %x_141, 3i
+        if %221 [t: %b39] {  # if_14
+          %b39 = block {  # true
+            exit_loop  # loop_5
+          }
+        }
+        %x_142:i32 = load %GLF_live4_looplimiter3
+        %223:i32 = add %x_142, 1i
+        store %GLF_live4_looplimiter3, %223
+        store %GLF_live4index, 1i
+        %x_144:i32 = load %GLF_live4index
+        %x_145:i32 = load %GLF_live4index
+        %x_146:i32 = load %GLF_live4index
+        %227:ptr<function, f32, read_write> = access %GLF_live4obj, 1u, 1i
+        %x_269:f32 = load %227
+        %229:bool = gte %x_144, 0i
+        %230:bool = lt %x_145, 10i
+        %231:bool = and %229, %230
+        %232:i32 = select 0i, %x_146, %231
+        %233:ptr<function, f32, read_write> = access %GLF_live4obj, 1u, %232
+        store %233, %x_269
+        %x_147:i32 = load %GLF_live4i
+        %x_148:i32 = load %GLF_live4i
+        %x_149:i32 = load %GLF_live4i
+        %237:bool = gte %x_147, 0i
+        %238:bool = lt %x_148, 10i
+        %239:bool = and %237, %238
+        %240:i32 = select 0i, %x_149, %239
+        %241:ptr<function, f32, read_write> = access %GLF_live4obj, 1u, %240
+        store %241, 1.0f
+        continue %b36
+      }
+      %b36 = block {  # continuing
+        %x_150:i32 = load %GLF_live4i
+        %243:i32 = add %x_150, 1i
+        store %GLF_live4i, %243
+        next_iteration %b35
+      }
+    }
+    %x_152:i32 = load %treeIndex_1
+    store %param_24, %x_152
+    store %param_25, 17i
+    %245:void = call %insert_i1_i1_, %param_24, %param_25
+    %246:ptr<uniform, vec2<f32>, read> = access %x_27, 0u
+    %x_278:f32 = load_vector_element %246, 0u
+    %248:ptr<uniform, vec2<f32>, read> = access %x_27, 0u
+    %x_280:f32 = load_vector_element %248, 1u
+    %250:bool = gt %x_278, %x_280
+    if %250 [t: %b40] {  # if_15
+      %b40 = block {  # true
+        ret
+      }
+    }
+    %x_153:i32 = load %treeIndex_1
+    %252:i32 = add %x_153, 1i
+    store %treeIndex_1, %252
+    %x_155:i32 = load %treeIndex_1
+    store %param_26, %x_155
+    store %param_27, 13i
+    %254:void = call %insert_i1_i1_, %param_26, %param_27
+    %x_285:vec4<f32> = load %gl_FragCoord
+    %256:f32 = access %x_285, 1u
+    %257:f32 = access %x_285, 0u
+    %258:vec2<f32> = construct %256, %257
+    %259:vec2<f32> = div %258, vec2<f32>(256.0f)
+    store %z, %259
+    %x_289:f32 = load_vector_element %z, 0u
+    store %param_28, %x_289
+    %x_290:f32 = call %makeFrame_f1_, %param_28
+    store %x, %x_290
+    %x_292:f32 = load_vector_element %z, 1u
+    store %param_29, %x_292
+    %x_293:f32 = call %makeFrame_f1_, %param_29
+    store %y, %x_293
+    store %sum, -100i
+    store %t_1, 0i
+    loop [b: %b41, c: %b42] {  # loop_6
+      %b41 = block {  # body
+        %x_156:i32 = load %t_1
+        %265:bool = lt %x_156, 20i
+        if %265 [t: %b43, f: %b44] {  # if_16
+          %b43 = block {  # true
+            exit_if  # if_16
+          }
+          %b44 = block {  # false
+            exit_loop  # loop_6
+          }
+        }
+        %x_157:i32 = load %t_1
+        store %param_30, %x_157
+        %x_158:i32 = call %search_i1_, %param_30
+        store %result, %x_158
+        %x_159:i32 = load %result
+        %269:bool = gt %x_159, 0i
+        if %269 [t: %b45, f: %b46] {  # if_17
+          %b45 = block {  # true
+            exit_if  # if_17
+          }
+          %b46 = block {  # false
+            %x_160:i32 = load %result
+            switch %x_160 [c: (0i, %b47), c: (-1i, %b48), c: (default, %b49)] {  # switch_1
+              %b47 = block {  # case
+                ret
+              }
+              %b48 = block {  # case
+                %x_161:i32 = load %sum
+                %272:i32 = add %x_161, 1i
+                store %sum, %272
+                exit_switch  # switch_1
+              }
+              %b49 = block {  # case
+                exit_switch  # switch_1
+              }
+            }
+            exit_if  # if_17
+          }
+        }
+        continue %b42
+      }
+      %b42 = block {  # continuing
+        %x_163:i32 = load %t_1
+        %274:i32 = add %x_163, 1i
+        store %t_1, %274
+        next_iteration %b41
+      }
+    }
+    %x_307:f32 = load %x
+    %x_308:f32 = load %y
+    %x_165:i32 = load %sum
+    %278:f32 = convert %x_165
+    %279:f32 = mul %x_308, %278
+    %280:f32 = add %x_307, %279
+    store %a, %280
+    %281:ptr<uniform, vec2<f32>, read> = access %x_27, 0u
+    %x_313:f32 = load_vector_element %281, 0u
+    %283:ptr<uniform, vec2<f32>, read> = access %x_27, 0u
+    %x_315:f32 = load_vector_element %283, 1u
+    %285:bool = lt %x_313, %x_315
+    if %285 [t: %b50, f: %b51] {  # if_18
+      %b50 = block {  # true
+        store %x_235, vec3<f32>(1.0f, 0.0f, 0.0f)
+        exit_if  # if_18
+      }
+      %b51 = block {  # false
+        %x_320:f32 = load %a
+        store %param_31, %x_320
+        %x_321:vec3<f32> = call %hueColor_f1_, %param_31
+        store %x_235, %x_321
+        exit_if  # if_18
+      }
+    }
+    %x_322:vec3<f32> = load %x_235
+    %289:f32 = access %x_322, 0u
+    %290:f32 = access %x_322, 1u
+    %291:f32 = access %x_322, 2u
+    %292:vec4<f32> = construct %289, %290, %291, 1.0f
+    store %x_GLF_color, %292
+    ret
+  }
+}
+%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b52 {
+  %b52 = block {
+    store %gl_FragCoord, %gl_FragCoord_param
+    %295:void = call %main_1
+    %296:vec4<f32> = load %x_GLF_color
+    %297:main_out = construct %296
+    ret %297
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..bbc9704
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %height:ptr<function, f32, read_write> = var
+    store %height, 256.0f
+    %5:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %6:f32 = load_vector_element %5, 1u
+    %7:bool = lt %6, 0.0f
+    if %7 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %8:f32 = load %height
+        %9:vec4<f32> = construct 7612.9453125f, 797.010986328125f, %8, 9.0f
+        %10:vec4<f32> = mix vec4<f32>(30.18000030517578125f, 8840.0f, 469.970001220703125f, 18.2399997711181640625f), vec4<f32>(9.8999996185302734375f, 0.10000000149011611938f, 1169.5386962890625f, 55.79000091552734375f), %9
+        store %x_GLF_color, %10
+        exit_if  # if_1
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b4 {
+  %b4 = block {
+    %12:void = call %main_1
+    %13:vec4<f32> = load %x_GLF_color
+    %14:main_out = construct %13
+    ret %14
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..86bec2c
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,51 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
+  injectionSwitch:vec2<f32> @offset(0)
+}
+
+main_out = struct @align(16) {
+  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
+}
+
+%b1 = block {  # root
+  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
+  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %height:ptr<function, f32, read_write> = var
+    store %height, 256.0f
+    %5:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
+    %x_40:f32 = load_vector_element %5, 1u
+    %7:bool = lt %x_40, 0.0f
+    if %7 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        %x_44:f32 = load %height
+        %9:vec4<f32> = construct 7612.9453125f, 797.010986328125f, %x_44, 9.0f
+        %10:vec4<f32> = mix vec4<f32>(30.18000030517578125f, 8840.0f, 469.970001220703125f, 18.2399997711181640625f), vec4<f32>(9.8999996185302734375f, 0.10000000149011611938f, 1169.5386962890625f, 55.79000091552734375f), %9
+        store %x_GLF_color, %10
+        exit_if  # if_1
+      }
+    }
+    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+%tint_symbol = @fragment func():main_out -> %b4 {
+  %b4 = block {
+    %12:void = call %main_1
+    %13:vec4<f32> = load %x_GLF_color
+    %14:main_out = construct %13
+    ret %14
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..9c676f8
--- /dev/null
+++ b/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,156 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: In2 = struct @align(4) {
+  data_in2:array<i32, 8> @offset(0)
+}
+
+Out0 = struct @align(4) {
+  data_out0:array<i32, 1024> @offset(0)
+}
+
+In1 = struct @align(4) {
+  data_in1:array<i32, 512> @offset(0)
+}
+
+In0 = struct @align(4) {
+  data_in0:array<i32, 512> @offset(0)
+}
+
+%b1 = block {  # root
+  %gl_WorkGroupID:ptr<private, vec3<u32>, read_write> = var
+  %x_13:ptr<storage, In2, read> = var @binding_point(0, 2)
+  %x_15:ptr<storage, Out0, read_write> = var @binding_point(0, 3)
+  %x_17:ptr<storage, In1, read> = var @binding_point(0, 1)
+  %x_19:ptr<storage, In0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %base_index_in:ptr<function, u32, read_write> = var
+    %base_index_out:ptr<function, u32, read_write> = var
+    %index_in0:ptr<function, i32, read_write> = var
+    %index_in1:ptr<function, i32, read_write> = var
+    %index_out0:ptr<function, i32, read_write> = var
+    %index_out1:ptr<function, i32, read_write> = var
+    %condition_index:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %temp0:ptr<function, i32, read_write> = var
+    %temp1:ptr<function, i32, read_write> = var
+    %17:u32 = load_vector_element %gl_WorkGroupID, 0u
+    %18:u32 = mul 128u, %17
+    store %base_index_in, %18
+    %19:u32 = load_vector_element %gl_WorkGroupID, 0u
+    %20:u32 = mul 256u, %19
+    store %base_index_out, %20
+    store %index_in0, 127i
+    store %index_in1, 383i
+    store %index_out0, 255i
+    store %index_out1, 383i
+    store %condition_index, 0i
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %21:i32 = load %i
+        %22:bool = lt %21, 256i
+        if %22 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %23:i32 = load %condition_index
+        %24:ptr<storage, i32, read> = access %x_13, 0u, %23
+        %25:i32 = load %24
+        %26:bool = eq %25, 0i
+        if %26 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_77:u32 = load %base_index_out
+            %x_78:i32 = load %index_out0
+            %29:u32 = bitcast %x_78
+            %30:u32 = add %x_77, %29
+            %31:ptr<storage, i32, read_write> = access %x_15, 0u, %30
+            %32:u32 = load %base_index_in
+            %33:i32 = load %index_in0
+            %34:u32 = bitcast %33
+            %35:u32 = add %32, %34
+            %36:ptr<storage, i32, read> = access %x_17, 0u, %35
+            %37:i32 = load %36
+            store %31, %37
+            %38:i32 = load %index_out0
+            %39:i32 = sub %38, 1i
+            store %index_out0, %39
+            %40:i32 = load %index_in1
+            %41:i32 = sub %40, 1i
+            store %index_in1, %41
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_92:u32 = load %base_index_out
+            %x_93:i32 = load %index_out1
+            %44:u32 = bitcast %x_93
+            %45:u32 = add %x_92, %44
+            %46:ptr<storage, i32, read_write> = access %x_15, 0u, %45
+            %47:u32 = load %base_index_in
+            %48:i32 = load %index_in1
+            %49:u32 = bitcast %48
+            %50:u32 = add %47, %49
+            %51:ptr<storage, i32, read> = access %x_19, 0u, %50
+            %52:i32 = load %51
+            store %46, %52
+            %53:i32 = load %index_out1
+            %54:i32 = sub %53, 1i
+            store %index_out1, %54
+            %55:i32 = load %index_in1
+            %56:i32 = sub %55, 1i
+            store %index_in1, %56
+            exit_if  # if_2
+          }
+        }
+        %57:i32 = load %condition_index
+        %58:i32 = load %condition_index
+        %59:i32 = add %58, 1i
+        %60:ptr<storage, i32, read> = access %x_13, 0u, %59
+        %61:i32 = load %60
+        %62:i32 = add %57, %61
+        store %condition_index, %62
+        %63:i32 = load %index_in0
+        store %temp0, %63
+        %64:i32 = load %index_in1
+        store %index_in0, %64
+        %65:i32 = load %temp0
+        store %index_in1, %65
+        %66:i32 = load %index_out0
+        store %temp1, %66
+        %67:i32 = load %index_out1
+        store %index_out0, %67
+        %68:i32 = load %temp1
+        store %index_out1, %68
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %69:i32 = load %i
+        %70:i32 = add %69, 1i
+        store %i, %70
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(4, 1, 1) func(%gl_WorkGroupID_param:vec3<u32> [@workgroup_id]):void -> %b9 {
+  %b9 = block {
+    store %gl_WorkGroupID, %gl_WorkGroupID_param
+    %73:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..576fde1
--- /dev/null
+++ b/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,156 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: In2 = struct @align(4) {
+  data_in2:array<i32, 8> @offset(0)
+}
+
+Out0 = struct @align(4) {
+  data_out0:array<i32, 1024> @offset(0)
+}
+
+In1 = struct @align(4) {
+  data_in1:array<i32, 512> @offset(0)
+}
+
+In0 = struct @align(4) {
+  data_in0:array<i32, 512> @offset(0)
+}
+
+%b1 = block {  # root
+  %gl_WorkGroupID:ptr<private, vec3<u32>, read_write> = var
+  %x_13:ptr<storage, In2, read> = var @binding_point(0, 2)
+  %x_15:ptr<storage, Out0, read_write> = var @binding_point(0, 3)
+  %x_17:ptr<storage, In1, read> = var @binding_point(0, 1)
+  %x_19:ptr<storage, In0, read> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %base_index_in:ptr<function, u32, read_write> = var
+    %base_index_out:ptr<function, u32, read_write> = var
+    %index_in0:ptr<function, i32, read_write> = var
+    %index_in1:ptr<function, i32, read_write> = var
+    %index_out0:ptr<function, i32, read_write> = var
+    %index_out1:ptr<function, i32, read_write> = var
+    %condition_index:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %temp0:ptr<function, i32, read_write> = var
+    %temp1:ptr<function, i32, read_write> = var
+    %x_58:u32 = load_vector_element %gl_WorkGroupID, 0u
+    %18:u32 = mul 128u, %x_58
+    store %base_index_in, %18
+    %x_61:u32 = load_vector_element %gl_WorkGroupID, 0u
+    %20:u32 = mul 256u, %x_61
+    store %base_index_out, %20
+    store %index_in0, 127i
+    store %index_in1, 383i
+    store %index_out0, 255i
+    store %index_out1, 383i
+    store %condition_index, 0i
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_67:i32 = load %i
+        %22:bool = lt %x_67, 256i
+        if %22 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_70:i32 = load %condition_index
+        %24:ptr<storage, i32, read> = access %x_13, 0u, %x_70
+        %x_72:i32 = load %24
+        %26:bool = eq %x_72, 0i
+        if %26 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_77:u32 = load %base_index_out
+            %x_78:i32 = load %index_out0
+            %x_81:u32 = load %base_index_in
+            %x_82:i32 = load %index_in0
+            %31:u32 = bitcast %x_82
+            %32:u32 = add %x_81, %31
+            %33:ptr<storage, i32, read> = access %x_17, 0u, %32
+            %x_86:i32 = load %33
+            %35:u32 = bitcast %x_78
+            %36:u32 = add %x_77, %35
+            %37:ptr<storage, i32, read_write> = access %x_15, 0u, %36
+            store %37, %x_86
+            %x_88:i32 = load %index_out0
+            %39:i32 = sub %x_88, 1i
+            store %index_out0, %39
+            %x_90:i32 = load %index_in1
+            %41:i32 = sub %x_90, 1i
+            store %index_in1, %41
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_92:u32 = load %base_index_out
+            %x_93:i32 = load %index_out1
+            %x_96:u32 = load %base_index_in
+            %x_97:i32 = load %index_in1
+            %46:u32 = bitcast %x_97
+            %47:u32 = add %x_96, %46
+            %48:ptr<storage, i32, read> = access %x_19, 0u, %47
+            %x_101:i32 = load %48
+            %50:u32 = bitcast %x_93
+            %51:u32 = add %x_92, %50
+            %52:ptr<storage, i32, read_write> = access %x_15, 0u, %51
+            store %52, %x_101
+            %x_103:i32 = load %index_out1
+            %54:i32 = sub %x_103, 1i
+            store %index_out1, %54
+            %x_105:i32 = load %index_in1
+            %56:i32 = sub %x_105, 1i
+            store %index_in1, %56
+            exit_if  # if_2
+          }
+        }
+        %x_107:i32 = load %condition_index
+        %58:i32 = add %x_107, 1i
+        %59:ptr<storage, i32, read> = access %x_13, 0u, %58
+        %x_110:i32 = load %59
+        %x_111:i32 = load %condition_index
+        %62:i32 = add %x_111, %x_110
+        store %condition_index, %62
+        %x_113:i32 = load %index_in0
+        store %temp0, %x_113
+        %x_114:i32 = load %index_in1
+        store %index_in0, %x_114
+        %x_115:i32 = load %temp0
+        store %index_in1, %x_115
+        %x_116:i32 = load %index_out0
+        store %temp1, %x_116
+        %x_117:i32 = load %index_out1
+        store %index_out0, %x_117
+        %x_118:i32 = load %temp1
+        store %index_out1, %x_118
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_119:i32 = load %i
+        %70:i32 = add %x_119, 1i
+        store %i, %70
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(4, 1, 1) func(%gl_WorkGroupID_param:vec3<u32> [@workgroup_id]):void -> %b9 {
+  %b9 = block {
+    store %gl_WorkGroupID, %gl_WorkGroupID_param
+    %73:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..1624d2c
--- /dev/null
+++ b/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,156 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: In2 = struct @align(4) {
+  data_in2:array<i32, 8> @offset(0)
+}
+
+Out0 = struct @align(4) {
+  data_out0:array<i32, 1024> @offset(0)
+}
+
+In0 = struct @align(4) {
+  data_in0:array<i32, 512> @offset(0)
+}
+
+In1 = struct @align(4) {
+  data_in1:array<i32, 512> @offset(0)
+}
+
+%b1 = block {  # root
+  %gl_WorkGroupID:ptr<private, vec3<u32>, read_write> = var
+  %x_13:ptr<storage, In2, read> = var @binding_point(0, 2)
+  %x_15:ptr<storage, Out0, read_write> = var @binding_point(0, 3)
+  %x_17:ptr<storage, In0, read> = var @binding_point(0, 0)
+  %x_19:ptr<storage, In1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %base_index_in:ptr<function, u32, read_write> = var
+    %base_index_out:ptr<function, u32, read_write> = var
+    %index_in0:ptr<function, i32, read_write> = var
+    %index_in1:ptr<function, i32, read_write> = var
+    %index_out0:ptr<function, i32, read_write> = var
+    %index_out1:ptr<function, i32, read_write> = var
+    %condition_index:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %temp0:ptr<function, i32, read_write> = var
+    %temp1:ptr<function, i32, read_write> = var
+    %17:u32 = load_vector_element %gl_WorkGroupID, 0u
+    %18:u32 = mul 128u, %17
+    store %base_index_in, %18
+    %19:u32 = load_vector_element %gl_WorkGroupID, 0u
+    %20:u32 = mul 256u, %19
+    store %base_index_out, %20
+    store %index_in0, 0i
+    store %index_in1, -128i
+    store %index_out0, 0i
+    store %index_out1, -128i
+    store %condition_index, 0i
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %21:i32 = load %i
+        %22:bool = lt %21, 256i
+        if %22 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %23:i32 = load %condition_index
+        %24:ptr<storage, i32, read> = access %x_13, 0u, %23
+        %25:i32 = load %24
+        %26:bool = eq %25, 0i
+        if %26 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_75:u32 = load %base_index_out
+            %x_76:i32 = load %index_out0
+            %29:u32 = bitcast %x_76
+            %30:u32 = add %x_75, %29
+            %31:ptr<storage, i32, read_write> = access %x_15, 0u, %30
+            %32:u32 = load %base_index_in
+            %33:i32 = load %index_in0
+            %34:u32 = bitcast %33
+            %35:u32 = add %32, %34
+            %36:ptr<storage, i32, read> = access %x_17, 0u, %35
+            %37:i32 = load %36
+            store %31, %37
+            %38:i32 = load %index_out0
+            %39:i32 = add %38, 1i
+            store %index_out0, %39
+            %40:i32 = load %index_in1
+            %41:i32 = add %40, 1i
+            store %index_in1, %41
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_90:u32 = load %base_index_out
+            %x_91:i32 = load %index_out1
+            %44:u32 = bitcast %x_91
+            %45:u32 = add %x_90, %44
+            %46:ptr<storage, i32, read_write> = access %x_15, 0u, %45
+            %47:u32 = load %base_index_in
+            %48:i32 = load %index_in1
+            %49:u32 = bitcast %48
+            %50:u32 = add %47, %49
+            %51:ptr<storage, i32, read> = access %x_19, 0u, %50
+            %52:i32 = load %51
+            store %46, %52
+            %53:i32 = load %index_out1
+            %54:i32 = add %53, 1i
+            store %index_out1, %54
+            %55:i32 = load %index_in1
+            %56:i32 = add %55, 1i
+            store %index_in1, %56
+            exit_if  # if_2
+          }
+        }
+        %57:i32 = load %condition_index
+        %58:i32 = load %condition_index
+        %59:i32 = add %58, 1i
+        %60:ptr<storage, i32, read> = access %x_13, 0u, %59
+        %61:i32 = load %60
+        %62:i32 = add %57, %61
+        store %condition_index, %62
+        %63:i32 = load %index_in0
+        store %temp0, %63
+        %64:i32 = load %index_in1
+        store %index_in0, %64
+        %65:i32 = load %temp0
+        store %index_in1, %65
+        %66:i32 = load %index_out0
+        store %temp1, %66
+        %67:i32 = load %index_out1
+        store %index_out0, %67
+        %68:i32 = load %temp1
+        store %index_out1, %68
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %69:i32 = load %i
+        %70:i32 = add %69, 1i
+        store %i, %70
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(4, 1, 1) func(%gl_WorkGroupID_param:vec3<u32> [@workgroup_id]):void -> %b9 {
+  %b9 = block {
+    store %gl_WorkGroupID, %gl_WorkGroupID_param
+    %73:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..15c0b92
--- /dev/null
+++ b/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,156 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: In2 = struct @align(4) {
+  data_in2:array<i32, 8> @offset(0)
+}
+
+Out0 = struct @align(4) {
+  data_out0:array<i32, 1024> @offset(0)
+}
+
+In0 = struct @align(4) {
+  data_in0:array<i32, 512> @offset(0)
+}
+
+In1 = struct @align(4) {
+  data_in1:array<i32, 512> @offset(0)
+}
+
+%b1 = block {  # root
+  %gl_WorkGroupID:ptr<private, vec3<u32>, read_write> = var
+  %x_13:ptr<storage, In2, read> = var @binding_point(0, 2)
+  %x_15:ptr<storage, Out0, read_write> = var @binding_point(0, 3)
+  %x_17:ptr<storage, In0, read> = var @binding_point(0, 0)
+  %x_19:ptr<storage, In1, read> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %base_index_in:ptr<function, u32, read_write> = var
+    %base_index_out:ptr<function, u32, read_write> = var
+    %index_in0:ptr<function, i32, read_write> = var
+    %index_in1:ptr<function, i32, read_write> = var
+    %index_out0:ptr<function, i32, read_write> = var
+    %index_out1:ptr<function, i32, read_write> = var
+    %condition_index:ptr<function, i32, read_write> = var
+    %i:ptr<function, i32, read_write> = var
+    %temp0:ptr<function, i32, read_write> = var
+    %temp1:ptr<function, i32, read_write> = var
+    %x_56:u32 = load_vector_element %gl_WorkGroupID, 0u
+    %18:u32 = mul 128u, %x_56
+    store %base_index_in, %18
+    %x_59:u32 = load_vector_element %gl_WorkGroupID, 0u
+    %20:u32 = mul 256u, %x_59
+    store %base_index_out, %20
+    store %index_in0, 0i
+    store %index_in1, -128i
+    store %index_out0, 0i
+    store %index_out1, -128i
+    store %condition_index, 0i
+    store %i, 0i
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_65:i32 = load %i
+        %22:bool = lt %x_65, 256i
+        if %22 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_68:i32 = load %condition_index
+        %24:ptr<storage, i32, read> = access %x_13, 0u, %x_68
+        %x_70:i32 = load %24
+        %26:bool = eq %x_70, 0i
+        if %26 [t: %b7, f: %b8] {  # if_2
+          %b7 = block {  # true
+            %x_75:u32 = load %base_index_out
+            %x_76:i32 = load %index_out0
+            %x_79:u32 = load %base_index_in
+            %x_80:i32 = load %index_in0
+            %31:u32 = bitcast %x_80
+            %32:u32 = add %x_79, %31
+            %33:ptr<storage, i32, read> = access %x_17, 0u, %32
+            %x_84:i32 = load %33
+            %35:u32 = bitcast %x_76
+            %36:u32 = add %x_75, %35
+            %37:ptr<storage, i32, read_write> = access %x_15, 0u, %36
+            store %37, %x_84
+            %x_86:i32 = load %index_out0
+            %39:i32 = add %x_86, 1i
+            store %index_out0, %39
+            %x_88:i32 = load %index_in1
+            %41:i32 = add %x_88, 1i
+            store %index_in1, %41
+            exit_if  # if_2
+          }
+          %b8 = block {  # false
+            %x_90:u32 = load %base_index_out
+            %x_91:i32 = load %index_out1
+            %x_94:u32 = load %base_index_in
+            %x_95:i32 = load %index_in1
+            %46:u32 = bitcast %x_95
+            %47:u32 = add %x_94, %46
+            %48:ptr<storage, i32, read> = access %x_19, 0u, %47
+            %x_99:i32 = load %48
+            %50:u32 = bitcast %x_91
+            %51:u32 = add %x_90, %50
+            %52:ptr<storage, i32, read_write> = access %x_15, 0u, %51
+            store %52, %x_99
+            %x_101:i32 = load %index_out1
+            %54:i32 = add %x_101, 1i
+            store %index_out1, %54
+            %x_103:i32 = load %index_in1
+            %56:i32 = add %x_103, 1i
+            store %index_in1, %56
+            exit_if  # if_2
+          }
+        }
+        %x_105:i32 = load %condition_index
+        %58:i32 = add %x_105, 1i
+        %59:ptr<storage, i32, read> = access %x_13, 0u, %58
+        %x_108:i32 = load %59
+        %x_109:i32 = load %condition_index
+        %62:i32 = add %x_109, %x_108
+        store %condition_index, %62
+        %x_111:i32 = load %index_in0
+        store %temp0, %x_111
+        %x_112:i32 = load %index_in1
+        store %index_in0, %x_112
+        %x_113:i32 = load %temp0
+        store %index_in1, %x_113
+        %x_114:i32 = load %index_out0
+        store %temp1, %x_114
+        %x_115:i32 = load %index_out1
+        store %index_out0, %x_115
+        %x_116:i32 = load %temp1
+        store %index_out1, %x_116
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_117:i32 = load %i
+        %70:i32 = add %x_117, 1i
+        store %i, %70
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(4, 1, 1) func(%gl_WorkGroupID_param:vec3<u32> [@workgroup_id]):void -> %b9 {
+  %b9 = block {
+    store %gl_WorkGroupID, %gl_WorkGroupID_param
+    %73:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/rasterization/line_continuity/line-strip/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/rasterization/line_continuity/line-strip/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..db2933f
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.ir.msl
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Buf1 = struct @align(4) {
+  result:i32 @offset(0)
+}
+
+Buf0 = struct @align(4) {
+  values:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_4:ptr<storage, Buf1, read_write> = var @binding_point(0, 1)
+  %x_7:ptr<storage, Buf0, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, u32, read_write> = var
+    %5:ptr<storage, i32, read_write> = access %x_4, 0u
+    store %5, 1i
+    store %i, 0u
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %6:u32 = load %i
+        %7:bool = lt %6, 512u
+        if %7 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %8:u32 = load %i
+        %9:u32 = mul %8, 2u
+        %10:ptr<storage, u32, read_write> = access %x_7, 0u, %9
+        %11:u32 = load %10
+        %12:u32 = load %i
+        %13:bool = neq %11, %12
+        if %13 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %14:ptr<storage, i32, read_write> = access %x_4, 0u
+            store %14, 0i
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %15:u32 = load %i
+        %16:u32 = add %15, 1u
+        store %i, %16
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b8 {
+  %b8 = block {
+    %18:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..a622a8e
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.ir.msl
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Buf1 = struct @align(4) {
+  result:i32 @offset(0)
+}
+
+Buf0 = struct @align(4) {
+  values:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_4:ptr<storage, Buf1, read_write> = var @binding_point(0, 1)
+  %x_7:ptr<storage, Buf0, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %i:ptr<function, u32, read_write> = var
+    %5:ptr<storage, i32, read_write> = access %x_4, 0u
+    store %5, 1i
+    store %i, 0u
+    loop [b: %b3, c: %b4] {  # loop_1
+      %b3 = block {  # body
+        %x_33:u32 = load %i
+        %7:bool = lt %x_33, 512u
+        if %7 [t: %b5, f: %b6] {  # if_1
+          %b5 = block {  # true
+            exit_if  # if_1
+          }
+          %b6 = block {  # false
+            exit_loop  # loop_1
+          }
+        }
+        %x_36:u32 = load %i
+        %9:u32 = mul %x_36, 2u
+        %10:ptr<storage, u32, read_write> = access %x_7, 0u, %9
+        %x_39:u32 = load %10
+        %x_40:u32 = load %i
+        %13:bool = neq %x_39, %x_40
+        if %13 [t: %b7] {  # if_2
+          %b7 = block {  # true
+            %14:ptr<storage, i32, read_write> = access %x_4, 0u
+            store %14, 0i
+            exit_if  # if_2
+          }
+        }
+        continue %b4
+      }
+      %b4 = block {  # continuing
+        %x_45:u32 = load %i
+        %16:u32 = add %x_45, 1u
+        store %i, %16
+        next_iteration %b3
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b8 {
+  %b8 = block {
+    %18:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..319f48c
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.ir.msl
@@ -0,0 +1,44 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_2:ptr<private, vec3<u32>, read_write> = var
+  %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 2)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_21:u32 = load_vector_element %x_2, 0u
+    %7:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
+    %8:ptr<storage, u32, read_write> = access %x_5, 0u, %x_21
+    %9:u32 = load %8
+    %10:i32 = bitcast %9
+    %11:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
+    %12:u32 = load %11
+    %13:i32 = bitcast %12
+    %14:bool = gt %10, %13
+    %15:u32 = select 0u, 1u, %14
+    store %7, %15
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_2, %x_2_param
+    %18:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e8e85a7
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.ir.msl
@@ -0,0 +1,44 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_2:ptr<private, vec3<u32>, read_write> = var
+  %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 2)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_21:u32 = load_vector_element %x_2, 0u
+    %7:ptr<storage, u32, read_write> = access %x_5, 0u, %x_21
+    %x_23:u32 = load %7
+    %9:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
+    %x_25:u32 = load %9
+    %11:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
+    %12:i32 = bitcast %x_23
+    %13:i32 = bitcast %x_25
+    %14:bool = gt %12, %13
+    %15:u32 = select 0u, 1u, %14
+    store %11, %15
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_2, %x_2_param
+    %18:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..06c15a8
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.ir.msl
@@ -0,0 +1,44 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_2:ptr<private, vec3<u32>, read_write> = var
+  %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 2)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_21:u32 = load_vector_element %x_2, 0u
+    %7:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
+    %8:ptr<storage, u32, read_write> = access %x_5, 0u, %x_21
+    %9:u32 = load %8
+    %10:i32 = bitcast %9
+    %11:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
+    %12:u32 = load %11
+    %13:i32 = bitcast %12
+    %14:bool = gte %10, %13
+    %15:u32 = select 0u, 1u, %14
+    store %7, %15
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_2, %x_2_param
+    %18:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..8d34f15
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.ir.msl
@@ -0,0 +1,44 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_2:ptr<private, vec3<u32>, read_write> = var
+  %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 2)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_21:u32 = load_vector_element %x_2, 0u
+    %7:ptr<storage, u32, read_write> = access %x_5, 0u, %x_21
+    %x_23:u32 = load %7
+    %9:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
+    %x_25:u32 = load %9
+    %11:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
+    %12:i32 = bitcast %x_23
+    %13:i32 = bitcast %x_25
+    %14:bool = gte %12, %13
+    %15:u32 = select 0u, 1u, %14
+    store %11, %15
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_2, %x_2_param
+    %18:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..0d98c63
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.ir.msl
@@ -0,0 +1,44 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_2:ptr<private, vec3<u32>, read_write> = var
+  %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 2)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_21:u32 = load_vector_element %x_2, 0u
+    %7:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
+    %8:ptr<storage, u32, read_write> = access %x_5, 0u, %x_21
+    %9:u32 = load %8
+    %10:i32 = bitcast %9
+    %11:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
+    %12:u32 = load %11
+    %13:i32 = bitcast %12
+    %14:bool = lt %10, %13
+    %15:u32 = select 0u, 1u, %14
+    store %7, %15
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_2, %x_2_param
+    %18:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..9efe1c2
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.ir.msl
@@ -0,0 +1,44 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_2:ptr<private, vec3<u32>, read_write> = var
+  %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 2)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_21:u32 = load_vector_element %x_2, 0u
+    %7:ptr<storage, u32, read_write> = access %x_5, 0u, %x_21
+    %x_23:u32 = load %7
+    %9:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
+    %x_25:u32 = load %9
+    %11:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
+    %12:i32 = bitcast %x_23
+    %13:i32 = bitcast %x_25
+    %14:bool = lt %12, %13
+    %15:u32 = select 0u, 1u, %14
+    store %11, %15
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_2, %x_2_param
+    %18:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..f31ca88
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.ir.msl
@@ -0,0 +1,44 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_2:ptr<private, vec3<u32>, read_write> = var
+  %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 2)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_21:u32 = load_vector_element %x_2, 0u
+    %7:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
+    %8:ptr<storage, u32, read_write> = access %x_5, 0u, %x_21
+    %9:u32 = load %8
+    %10:i32 = bitcast %9
+    %11:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
+    %12:u32 = load %11
+    %13:i32 = bitcast %12
+    %14:bool = lte %10, %13
+    %15:u32 = select 0u, 1u, %14
+    store %7, %15
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_2, %x_2_param
+    %18:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..73fabb9
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.ir.msl
@@ -0,0 +1,44 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_2:ptr<private, vec3<u32>, read_write> = var
+  %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 2)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_21:u32 = load_vector_element %x_2, 0u
+    %7:ptr<storage, u32, read_write> = access %x_5, 0u, %x_21
+    %x_23:u32 = load %7
+    %9:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
+    %x_25:u32 = load %9
+    %11:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
+    %12:i32 = bitcast %x_23
+    %13:i32 = bitcast %x_25
+    %14:bool = lte %12, %13
+    %15:u32 = select 0u, 1u, %14
+    store %11, %15
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_2, %x_2_param
+    %18:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..a5b2278
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,48 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_3:ptr<private, vec3<u32>, read_write> = var
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %x_8:ptr<storage, S, read_write> = var @binding_point(0, 2)
+  %x_9:ptr<storage, S, read_write> = var @binding_point(0, 3)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_26:u32 = load_vector_element %x_3, 0u
+    %8:ptr<storage, i32, read_write> = access %x_9, 0u, %x_26
+    %9:ptr<storage, i32, read_write> = access %x_6, 0u, %x_26
+    %10:i32 = load %9
+    %11:u32 = bitcast %10
+    %12:ptr<storage, i32, read_write> = access %x_7, 0u, %x_26
+    %13:i32 = load %12
+    %14:u32 = bitcast %13
+    %15:ptr<storage, i32, read_write> = access %x_8, 0u, %x_26
+    %16:i32 = load %15
+    %17:u32 = bitcast %16
+    %18:u32 = clamp %11, %14, %17
+    %19:i32 = bitcast %18
+    store %8, %19
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_3_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_3, %x_3_param
+    %22:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..dc355ac
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,48 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<i32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_3:ptr<private, vec3<u32>, read_write> = var
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %x_8:ptr<storage, S, read_write> = var @binding_point(0, 2)
+  %x_9:ptr<storage, S, read_write> = var @binding_point(0, 3)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_26:u32 = load_vector_element %x_3, 0u
+    %8:ptr<storage, i32, read_write> = access %x_6, 0u, %x_26
+    %x_28:i32 = load %8
+    %10:ptr<storage, i32, read_write> = access %x_7, 0u, %x_26
+    %x_30:i32 = load %10
+    %12:ptr<storage, i32, read_write> = access %x_8, 0u, %x_26
+    %x_32:i32 = load %12
+    %14:ptr<storage, i32, read_write> = access %x_9, 0u, %x_26
+    %15:u32 = bitcast %x_28
+    %16:u32 = bitcast %x_30
+    %17:u32 = bitcast %x_32
+    %18:u32 = clamp %15, %16, %17
+    %19:i32 = bitcast %18
+    store %14, %19
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_3_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_3, %x_3_param
+    %22:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..eddfcd3
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_3:ptr<private, vec3<u32>, read_write> = var
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_21:u32 = load_vector_element %x_3, 0u
+    %6:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
+    %7:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
+    %8:u32 = load %7
+    %9:i32 = bitcast %8
+    %10:i32 = abs %9
+    %11:u32 = bitcast %10
+    store %6, %11
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_3_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_3, %x_3_param
+    %14:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..01f0198
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_3:ptr<private, vec3<u32>, read_write> = var
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_21:u32 = load_vector_element %x_3, 0u
+    %6:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
+    %x_23:u32 = load %6
+    %8:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
+    %9:i32 = bitcast %x_23
+    %10:i32 = abs %9
+    %11:u32 = bitcast %10
+    store %8, %11
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_3_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_3, %x_3_param
+    %14:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..5861073
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,48 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_3:ptr<private, vec3<u32>, read_write> = var
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %x_8:ptr<storage, S, read_write> = var @binding_point(0, 2)
+  %x_9:ptr<storage, S, read_write> = var @binding_point(0, 3)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_23:u32 = load_vector_element %x_3, 0u
+    %8:ptr<storage, u32, read_write> = access %x_9, 0u, %x_23
+    %9:ptr<storage, u32, read_write> = access %x_6, 0u, %x_23
+    %10:u32 = load %9
+    %11:i32 = bitcast %10
+    %12:ptr<storage, u32, read_write> = access %x_7, 0u, %x_23
+    %13:u32 = load %12
+    %14:i32 = bitcast %13
+    %15:ptr<storage, u32, read_write> = access %x_8, 0u, %x_23
+    %16:u32 = load %15
+    %17:i32 = bitcast %16
+    %18:i32 = clamp %11, %14, %17
+    %19:u32 = bitcast %18
+    store %8, %19
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_3_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_3, %x_3_param
+    %22:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..4473031
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,48 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_3:ptr<private, vec3<u32>, read_write> = var
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %x_8:ptr<storage, S, read_write> = var @binding_point(0, 2)
+  %x_9:ptr<storage, S, read_write> = var @binding_point(0, 3)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_23:u32 = load_vector_element %x_3, 0u
+    %8:ptr<storage, u32, read_write> = access %x_6, 0u, %x_23
+    %x_25:u32 = load %8
+    %10:ptr<storage, u32, read_write> = access %x_7, 0u, %x_23
+    %x_27:u32 = load %10
+    %12:ptr<storage, u32, read_write> = access %x_8, 0u, %x_23
+    %x_29:u32 = load %12
+    %14:ptr<storage, u32, read_write> = access %x_9, 0u, %x_23
+    %15:i32 = bitcast %x_25
+    %16:i32 = bitcast %x_27
+    %17:i32 = bitcast %x_29
+    %18:i32 = clamp %15, %16, %17
+    %19:u32 = bitcast %18
+    store %14, %19
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_3_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_3, %x_3_param
+    %22:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..ff8a1af
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,44 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_3:ptr<private, vec3<u32>, read_write> = var
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %x_8:ptr<storage, S, read_write> = var @binding_point(0, 2)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_21:u32 = load_vector_element %x_3, 0u
+    %7:ptr<storage, u32, read_write> = access %x_8, 0u, %x_21
+    %8:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
+    %9:u32 = load %8
+    %10:i32 = bitcast %9
+    %11:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
+    %12:u32 = load %11
+    %13:i32 = bitcast %12
+    %14:i32 = max %10, %13
+    %15:u32 = bitcast %14
+    store %7, %15
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_3_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_3, %x_3_param
+    %18:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2a42e3e
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,44 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_3:ptr<private, vec3<u32>, read_write> = var
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %x_8:ptr<storage, S, read_write> = var @binding_point(0, 2)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_21:u32 = load_vector_element %x_3, 0u
+    %7:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
+    %x_23:u32 = load %7
+    %9:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
+    %x_25:u32 = load %9
+    %11:ptr<storage, u32, read_write> = access %x_8, 0u, %x_21
+    %12:i32 = bitcast %x_23
+    %13:i32 = bitcast %x_25
+    %14:i32 = max %12, %13
+    %15:u32 = bitcast %14
+    store %11, %15
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_3_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_3, %x_3_param
+    %18:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..dffa6dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,44 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_3:ptr<private, vec3<u32>, read_write> = var
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %x_8:ptr<storage, S, read_write> = var @binding_point(0, 2)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_21:u32 = load_vector_element %x_3, 0u
+    %7:ptr<storage, u32, read_write> = access %x_8, 0u, %x_21
+    %8:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
+    %9:u32 = load %8
+    %10:i32 = bitcast %9
+    %11:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
+    %12:u32 = load %11
+    %13:i32 = bitcast %12
+    %14:i32 = min %10, %13
+    %15:u32 = bitcast %14
+    store %7, %15
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_3_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_3, %x_3_param
+    %18:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..e112b01
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,44 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_3:ptr<private, vec3<u32>, read_write> = var
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %x_8:ptr<storage, S, read_write> = var @binding_point(0, 2)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_21:u32 = load_vector_element %x_3, 0u
+    %7:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
+    %x_23:u32 = load %7
+    %9:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
+    %x_25:u32 = load %9
+    %11:ptr<storage, u32, read_write> = access %x_8, 0u, %x_21
+    %12:i32 = bitcast %x_23
+    %13:i32 = bitcast %x_25
+    %14:i32 = min %12, %13
+    %15:u32 = bitcast %14
+    store %11, %15
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_3_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_3, %x_3_param
+    %18:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..ecfe090
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,44 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_2:ptr<private, vec3<u32>, read_write> = var
+  %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 2)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_20:u32 = load_vector_element %x_2, 0u
+    %7:ptr<storage, u32, read_write> = access %x_7, 0u, %x_20
+    %8:ptr<storage, u32, read_write> = access %x_5, 0u, %x_20
+    %9:u32 = load %8
+    %10:i32 = bitcast %9
+    %11:ptr<storage, u32, read_write> = access %x_6, 0u, %x_20
+    %12:u32 = load %11
+    %13:i32 = bitcast %12
+    %14:i32 = div %10, %13
+    %15:u32 = bitcast %14
+    store %7, %15
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_2, %x_2_param
+    %18:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..5d54502
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,44 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_2:ptr<private, vec3<u32>, read_write> = var
+  %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 1)
+  %x_7:ptr<storage, S, read_write> = var @binding_point(0, 2)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_20:u32 = load_vector_element %x_2, 0u
+    %7:ptr<storage, u32, read_write> = access %x_5, 0u, %x_20
+    %x_22:u32 = load %7
+    %9:ptr<storage, u32, read_write> = access %x_6, 0u, %x_20
+    %x_24:u32 = load %9
+    %11:ptr<storage, u32, read_write> = access %x_7, 0u, %x_20
+    %12:i32 = bitcast %x_22
+    %13:i32 = bitcast %x_24
+    %14:i32 = div %12, %13
+    %15:u32 = bitcast %14
+    store %11, %15
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_2, %x_2_param
+    %18:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..ced5743
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_2:ptr<private, vec3<u32>, read_write> = var
+  %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_20:u32 = load_vector_element %x_2, 0u
+    %6:ptr<storage, u32, read_write> = access %x_6, 0u, %x_20
+    %7:ptr<storage, u32, read_write> = access %x_5, 0u, %x_20
+    %8:u32 = load %7
+    %9:i32 = bitcast %8
+    %10:i32 = negation %9
+    %11:u32 = bitcast %10
+    store %6, %11
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_2, %x_2_param
+    %14:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..bfe01bf
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,40 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<u32> @offset(0)
+}
+
+%b1 = block {  # root
+  %x_2:ptr<private, vec3<u32>, read_write> = var
+  %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
+  %x_6:ptr<storage, S, read_write> = var @binding_point(0, 1)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    %x_20:u32 = load_vector_element %x_2, 0u
+    %6:ptr<storage, u32, read_write> = access %x_5, 0u, %x_20
+    %x_22:u32 = load %6
+    %8:ptr<storage, u32, read_write> = access %x_6, 0u, %x_20
+    %9:i32 = bitcast %x_22
+    %10:i32 = negation %9
+    %11:u32 = bitcast %10
+    store %8, %11
+    ret
+  }
+}
+%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void -> %b3 {
+  %b3 = block {
+    store %x_2, %x_2_param
+    %14:void = call %main_1
+    ret
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..94e248c
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Swizzle
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..24741b5
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm.expected.ir.msl
@@ -0,0 +1,62 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<i32> @offset(0)
+}
+
+main_out = struct @align(4) {
+  x_4_1:i32 @offset(0), @location(0), @interpolate(flat)
+}
+
+%b1 = block {  # root
+  %x_2:ptr<private, vec4<f32>, read_write> = var
+  %x_3:ptr<private, i32, read_write> = var
+  %x_4:ptr<private, i32, read_write> = var
+  %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    store %x_4, 1i
+    %6:f32 = load_vector_element %x_2, 0u
+    %x_27:i32 = convert %6
+    %8:f32 = load_vector_element %x_2, 1u
+    %x_28:i32 = convert %8
+    %10:i32 = and %x_27, 1i
+    %11:i32 = and %x_28, 1i
+    %12:i32 = add %10, %11
+    %13:i32 = load %x_3
+    %14:i32 = add %12, %13
+    %15:f32 = load_vector_element %x_2, 2u
+    %16:i32 = convert %15
+    %17:bool = eq %14, %16
+    if %17 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        exit_if  # if_1
+      }
+    }
+    %18:i32 = mul %x_28, 8i
+    %19:i32 = add %x_27, %18
+    %20:ptr<storage, i32, read_write> = access %x_5, 0u, %19
+    store %20, %x_27
+    ret
+  }
+}
+%tint_symbol = @fragment func(%x_2_param:vec4<f32> [@position], %x_3_param:i32 [@location(0), @interpolate(flat)]):main_out -> %b4 {
+  %b4 = block {
+    store %x_2, %x_2_param
+    store %x_3, %x_3_param
+    %24:void = call %main_1
+    %25:i32 = load %x_4
+    %26:main_out = construct %25
+    ret %26
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..46e7dcc37
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.ir.msl
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<i32> @offset(0)
+}
+
+main_out = struct @align(4) {
+  x_4_1:i32 @offset(0), @location(0), @interpolate(flat)
+}
+
+%b1 = block {  # root
+  %x_2:ptr<private, vec4<f32>, read_write> = var
+  %x_3:ptr<private, i32, read_write> = var
+  %x_4:ptr<private, i32, read_write> = var
+  %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    store %x_4, 1i
+    %x_23:vec4<f32> = load %x_2
+    %7:f32 = access %x_23, 0u
+    %x_27:i32 = convert %7
+    %9:f32 = access %x_23, 1u
+    %x_28:i32 = convert %9
+    %x_33:i32 = load %x_3
+    %12:i32 = and %x_27, 1i
+    %13:i32 = and %x_28, 1i
+    %14:i32 = add %12, %13
+    %15:i32 = add %14, %x_33
+    %16:f32 = access %x_23, 2u
+    %17:i32 = convert %16
+    %18:bool = eq %15, %17
+    if %18 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        exit_if  # if_1
+      }
+    }
+    %19:i32 = mul %x_28, 8i
+    %20:i32 = add %x_27, %19
+    %21:ptr<storage, i32, read_write> = access %x_5, 0u, %20
+    store %21, %x_27
+    ret
+  }
+}
+%tint_symbol = @fragment func(%x_2_param:vec4<f32> [@position], %x_3_param:i32 [@location(0), @interpolate(flat)]):main_out -> %b4 {
+  %b4 = block {
+    store %x_2, %x_2_param
+    store %x_3, %x_3_param
+    %25:void = call %main_1
+    %26:i32 = load %x_4
+    %27:main_out = construct %26
+    ret %27
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..34fe99c
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm.expected.ir.msl
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<i32> @offset(0)
+}
+
+main_out = struct @align(4) {
+  x_4_1:i32 @offset(0), @location(0), @interpolate(flat)
+}
+
+%b1 = block {  # root
+  %x_2:ptr<private, vec4<f32>, read_write> = var
+  %x_3:ptr<private, i32, read_write> = var
+  %x_4:ptr<private, i32, read_write> = var
+  %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    store %x_4, 1i
+    %x_23:vec4<f32> = load %x_2
+    %7:f32 = load_vector_element %x_2, 0u
+    %x_27:i32 = convert %7
+    %9:f32 = load_vector_element %x_2, 1u
+    %x_28:i32 = convert %9
+    %x_33:i32 = load %x_3
+    %12:i32 = mul %x_28, 8i
+    %13:i32 = add %x_27, %12
+    %14:ptr<storage, i32, read_write> = access %x_5, 0u, %13
+    store %14, %x_27
+    %15:i32 = and %x_27, 1i
+    %16:i32 = and %x_28, 1i
+    %17:i32 = add %15, %16
+    %18:i32 = add %17, %x_33
+    %19:f32 = access %x_23, 2u
+    %20:i32 = convert %19
+    %21:bool = eq %18, %20
+    if %21 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%x_2_param:vec4<f32> [@position], %x_3_param:i32 [@location(0), @interpolate(flat)]):main_out -> %b4 {
+  %b4 = block {
+    store %x_2, %x_2_param
+    store %x_3, %x_3_param
+    %25:void = call %main_1
+    %26:i32 = load %x_4
+    %27:main_out = construct %26
+    ret %27
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..96ec0f3
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.ir.msl
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
+  field0:array<i32> @offset(0)
+}
+
+main_out = struct @align(4) {
+  x_4_1:i32 @offset(0), @location(0), @interpolate(flat)
+}
+
+%b1 = block {  # root
+  %x_2:ptr<private, vec4<f32>, read_write> = var
+  %x_3:ptr<private, i32, read_write> = var
+  %x_4:ptr<private, i32, read_write> = var
+  %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
+}
+
+%main_1 = func():void -> %b2 {
+  %b2 = block {
+    store %x_4, 1i
+    %x_23:vec4<f32> = load %x_2
+    %7:f32 = access %x_23, 0u
+    %x_27:i32 = convert %7
+    %9:f32 = access %x_23, 1u
+    %x_28:i32 = convert %9
+    %x_33:i32 = load %x_3
+    %12:i32 = mul %x_28, 8i
+    %13:i32 = add %x_27, %12
+    %14:ptr<storage, i32, read_write> = access %x_5, 0u, %13
+    store %14, %x_27
+    %15:i32 = and %x_27, 1i
+    %16:i32 = and %x_28, 1i
+    %17:i32 = add %15, %16
+    %18:i32 = add %17, %x_33
+    %19:f32 = access %x_23, 2u
+    %20:i32 = convert %19
+    %21:bool = eq %18, %20
+    if %21 [t: %b3] {  # if_1
+      %b3 = block {  # true
+        exit_if  # if_1
+      }
+    }
+    ret
+  }
+}
+%tint_symbol = @fragment func(%x_2_param:vec4<f32> [@position], %x_3_param:i32 [@location(0), @interpolate(flat)]):main_out -> %b4 {
+  %b4 = block {
+    store %x_2, %x_2_param
+    store %x_3, %x_3_param
+    %25:void = call %main_1
+    %26:i32 = load %x_4
+    %27:main_out = construct %26
+    ret %27
+  }
+}
+
+unhandled variable address space
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..28251dc
--- /dev/null
+++ b/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
+********************************************************************
+*  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/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.spvasm.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl.expected.ir.msl
new file mode 100644
index 0000000..efdd3b1
--- /dev/null
+++ b/test/tint/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
+********************************************************************
+*  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/tint/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.spvasm.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.spvasm.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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/tint/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl.expected.ir.msl
new file mode 100644
index 0000000..2e88a5f
--- /dev/null
+++ b/test/tint/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl.expected.ir.msl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:247 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
+********************************************************************
+*  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.  *
+********************************************************************
